Pi(pi-coding-agent)这类终端编码 Agent,第一次启动时会自动去 GitHub 下载两个搜索外挂(fd 和 ripgrep)。直连 GitHub 慢或断,就会卡在 Downloading... timeout。挂上本机 Clash 的代理再启动就能解决。
一、原理
终端程序走不走代理,只看它启动时有没有读到 HTTP_PROXY / HTTPS_PROXY 这两个环境变量。Clash 这类软件开的是「系统代理」,但终端程序默认不读系统代理,必须手动把变量设上。
本机 Clash 的混合代理端口是 7897(HTTP/SOCKS 共用一个端口)。
二、一次性设置(当前窗口有效)
在启动 pi 之前,先在这个终端窗口里设两个变量:
1 | set HTTP_PROXY=http://127.0.0.1:7897 |
然后启动:
1 | pi |
这次窗口里 pi 的网络请求就会走代理,fd / ripgrep 能正常下载。关掉窗口后变量失效,不影响下次。
如果你用 PowerShell,
set换成$env:HTTP_PROXY="http://127.0.0.1:7897"。
三、永久设置(一劳永逸,但通常没必要)
用 setx 写进用户环境变量,以后所有终端都带代理:
1 | setx HTTP_PROXY "http://127.0.0.1:7897" |
改完要重开终端才生效。
不建议永久设,因为 Clash 没开的时候这些变量会指向死地址,反而拖慢其它网络请求。按需用「一次性设置」更干净。
四、直接可复制的例子
场景:Pi 第一次启动卡在下载 fd / ripgrep。
1 | set HTTP_PROXY=http://127.0.0.1:7897 |
下载成功一次后,这两个工具会缓存到 Pi 自己的目录里,以后启动就不用再挂代理了。这个例子不限于 Pi,opencode、npm、git 等终端工具需要走代理时,同样设这两个变量即可。
五、验证代理通不通
设完变量后,可以先用 curl 测一下代理是否可用:
1 | curl -x http://127.0.0.1:7897 -s -o /dev/null -w "%{http_code}\n" https://github.com |
返回 200 说明代理正常,可以放心启动 pi。