pi-mono 深度導讀 13:Agent Harness、Skills、System Prompt 組裝——從零構建 Agent 行為
AgentHarness 核心類別、System Prompt 動態組裝流程、Skills 載入與格式化、Prompt Templates 系統、Harness 如何決定 Tool 可用性、Result Handling、Telemetry Schema 註冊、預設 Harness 建構、Extension 如何擴充 Harness。
AgentHarness 核心類別、System Prompt 動態組裝流程、Skills 載入與格式化、Prompt Templates 系統、Harness 如何決定 Tool 可用性、Result Handling、Telemetry Schema 註冊、預設 Harness 建構、Extension 如何擴充 Harness。
pi-agent-core 的心臟:agentLoop() → runLoop() 雙層 while(true)。Inner loop 處理 tool calls + steering messages,Outer loop 處理 follow-up + prepareNextTurn(compaction、model switch)。Enter = steering(當前工具跑完插入)、Alt+Enter = follow-up(agent 判定結束插入)。streamAssistantResponse() 如何處理 partial message 更新、tool call 解析、parallel/sequential 執行、before/after hooks。
把 pi 當黑盒用:4 種運行模式怎麼切、Session 樹狀結構怎麼存、怎麼在對話中途換模型、Enter vs Alt+Enter 訊息插隊差異、/tree 怎麼跳回歷史分支。為後續架構篇建立直覺。
Compaction 完整機制:shouldCompact 觸發條件(token 佔比、訊息數)、estimateTokens 計算(字符/單字近似)、findCutPoint 尋找切點(保留最近 N 輪)、generateSummary 生成摘要(LLM 呼叫)、prepareCompaction 整理上下文、Branch Summary 生成、Structured Compaction(Extension 自訂 via fromHook)、CompactionEntry 細節、fromHook 機制、Compaction Settings。
Pi 為什麼不內建 Permission System、Gondolin Extension(微 VM 隔離)、Docker 整合模式、OpenShell 沙盒、Permission Model 設計哲學、三種容器化部署模式、安全邊界對比、micro-VM vs Container vs Process Isolation、Extension 如何實作沙盒。
Extension 系統完整解析:Extension 介面定義、onLoad/onUnload 生命週期、四大 Hook(onAgentStart/onBeforeToolCall/onAfterToolCall/onTurnEnd)、五大擴充點(tools/commands/keybindings/ui/settings)、ExtensionRunner 載入順序與依賴解析、ExtensionAPI 提供的能力、Dynamic Border、Widget、Dialog、Selector 等 UI 元件、Extension 間通訊、熱重載機制、官方範例 Extensions。
pi-ai Model Catalog 自動生成流程、Provider Factory 註冊與 Lazy Loading、OAuth 2.0 + PKCE 流程實作、Credential Store(Keychain/Libsecret/Credential Manager/加密檔案)、Credential Sync 跨裝置同步機制、Model Scope Diagnostics、ModelResolver 解析邏輯、CredentialSynchronizationOperation 狀態機。
從使用者可見功能切入架構:7 個 npm 套件各司其職、依賴圖單向流向、為什麼 pi-tui/pi-telemetry 零依賴、pi-ai 如何隔離 provider 細節、lockstep versioning 怎麼避免 diamond dependency。建立「從外往內」的架構心智模型。
pi-ai 是 pi-mono 的反腐層:上層只見 Message/Tool/Context/streamFunction,下層 15+ providers 各自實作細節。本文拆解:統一介面設計、Provider Factory Registry、Lazy Loading 實現 Tree-shaking、Model Catalog 自動生成流程、OAuth/API Key 統一管理、Credential Sync 機制、Thinking/Reasoning 參數標準化。
Release 完整流程:Lockstep Versioning(所有套件同版本)、CHANGELOG 更新、Local Smoke Test 驗證、Release Script 自動化、Binary Build (Bun + Node)、npm-shrinkwrap.json 鎖死傳遞依賴、GitHub Actions OIDC Trusted Publishing、R2 Release Marker 驗證、pi.dev/api/latest-version 公告、Announcement Verification 確保發佈成功。
pi-protocol JSON-RPC 2.0 定義、pi-client 連線管理與重連指數退避、pi-server Session Registry、WebSocket Transport、心跳機制、Session Snapshot、Remote Session Handle、RPC 模式架構、流式事件傳輸、Steering/Follow-up 遠端插隊。
本系列 17 篇帶你從 CLI 使用者角度切入,逐層深入 pi-mono 的 Agent Loop、Session Tree、Tool System、Extension System、TUI 架構、Remote Session、Telemetry、Compaction、Release 流程等核心機制。適合想自架 Agent、研究 Agent 架構、或想貢獻 pi 的開發者。
SessionManager 核心:JSONL append-only 儲存、id/parentId 形成樹、branch() 移動 leaf pointer 不改歷史、buildSessionContext() 處理 compaction entry、createBranchedSession() fork 新檔案。完整 Entry 類型:message、thinking_level_change、model_change、compaction、branch_summary、custom、custom_message、label、session_info。Migration v1→v2→v3 細節。
pi-telemetry 核心:TelemetrySchema 定義 Span/Event/Attribute、defineTelemetrySchema 建立 TypedSpanStarter、InMemoryTelemetryContext/NOOP_TELEMETRY_CONTEXT 零開銷實作、Conformance Tests 驗證 Adapter 正確性、AI/Harness Telemetry Schema 完整定義、屬性類型系統、為什麼不直接用 OpenTelemetry。
測試策略:Faux Provider(無 API Key 跑 e2e)、Vitest 單元測試、Browser Smoke Test(真實瀏覽器驗證)、Biome Lint/Format、tsgo Type Check、Pinned Dependencies、Shrinkwrap 生成、Install Lock、npm Trusted Publishing、CI Pipeline 完整流程。
pi-coding-agent 8 核心工具完整解析:ToolDefinition(給 LLM 看)vs AgentTool(執行邏輯)、createToolDefinition/createTool Factory、executionMode 決定 parallel/sequential、beforeToolCall/afterToolCall 攔截鏈、withFileMutationQueue 序列化檔案寫入、truncateHead/Line/Tail 輸出截斷、read/write/edit/bash/grep/find/ls/powershell 各工具實作細節。
pi-tui 核心完整解析:Virtual DOM Diff 算法實現無閃爍渲染、Component 生命週期、Layout Engine(Flex-like VStack/HStack/Box)、CSI 2026 同步輸出避免 partial frame tearing、Keybindings Manager、Alt Screen 管理、括號貼上模式、Kitty/iTerm2 圖片協定、Markdown/Editor/Selector/Diff 等內建元件。
Looplane 的 TUI 與 plain CLI 是同一套 runtime 的兩種使用者介面。CLI 先依 TTY 與旗標選擇呈現方式,runner 再送出事件;TUI 把事件投影成 thinking、tool、approval、verification 與終態。使用者能從畫面分辨 native 與 external runtime,但 UI 不替底層能力背書。
Claude Code 把每個 session 逐行寫進 ~/.claude/projects/ 底下的 JSONL 檔,預設保留 30 天。本文拆解 --continue 與 --resume 的差異、session 命名規則、/branch 分岔語意,以及 transcript 匯出與清理的設定。
安裝與登入問題照五步排:驗 PATH(macOS/Linux 用 echo $PATH,Windows 用 PATH 查詢)、確認只剩一份安裝、測 downloads.claude.ai 是否回 200、OAuth callback 失敗就貼 login code 或改用 claude auth login,最後用 claude doctor 收尾。
成熟的 coding agent CLI 都收斂到同一套慣例:positional prompt、-p 是 print、exec 是 headless、resume 是一級指令、-C 換目錄;looplane 直接繼承這套詞彙,把學習成本壓到接近零。
空白設定檔勸退人,憑證錯太晚發現更勸退人。五家成熟 agent 都把 setup 做成 first-class state,looplane 再補上存完 key 立即驗證這一步。
2026 年 5 月 Google I/O 宣布 Antigravity CLI(agy),用閉源 Go binary 取代 Apache 2.0 的 Gemini CLI。技術上升級——多 agent 編排、原生沙箱、毫秒啟動——但免費額度砍 98%、開源轉閉源、28 天過渡期,社群反應強烈。
Grok Build 是 xAI 用 Rust 寫的 coding agent,845K 行程式碼、8 個平行子 agent、Arena Mode。2026 年 5 月 beta、7 月開源(Apache 2.0)——但開源的直接原因是隱私事件:它靜默把整個 repo(含 SSH key、.env)上傳到 Google Cloud Storage,27,800 倍的流量比。資料外洩的程式碼至今還在 binary 裡,只靠 server-side flag 關閉。
2026 年 8 月 Meta Superintelligence Labs 發布 Muse Code beta。閉源靜態 binary、Muse Spark 1.2 模型、平行子 agent + worktree 隔離。最大爭議是定價:標準版 $1.25/$4.25 per M tokens,Contributor 版 $0.10/$0.20——便宜 20 倍,但你的程式碼進 Meta 的訓練管線。
DeepSeek Harness(dsh)是 DeepSeek 官方的開源 coding agent 框架,2026-08-13 發布 v0.1 開發者預覽版,9 天內累積 184,000+ 星。核心是 Cordis plugin kernel——模型、工具、agent loop、UI 全部都是可抽換的外掛。四種 runtime 模式,能把 Claude Code 和 Codex 當子代理使用。Web UI 優先,目前沒有原生 CLI。
OMP 2 不再是 Pi 的 fork。整個 codebase 用 Rust 從零重寫,約 41 個 crate 涵蓋自製 bash 引擎、GPU 加速 GUI、嵌入式 CPython 3.14t、gRPC transport 與 Kokoro-82M TTS。目前 pre-release,尚未正式發行。
Opencode 2 是 Anomaly(Dax Raad)主導的大重寫。runtime 從 Bun 換成 Node.js(記憶體問題)、桌面從 Tauri 換成 Electron(WebKit 效能與 Node 整合)、v1 API 刻意不相容。新增多分頁並行 session、持久化後端服務、HTTP API + SDK。目前 beta,預估 2026 年 9 月 stable。約 200K stars。
Pi v0.84.0(2026-08-06)把 AgentHarness v2 API 升為 stable。Lane-based v4 Session model 讓操作可持久化、可中斷。CBOR 取代 JSON,Unix socket 取代 HTTP。背後的 Earendil Inc.(Armin Ronacher 的 PBC)拿到首輪資金。95.4K stars,still MIT,still 極簡。
Aider 是 2023 年就存在的終端 AI pair programmer(Python、Apache-2.0、約 48.3k stars),設計上跟現在的自主 agent 走反方向:手動 /add 檔案控制 context、每次修改自動產生一個 atomic git commit、architect/editor 雙模型分工。但要注意維護節奏:最後一版 PyPI 發布是 2026-02 的 0.86.2,最後一筆 commit 在 2026-05,官網仍推薦 Claude 3.7 Sonnet 與 o1。
Amp 已於 2025 年 12 月從 Sourcegraph 獨立為 Amp Frontier Corporation,npm 套件也從 @sourcegraph/amp 改為 @ampcode/cli。它的識別特徵是持續砍功能:editor 擴充、Amp Tab、TODO 清單、Fork、custom commands、public threads 全部刪掉。2026-07-18 才首度推出月費訂閱(Megawatt $20、Gigawatt $200),此前只有 pay-as-you-go。現在主軸是 orbs——關掉筆電也會繼續跑的遠端機器。
Copilot CLI 於 2026-02-25 正式 GA,所有 Copilot 方案(含 Free)都包含。差異化不在 agent 本身,而在 GitHub 平台整合:內建 GitHub MCP server 直接操作 issue 與 PR、組織政策自動繼承、`&` 前綴把工作丟給雲端 coding agent。計費走 GitHub AI Credits(1 credit = $0.01),Pro $10/mo 含 $15、Pro+ $39 含 $70、Max $100 含 $200。
omp 是 Pi 的 fork,但不只是插件層堆疊:它多了約 80,000 行 Rust,把 grep/shell/AST/PTY 全部搬進 in-process。內建工具從 Pi 的 7 個變成 31 個,外加 14 個 LSP op、28 個 DAP op、60+ 供應商。同一份 codebase,兩個相反的賭注。
Antigravity CLI 是 Google 在 2026/5/19 I/O 發表的終端機 agent,用 Go 重寫(Gemini CLI 是 Node),二進位檔叫 agy,與桌面版 Antigravity 2.0 共用同一套 agent harness。它同時是 Gemini CLI 的接班人——個人方案的 Gemini CLI 將於 2026/6/18 停止服務。
goose 是由 Linux Foundation 旗下 AAIF 維護的開源 AI Agent,支援 15+ LLM 供應商、70+ MCP 擴充,用 Rust 打造桌面 App + CLI + API,定位是不鎖廠商、可自架的 Claude Code 替代方案。
MCP 不會退場,但有效範圍比想像中窄。本機開發場景 CLI 和 raw API 幾乎都贏過 MCP;MCP 真正不可替代的,是「跨 agent 共享的本機工具層」這條窄縫。
Agent CLI 不是更聰明的補全工具,而是能讀懂 codebase、執行多步驟任務、操作真實環境的 AI 代理。Claude Code、Codex CLI、Gemini CLI、OpenCode、Aider、Pi、Kiro、Amp、Cursor CLI... 工具越來越多,但底層共享一套設計邏輯——理解這套邏輯,才能真正用好它們。
Claude Code 是 Anthropic 的 agentic coding 工具,跑在終端機、IDE、Slack、GitHub 和 Web 上。核心擴充機制有六層:CLAUDE.md(永駐 context)、Skills(按需工作流程)、Hooks(確定性自動化)、Subagents(隔離委派)、MCP(外部工具連接)、Agent Teams(多 agent 協作)。
Codex CLI 是 OpenAI 的開源終端機 coding agent(Rust,Apache-2.0,約 106.6k stars),支援 MCP、subagents、圖片輸入、code review、Skills。模型主線已換成 GPT-5.6 Sol / Terra / Luna,桌面版、CLI 與 IDE 擴充共用一份 config.toml。
Gemini CLI 是 Google 開源的終端機 AI agent(Apache 2.0,~106.6k stars),曾提供每分鐘 60 次、每天 1,000 次的免費額度含 1M context。個人方案已於 2026/6/18 停止服務,接替者是 Antigravity CLI。專案本身沒關閉,repo 仍在維護,但只服務 Gemini Code Assist Standard/Enterprise 授權與付費 API key。
OpenCode 是用 TypeScript 打造的開源 AI coding agent(MIT,約 198K GitHub stars,repo 在 anomalyco/opencode),內建 TUI、支援 75+ LLM、LSP 整合、Vim 風格編輯器、SQLite session 管理,另有桌面版。免費、不需訂閱,可接本地或雲端模型。
Pi 是 Mario Zechner 打造的極簡 coding agent(TypeScript、MIT、約 93K stars),只有 4 個核心工具與極短 system prompt,其餘全靠 Extensions/Skills/Prompt Templates 自己疊。刻意不做 MCP、sub-agents、plan mode、權限彈窗。repo 已改名 earendil-works/pi,npm scope 換成 @earendil-works。
Claude Code 處理請求時會從 185 個預設動詞中隨機顯示(如 Thinking、Brewing、Clauding),完成時從 8 個動詞中選一個搭配耗時。可透過 settings.json 的 spinnerVerbs 設定自訂,支援 replace 和 append 兩種模式。本文所有資料來自 cli.js 原始碼實際驗證。
claude -p 把 Claude Code 從終端機互動變成一條可寫進腳本和 CI 的指令:pipe 資料進去、用 --output-format json 拿結構化結果、--bare 跳過大多數自動探索來加速啟動。本文以 CLI 用法為主體,最後講四個該改用 Python/TypeScript Agent SDK 的訊號。
Claude Code 有五種權限模式:default(逐步確認)、acceptEdits(自動接受編輯)、plan(唯讀規劃)、auto(AI classifier 背景審查)、bypassPermissions(YOLO 全跳過)。用 Shift+Tab 切換,搭配 settings.json 精細控制。auto mode 是最佳平衡點——既不用每步確認,又有安全防護。
設定好 SSH config 後,scp 可以直接用 alias,不用打完整 IP