影响范围
供应商切换 / 配置写入
当前行为
在任意 Provider A 下创建并使用的旧会话,在切换到另一个 Provider B 后继续对话,可能仍携带原 Provider 的会话级配置,导致请求无法使用当前 Provider。
具体表现包括:
- 旧会话仍请求 Provider A 的地址;
- 请求错误地发送到
https://api.openai.com/v1/responses;
- 出现
401 Unauthorized、invalid_api_key 或 request timed out;
- 新建会话通常可以正常使用切换后的 Provider。
该问题与具体 Provider 无关,只要切换了 Provider,已有旧会话就可能失效。
预期行为
恢复旧会话时,应允许用户选择:
- 保留会话原 Provider;
- 使用当前 Provider。
当选择“使用当前 Provider”时,旧会话应使用当前 Codex 配置,并通过 CC Switch 当前路由转发,而不应继续固定使用创建会话时的 Provider。
复现步骤
- 在任意 Provider A 下创建一个 Codex 会话并发送消息。
- 切换到另一个 Provider B。
- 确认新建会话可以正常使用 Provider B。
- 在 Codex++ 中恢复第 1 步创建的旧会话。
- 发送一条最小消息,例如“继续”。
- 旧会话仍尝试使用 Provider A,或请求错误的 Provider 地址。
- 旧会话请求失败,而新会话仍可以正常使用 Provider B。
日志 / 配置片段
model_provider = "custom"
[model_providers.custom]
base_url = "http://127.0.0.1:<local-port>/v1"
wire_api = "responses"
旧会话可能出现:
unexpected status 401 Unauthorized
auth error code: invalid_api_key
url: https://api.openai.com/v1/responses
或者:
补充观察
- 当前 Codex 配置使用
custom 本地代理。
- CC Switch 的会话自动同步和统一会话历史已经关闭。
- 新会话可以通过当前 Provider 正常请求。
- 旧会话即使已经修改 rollout 元数据,恢复时仍可能使用原 Provider。
- 只修改全局
config.toml、rollout 元数据或会话目录索引,无法稳定解决问题。
- 这说明恢复旧线程时,Codex 或 Codex++ 仍可能读取独立的会话级 Provider 状态。
希望增加的能力
- 增加“保留原 Provider / 使用当前 Provider”的恢复策略;
- 或增加“将所有旧会话迁移到当前 Provider”的操作;
- 迁移时不修改历史消息内容;
- 切换 Provider 后,旧会话应跟随当前路由;
- 添加跨 Provider 切换和旧会话恢复的回归测试。
环境
Codex++ 版本:
系统:
提交前确认
影响范围
供应商切换 / 配置写入
当前行为
在任意 Provider A 下创建并使用的旧会话,在切换到另一个 Provider B 后继续对话,可能仍携带原 Provider 的会话级配置,导致请求无法使用当前 Provider。
具体表现包括:
https://api.openai.com/v1/responses;401 Unauthorized、invalid_api_key或request timed out;该问题与具体 Provider 无关,只要切换了 Provider,已有旧会话就可能失效。
预期行为
恢复旧会话时,应允许用户选择:
当选择“使用当前 Provider”时,旧会话应使用当前 Codex 配置,并通过 CC Switch 当前路由转发,而不应继续固定使用创建会话时的 Provider。
复现步骤
日志 / 配置片段
旧会话可能出现:
或者:
补充观察
custom本地代理。config.toml、rollout 元数据或会话目录索引,无法稳定解决问题。希望增加的能力
环境
Codex++ 版本:
系统:
提交前确认