【方案】解决Antigravity连接远程服务器无法AI对话(无sudo权限)

2026-04-11 15:011阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

解决 Antigravity 连接远程服务器 AI 聊天连接失败:graftcp + mihomo 方案(无sudo权限也可)

背景与问题描述

最近,我用 Antigravity 自带的ssh连远程 Linux 服务器开发,代码能跑,但 AI 对话死活连不上。更麻烦的是:我在服务器上没有 sudo 权限。最后我用“用户态代理 + graftcp 劫持 + wrapper 替换”的组合拳把它修好了。主要有以下三个问题:

  • AI 聊天无法连接:提示 Cloud Code request timeoutTools: Offline
  • 代理无效:即使服务器设置了 HTTP_PROXY,Antigravity 的核心进程(Go 编写)依然直连网络导致超时。
  • 权限受限:在没有 sudo 权限的实验室或学校服务器上,无法安装系统级代理工具。

本教程通过 mihomo (Clash Meta) 建立底层代理,配合 graftcp 进行系统调用级劫持,彻底打通 Antigravity 的联网链路。


准备工作:在用户目录下安装核心组件

由于没有 sudo 权限,我们将所有工具安装在 ~/(Home 目录)下。

1. 部署 mihomo (Clash Meta) 内核

mihomo 负责维护与订阅节点的连接。

  1. 下载与解压:从 Mihomo Releases 下载 mihomo-linux-amd64-compatible-v1.19.17
  2. 创建目录结构

mkdir -p ~/mihomo/data/proxy_providers cd ~/mihomo chmod +x mihomo-linux-amd64-compatible

  1. **编写 config.yaml**
    关键点:proxy-providerspath 必须位于 -d 指定的目录内。

port: 7890 socks-port: 7891 allow-lan: false bind-address: 127.0.0.1 mode: rule log-level: info proxy-providers: subscription: type: http url: "你的订阅链接" interval: 3600 path: ./subscription.yaml # 必须在 data 目录下 proxy-groups: - name: PROXY type: select use: [subscription] rules: - GEOIP,CN,DIRECT - MATCH,PROXY

  1. 后台启动

nohup ./mihomo-linux-amd64-compatible -d ./data -f ./config.yaml > proxy.log 2>&1 &

2. 编译安装 graftcp

graftcp 能劫持 Go 程序的 TCP 连接,强制其走 SOCKS5 代理。

  1. 安装 Go 环境(若服务器没有新版 Go):

wget https://go.dev/dl/go1.24.7.linux-amd64.tar.gz tar -xzf go1.24.7.linux-amd64.tar.gz -C ~ echo 'export PATH=$HOME/go/bin:$PATH' >> ~/.bashrc source ~/.bashrc

  1. 设置 Go 国内镜像并编译

export GOPROXY=https://goproxy.cn,direct wget https://github.com/hmgle/graftcp/archive/refs/tags/v0.7.1.tar.gz tar -xzf v0.7.1.tar.gz && cd graftcp-0.7.1 make


核心步骤:劫持 Antigravity 核心进程

Antigravity 启动时会拉起 language_server_linux_x64。我们需要用一个脚本“包装”它。

1. 寻找当前运行的二进制路径

Antigravity 经常更新,会产生多个版本目录。通过进程命令确认当前路径:

ps -ef | grep language_server_linux_x64

假设路径为:~/.antigravity-server/bin/1.19.5-xxxx/extensions/antigravity/bin/

2. 替换为 Wrapper 脚本

  1. 备份原程序

mv language_server_linux_x64 language_server_linux_x64.bak

  1. 创建劫持脚本
    创建新文件 language_server_linux_x64,内容如下:

#!/usr/bin/env bash GRAFTCP_DIR="$HOME/graftcp-0.7.1" PROXY_SOCKS="127.0.0.1:7891" # 自动启动 graftcp-local 监听器 if ! pgrep -f "graftcp-local" > /dev/null; then nohup "$GRAFTCP_DIR/local/graftcp-local" -socks5 "$PROXY_SOCKS" -listen 127.0.0.1:2233 -select_proxy_mode only_socks5 > /dev/null 2>&1 & sleep 0.5 fi # 强制 Go 优化环境 export GODEBUG=netdns=cgo,http2client=0 # 执行原始程序 exec "$GRAFTCP_DIR/graftcp" -a 127.0.0.1 -p 2233 "$0.bak" "$@"

  1. 赋予权限

chmod +x language_server_linux_x64


排查与验证

  1. 检查监听端口
    确保 7891 (mihomo) 和 2233 (graftcp-local) 都在 LISTEN 状态。

ss -lntp | grep -E '7891|2233'

  1. 强制重启服务
    修改完脚本后,必须杀掉旧进程,让 Antigravity 重新拉起:

pkill -f language_server_linux_x64

  1. 连接测试
    在服务器上测试 Cloud Code 接口连通性:

curl -I --socks5-hostname 127.0.0.1:7891 https://daily-cloudcode-pa.googleapis.com

只要返回 HTTP 状态码(如 404 或 200),而非 Timeout,说明代理链路已通。


踩坑总结与 Tips

  • SSH 断连问题:开启本地 TUN 模式可能导致 SSH 路由冲突,触发 Software caused connection abort。建议在 SSH 客户端开启 ServerAliveInterval 30 或在代理软件中排除 SSH 端口。
  • 版本更新:Antigravity 更新后会生成新的版本文件夹,导致原有的 Wrapper 失效。此时需要将脚本重新应用到新文件夹下的二进制文件。
  • Ptrace 权限:若报错无法劫持,请检查 /proc/sys/kernel/yama/ptrace_scope。若为 1,确保 Wrapper 是通过父进程拉起的;若为 2/3 且无 sudo 权限,此方案可能失效。

刚看到一个老哥在问 正好前两天也遇到了,就总结一下发出来吧,

== 但是现在有个问题,不连续对话后过一会再聊天还是不行,需要重启应用或者重连,排查了很久也没排查出来 ==

—【求助】代理环境下 Google Code Assist OAuth 认证失败 + Antigravity remote-ssh 配置

网友解答:
--【壹】--:

你这个情况就是跟没连上是一样的,重点关注一下 [quote=“jasonli, post:1, topic:1689627”]
language_server_linux_x64
[/quote]

这个改没改,运行没有 排查一下吧


--【贰】--:

感谢,终于是用上了,学校服务器都是没sudo的,按这个教程一次成功


--【叁】--:

image1465×387 23.7 KB
佬,我按你的方式配置了以后还是存在问题,对话时一直在工作但不输出
image966×207 2.89 KB


--【肆】--:

nice! 按照大佬的方法跑通了!


--【伍】--:

mark一下,之前因为反重力的网络限制太恶心,一直都没使用


--【陆】--:

非常的有用,谢谢大佬分享


--【柒】--:

强呀,大佬!

问题描述:

解决 Antigravity 连接远程服务器 AI 聊天连接失败:graftcp + mihomo 方案(无sudo权限也可)

背景与问题描述

最近,我用 Antigravity 自带的ssh连远程 Linux 服务器开发,代码能跑,但 AI 对话死活连不上。更麻烦的是:我在服务器上没有 sudo 权限。最后我用“用户态代理 + graftcp 劫持 + wrapper 替换”的组合拳把它修好了。主要有以下三个问题:

  • AI 聊天无法连接:提示 Cloud Code request timeoutTools: Offline
  • 代理无效:即使服务器设置了 HTTP_PROXY,Antigravity 的核心进程(Go 编写)依然直连网络导致超时。
  • 权限受限:在没有 sudo 权限的实验室或学校服务器上,无法安装系统级代理工具。

本教程通过 mihomo (Clash Meta) 建立底层代理,配合 graftcp 进行系统调用级劫持,彻底打通 Antigravity 的联网链路。


准备工作:在用户目录下安装核心组件

由于没有 sudo 权限,我们将所有工具安装在 ~/(Home 目录)下。

1. 部署 mihomo (Clash Meta) 内核

mihomo 负责维护与订阅节点的连接。

  1. 下载与解压:从 Mihomo Releases 下载 mihomo-linux-amd64-compatible-v1.19.17
  2. 创建目录结构

mkdir -p ~/mihomo/data/proxy_providers cd ~/mihomo chmod +x mihomo-linux-amd64-compatible

  1. **编写 config.yaml**
    关键点:proxy-providerspath 必须位于 -d 指定的目录内。

port: 7890 socks-port: 7891 allow-lan: false bind-address: 127.0.0.1 mode: rule log-level: info proxy-providers: subscription: type: http url: "你的订阅链接" interval: 3600 path: ./subscription.yaml # 必须在 data 目录下 proxy-groups: - name: PROXY type: select use: [subscription] rules: - GEOIP,CN,DIRECT - MATCH,PROXY

  1. 后台启动

nohup ./mihomo-linux-amd64-compatible -d ./data -f ./config.yaml > proxy.log 2>&1 &

2. 编译安装 graftcp

graftcp 能劫持 Go 程序的 TCP 连接,强制其走 SOCKS5 代理。

  1. 安装 Go 环境(若服务器没有新版 Go):

wget https://go.dev/dl/go1.24.7.linux-amd64.tar.gz tar -xzf go1.24.7.linux-amd64.tar.gz -C ~ echo 'export PATH=$HOME/go/bin:$PATH' >> ~/.bashrc source ~/.bashrc

  1. 设置 Go 国内镜像并编译

export GOPROXY=https://goproxy.cn,direct wget https://github.com/hmgle/graftcp/archive/refs/tags/v0.7.1.tar.gz tar -xzf v0.7.1.tar.gz && cd graftcp-0.7.1 make


核心步骤:劫持 Antigravity 核心进程

Antigravity 启动时会拉起 language_server_linux_x64。我们需要用一个脚本“包装”它。

1. 寻找当前运行的二进制路径

Antigravity 经常更新,会产生多个版本目录。通过进程命令确认当前路径:

ps -ef | grep language_server_linux_x64

假设路径为:~/.antigravity-server/bin/1.19.5-xxxx/extensions/antigravity/bin/

2. 替换为 Wrapper 脚本

  1. 备份原程序

mv language_server_linux_x64 language_server_linux_x64.bak

  1. 创建劫持脚本
    创建新文件 language_server_linux_x64,内容如下:

#!/usr/bin/env bash GRAFTCP_DIR="$HOME/graftcp-0.7.1" PROXY_SOCKS="127.0.0.1:7891" # 自动启动 graftcp-local 监听器 if ! pgrep -f "graftcp-local" > /dev/null; then nohup "$GRAFTCP_DIR/local/graftcp-local" -socks5 "$PROXY_SOCKS" -listen 127.0.0.1:2233 -select_proxy_mode only_socks5 > /dev/null 2>&1 & sleep 0.5 fi # 强制 Go 优化环境 export GODEBUG=netdns=cgo,http2client=0 # 执行原始程序 exec "$GRAFTCP_DIR/graftcp" -a 127.0.0.1 -p 2233 "$0.bak" "$@"

  1. 赋予权限

chmod +x language_server_linux_x64


排查与验证

  1. 检查监听端口
    确保 7891 (mihomo) 和 2233 (graftcp-local) 都在 LISTEN 状态。

ss -lntp | grep -E '7891|2233'

  1. 强制重启服务
    修改完脚本后,必须杀掉旧进程,让 Antigravity 重新拉起:

pkill -f language_server_linux_x64

  1. 连接测试
    在服务器上测试 Cloud Code 接口连通性:

curl -I --socks5-hostname 127.0.0.1:7891 https://daily-cloudcode-pa.googleapis.com

只要返回 HTTP 状态码(如 404 或 200),而非 Timeout,说明代理链路已通。


踩坑总结与 Tips

  • SSH 断连问题:开启本地 TUN 模式可能导致 SSH 路由冲突,触发 Software caused connection abort。建议在 SSH 客户端开启 ServerAliveInterval 30 或在代理软件中排除 SSH 端口。
  • 版本更新:Antigravity 更新后会生成新的版本文件夹,导致原有的 Wrapper 失效。此时需要将脚本重新应用到新文件夹下的二进制文件。
  • Ptrace 权限:若报错无法劫持,请检查 /proc/sys/kernel/yama/ptrace_scope。若为 1,确保 Wrapper 是通过父进程拉起的;若为 2/3 且无 sudo 权限,此方案可能失效。

刚看到一个老哥在问 正好前两天也遇到了,就总结一下发出来吧,

== 但是现在有个问题,不连续对话后过一会再聊天还是不行,需要重启应用或者重连,排查了很久也没排查出来 ==

—【求助】代理环境下 Google Code Assist OAuth 认证失败 + Antigravity remote-ssh 配置

网友解答:
--【壹】--:

你这个情况就是跟没连上是一样的,重点关注一下 [quote=“jasonli, post:1, topic:1689627”]
language_server_linux_x64
[/quote]

这个改没改,运行没有 排查一下吧


--【贰】--:

感谢,终于是用上了,学校服务器都是没sudo的,按这个教程一次成功


--【叁】--:

image1465×387 23.7 KB
佬,我按你的方式配置了以后还是存在问题,对话时一直在工作但不输出
image966×207 2.89 KB


--【肆】--:

nice! 按照大佬的方法跑通了!


--【伍】--:

mark一下,之前因为反重力的网络限制太恶心,一直都没使用


--【陆】--:

非常的有用,谢谢大佬分享


--【柒】--:

强呀,大佬!