跳转到内容

Invalid schema for function 'web_search':Claude Code

Quick fix

将 cc-switch 升级到 v3.17.0 或更高版本;暂时无法升级时,改用 DeepSeek 原生 Anthropic-compatible API。

报错原文
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'.

在 Claude Code 通过 cc-switch 的 OpenAI Chat Completions 转换层连接 OpenCode Go/DeepSeek 时,客户端工具的 Anthropic `input_schema` 可能省略根级 `type`。旧版 `clean_schema` 会原样传递该结构,导致转换后的 `parameters` 没有 `type`;DeepSeek 等严格网关将其视为 `type: null` 并返回 400。该问题也可能表现为 Bash、Write、Edit、Agent 等带参工具的参数丢失或调用失败,而无参工具和走独立协议通道的 MCP 工具可能不受影响。

Issue #3844 曾推测缺少 `required` 数组或嵌套 schema 也可能参与问题,但维护者在 Issue #3439 中确认的修复是:仅为缺少 `type` 的根 schema 默认补上 `"object"`,并在同时缺少 `properties` 时补上空对象;嵌套子 schema 不作这种修改。该修复已在 v3.17.0 发布。Issue #3844 后来因长期无新复现信息按超时关闭,并建议在 4.0 重构后使用最新版复测。

  1. 将 cc-switch 从受影响的 v3.16.0 或 v3.16.1 升级到 v3.17.0 或更高版本。

  2. 继续使用 OpenCode Go、DeepSeek 和 OpenAI Chat Completions 格式,重新启动 Claude Code 并触发 WebSearch,确认不再出现 `type: null`。

  3. 如果暂时无法升级,改为直接使用 DeepSeek 原生 Anthropic-compatible API;Issue #3439 的对比测试和 Issue #3844 的报告均确认绕过该转换链路后问题消失。

  4. 如果最新版仍能复现,记录当前 CC Switch 版本、系统、完整复现步骤以及更新后的错误日志或截图,并重新打开或提交 issue。

ToolClaude Code
Version受影响:3.16.0 - 3.16.1;已修复:3.17.0
PlatformsmacOSWindows
为什么直接使用 Anthropic-compatible 格式时不会报错?
Issue #3439 的对比测试显示,直接连接 DeepSeek 原生 Anthropic base URL 时 WebSearch 正常;该路径绕过了出现问题的 OpenAI Chat Completions schema 转换层。
为什么无参工具和 MCP 工具还能正常工作?
Issue #3844 报告称 TaskList、CronList 等无参工具不依赖同样的参数 schema,而 MCP 工具使用独立协议通道,不经过 Anthropic→OpenAI 格式转换。
升级后仍出现 `type: null` 怎么办?
维护者要求使用最新版复测;若仍复现,应补充 CC Switch 版本、操作系统、完整复现步骤及相关日志或截图后重新报告。

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