跳转到内容

missing field `call_id`:Codex 自动化 HTTP 400

Quick fix

原帖尚无已发布的可验证修复;需在代理转发时规范化无 call_id 的孤立输出,并保留跨任务消息内容。

报错原文
CC Switch local proxy failed while handling Codex endpoint /responses.
Provider: DeepSeek; model: deepseek-v4-flash; upstream_status: HTTP 400;
cause: Failed to deserialize the JSON body into the target type: input: missing field `call_id`

这些报告的共同点是 Codex 会话历史中存在孤立的 `function_call_output`,其没有可用的 `call_id` 或未与前置 `function_call` 配对。严格校验的上游会拒绝整次请求;由于该条目会随历史重发,报告者观察到重试后仍持续 HTTP 400。自动化中的 `automation_update` 被描述为任务元数据,且任务指令另有 `user` 消息;跨任务 `send_message_to_thread` 的输出则可能是任务文本的唯一载体,因此直接丢弃会造成指令丢失。评论中的本地测试称,请求转发时清洗可让已受影响的会话恢复,但这不是已确认发布的修复。

#6697 同样描述会话持续 400,但触发原因不同:无视觉能力上游在转换过程中丢弃纯图片 tool 输出,留下未配对的 `tool_calls`。它不是缺少 `call_id` 的同一数据形状,应使用占位 tool 消息或配对校验来保留响应关系。#7230 的评论提到拟议 PR 和转换策略,但原帖均为 open,不能据此认定已修复。

  1. 原帖尚未提供可验证、已发布的解法。请保留受影响会话与代理请求日志,并在源讨论中跟踪代理转发层对孤立 `function_call_output` 的处理。

  2. 对于 `automation_update` 一类无 `call_id` 的元数据输出,讨论中的建议是仅在转发时过滤或本地拒绝空、缺失的 `call_id`,不要伪造或复用 `call_id`。

  3. 对于 `send_message_to_thread`、`create_thread` 等跨任务输出,不能只过滤;讨论建议仅对已识别的委派内容转换为普通 `user` 消息,以保留投递文本。

  4. 对于纯图片 tool 输出且上游不支持视觉的情况,#6697 建议发送文本占位 tool 消息,避免留下未配对的 `tool_calls`。

ToolCodex
Version未知
PlatformsWindowsmacOS
有人试过用 DeepSeek 官方连接 Codex 的方法,能否避免这类问题?
该线程中的回复称已自行尝试,但仍出现相同错误。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。