老胡茶室
老胡茶室

Claude Code + Gemini:低成本高效编码的新姿势

冯宇

Claude Code CLI 功能很强大,但是 Claude 模型成本却不低,而且使用不当还有封号的风险。但是 Gemini 却非常大方,免费用户就可以获得每日免费额度,相当良心。于是我们想办法让 Claude Code 使用 Gemini 模型来编码,而且 gemini-2.5-pro 模型的编码能力也不弱。于是我们可以通过技术手段将两者结合,使用 Claude Code 强大的 CLI 功能,LLM 使用 Gemini,大幅降低 Claude Code 的使用成本。

准备工作

这里要介绍一个重要的项目: claude-worker-proxy。这个项目可以作为一个代理服务器,接收 Claude API 的请求,然后转发到其他的 LLM 服务上,实现 Claude Code CLI 可以使用其他 LLM 的能力。当前只支持 Gemini 和 OpenAI。

这个服务可以一键部署到 Cloudflare Worker 上,方便未来使用。按照官方文档操作即可:

git clone https://github.com/glidea/claude-worker-proxy
cd claude-worker-proxy
npm install
wrangler login # 如果尚未安装:npm i -g wrangler@latest
npm run deploycf

如果没有 Cloudflare 账号,或者不打算将服务暴露在公网上,也可以直接本地启动:

wrangler dev

这样的话 wrangler 就会以 dev server 的形式启动,监听 8787 端口。后续使用只需要将 http://localhost:8787 作为 Claude API 的 base url 即可。

Claude Code 配置的话也很简单,在 ~/.claude/settings.json 中写入以下内容即可:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://claude-worker-proxy.xxxx.workers.dev/gemini/https://generativelanguage.googleapis.com/v1beta",
    "ANTHROPIC_CUSTOM_HEADERS": "x-api-key: YOUR_KEY",
    "ANTHROPIC_MODEL": "gemini-2.5-pro",
    "ANTHROPIC_SMALL_FAST_MODEL": "gemini-2.5-flash",
    "API_TIMEOUT_MS": "600000"
  }
}

之后运行 claude 你将看到类似于以下的输出,就说明配置 OK 了:

$ claude
╭───────────────────────────────────────────────────╮
 Welcome to Claude Code!

   /help for help, /status for your current setup

   cwd: ************************************

   ───────────────────────────────────────────────

   Overrides (via env):                            │

 API timeout: 6000000ms
 API Base URL: https://claude-worker-proxy.***
╰───────────────────────────────────────────────────╯

就说明配置生效了,之后就可以像正常的 Claude Code 一样使用了。

轮询 API Key

如果是免费用户,那么 Gemini 的 API Key 是有额度限制的,恐怕没人希望正在激情编码中被 rate limit 或者 quota exceeded 打断吧?诚然你可以在每次出现这种错误的时候人工替换新的 API Key,但是这样太麻烦了,也不够智能。

于是作者还贴心的开发了另一个项目 One-Balance,可以帮助你轮询多个 API Key,避免因为单个 Key 的额度限制而导致服务不可用的问题,大幅提高我等免费用户的编码体验。

这个项目用到了 Cloudflare AI Gateway 的能力,所以它没办法在本地环境正常运行了,需要使用者注册 Cloudflare 账号并完成部署。部署的过程很简单,按照官方文档操作即可,这里我列出一些要点需要注意的:

  • Gemini API Key 的限制是基于 项目 (Project) 的,不是基于单个 Key 的。所以当你创建多个 API Key 用于轮询的时候,你必须先创建多个 项目,给每个项目创建 Gemini API Key,这点很重要
  • 部署 One-Balance 的时候需要你提供一个 AUTH_KEY 环境变量,这个环境变量的作用是访问你的服务的 密码,你可以随意设置,这个 KEY 支持针对每个 provider 或每个 model 设置单独的 KEY,如果需要细分权限的话,按照官方文档的说明使用特殊的格式即可。但是注意,只有 无限制 Key 才能访问 Web UI

部署完成后,通过访问 Web UI 就可以添加 API Key 了,访问首页(可以在 wrangler 终端输出找到,或者在 Cloudflare 控制台查看),输入 AUTH_TOKEN 登录之后,你应该可以看到如下页面:

首页

在对应的 provider 添加多个 API Key 就行了,对于 Gemini 应该在 google-ai-studio 的配置中添加。

到此为止就完成了 one-balance 的配置工作,只需要将需要使用 API 的时候指向这个 gateway 即可,例如对于 gemini cli,可以通过这种方式设置:

GOOGLE_GEMINI_BASE_URL=https://<one-balance-worker-url>/api/google-ai-studio GEMINI_API_KEY=<AUTH_TOKEN> gemini

记得在 /auth 设置中将认证选项设置为 2. Use Gemini API Key

claude-worker-proxy 结合 one-balance

为了让 claude code 使用更加流畅,我们完全可以将这两个服务结合起来使用,让激情编码永不停歇。

但是截止发稿时,官方文档并没有示例说明如何同时结合使用这两个服务,经过我一番摸索,总算是找对了方法。

~/.claude/settings.json 中的 ANTHROPIC_BASE_URL 修改为:

https://claude-worker-proxy.<your_name>.workers.dev/gemini/https://one-balance.<your_name>.workers.dev/api/google-ai-studio/v1beta

同时将 ANTHROPIC_CUSTOM_HEADERS 修改为:

x-api-key: <AUTH_KEY>

即可。

特别注意最后的 /v1beta 这个端点,当时被坑了好久,因为 one-balance 的官方示例使用的都是 /v1 端点,这个端点是不支持 tools 调用的,改为 /v1beta 才行,这个端点是支持 tools 调用的,可以给 claude code 使用。

提升国内使用体验

*.workers.dev 在国内的访问速度并不理想(大部分情况下访问受限),要解决这个问题,除了动用一些技术手段之外,还可以通过绑定自定义域名来解决。

只需要在 Cloudflare 控制台中,找到 Workers —> Workers 和 Pages —> 你的 worker —> 设置 —> 域和路由,然后绑定一个你自己的域名即可。

关于如何将自己的域名在 Cloudflare 上使用,我们曾经在 出海技术人的“全能基础设施套装” —— 存储篇 提到过,感兴趣的朋友可以参考。

小结

通过 Claude-Worker-Proxy 和 One-Balance,我们成功把 Claude Code 的 CLI 体验与 Gemini 的高性价比能力结合了起来。在保证流畅编码体验的同时,也最大化利用了 Gemini 的免费额度。对于热衷 Vibe Coding 的开发者来说,这是一个既实用又经济的解决方案,助力我们更高效地写代码。