需求
我平时用 VS Code 里的 Claude Code for VS Code,配合 ccSwitch 切换渠道,把对话模型换成了 openodego + DeepSeek,省钱、响应也快。
但折腾完发现一个硬伤:websearch 和 webfetch 这两个内置工具全都用不了了。
原因不复杂:Claude Code 的联网搜索是绑定在 Anthropic 官方 API 上的。渠道一切成 openodego / DeepSeek 这类第三方兼容接口,请求里根本不会带上这两个工具,于是——
让它"搜一下最新的 XX",它只能靠训练时的旧知识硬编;
让它"抓一下这个链接的内容",直接回一句"我做不到"。
一句话:模型通道换了,上网能力就没了。 这几乎是所有"借壳 Claude Code + 第三方模型"玩法的通病,网上吐槽的人一大把。
思路:把搜索能力独立出来
既然内置搜索走不通,那就不依赖它——把"搜索"做成一个模型无关的独立服务,让任何模型(DeepSeek 也一样)通过 MCP(Model Context Protocol) 去调用。
MCP 是 Anthropic 提的开放协议,现在 Claude Code / VS Code 原生支持。给我配一个 MCP 服务器,模型就能用标准的 function calling 通道去调它的工具。这条路跟对话模型是 Anthropic 还是 DeepSeek 无关,是通的。
搜索能力用谁家?我选了 Tavily:
专为 AI Agent 设计的搜索 API,返回"标题 + URL + 摘要"的结构化结果,正好是模型需要的样子;
还带
extract(抓网页正文)、crawl(爬站)、map(站点测绘),一个 API 全包;每个免费账号每月送 1000 credits,注册就有,不用绑卡。
坑:一个免费账号真不够用
1000 credits/月听起来不少,但它是"日用"的:
一次
search_depth=basic搜索 = 1 credit;search_depth=advanced= 2 credits;extract抓一个页面 ≈ 1 credit;天天让 Agent 查资料、追热点、写周报,一个月 1000 次很快见底。
而且 Tavily 一个邮箱只能注册一个免费账号,想多开就得换邮箱,还得手动轮换 Key,烦得一批。
结论:要么充钱,要么想办法把多个免费账号"聚"起来。
方案:TavilyProxyManager
开源项目
把多个 Tavily Key(额度)汇聚到一个 Master Key 后面,客户端只认这一个 Key;
智能调度:优先用剩余额度最高的 Key,同额度随机打散,避免单账号被限流;
自动故障切换:遇到 401 / 429 / 432 / 433 等错误,自动换下一个可用 Key;
自带 Web 管理面板:增删 Key、用量图表、请求日志、一键同步额度,每月 1 号自动重置;
内置 HTTP MCP 端点
/mcp,直接能被 Claude Code / VS Code 接走。
免费额度怎么"够用"? 思路就一句话:
注册 N 个 Tavily 免费账号(N 个邮箱,每个每月 1000 credits),全部导进代理池 → 相当于每月 N × 1000 credits,代理自动轮询、自动切换。两三个账号就够重度用了,四五个基本用不完。
这是真·集腋成裘——单账号不够,多账号凑,调度的事交给代理层。
部署(一台小服务器就行)
项目推荐 Docker 部署,docker-compose.yml:
version: "3.8"
services:
tavily-proxy:
image: ghcr.io/xuncv/tavilyproxymanager:latest
container_name: tavily-proxy
ports:
- "8080:8080"
environment:
- LISTEN_ADDR=:8080
- DATABASE_PATH=/app/data/proxy.db
- TAVILY_BASE_URL=https://api.tavily.com
- UPSTREAM_TIMEOUT=30s
volumes:
- ./data:/app/data
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
docker-compose up -d
首次启动会自动生成 Master Key,从日志里捞:
docker logs tavily-proxy 2>&1 | grep "master key"
# level=INFO msg="no master key found, generated a new one" key=你的_master_key
然后浏览器打开 http://你的服务器:8080 就是管理面板,用 Master Key 登录。
导入多个免费账号
方式一:管理面板(推荐)
Keys 页面 → 新增 → 填 tvly-xxx 真实 Key、别名、总配额(1000)。
方式二:API
curl -X POST "http://你的服务器:8080/api/keys" \
-H "Authorization: Bearer <MASTER_KEY>" \
-H "Content-Type: application/json" \
-d '{"key": "tvly-你的key", "alias": "账号1", "total_quota": 1000}'
把 N 个邮箱的免费 Key 全导进去,代理会"优先用剩余额度最高的",完全不用手动切换。
接入 Claude Code(就两步)
代理自带 MCP 端点 /mcp,不用装任何第三方 MCP 服务器。
第一步,一条命令加进 Claude Code:
claude mcp add --transport http --scope user tavily-proxy "http://你的服务器:8080/mcp" --header "Authorization: Bearer <MASTER_KEY>"
第二步,重启 Claude Code 会话,输入 /mcp 确认 tavily-proxy 显示 connected。
之后模型自动获得这些工具:
实测(走 MCP 通道调 tavily-search)搜"GitHub trending 2026",能正常返回带摘要的结果和 LLM 生成的答案,联网能力满血复活。
补充:这套方案我也是参考了 B 站一个实操视频才少走了弯路:
https://www.bilibili.com/video/BV1hSN3zjE8F
省额度的几个细节
默认
search_depth=basic(1 credit),需要多段摘要再上advanced(2 credits);include_answer=true很划算:多花一点点让 Tavily 直接给一段生成式回答,很多时候不用再 extract 一遍;抓网页优先
extract,别动不动crawl:单页 1 credit,整站爬 5 页就是 5 credits,按需来;搜新闻类用
topic=news+time_range:结果更准,也省调用;面板盯着用量:
/api/stats和请求日志能看出谁在烧钱。
吐槽
绕了一大圈才发现,这类"第三方模型通道缺内置工具"的问题,本质上还是大厂生态封闭的锅——Anthropic 把搜索绑死在自家 API 上,换个模型就给你缺胳膊少腿。好在社区方案足够多,一个开源代理就把搜索 + 抓取 + 多账号聚合全解决了,一分钱不用花。
经验
这次的感触有两点:
Agent 的联网能力应该独立成服务,别和对话模型绑死。不管是换模型、换渠道,搜索始终是自己的,随时能用。
免费额度靠"量"取胜。单账号 1000 credits 不够,就多注册几个免费账号聚合起来,开源代理替你调度轮询——这是普通打工人对抗"免费引流、后期收割"最直接的方式,跟之前那篇自研本地工具的心态一模一样:能用免费开源的,就绝不给付费订阅送钱。
互联网的本质本该是开放与免费。能自己搭的,就不必被平台绑定、被额度卡脖子。
参考资料
TavilyProxyManager(部署、MCP、管理面板):https://github.com/xuncv/TavilyProxyManager
Tavily 官方 MCP / 文档:https://docs.tavily.com/documentation/mcp
Claude Code MCP 配置:
claude mcp add --help(--transport http+--header)参考视频(B 站):
https://www.bilibili.com/video/BV1hSN3zjE8F