missing field `call_id`,Codex 心跳 DeepSeek 400
Quick fix
为代理启用请求时清理孤立的心跳输出条目;该 issue 未确认 CC Switch 已有修复。
Symptom
Section titled “Symptom”cause: Failed to deserialize the JSON body into the target type:
input: missing field `call_id` at line 1 column 389282Codex 桌面版的 heartbeat 自动化会向会话历史注入没有 `call_id` 的 `function_call_output`。DeepSeek `/responses` 要求该字段,因此返回 400;历史条目会随该线程后续请求反复发送,导致同一会话持续失败。补随机 `call_id` 仍可能因没有匹配的 `function_call` 而报错。评论提出代理请求时过滤此类孤立条目可提供恢复路径,但该 issue 关闭时维护者称问题源于客户端或供应商一侧,CC Switch 无法从根本修复;未确认正式修复已发布。
避免继续使用已受影响的线程;新建会话可正常工作。
若使用支持请求时清理的代理实现,可在转发前过滤没有有效 `call_id` 的孤立 `function_call_output`,并用空白测试任务验证。不要伪造 `call_id`;相关评论中的参考实现仅作为第三方代理边界方案,issue 未确认其为 CC Switch 内置修复。
Affected Versions
Section titled “Affected Versions”ToolCodex 桌面版
Version3.19.1、3.20.1(报告环境;另有 3.20.3 验证)
PlatformsmacOS
Source Issues
Section titled “Source Issues”本页汇总自 1 个真实 issue
- 用 DeepSeek 官方教程连接 Codex 能避免这个问题吗?
- 评论中的用户尝试后仍遇到相同错误;该 issue 未证明官方连接方式可以避免问题。
Select Model 菜单仍然显示切换前模型列表 - Codex关闭现有 Codex 会话后运行 `codex app-server daemon restart`;升级 CC Switch 至 v4.0.7 以上可获得旧目录检测与重启提示。供应商 API Key 被覆盖:Codex 重启或切换后升级到 cc-switch v4.0.0 或更高版本;该版本重写了切换逻辑,避免供应商密钥互相覆盖并恢复官方登录态。<thinking> 标签作为正文输出 Claude Code将 provider 的 apiFormat 从 openai_chat 改为 anthropic(若上游支持),可绕过内联 <thinking> 泄露。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。