代理跑在伺服器上——你的程式碼和工具鏈本來就在那邊。Term 只是你指揮它的終端機,所以一部手機就夠:讀檔案、改程式、看住測試變綠。
撰寫於
pi 是終端機裡的編程代理:它在一個真實的工作目錄裡讀檔、寫檔、執行指令。它跑在伺服器上,不是手機上——所以程式庫、編譯器、測試工具都是現成的,也不用把大量檔案同步到裝置。
換句話說,這條路徑就是普通 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 與費用累計,按用量計費的話,盯住這個數字就夠了。