跳转到内容

messages[1]: missing field `content`(HTTP 400)— Codex

Quick fix

将 CC Switch 升级到 v3.20.4;转换器会跳过无 content 的 additional_tools 载体,避免严格上游返回 400。

报错原文
Invalid JSON data: Failed to deserialize the JSON body into the target type: messages[1]: missing field `content` at line 1 column 34911

Codex Desktop 的标题生成及普通对话请求会在 input 开头放置一个有 role、无 content 的 additional_tools 载体。CC Switch 3.19.1 的 Responses→Chat 转换会把它变成 {"role":"system","content":null},Agnes 等要求 content 为字符串的严格上游因此返回 HTTP 400。

v3.20.4 已跳过该载体并将其中的工具并入顶层 tools,用户确认升级后恢复正常。不过,带 tool_calls 的 assistant 消息仍会输出 "content":null;这是 OpenAI Chat 规范允许的形态,但部分严格网关仍可能拒绝。

  1. 将 CC Switch 从 3.19.1 升级到包含 #7454 修复的 v3.20.4。

  2. 重新启用 apiFormat=openai_chat 的本地代理,并在 Codex Desktop 中发送消息验证标题生成和普通对话请求。

  3. 再执行一轮会调用工具的对话;如果工具调用后仍返回 400,保留出站请求体和报错,以确认是否为 assistant tool_calls 消息中的 content:null。

  4. 若暂时无法升级,可在本地反向代理中将消息里缺失或为 null 的 content 改写为 "";升级并验证修复后移除此绕过。

ToolCodex
Version3.19.1 受影响;v3.20.4 修复 additional_tools 导致的空 system 消息
PlatformsWindows
升级到 v3.20.4 后,Agnes 上的标题生成和普通对话是否恢复正常?
是。报告者升级后确认已正常可用。
v3.20.4 是否也把带 tool_calls 的 assistant 消息中的 content:null 改成了空字符串?
没有。该版本只修复 additional_tools 载体被转换为空 system 消息的问题;assistant tool_calls 消息仍可能包含 "content":null。
如果工具调用之后仍返回 400,需要提供什么信息?
提供转换后的出站请求体和上游报错,以判断严格上游是否拒绝 assistant tool_calls 消息中的 content:null。

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