发布于 2025年11月27日

610 - 《Neovate Code 开发笔记 04:Antigravity Povider 和 AI SDK Provider》

Google 的 Antigravity 比较大气,提供 Gemini 3 Pro 和 Sonnet 4.5 免费用。就想着能否把他接到 Neovate Code 里。

这种 Provider 加起来有点在规则边缘,社区其实褒贬不一。比如 Roo Code 的作者会拒绝加 Claude Code 的,因为会违反 Anthropic 的规则。而 opencode 作者就比较赞同,加了 Claude Code 和 Github Copilot 的,ChatWise 里也有 Github Copilot 的 Provider 。

然后在社区看到 https://github.com/liuw1535/antigravity2api-nodejs ,于是就尝试做接入。但这个项目的思路是提供 OpenAI 兼容接口的 Server 的思路,Neovate Code 则无需这么麻烦,直接请求时转格式即可,无需加一个 Server 这么麻烦。

至于这个库是怎么逆向 Antigravity 的实现的,作者在 issue 里也有回复,用抓包软件,同时给抓包软件设置一个科学上网的流量出口,比如 v2rayn 的 http://127.0.0.1:10808

获取 access_token 的逻辑比较简单,起一个 server,让用户自己访问 antigravity 的授权页面同时 callback 地址是这个 server,成功后 server 会收到请求,然后记录 access_token 。

复杂的是请求的转换。

由于 Neovate Code 用的 ai sdk,复杂性又多了一层,我之前还没写过 ai sdk 的 provider,都是用现成的。

最早的思路是用 openai-compatible 的 provider,自定义 fetch,在这里做数据的来回转换,直到遇到 thought-signatures 的问题。他需要把上一次请求里 tool_call 的 thought-signatures 带到下一轮的请求,而 openai-compatible 的 provider 里又似乎写死了这一点,然后卡壳了好一会。

然后决定用彻底解,不用 openai-compatible 的 provider,自己写一个。简单看了下 https://githu

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。