上回说到,我把终端工具的网络问题搞定了——用 Clash TUN 模式让所有流量都走代理,终于能在终端里正常访问外网。但故事远没有结束:网通了只是第一步,要真正在本地的 OpenCode 里同时用上 GitHub Copilot 和 Google Antigravity 的免费大模型额度,后面还有一连串的坑等着我。

这篇就是续集,记录我从「能上网」到「能白嫖双份 AI 额度」的全过程。

1. 网络层的遗留问题:TUN 开了,Git 推不动了

上篇已经确认:系统默认的代理设置对底层直接走 Socket 的终端工具没用,得开 TUN 模式,让代理软件在系统底层生成虚拟网卡、重写路由表,把电脑里所有流量都强制劫持到代理节点。

听起来很完美,但全局劫持也带来了新麻烦。

我在用 Hexo 部署博客的时候发现:hexo d 死活推不上去。排查后发现,Git 默认用 SSH 协议走 22 端口,而大部分代理节点会直接丢弃 22 端口的流量(安全策略)。

解决办法很简单:把 Git 的远程仓库地址从 SSH 换成 HTTPS(走 443 端口)。443 是 HTTPS 的标准端口,代理对它非常宽容,切换之后一切正常,TUN 模式开着也能顺利推代码。

经验总结:全局代理虽好用,但 SSH(22 端口)和一些冷门协议可能被代理节点拦截,遇到连不上的情况先检查端口和协议。

2. Antigravity 的 400 报错:差一个 Project ID

网络通了之后,我迫不及待地打开 Google Antigravity,想直接用里面的免费大模型。结果迎面一个 HTTP 400 Bad Request,报错信息写着:

1
Invalid project resource name projects/

翻译成人话就是:你没告诉我你是哪个项目的,我不给你用。

这里有个容易踩的坑:这个 “Project” 不是你本地的代码文件夹名,而是 Google Cloud Console 里分配给你的那个全局唯一的 GCP Project ID(长得像 true-gradient-xxx 这样的字符串)。Google 底层的 gRPC 接口需要这个 ID 来定位资源和计算配额,本地软件发请求时这个字段是空的,所以被直接拦了。

Google Cloud Console 中的 Project ID

修复步骤

  1. 登录 Google Cloud Console,找到你的 Project ID
  2. 打开 Antigravity 软件,找到设置底部的 [Dev] GCP Project ID 字段
  3. 把真实的 Project ID 填进去

填完之后,Antigravity 发请求时会自动把这个 ID 拼到寻址路径里,400 报错消失,免费的大模型额度正式激活。

Antigravity 成功激活后的使用界面

3. 最终整合:让 OpenCode 同时调用两家模型

GitHub Copilot 在 OpenCode 中的使用

在这之前,我已经通过 GitHub 学生包的优惠,给 OpenCode 接上了 Copilot 的基础大模型额度。现在 Antigravity 也激活了,问题来了:怎么让 OpenCode 同时用上这两家的模型?

答案是一个开源项目:opencode-antigravity-auth

opencode-antigravity-auth 项目

别被名字骗了,这个插件干的事情远不止”转发 API”那么简单。它其实是一个跑在本地的反向代理 + 协议转换引擎,大致做了三件事:

3.1 拦截请求(进程内劫持)

插件直接在 OpenCode 内部拦截了原生的 fetch() 请求。也就是说,你的请求还没出本机,就被它截住了。

3.2 自动登录(本地 OAuth 闭环)

插件会在本地起一个临时的 HTTP 服务器,自动完成 Google 账号的 OAuth 授权流程,静默拿到 Token。你不需要手动复制粘贴任何密钥。

3.3 协议翻译(格式转换)

这是最核心的部分。标准的 API 请求格式和 Antigravity 后端要求的格式不一样,插件负责:

  • 剥掉 Antigravity 不支持的 JSON Schema 字段
  • 重新组装思维链(Thinking Blocks)
  • 把前面拿到的 Google 凭据附加上去,然后转发给云端

通过这套架构,我的 OpenCode 实现了底层模型的无缝切换——写代码时可以随时在 Copilot 和 Antigravity 的模型之间来回跳,同时享受两家的免费额度

写在最后

回顾整个过程:从网络层的死循环排查,到云端鉴权的补齐,再到本地 IDE 里的流量劫持和协议重写——每一步都不是玄学,而是对计算机底层机制的理解和验证。

感谢 Gemini 在排错过程中提供的客观分析,帮我避免了大量无意义的盲目试错;也感谢开源社区,特别是 opencode-antigravity-auth 的维护者,提供了协议转换方案,让”在本地同时用多家大模型”这件事真正变成了现实。


本站由 Hank Hill 使用 Stellar 1.33.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站总访问量 本文总阅读量
🤴
Legendary Chest Unlocked!
感谢阅读到底部。