4.5 KiB
GPT 对话桥接兼容修复(2026-10-21)
问题与定位
用户当前运行的是安装版 C:\Users\Administrator\AppData\Local\Programs\YCode\YCode.exe。
模型 gpt-6.1-sol(GPT-6.1 Sol)配置为 openai-responses。
真实会话在北京时间 2026-10-21 19:21:59 记录
API Error: 400 Unsupported Messages field: context_management。
该错误来自 YCode 本地 model-bridge/protocol.ts,请求在转发远程服务之前被拒绝。
真实本地 Claude SDK/原生 CLI 请求复现:
- 关闭思考时不附带该字段。
effort: high时附带context_management: { edits: [{ type: 'clear_thinking_20251015', keep: 'all' }] }。- SDK 还在消息数组尾部附带一条
role: system的文本环境说明,旧转换器也会拒绝。
实现
- 仅接受不修改历史的上下文配置:缺省、null、空配置、空 edits,以及保留全部思考的指令。桥接后的上游请求不携带该字段。
- 仍拒绝真实清理、压缩、未知或非法配置,避免静默忽略会改变历史的操作。
- 接受消息数组里的文本系统消息,保留顺序和角色;系统消息中的其他内容类型继续拒绝。
- Responses 的加密推理历史重放保持原逻辑,并增加携带 keep-all 配置的重放回归。
验证与边界
npm run test:model-bridge:146 项协议检查、16 组离线宿主回归通过。node scripts/ops.mjs build --json:PASS / BUILT,含类型检查;产物位于out/,基于194853a加本地修改。最终日志.git/ycode-ops/logs/1792582138654-3a0f3ac4-1914-49d8-919a-ad6ad8e551bf.log。.tmp/context-management-probe.mjs:真实原生 SDK 在隔离临时目录请求本地服务,确认字段与系统消息的实际形态。node .tmp/context-management-sdk-verification.mjs:真实 SDK 开启 high 思考,经真实桥接层分别连接本地 Responses / Chat Completions SSE 模拟服务,均收到LOCAL_SDK_OK并成功结束。共两次本地上游请求。- 上述验证没有调用用户远程模型服务,也没有修改用户模型配置或会话数据。
- 修复尚未发布、安装或加载到用户当前安装版窗口;远程 GPT 服务端的完整对话/工具调用仍需在更新后验证。
安装后续报错:流式 metadata 中断(2026-10-21)
用户安装首轮修复包后,19:59 开始收到真实 GPT 思考与工具调用,
期间多次发生 Server error mid-response,20:00:27 最终报
400 Responses reasoning history is not available in this lease; start a new conversation。
该会话的桥接历史文件存在,但 entries 为 0;这是流被提前终止后的后续错误。
使用用户配置的远程 GPT 接口发送独立诊断提示和无外部动作的
diagnostic_echo 工具定义,确认上游在 response.completed 前发送
response.metadata。该事件只有 moderation 元数据,旧桥接器的默认分支拒绝了它,
因此没有读到完整终态并保存推理历史。
修复 stream.ts,将 response.metadata 视为无正文的元数据事件,
继续读取终态;不修改未知事件、真正断流、内容不一致等异常的处理。
协议回归中的所有 Responses 流均补入与实际上游一致的 metadata 形态,
包括推理历史持久化和重新获取桥接租约场景。
验证:
npm run test:model-bridge:148 项协议检查、16 组宿主回归通过。.tmp/responses-live-events.sse:实际远程独立诊断流,确认 metadata 的顺序与内容;未发送用户会话。.tmp/responses-sdk-tool-probe.mjs:真实原生 SDK + 本地模拟 Responses,经思考摘要、正文、Read 工具、工具结果、最终回复连续两轮成功;包含 metadata,验证加密推理重放。.tmp/responses-live-bridge-probe.cjs:真实桥接器连接用户配置的 GPT 接口,独立诊断工具调用和后续回复两轮均返回干净message_stop。仅模拟返回OK,没有执行外部工具,也没有修改用户模型或会话。- 原会话已经保存的中断思考没有对应完整加密历史,不能从摘要重建;安装本轮修复后应新建会话。此次未删除或改写原会话。
node scripts/ops.mjs package --json:PASS / PACKAGED,包含类型检查、完整构建与 Windows x64 NSIS 打包。产物release/YCode-0.0.12-Setup-x64.exe已更新为本轮修复包,401801432 字节,SHA-256cee3c43810e0fcb93af7f33351d14789b0ee28444bcea1520b991acdbfb12e97。日志.git/ycode-ops/logs/1792584536233-a08ce860-240e-41de-99a0-255bcf26dfd4.log。本地未签名包,未发布或自动安装。