代理跑在服务器上——你的代码和工具链本来就在那儿。Term 只是你指挥它的终端,所以一部手机就够了:读文件、改代码、看着测试变绿。
撰写于
pi 是终端里的编程代理:它在一个真实的工作目录里读文件、写文件、执行命令。它跑在服务器上,不是手机上——所以仓库、编译器、测试runner 都是现成的,也不用把大堆文件同步到设备。
也就是说,这条链路就是普通 SSH。除了「终端得能把代理画的东西渲染出来」,这里没有任何只属于 Term 的东西。
pi 是 Node 包,服务器需要 Node 20 或更新。全局安装:
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
--ignore-scripts 是故意加的:全局装一个编程代理,没有理由让它在你的机器上跑任意 postinstall 脚本。
pi 是自带 key、不绑厂商的——Anthropic、OpenAI、Gemini、DeepSeek、Groq、OpenRouter 等都走同一套代理循环。设好你所用厂商的环境变量,然后自检:
export DEEPSEEK_API_KEY=sk-... pi auth check --provider deepseek
把 export 放进一个只有你能读的文件、启动代理时再 source 它,而不是写进 shell 配置:一旦 export 进去,这个会话里每条命令的环境里都有这把 key。
在 Term 里加好主机,开一个会话,进项目目录跑 pi。配置到此为止——再往后就是代理自己的界面了。
cd ~/your-project pi
代理很吃 Ctrl / Alt 组合键。Term 支持 kitty 键盘协议,这些组合会原样送达,而不是被压平成代理分辨不出来的东西。 tmux 配置 →
如果工具块渲染成整片饱和的绿色或蓝色,而不是一层淡淡的底色,说明代理退回到了 256 色。这不是显示 bug,修起来只要一行。
终端是靠 COLORTERM 来宣告自己支持 24 位色的。而这个变量过不了 SSH:TERM 传过去是 xterm-256color,它只承诺 256 色;客户端发的 env 请求又只是「建议」——原版 sshd 默认只写了 AcceptEnv LANG LC_*,其余一律丢弃。代理于是把配色量化到 216 色立方,本来只是一层提示色的东西就成了大色块。
在服务器上设一下,写进你登录用的那个账号的 shell 配置里:
export COLORTERM=${COLORTERM:-truecolor}
set -q COLORTERM; or set -gx COLORTERM truecolor
下次会话生效。同一个设置也能治好 vim 配色方案、bat、delta、lazygit、btop 里发闷的颜色——凡是用 24 位色画界面的都算。
较新版本的 Term 在开启 shell 集成时会替你设好,所以应用是最新的话通常不用管。上面这行加了也无妨;如果你在旧版本、关掉了 shell 集成、或者用 fish,它就是那个修法。
默认字号下,手机上的会话大约是 56 列。代理在这个宽度下排版没问题,但长路径会折行——项目路径短一点,整段对话会好读很多。
走 mosh 的话,换网不断线,所以一次长时间的代理任务能在 Wi-Fi 和流量之间切换时继续跑。 Mosh 设置 →
代理花的是你自己的 key。pi 的状态栏里一直显示 token 和费用累计,按量计费的话,盯这个数就够了。