服务切换与 Trace 消费链路审计
本文检查配置如何进入实际请求。 检查日期为 2026-10-15。 模型资料检查见 模型消费链路。 本文只说明公开版的功能与验证边界。
完整链路
每次切换都核对用户选择、设置和客户端文件。 随后核对 Gateway、上游和 Trace 归属。 已开始的回答保留原路由快照。 后续请求读取新的服务、型号和协议。 原生线程、正文及工具结果保持连续。 关闭 Trace 后恢复直连,并关闭监听。 重开后保留设置和续接记录。
已复现的问题
| 问题 | 原行为 | 修复后的行为 |
|---|---|---|
| 同服务换模型或协议 | WebSocket 只检查地址和凭据,仍使用旧快照 | 旧回答完成后关闭空闲连接,重连使用新选择 |
| 传输协商 | 自动连接可能给 Chat 协议接受 WebSocket | 握手检查实际协议,需要转换时返回 HTTP 426 |
| 完整接口地址 | WebSocket 重复拼接 /responses | 与 HTTP 共用地址归一化 |
| 目录改变协议 | 旧连接继续用过时协议发送新任务 | 每个新任务检查当前协议,拦住旧传输 |
| 其他客户端的路由 | 独立快照读不到新选择 | 在途任务保留快照,空闲连接检查对应客户端路由 |
| 其他客户端的归属 | 来源固定写成 Codex,缓存范围与 HTTP 不同 | 两种传输共用客户端范围,记录真实来源和原入口 |
HTTP 指超文本传输协议。 WebSocket 指持续连接的双向传输协议。 协议检查只在握手和新任务入口读取缓存。 本轮没有增加后台轮询。 程序不重放已有输出或不确定请求。
Codex 兼容控制整合
本轮纳入独立工作区的配置策略修复。 压缩阈值、有效窗口比例、搜索和输出详细程度分别记录来源。 并行工具开关进入实际请求,转换后保留用户选择。 Messages 的默认输出预算受已知模型上限约束。 用户明确预算、压缩阈值和详细程度继续优先。 规则与测试点见 Codex 兼容控制。
模型资料刷新与主动修复缓存分开处理。 普通刷新不再把有效目录误判为修复前的迟到结果。 重置测试等待后台清理进程退出后再重启。 该修正只改变验收时序,不放宽业务断言。
工具能力
程序不按服务品牌禁用 GPT 生图。 原生 Responses 保留生图工具。 客户端生图命名空间也保持完整。 Chat 转换保留函数名称及命名空间。 上游拒绝时,客户端收到实际错误。 用户明确的工具开关继续生效。 本轮删除没有消费入口的工具禁用字段。
内置生图与普通函数工具不同。 其他协议不一定有等价的内置能力。 无法无损转换时,程序明确报错。 程序不静默删除工具后伪装成功。
自动化检查
新入口为 tools/native/routing-consumption-test.mjs。 该入口已加入默认后端回归。
| 子场景 | 断言 |
|---|---|
| 在途回答中换模型 | 旧回答完整结束,只发送一次;重连续接用新模型 |
| 空闲连接换协议 | 旧连接关闭,HTTP 使用当前转换端点 |
| Chat 的 WebSocket 握手 | 返回 HTTP 426,上游未接收任务 |
| 完整接口地址 | HTTP 与 WebSocket 的目标路径相同 |
| 目录更新 | 新任务不进入旧协议,HTTP 使用新声明 |
| 其他客户端入口 | HTTP 与 WebSocket 共用线程缓存;切服务只更新对应入口,不串入 Codex |
| 服务切换及进程重开 | 设置、配置、上下文与线程归属一致 |
| Trace 停止及重开 | 直连恢复、监听关闭、账本清除和选择保留 |
| 生图工具及错误 | 工具完整转发,上游错误真实可见 |
已有 portability-test.mjs 检查工具与活动回答。 codex-client-compatibility-test.mjs 检查加密压缩。 trace-stop-admission-test.mjs 检查安全停止。 tool-wait-test.mjs 检查工具等待和强停。 模型与 Bridge 的组件脚本检查乱序和迟到回读。 这些合成回归不证明生产授权和实际 Desktop 已通过。
真实环境待验
| 场景 | 状态 | 需要的证据 |
|---|---|---|
| 新建、停止及重入 | 待验 | 最新候选的真实 CLI、直连请求和实际页面 |
| 双向跨服务续接 | 待验 | 逐轮目标与上下文;同进程与重开分别记录 |
| 工具、取消及压缩 | 待验 | 实际工具配对、压缩和失败后继续,不重放 |
| GPT 生图 | 待验 | 真实授权下的生成结果或上游错误 |
| HTTP 与 WebSocket | 待验 | 实际协商、重连、目录更新和最终上游 |
| Desktop 缓存 | 待验 | 旧会话、运行中切换、停止、重开和页面操作 |
| Windows 等平台 | 待验 | 对应平台的新候选与实际系统操作 |
新对话成功不能替代原线程续接。 普通文字成功不能代验生图或工具。 本轮没有替换正常安装或发布更新。 公开版不增加旧发行版本迁移。
后续开发准则
新增字段须写清消费方和缓存失效条件。 保存设置后,要检查已打开的连接。 目录变更后,要检查下一条实际请求。 失败保留目标,并提供可执行的继续入口。 修复后同时核对配置、上游和 Trace。 不能只用保存成功或 HTTP 200 作为结论。