Skip to content

[Bug]: 切换 Provider 后旧会话无法继续使用当前 Provider #2090

Description

@Yskysoar

影响范围

供应商切换 / 配置写入

当前行为

在任意 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,已有旧会话就可能失效。

预期行为

恢复旧会话时,应允许用户选择:

  1. 保留会话原 Provider;
  2. 使用当前 Provider。

当选择“使用当前 Provider”时,旧会话应使用当前 Codex 配置,并通过 CC Switch 当前路由转发,而不应继续固定使用创建会话时的 Provider。

复现步骤

  1. 在任意 Provider A 下创建一个 Codex 会话并发送消息。
  2. 切换到另一个 Provider B。
  3. 确认新建会话可以正常使用 Provider B。
  4. 在 Codex++ 中恢复第 1 步创建的旧会话。
  5. 发送一条最小消息,例如“继续”。
  6. 旧会话仍尝试使用 Provider A,或请求错误的 Provider 地址。
  7. 旧会话请求失败,而新会话仍可以正常使用 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

或者:

request timed out

补充观察

  • 当前 Codex 配置使用 custom 本地代理。
  • CC Switch 的会话自动同步和统一会话历史已经关闭。
  • 新会话可以通过当前 Provider 正常请求。
  • 旧会话即使已经修改 rollout 元数据,恢复时仍可能使用原 Provider。
  • 只修改全局 config.toml、rollout 元数据或会话目录索引,无法稳定解决问题。
  • 这说明恢复旧线程时,Codex 或 Codex++ 仍可能读取独立的会话级 Provider 状态。

希望增加的能力

  • 增加“保留原 Provider / 使用当前 Provider”的恢复策略;
  • 或增加“将所有旧会话迁移到当前 Provider”的操作;
  • 迁移时不修改历史消息内容;
  • 切换 Provider 后,旧会话应跟随当前路由;
  • 添加跨 Provider 切换和旧会话恢复的回归测试。

环境

Codex++ 版本:

1.2.56(当前最新版本)

系统:

Windows

提交前确认

  • 我已经脱敏了 API Key、Token、账号等敏感信息。
  • 我已经确认这是当前最新版仍然存在的问题。

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: protocolProtocol conversion or proxy behaviortype: bugBug report or broken behavior

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions