走自定义 ANTHROPIC_BASE_URL 也默认开启 tool search 了
很多团队不直连 Anthropic,而是通过公司代理或 LLM 网关,把 ANTHROPIC_BASE_URL 指向自己的地址。这类用户以前有个隐形的差别:MCP 工具搜索(tool search)默认是关的。CLI 2.1.304 把它改成了默认开启。
tool search 是什么
接的 MCP 服务器一多,工具定义本身就能占掉一大块上下文。tool search 的做法是先不把所有 MCP 工具的完整定义塞进提示词,而是延后加载:模型需要某个工具时,再通过 ToolSearch 把它的完整定义取出来。
好处很直接:上下文更省,工具多的时候模型也不容易被一长串定义干扰。
以前为什么在网关后关掉
延后加载依赖请求里的一些较新的字段和内容块。并不是每个代理、网关都能原样转发这些东西,转发不了就会直接报错。为了稳妥,以前只要 ANTHROPIC_BASE_URL 指向非官方主机,Claude Code 就默认把所有 MCP 工具一次性全量加载;想用 tool search,得自己设 ENABLE_TOOL_SEARCH=true。
2.1.304 之后
- 自定义
ANTHROPIC_BASE_URL后面,tool search 默认开启; - 如果网关因此返回 400 或 422,Claude Code 会自动去掉 tool search 重发请求,不会让对话卡在报错上。
也就是说,网关支持得了就享受延后加载,支持不了也能自己退回老路,大多数人不用再手动配置。
想自己说了算
需要固定行为时,仍然可以用 ENABLE_TOOL_SEARCH 控制:
# 始终全量加载 MCP 工具,不用 tool search
export ENABLE_TOOL_SEARCH=false
# 工具定义占上下文不到 10% 时直接全量加载,超过才延后
export ENABLE_TOOL_SEARCH=auto如果网关对一批预发布字段都不太友好(常见报错是 Unexpected value(s) 或 Extra inputs are not permitted),可以考虑 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1,它会连同 tool search 一起去掉这些预发布能力。
同版本的网关相关修复
2.1.304 还修了一个网关用户常见的报错:context_management: Extra inputs are not permitted。现在遇到这种情况,Claude Code 会去掉 context_management 字段再发一次,而不是直接失败。
再往前一点,2.1.302 也修过类似问题:会话中途切到 Vertex 或 Bedrock 后,请求因 diagnostics: Extra inputs are not permitted 失败。两次修复思路一致:遇到对方不认识的字段,就去掉它重试。
小结
- 2.1.304 起,自定义
ANTHROPIC_BASE_URL后 tool search 默认开启,网关回 400 / 422 时自动去掉重试; - tool search 让 MCP 工具定义按需加载,工具多时更省上下文;
- 要固定行为用
ENABLE_TOOL_SEARCH(false全量加载,auto按占比决定); - 同版本修复了网关后的
context_management字段报错。