Invalid schema: got 'type: null' - Claude Code
Quick fix
升级 cc-switch 至 v3.17.0 或更高版本,以修复 OpenAI 格式转换时缺失 type 字段导致的报错。
Symptom
Section titled “Symptom”API Error: 400 Error from provider (DeepSeek): Invalid schema for function 'web_search': schema must be a JSON Schema of 'type: "object"', got 'type: null'.当使用 cc-switch 将 Claude Code 连接到 OpenCode Go 等使用 OpenAI Chat Completions 格式的 API 时,如果客户端发送的 Anthropic 格式工具调用(如 web_search、Bash、Write 等)省略了顶层的 type 字段,cc-switch 的转换层(transform.rs 中的 clean_schema)会原样传递该 schema。这导致生成的 OpenAI 格式 parameters 对象中缺少 type 字段(即 type: null)。像 DeepSeek 这样严格的 API 网关会拒绝这种格式并返回 400 错误。此问题已在 v3.17.0 中修复,转换层现在会自动将缺失的根级 type 默认设置为 "object"。
将 cc-switch 升级至 v3.17.0 或更高版本,该版本已修复 Anthropic 到 OpenAI 格式转换时的 schema 缺陷。
作为临时替代方案,您可以绕过 OpenCode Go 的 OpenAI 兼容接口,直接在 cc-switch 中配置 DeepSeek 原生 Anthropic 兼容 API(例如 base URL 设为 https://api.deepseek.com/anthropic)。
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version3.16.0 - 3.16.1
PlatformsmacOSWindows
Source Issues
Section titled “Source Issues”本页汇总自 2 个真实 issue
- 为什么只有部分工具(如 WebSearch、Agent)报错,而 TaskList 正常?
- 因为 TaskList 等无参工具不需要复杂的 JSON Schema,而 WebSearch、Bash、Write 等带参工具在 Anthropic 转 OpenAI 格式时,其参数对象的 type 字段被错误地置为 null,从而触发了严格后端的校验失败。
- 使用 MCP 工具会受此问题影响吗?
- 不会。MCP 工具走独立的协议通道,不经过 Anthropic 到 OpenAI 的格式转换,因此不受此 schema 损坏问题的影响。
火山引擎 Agent Plan 自动识别模型列表失败 404手动修改 config.toml 匹配官方文档,并在 modelCatalog 中手动添加模型列表以绕过 404 错误。content[].thinking must be passed back升级 cc-switch 到 v3.16.0 或更高版本;临时可回退 Claude Code 到 2.1.150 或关闭 thinking。is not a model this version of Claude Code设置环境变量 CLAUDE_CODE_MAX_CONTEXT_TOKENS 或在模型名后追加 [1m] 以指定正确的上下文窗口大小。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。