Skip to content

input_schema does not support oneOf, allOf, or anyOf at the top level ​

text
input_schema does not support oneOf, allOf, or anyOf at the top level

这是 Claude 接口拒收某个工具定义时返回的 400 报错。最常见的情况是 Codex 桌面版经 CC Switch 转接调用 Claude 模型:Codex 自带的一个工具,参数格式 Claude 不接受,CC Switch 转换时原样传了过去。用 Claude 模型就直接用 Claude Code,留在 Codex 里就改用 GPT 模型。

出现在什么时候 ​

  • 工具:Codex 桌面版,通过 CC Switch 的本地转换调用 Claude 模型(在 CC Switch 里给这个 Codex 供应商选的格式是 Anthropic Messages,标着“需转换”的那一项)。
  • 时机:几乎每条消息都报,换模型、换密钥都一样。
  • 有时还会看到前面多一句,点名了出问题的工具:
text
Invalid schema for function 'mcp__codex_app__automation_update':
schema must have type 'object' and not have 'oneOf'/'anyOf'/'allOf'/'enum'/'const'/'not' at the top level.

原因 ​

Claude 接口要求每个工具的参数定义 input_schema 是一个 JSON Schema 对象(见 Anthropic 官方 定义工具),最外层不能是 oneOf、anyOf、allOf 这类“几选一”的组合。

Codex 桌面版内置的 automation_update 工具,参数最外层正是 oneOf。CC Switch 把 Codex 的请求转换成 Claude 格式时,没有改写这一层,请求就被拒收。这是 CC Switch 已知的问题 #7459(影响 3.20.3 及以后的版本,评论里 v4.0.16 仍能复现),修复在 PR #8193,核对时还没有合并,最新版 v4.0.21 也没有修复。

怎么解决 ​

  1. **用 Claude 模型写代码,直接用 Claude Code。**Claude Code 自己的工具都是 Claude 能接受的格式。按 Claude Code 教程 配置。
  2. **想留在 Codex 里,改用 GPT 模型。**用 Codex 分组的 API 密钥和 GPT 模型(例如 gpt-6.1-sol),CC Switch 里这个供应商保持 Codex 原生的格式,请求不经过转换。见 Codex 教程 和 CC Switch 教程。
  3. **等 CC Switch 修复。**关注 #7459,发布包含修复的版本后再升级。

用 xxapi 时还要查什么 ​

  • 在 xxapi 上,请求失败时看到的报错可能是固定的一句“服务器繁忙,请稍后重试。如果持续出现,请联系客服并提供请求 ID。”,不一定是上面的英文原文。如果你经 CC Switch 在 Codex 里用 Claude 模型、而且几乎每条消息都失败,先按上面的办法排查。
  • 每条消息都失败时,Codex 的自动压缩也会失败,对话越积越长,最后可能变成 prompt is too long。换了办法以后,新开一个对话。
  • 仍然报错,把请求 ID、出错时间、模型 ID 和 CC Switch 版本号发给 support@xxapi.ai。
  • 同一条转换路径上的另一个报错见 thinking.type.disabled is not supported。

核对日期:2026-10-28(CC Switch v4.0.21,#7459 未关闭)。工具更新后原因可能变化,以官方说明和 issue 为准。

回到常见问题

从第一步,到第一次成功使用。