Repository navigation
fix(chat): request native reasoning summaries on ordinary turns - #8224
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; runtime_reported; model=gpt-6.1-sol; provider=OpenAI; effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
使用普通 Codex Chat 的用户在恢复旧会话时,需要在等待中看到可公开展示的思考摘要。 旧会话继承关闭摘要的配置时,旧版只显示粗粒度思考状态;修复版在同一个聊天请求里明确请求简短摘要。 已验证请求侧参数、摘要活动投影、原始推理过滤和执行型任务配置保持原样。 本提案不保证所有模型都会返回摘要,也不完成历史欠办业务。 真实模型摘要质量、安装采用与原渠道可见性仍需部署后独立核验。
改动思路 / Approach
这是现有原生请求 owner 中的一项默认策略修复;增加每回合参数足够,不需要第二个状态 owner、开关或发送流程。 本 PR 的边界是普通聊天的原生摘要请求及其既有展示链路,执行宿主不覆盖摘要配置。 在原生发送方法里给普通聊天增加已有参数,继续使用原来的活动解析、脱敏、节流和私聊显示 owner。相较于让用户修改全局配置,这条路径不增加操作轮次,也不会把聊天的显示偏好传播给执行型宿主。没有新增状态、队列、模型调用或权限判断;上游没有摘要时仍保留原来的粗粒度状态。
具体改动 / Changes
规格依据:docs/architecture/rfcs/app-conversation-and-async-inbox-v0.md,修改前基线 9d276f6。activity-observed-only 已实现:只呈现上游实际给出的摘要,原始推理仍过滤;owner-summary-boundary 已实现:原私聊 owner 的有界投影保留,其他受众不显示摘要。双语文档新增的是默认请求方式的披露,没有用新文档替代原有隐私义务。
关键代码讲解
CodexChatAgentSession.send在原turn/start请求中增加summary=concise,条件为非 execution mode。相同 thread、输入、模型、effort、权限与审批参数继续沿原通道发送,失败仍由原有错误及超时 owner 处理。CodexActivitySteps.reasoning_delta是未修改的消费边界,仅接纳明确的公开摘要标记,完成 item 保留摘要,原始推理不做回退。现有private_progress.project_progress继续验证私聊展示条件。- 现有活动回归扩为 Chat/执行两种模式,并覆盖原始推理、命令输出和路径过滤。生产增加4行(其中3行注释),测试净增12行,配对 RFC 增10行;没有独立展示层或兼容版本分支。
对主干的风险 / Risks
未发现阻塞问题。最强反例是协议 fixture 有摘要而真实模型仍不输出,或共享发送方法意外覆盖执行型宿主。相同 stdio fixture 在 9d276f6 上摘要断言失败、在 192140d 上通过;两边最终答案相同且无原始推理,执行模式均保留原配置。额外 owner 投影检查确认普通私聊可显示摘要,未限定受众不可显示。
完整四模块回归 1,014 passed,配置内 strict mypy 17文件、Ruff、双语 diff、公开边界及最终标准 premerge 6直接+11选中全部通过。首次 premerge 缺 TypeScript 开发依赖,补齐依赖后才重跑通过。最初的两项开发测试错误要求节流窗口内立即新增事件,已保持原节流并检验完成 item 保留摘要;没有放宽生产过滤。全注册运行态健康检查的两条 authority-contract 错误在冻结安装基线与本 head 完整签名一致,仍单列为诊断失败。按当前策略未查询 CI;没有把未知 CI 记为通过。
语义与 CI 对齐
沿用现有原生 ReasoningSummary 值和类型,不新增内部状态词表。diff advisory 的零候选仅说明其扫描范围;版本化原生 schema、明确默认披露和实际 stdio 对照共同支持这次有意变化。无新的 default-off、权限、派发或结算语义。
我的整体评价 / Verdict
该修复在现有 owner 内解决了可复现的请求缺口,规模与收益相称;可通过撤回一个参数默认值回滚。长程执行语义保持不变,用户等待体验的请求与投影环节得到改善;真实模型输出和成本仍按部署边界核验,不从测试数推断业务完成。
loopx/chat_agent.py 的请求参数变化,未修改现有 App/Lark 的布局、折叠或渲染代码;源派生图不增加解释价值,采用文字说明。 真实模型、安装 App 与飞书网页呈现尚未验收,未将协议 fixture 记为这些结果。 真实模型摘要质量、安装采用与原渠道可见性仍需部署后独立核验。
English verdict: APPROVE — 192140d; no blocking finding; native request/projection counterfactuals and required local validation passed, with live adoption and model cost still unverified.
普通 Chat 的恢复会话可能继承
summary=none。活动渲染器虽已支持摘要,用户等待时仍只能看到“正在思考”。这次由现有 Codexturn/start入口为每个普通聊天回合明确请求summary=concise,新建、恢复及受限答复复核共用同一路径;执行型宿主继续使用自己的配置。CodexActivitySteps,保留原始推理过滤、受众限制、节流与最终答复,不新增模型 Turn、设置、任务或发送者。summary参数;本机生成的版本化TurnStartParams也支持concise。不把参数接受等同于所有模型都会产生摘要。作者:model_agent,Codex / OpenAI。规格依据:现有 App conversation RFC 的活动与原私聊摘要契约。本提案修复请求侧遗漏,保留既有显示 owner;不需要新增前端页面或独立开关。同域收敛复用现有测试与参数,没有新增抽象。
验证版本:
192140db6,基于9d276f6cb。Ruff、配置内 17 文件 strict mypy、双语 RFC、diff 和 4 文件公开边界扫描通过。完整四模块回归 1,014 passed(815.16 秒);标准 premerge 6 项直接 + 11 项选中检查通过,0 失败 / 0 人工 hold。首次 premerge 因本 checkout 缺 TypeScript 开发依赖失败,补齐后上述完整检查才通过。相同 stdio 协议 fixture 在冻结 base 上摘要断言失败,在本 head 上通过;私聊 owner 摘要投影通过,未限定受众不显示摘要。协议 peer 为合成上游,非真实模型证明。全注册运行态健康检查另有两个 authority-contract 错误,冻结安装基线和当前 head 的完整错误签名一致,保留为独立运行态问题;两边本提案四文件的公开扫描均通过。真实上游摘要质量、安装采用与原渠道可见性在部署后分别核验;摘要可能增加输出成本,尚未测量 token 或费用差异。回滚可恢复原请求参数。历史失败、未完业务和现有恢复门禁不因本修复或一次摘要显示而结清。