Skip to content

新增第三方模型回答完自动折叠过程开关 - #495

Closed
mojie126 wants to merge 1 commit into
aimod-cc:betafrom
mojie126:pr/reasoning-collapse
Closed

mojie126 wants to merge 1 commit into
aimod-cc:betafrom
mojie126:pr/reasoning-collapse

Conversation

@mojie126

@mojie126 mojie126 commented Nov 5, 2026

Copy link
Copy Markdown

背景

Codex 桌面端只在收到带 phase: "final_answer" 的助手消息时,才会把这一轮的推理、命令与过程消息收进可折叠的「已处理 X 分钟」。官方模型逐条给出 final_answer / commentary,第三方模型通常不带这个字段,整轮过程就一直展开。

改动

  1. 设置页新增开关:「网关 → 第三方模型回答完自动折叠过程」,默认关闭(它改的是下发给客户端的响应字节,且只有 Codex 桌面端靠这个字段折叠过程,默认开会让所有下游都收到一个原本没有的扩展字段)
  2. 补阶段标记:开启后在重建 Responses 响应时给助手消息补 phase —— 本轮没有工具调用的最后一条消息补 final_answer,之前的正文与过程消息补 commentary;只对经本网关的 Codex 来源 /v1/responses 请求生效,其它客户端与 /v1/chat/completions 不受影响,下一次请求即生效、不用重启
  3. 管理接口:新增 GET/PUT /api/reasoning-collapse,桌面桥与网页桥同步接线,系统信息页展示状态
  4. 判据统一:流式、非流式聚合与上游完整响应三条回程共用同一阶段判据;输出预算用尽与内容过滤的截断响应不补标记,避免半截答案被当作收尾
  5. 客户端归类值提取为 CLIENT_CODEX 常量,阶段标记判据与请求日志的「客户端」列同源,避免两处各写一份字面量

验证

  • cargo check -p agent2api-server --lib:通过,无新增警告
  • 前端岛类型检查、主面板与登录页构建:通过
  • 六语词典补齐并重建入库产物

一点提示:上游 e8bed73 的测试代码有 4 处编译不过(#[cfg(test)] 内,与本 PR 无关):api/pipeline.rs:1234 的 RequestQuery 初始化缺字段、core/cloud_sync/settings.rs:463 与 :479 的 WebDavConfig 缺 user_agent、core/upstream/provider_loop/tests.rs:330 调用参数少两个。

🤖 本条回复由 AI Agent 生成

Generated by an AI agent.

- 设置页网关新增「第三方模型回答完自动折叠过程」开关,默认关闭
- 为 Codex 来源的 /v1/responses 响应补 phase 阶段标记,回答完折叠推理与命令过程
- 新增 GET/PUT /api/reasoning-collapse 管理接口,桌面桥与网页桥同步接线
- 流式、非流式聚合与上游完整响应三条回程共用同一阶段判据
- 输出预算用尽与内容过滤的截断响应不补阶段标记,避免半截答案被当作收尾
- 客户端归类值提取为常量,阶段标记判据与请求日志客户端列同源
@mojie126 mojie126 closed this Nov 7, 2026
@mojie126
mojie126 deleted the pr/reasoning-collapse branch November 7, 2026 10:08
aimod-cc pushed a commit that referenced this pull request Nov 7, 2026
保留原贡献者提交,适配当前 beta。统一正常结束与截断判据,空工具列表按未调用工具处理;阶段兼容仅使用严格客户端识别,不跟随报表规则。补充错误、缺少结束信号和未知结束原因的阶段保护,重新构建设置页和多语言资源。
@aimod-cc

aimod-cc commented Nov 7, 2026

Copy link
Copy Markdown
Owner

感谢 @mojie126 的贡献。修正后的功能已纳入 beta:defbc81,原提交 d51d97b 和作者署名均保留。

在原 PR 基础上补了三处边界:

  1. 最终回答阶段只在结束原因明确正常、没有错误且内容非空时补齐;流式与聚合流还要求收到结束标记。输出预算用尽的多种写法统一识别,缺少结束信号、未知结束原因、错误或传输中断不补最终答案标记。
  2. 空的工具调用列表按“没有工具调用”处理,三条返回路径共用阶段判据。
  3. Codex 兼容判断改用严格客户端识别,不受报表自定义归类或来源声明影响。

保留默认关闭、下一次请求生效的开关,已重新构建界面并同步多语言文案。后端 cargo check、前端类型检查与构建、多语言缺失键检查通过;frontend-artifacts 也已通过。未运行测试或真实客户端验收。

准备更新 PR 时发现作者已主动关闭 PR 并删除原分支,因此没有恢复该分支,也没有将此 PR 标记为网页合并;代码通过保留原提交的合并进入 beta。当前未改版本号、未打 tag、未发布安装包。

🤖 本条回复由 AI Agent 生成

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants