makecindy / makecindy/cindy

跨模型与供应商切换后恢复旧线程,导致模型错配和对话持续报错

Open
#4,037 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
2.7k
Forks
395
Avg merge
21h 48m
Merged PRs (30d)
776

Description

**提交人**: Brady
**客户端版本**: 0.1.73

---

在同一对话中多次切换不同模型和供应商后,模型选择开始影响正常使用:界面显示已切换,但下一次发送有时仍恢复此前模型或此前供应商的线程;随后对话持续报错,继续切换也不能自行恢复,只能新建对话绕过。

复现方式:
1. 新建对话并正常发送消息。
2. 在同一对话内切换到另一供应商的模型并发送消息。
3. 再切回原供应商或切换到第三个模型,继续发送消息。
4. 观察实际恢复的模型、供应商和错误提示。

实际结果:
- 启动请求中的目标模型或供应商,与恢复线程显示的实际模型或供应商不一致。
- 选择第三方模型后,请求可能仍通过 ChatGPT Codex 通道发送,返回“该模型不支持使用 ChatGPT account”的 400 错误。
- 某次第三方模型响应产生了不符合 OpenAI ID 规则的历史消息 ID;切回 OpenAI 后,历史重放持续返回 `invalid_id_prefix`。之后即使继续切换受支持模型,同一对话仍会重复失败。
- Codex 与 Claude Code 之间的切换先登记为“下一次发送时生效”,连续切换时用户难以判断当前实际由哪个运行时处理。
- Claude Code 运行期间还出现未识别 `command_lifecycle` 事件的警告,可能导致界面状态不能准确反映命令进度。

预期结果:
- 每次模型切换后,下一条消息应由用户选择的模型和对应供应商处理。
- 恢复的线程若与目标供应商不兼容,应安全迁移或创建兼容线程,不能由旧线程设置覆盖新选择。
- 跨供应商历史不应因消息 ID 格式差异导致整个对话永久不可用。
- 切换状态应明确可见,失败时不应留下半切换状态。

影响:该问题会使已有对话无法继续,并且界面选择与实际运行状态不一致,已经影响模型切换功能的日常使用。当前只能通过新建对话临时规避。

脱敏诊断摘要:问题在 Cindy 0.1.73 的 macOS 客户端上复现。日志显示同一次切换中,启动参数指定了新的模型和 provider,但 `thread/resume` 仍恢复为此前的 OpenAI provider;相关失败包括历史输入 ID 前缀校验失败,以及第三方模型被错误发送至 ChatGPT Codex 上游。
---
## 提交时的任务环境

仅代表提交时快照,不一定是故障环境。OS 来自提交客户端本机,不含 SSH 远端主机;Harness / 模型来自当前任务。与运行环境无关的反馈可忽略本段。
**版本区域**: CN
**OS**: darwin arm64 (24.6.0)
**Harness**: Codex
**Model ID**: ` gpt-5.6-sol `
**界面语言**: zh-CN

Contributor guide

Open the contributing guide

Research direction

Trace model and provider selection from the launch parameters into thread/resume, then examine history replay and Codex/Claude Code runtime switching. Reproduce the listed cross-provider sequence and verify that the selected provider handles the next message, incompatible threads do not override it, and failures do not leave the conversation unusable or in a half-switched state.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
ai, backend-api-design, desktop
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.