前言
使用代理/中转访问 Claude Code 的用户可能会注意到一些功能受限,其中最明显的就是 Tool Search 无法启用。之前有大佬分享了通过 sed 修改源码替换域名的方案,非常实用。
在此基础上,通过逆向分析 cli.js 源码(v2.1.81),发现了一个更简单的方法,同时也对 Claude Code 所有涉及非官方 API 的限制做了一次完整总结,分享给大家。
一、启用 Tool Search 的简便方法
Claude Code 官方其实已经预留了环境变量来支持代理用户启用 Tool Search,源码中甚至有这样一行日志提示:
Set ENABLE_TOOL_SEARCH=true (or auto / auto:N) if your proxy forwards tool_reference blocks.
所以只需要一行配置:
export ENABLE_TOOL_SEARCH=true
原理
Tool Search 的启用逻辑(简化):
function isToolSearchEnabled() {
// 设了 ENABLE_TOOL_SEARCH → 直接跳过域名检查
if (process.env.ENABLE_TOOL_SEARCH) return true;
// 没设 → 检查域名是否为 api.anthropic.com
if (isFirstParty() && !isDomainMatch()) return false;
return true;
}
相比 sed 方案
相比 sed 修改源码的方式,环境变量方案支持 native 安装,不需要切换到已被官方标记为 Deprecated 的 npm 安装方式,升级后也无需重新执行。当然,不排除 Anthropic 在未来版本中移除这个环境变量的可能性,届时可能需要重新寻找替代方案。
各平台持久化配置
Bash 用户(大多数 Linux 默认):
echo 'export ENABLE_TOOL_SEARCH=true' >> ~/.bashrc && source ~/.bashrc
Zsh 用户(macOS 默认,部分 Linux):
echo 'export ENABLE_TOOL_SEARCH=true' >> ~/.zshrc && source ~/.zshrc
Fish 用户:
set -Ux ENABLE_TOOL_SEARCH true
Windows PowerShell:
[System.Environment]::SetEnvironmentVariable('ENABLE_TOOL_SEARCH', 'true', 'User')
不确定自己用的什么 shell?运行
echo $SHELL
查看。
ENABLE_TOOL_SEARCH还支持auto和auto:N(N 为 0-100 阈值百分比)两种模式,一般设true即可。
配置完成后,可以直接问 Claude Code "你能用 Tool Search 吗"来确认是否生效:

二、非官方 API 功能限制完整审计
通过对 cli.js 源码中所有域名检查(OV() 函数)和 Provider 检查(QA() 函数)的逐一分析,以下是完整的限制清单。
域名检查函数 OV()
Claude Code 内部有一个函数检查 ANTHROPIC_BASE_URL 是否为 api.anthropic.com,共被 6 处调用:
功能
说明
对代理用户的影响
1
Tool Search
减少上下文中工具定义占用的 token
有影响 — 已有环境变量绕过
2
eager_input_streaming
工具输入流式传输优化
极低 — 受 feature flag 双重限制,默认未开放
3-5
Team Memory(3个函数)
企业团队记忆同步/读写
无 — 需 enterprise/team 订阅
6
Tool Search(同#1)
另一处调用点
同上
firstParty 检查(与域名无关)
Claude Code 通过环境变量(如 CLAUDE_CODE_USE_BEDROCK)判断 Provider 类型。使用代理的用户默认就是 firstParty,因此以下功能不受影响:
- 实验性 Beta headers — 正常
- Cache editing beta — 正常
- 模型选择 UI — 正常
- Fast / Auto mode — 正常
KV Cache(Prompt Caching)
不受域名限制。 enablePromptCaching 只检查 DISABLE_PROMPT_CACHING 相关环境变量,与 API 地址无关。缓存是否命中取决于你的代理是否正确转发了 cache_control 参数。
三、总结
功能
代理受限?
解决方案
Tool Search
![]()
export ENABLE_TOOL_SEARCH=true
Prompt Caching / KV Cache
![]()
—
实验性 Betas
![]()
—
eager_input_streaming
理论上受限
但 feature flag 默认关闭,官方用户也没开,无需处理
Team Memory
理论上受限
需企业订阅,个人用户不涉及
对于绝大多数代理用户,一个环境变量就够了。 不需要改代码,不需要 npm 安装,不需要每次升级后重新执行脚本。