跳转到内容

Invalid schema for function Codex 报错

Quick fix

升级 cc-switch 修复工具 Schema 转换缺陷;若上游严格拒绝 oneOf,暂用历史任务或更换模型。

报错原文
Invalid schema for function 'codex_app__automation_update': schema must be a JSON Schema of 'type: "object"', got 'type: null'.

Codex 和 Claude Code 注入的内置桌面工具(如 codex_app__automation_update)的 JSON Schema 在根层级缺失 "type": "object" 或使用了 oneOf。当 cc-switch 将 Responses 格式转换为 OpenAI Chat Completions 格式并转发给第三方提供商(如 DeepSeek、Databricks)时,上游 API 会进行严格的 JSON Schema 校验并返回 HTTP 400 错误。

早期 cc-switch 版本未处理 type: null 的情况,后续版本(如 PR #4706 合入后)虽将其规范化为 {"type": "object", "properties": {}},但在处理复杂 Schema 时仍保留了顶层的 oneOf。这导致部分校验极其严格的上游(如 Databricks 托管的 OpenAI 模型)依然会拒绝请求。

  1. 将 cc-switch 升级到最新版本(至少包含 PR #4706 的版本),以修复 type: null 导致的 DeepSeek 等上游 400 错误。

  2. 若使用 Databricks 等严格拒绝顶层 oneOf 的上游,请暂时继续使用历史任务(利用 deferred namespace 机制避免直接暴露该工具),或更换对 Schema 校验较宽松的模型提供商。

ToolCodex / Claude Code
Version3.14.3 - 3.19.1
PlatformsWindowsmacOS
为什么直连官方 API 不报错,使用 cc-switch 代理就会报错?
官方 API 对工具 Schema 的校验较为宽松,而 cc-switch 将请求转换为 OpenAI Chat Completions 格式转发给第三方时,第三方(如 DeepSeek)会进行严格的 JSON Schema 规范校验。
升级 cc-switch 后仍然报 oneOf 错误怎么办?
部分上游(如 Databricks)拒绝顶层包含 oneOf 的 Schema。在 cc-switch 彻底扁平化 Schema 前,可尝试使用历史任务触发 deferred namespace 机制,或更换校验较宽松的上游模型。

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