! 本篇文章將會介紹 pi 這個極簡 terminal coding agent,看看「少即是多」的哲學怎麼實踐 :D
TL;DR: https://dev.benben.me/slides/s/ironman-22-pi
讀完這篇你會學到:
pi(pi.dev)是 Mario Zechner(badlogic)發起的 terminal coding agent,口號很直接:
There are many agent harnesses, but this one is yours.
(agent harness 很多,但這個是你的。)
「harness(馬鞍)」這個詞是理解 pi 的鑰匙:它認為 agent 的本體是 LLM + 少數核心工具,harness 只是馬鞍——馬鞍應該合你的身形,而不是叫你改騎姿。MIT 開源。
推薦去看看作者(Mario)的分享: https://www.youtube.com/watch?v=RjfbvDXpFls
curl -fsSL https://pi.dev/install.sh | sh
(npm 也有:npm install -g @earendil-works/pi-coding-agent)
規則檔與 opencode 同名但位置不同:pi 從 ~/.pi/agent/、上層目錄與目前目錄找 AGENTS.md。另外有個可愛的 SYSTEM.md——可以整份替換或附加預設 system prompt,per-project 客製化系統層提示。
pi 的對話歷史存成樹狀結構:/tree 打開樹,跳回任何一個分岔點繼續長,所有分支活在同一個檔案裡。/export 匯出 HTML,/share 丟上 GitHub gist 拿一條可分享的渲染網址。走岔路不怕——岔路本身就是資產。
agent 工作中你可以直接輸入:
「等等我補充一下」與「做完這個再說」兩種心情,兩個鍵。
15+ providers,/model 或 Ctrl+L 隨時換,Ctrl+P 在愛用清單裡循環。自訂 provider 用 models.json。多模型不是策略專題,是一個快捷鍵。
pi -p "query" 給腳本用,--mode json 吐事件流pi 官網有個段落叫 What we didn't build,列了一排「我們沒做」:
這不是閹割,是設計:這些全都可以用 extension 長出來。extension 是 TypeScript 模組,拿得到工具、命令、快捷鍵、事件、整個 TUI——官方 examples 裡就有 subagent、plan-mode、permission gate、sandbox 的完整實作。甚至有 DOOM(真的,那個 1993 的遊戲)。
更狂的是「叫 pi 自己寫」:要什麼功能直接開口,pi 會當場改自己改,改完之後 /reload 生效。改 harness 不用 fork 專案——adapt Pi to your workflows, not the other way around。
散佈靠 Pi packages:
pi install npm:@foo/pi-tools
pi install git:github.com/badlogic/pi-doom
| 維度 | opencode | pi |
|---|---|---|
| 哲學 | 功能齊全的平台 | 極簡核心 + 擴充生態 |
| 內建擴充點 | agents/commands/skills/MCP/plugins 全都有 | extensions 一種,但拿到的權限很深 |
| MCP | 一等公民 | 刻意不內建(哲學:CLI 工具 + README 就夠) |
| Sub-agents | 內建 | extension 範例自取 |
| Session | 線性 + 分享連結 | 樹狀,岔路可回溯 |
| 程式化 | OpenAPI server + SDK | RPC + SDK 四模式 |
兩者都是開源、terminal-first、多 provider——差在預設給你多少。喜歡「開箱全配」選 opencode;喜歡「自己來」選 pi。小孩子才做選擇?terminal 夠大,兩個都裝也行,筆者應該裝了快 10 個 harness agents 有吧(汗)。
Q:pi 沒有 MCP,查外部資料怎麼辦?
A:pi 的答案:多數「MCP 場景」其實是「跑個 CLI + 讀說明」——skill 打包 CLI 工具與 README 就能上。真的需要再裝 MCP extension。作者有篇〈What if you don't need MCP?〉專門講這個觀點,值得一讀。
延伸閱讀: https://mariozechner.at/posts/2025-11-02-what-if-you-dont-need-mcp/
Q:樹狀 session 跟 opencode 的多 session 差在哪?
A:opencode 是「多個平行對話」;pi 是「同一個對話的多次分岔」。探索式工作(試 A 路線不對退回岔路試 B)pi 的模型很順。
Q:日常真的能用 pi 工作嗎?
A:能,而且很多人把它當主力,或是再試試 omp (oh my pi),但這個又有點回到「火箭車」的感覺了。筆者建議:拿一個小專案給 pi 一週,體驗「改 harness 而不是改工作流」的手感,再決定要不要納入工具箱。
Day 23:OpenSpec——spec-driven development,把「AI 不用猜需求」變成 repo 裡的一等公民。
有任何疑問但沒有 iT 邦幫忙帳號,或是想匿名提問?
歡迎到 https://dev.benben.me/q/P3C5U6 提問或加油打氣,沒意外的話會在完賽之後一起回答 :D