跳转到内容

Invalid schema: got 'type: null' - Claude Code

Quick fix

升级 cc-switch 至 v3.17.0 或更高版本,以修复 OpenAI 格式转换时缺失 type 字段导致的报错。

报错原文
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"。

  1. 将 cc-switch 升级至 v3.17.0 或更高版本,该版本已修复 Anthropic 到 OpenAI 格式转换时的 schema 缺陷。

  2. 作为临时替代方案,您可以绕过 OpenCode Go 的 OpenAI 兼容接口,直接在 cc-switch 中配置 DeepSeek 原生 Anthropic 兼容 API(例如 base URL 设为 https://api.deepseek.com/anthropic)。

ToolClaude Code
Version3.16.0 - 3.16.1
PlatformsmacOSWindows
为什么只有部分工具(如 WebSearch、Agent)报错,而 TaskList 正常?
因为 TaskList 等无参工具不需要复杂的 JSON Schema,而 WebSearch、Bash、Write 等带参工具在 Anthropic 转 OpenAI 格式时,其参数对象的 type 字段被错误地置为 null,从而触发了严格后端的校验失败。
使用 MCP 工具会受此问题影响吗?
不会。MCP 工具走独立的协议通道,不经过 Anthropic 到 OpenAI 的格式转换,因此不受此 schema 损坏问题的影响。

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