站内已经有很多佬分享了方法了,正好我昨天试出来了,我这里粗略总结一下整体的流程,方便佬们参考。

0、安装必要包

由于我们的服务器上已经有 git, gcc, make 这些包了,我就得多装一个 go(至于为啥没有,因为我们服务器是做科学计算的,也不咋用到 go 这个语言)
但是我没有 sudo 权限(如果有的话,直接 apt install golang-go 或者 dnf install golang 就行),所以就用户级安装一下

(1) 先确认 linux 内核版本,决定安装哪个版本的 go

从 go 1.24 开始,Linux 内核的最低要求是 3.2。如果服务器内核版本低于 3.2,就不要安装太新的 go,可以用 1.23。
使用如下命令查看内核版本:

uname -r

我的显示 4.18.0-348.el8.x86_64,所以我就直接安装最新版本的 go 了

(2) 下载 Go

我直接在本地机器上访问 go 官方下载页 ,由于我的系统架构是 x86-64,所以就直接下载了对应版本的包,然后将包拖到 mobaxterm 传到服务器上。比如我放在 ~/software/go1.25.5.linux-amd64.tar.gz

然后我将 go 放在 ~/.local/ 里面,运行如下命令:

mkdir -p $HOME/.local
cd $HOME/.local
tar -xzf ~/software/go1.25.5.linux-amd64.tar.gz

这样就会出现 ~/.local/go,binary 也在里面。

(3) 把 go 放到 bashrc 里面

运行如下命令:

echo 'export PATH=$HOME/.local/go/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

这样就安装完成了。可以透过如下命令查看是否成功安装:

go version

1、配置 graftcp

将这个 clone 下来(比如我的是 clone 到 ~/software 底下)

git clone https://github.com/hmgle/graftcp.git
cd graftcp

如果说由于网络问题 clone 不了,可以参考文末「常见问题」。

直接运行 make 即可。如果没有报错的话进入下一步,有报错的话需要及时解决一下,比如如果你的报错 log 中显示 443 网络问题,那就是网络问题,得挂代理或者使用「常见问题」里面提到的方法解决一下。

再设置可执行权限。

chmod +x ./graftcp
chmod +x local/graftcp-local

配置一下 conf 文件:

cp local/example-graftcp-local.conf local/graftcp-local.conf

然后编辑一下 local/graftcp-local.conf,把 http_proxy 那一栏改一下

## HTTP proxy address (default "") http_proxy = 127.0.0.1:7890 

2、修改 antigravity 的 language-server 服务

这时使用 antigravity 登录你的远程 linux 服务器,可以发现模型肯定还是加载不出来。

然后可以按照如下帖子的方法找到 language-server 服务的位置:

比如我的位置是:~/.antigravity-server/bin/94f91bc110994badc7c086033db813077a5226af/extensions/antigravity/bin/language_server_linux_x64

我先把这个改为.bak 后缀:

mv ~/.antigravity-server/bin//extensions/antigravity/bin/language_server_linux_x64 ~/.antigravity-server/bin//extensions/antigravity/bin/language_server_linux_x64.bak

然后创建一个同名的新的 language_server_linux_x64

vim ~/.antigravity-server/bin//extensions/antigravity/bin/language_server_linux_x64

写入以下内容:(这个方法也是上述引用帖子中的方法)

#!/bin/bash # ================= 配置区域 ================= # 1. Graftcp 安装目录(改为你安装的实际目录)
GRAFTCP_DIR="/your/graftcp" # 2. 代理地址(改为自己的代理地址,我这是本地的)
PROXY_URL="127.0.0.1:10808" # =========================================== # 调试日志
LOG_FILE="/tmp/graftcp_wrapper.log" echo "[$(date)] Starting wrapper for $@" >> "$LOG_FILE" # 检查 graftcp-local 服务是否在运行 if ! pgrep -f "$GRAFTCP_DIR/local/graftcp-local" > /dev/null; then echo "Starting graftcp-local daemon..." >> "$LOG_FILE" # 后台启动,将日志丢入黑洞防止阻塞 nohup "$GRAFTCP_DIR/local/graftcp-local" -socks5="$PROXY_URL" > /dev/null 2>&1 &

sleep 0.5
fi # 1. 强制使用系统 DNS (解决解析问题) export GODEBUG=netdns=cgo

# 2. 强制关闭 HTTP/2 (解决 EOF 问题) # Go 的 HTTP/2 客户端在代理环境下非常敏感,强制用 HTTP/1.1 通常能解决 EOF export GODEBUG=$GODEBUG,http2client=0
# 使用 graftcp 启动真正的程序 # "$0.bak" 是原程序的备份 exec "$GRAFTCP_DIR/graftcp" "$0.bak" "$@" 

比如我就需要将脚本改为:

GRAFTCP_DIR="~/software/graftcp" PROXY_URL="127.0.0.1:7890" 

保存后,添加可执行文件:

chmod +x ~/.antigravity-server/bin/94f91bc110994badc7c086033db813077a5226af/extensions/antigravity/bin/language_server_linux_x64

这样就可以确保 antigravity server 中的 language-server 的程序每次启动的时候都能够通过 graftcp 代理。

3、重新启动 IDE 并 ssh 连接

稍等片刻后,如果上述配置顺利,应该可以顺利看到 models 并且可以进行对话:


常见问题

A. 没有 wget

我在用 antigravity ssh 到自己实验室其中一个服务器的时候,曾经遇到过一个问题,ssh 连接上之后秒断连,查看 log 才发现是没有 wget

2026-01-04 02:10:51.424 [info] [Trace	- 18:10:51.422] Waiting for lock...
2026-01-04 02:10:51.425 [info] [Trace	- 18:10:51.424] Lock acquired, proceeding with installation.
2026-01-04 02:10:51.425 [info] [Trace	- 18:10:51.424] Cleaning up old server installations...
2026-01-04 02:10:51.427 [info] [Trace	- 18:10:51.426] Finished cleaning up old server installations.
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] [stderr] /usr/bin/which: no wget in (/ShareS/UserHome/user007/.local/bin:/ShareS/UserHome/user007/.nvm/versions/node/v22.20.0/bin:/ssd02/PipelineWeb/sshpass/bin:/ssd02/PipelineWeb/imod-4.11.25/imod_4.11.25/bin:/ssd02/AutoPipeline/qt5.12/Tools/QtCreator/bin:/ssd02/AutoPipeline/qt5.12/5.12.5/gcc_64/bin:/ssd02/PipelineWeb/cuda-11.2/bin:/ssd02/PipelineWeb/cuda-10.2/bin:/ssd02/PipelineWeb/cuda-10.1/bin:/ssd02/PipelineWeb/cuda-10.0/bin:/ssd02/app/program/cuda-9.0/bin:/ssd02/PipelineWeb/sqlite3/bin:/ssd02/PipelineWeb/pipeline-client/bin:/ssd02/PipelineWeb/cmake-3.18.2-Linux-x86_64/bin:/ssd02/PipelineWeb/mpich-3.2/bin:/ShareS/UserHome/user007/opt/git/bin:/ShareS/UserHome/user007/opt/ssh/bin:/ShareS/UserHome/user007/opt:/ShareS/UserHome/user007/.local/bin:/ShareS/UserHome/user007/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] Error need wget to download server binary
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] Error: installation failed.
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] 456189e41f49b65457df3cf9: start
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] exitCode==1==

我没有服务器的 sudo 权限,所以没办法直接安装 wget
然后我 command -v curl 之后,确认是有 curl
于是在 terminal 运行如下命令即可,可以创建一个 wget-like 的兼容的脚本。

mkdir -p ~/.local/bin

cat > ~/.local/bin/wget <<'SH' #!/usr/bin/env bash set -euo pipefail

out=""
url="" while [[ $# -gt 0 ]]; do case "$1" in
    -q|--quiet) shift ;;
    -O) out="${2:-}"; shift 2 ;;
    -O*) out="${1#-O}"; shift ;;
    *) url="$1"; shift ;;
  esac done

[[ -z "${url}" ]] && { echo "wget wrapper: missing URL" >&2; exit 2; }

if [[ -z "${out}" || "${out}" == "-" ]]; then exec curl -fsSL "${url}" else exec curl -fsSL "${url}" -o "${out}" fi
SH

chmod +x ~/.local/bin/wget
hash -r 2>/dev/null || true 

B. 远程服务器没法魔法

最简单的方法就是首先打开本地机器的 clash 之类的代理软件。

先创建一个 ssh 通道:

ssh -R 7890:localhost:7890 <username>@<ip>
  • mac 直接在 terminal 运行就行,windows 上就用 mobaxterm 在 home 目录运行就可以
  • 之所以选 7890,是因为本地机器的 clash verge rev 上是这个端口号。如果是别的端口,替换即可。

然后在远程 linux 服务器上执行:

export all_proxy="http://127.0.0.1:7890" export ALL_PROXY="$all_proxy" export http_proxy="$all_proxy" export https_proxy="$all_proxy" 

这样涉及到 git clone 之类的就完全不会出现问题了。


📌 转载信息
原作者:
zhenhuang
转载时间:
2026/1/4 12:18:24

标签: go语言, Antigravity IDE, Linux服务器, graftcp, 远程登录

添加新评论