Pi Coding Agent 教學:模型、Extensions、Skills 與工作流程怎麼用?

Pi Coding Agent 工作流程概念圖:終端、語言模型、專案檔案、測試、擴充模組、會話樹與權限邊界連到中央 coding agent。操作示意圖/非官方介面截圖。
Pi Coding Agent 工作流程概念圖:終端、模型、檔案、測試與擴充模組的關係。操作示意圖/非官方介面截圖。

Pi Coding Agent 教學:模型、Extensions、Skills 與工作流程怎麼用?

如果你想在終端機裡使用 AI coding agent,Pi Coding Agent 很容易讓人先盯著「它能不能寫程式」這個問題。但從官方文件來看,Pi 的重點不只是產生程式碼,而是把模型、終端工具、專案脈絡、session 和可選的擴充組在一起。它會在你目前所在的專案目錄工作,也能讀檔、寫檔、修改檔案和執行 shell command,所以第一個要確認的問題其實是:你準備讓它看見什麼,又允許它動手到哪裡?

先講本文的判斷:如果你需要終端機優先的工作方式,想自行切換 provider 和 model,還希望用 AGENTS.md、Extensions、Skills 或 session tree 把工作整理起來,Pi 值得研究。如果你只是想在瀏覽器裡問問題、整理檔案或做研究,ChatGPT、Claude 或 NotebookLM 這類工作區可能更直接。這不是性能排名,而是工作介面的差異。

本文依 Pi 官方文件首頁 以及 2026-09-17 讀到的 Quickstart、Using Pi、Providers、Security、Sessions、Extensions、Skills 和 Packages 文件整理。本文沒有登入 Pi、呼叫任何 provider、安裝第三方 package 或在真實專案執行修改,因此操作命令是官方文件內容,導入順序和驗收清單則是本文建議。你的模型清單、帳號方案、額度、作業系統和實際 UI 仍要自己讀回確認。

文章目錄

Pi Coding Agent 教學先講結論:它是終端工作環境,不是單獨的模型

Pi 官方文件把 Pi 定義成 minimal terminal coding harness。這個說法可以先翻成白話:Pi 是包住模型和工具的終端工作環境,核心刻意維持小,再用 TypeScript Extensions、Skills、Prompt Templates、Themes 和 Pi Packages 擴充。它不是另一個大型語言模型,也不是安裝完就自動擁有固定能力的聊天網站。模型要從 provider 登入或 API key 取得,工具和專案資源則受你的設定與權限影響。

這個定位很重要,因為「模型會不會寫 code」只回答了其中一段。真正跑一個修改專案的任務,至少還會遇到目前工作目錄、哪些檔案已載入、模型能呼叫哪些工具、命令輸出是否進入脈絡、session 是否保存、擴充程式能不能執行,以及最後誰檢查 diff 和測試結果。工具能力一開,責任也跟著一起進來,這筆帳通常不會因為介面很簡單就消失。

你可以先用下面的表格把 Pi 拆開看。左欄是官方文件直接說明的組成,右欄是本文對導入順序的建議,兩者不要混成同一種證據。

元件官方文件目前說明本文建議先確認什麼
Model/ProviderPi 可透過 subscription OAuth 或 API key provider 連接模型你的帳號、金鑰、provider 和可見 model 是否真的可用
Agent runtimePi 在目前專案目錄接收訊息、組合脈絡並安排工具呼叫目前工作目錄、任務範圍和停損條件
內建工具預設工具包含 read、write、edit、bash;另有 read-only 工具選項先只讀,確認後才允許寫入或執行命令
Context files可以載入 AGENTS.md、CLAUDE.md 與 project resources規則是否可讀、是否含秘密、是否和專案實際流程一致
Sessions對話會自動保存,可 resume、branch、fork、clonesession 檔案是否要保護,分支任務如何命名
Extensions/Skills可加入工具、命令、事件、UI 或可重用能力第三方來源是否可信,是否真的需要增加權限
Trust/Isolationproject trust 控制是否載入專案資源;Pi 預設以使用者權限執行trust 不等於 sandbox,必要時另設容器或隔離環境

如果你想先理解這層「模型之外還有什麼」,可以先讀網站上的 AI Agent Harness 介紹。Pi 是一個具體產品,Harness 是用來整理執行層責任的上位概念,兩篇文章的問題不一樣。

Pi 的工作構造:模型、工具、脈絡與 Session 各自做什麼

模型和 Provider 負責生成,不負責替你保管工作規則

Pi 把 provider 和 model 拆成可以選擇的設定。你可以用 /model 在互動 session 中切換模型,也能用 /thinking 選擇 thinking level;CLI 也提供 --provider、--model 和 --thinking 等選項。這代表 Pi 的產品價值不只在某一個模型,而在同一個終端工作方式可以接不同的模型來源。

但這裡有一個容易被忽略的邊界:provider 能不能登入、model 是否出現在目錄、帳號方案是否允許、API key 是否有額度,不能只從文件首頁推定。官方 Providers 文件 列出 subscription 與 API key 的設定方式,但它不會替你讀回你現在這台機器的帳號狀態。文章裡不把「文件列出」改寫成「你一定可以用」。

內建工具讓 Pi 可以真的碰檔案與終端機

Pi Quickstart 目前列出的預設工具是 read、write、edit 和 bash。官方文件也說明,Pi 在你啟動的目前工作目錄裡執行,並且可以修改那裡的檔案;grep、find、ls 等額外 read-only 工具則可透過工具選項提供。這和只在網頁輸入文字的聊天流程差很多,因為輸出不只是一段回答,也可能是一個檔案變更或 shell command 結果。

我會把工具分成兩層來看。read 適合做第一輪盤點,先確認目錄和現有規則。write、edit 和 bash 會讓任務跨進修改或執行範圍,應該等你確認過工作目錄、目標檔案和驗收命令再開。這是本文的風險分層建議,不是 Pi 官方宣稱的安全等級。

在互動模式中,官方提供 !command 把 shell command 和輸出送進模型,也提供 !!command 執行命令但不把輸出加入模型脈絡。後者不代表命令變安全,只是減少一段輸出進入 context。若命令本身會修改檔案、刪除資料或碰到秘密,仍要依照同一套人工確認規則處理。

Context 和 Session 決定任務能不能接得起來

Pi 會在啟動時讀取工作規則。官方 Quickstart 與 Using Pi 文件指出,Pi 可以載入全域 ~/.pi/agent/AGENTS.md,也能從目前目錄往上讀取 AGENTS.md 或 CLAUDE.md;同一層有 AGENTS.override.md 時,會取代該目錄的 AGENTS.md 或 CLAUDE.md。改完 context file 後,可以重啟 Pi 或執行 /reload。

這讓 AGENTS.md 很適合放專案慣例,例如先跑哪個檢查、哪些資料夾不要碰、輸出中如何表示 unknown。它不是秘密管理器,也不是權限系統。我會避免把 API key、Cookie、客戶資料或只有某次任務才適用的暫時命令寫進共用規則,這是根據資料暴露風險做的本文建議。

Session 則保存工作歷史。官方 Sessions 文件 說明,session 會自動存到 ~/.pi/agent/sessions/,依工作目錄整理成 JSONL tree。你可以用 pi -c 接續最近一次工作、pi -r 選舊 session,也能在互動模式用 /tree、/fork 和 /clone 走不同分支。這讓任務可以回到某個節點重做,但不代表每一個舊結論都正確,分支仍然要檢查實際檔案。

安裝 Pi Coding Agent 與第一次啟動

目前官方 Quickstart 的安裝方式

截至 2026-09-17,Pi 官方 Quickstart 提供 npm 安裝命令 npm install -g --ignore-scripts @earendil-works/pi-coding-agent。文件解釋 --ignore-scripts 會停用 dependency lifecycle scripts,而 Pi 的一般 npm 安裝不需要 install scripts。macOS 和 Linux 也有 curl -fsSL https://pi.dev/install.sh | sh 的安裝方式。

這裡要留意兩件事。第一,文章不把版本號寫死,因為官方文件標示的是 Latest,安裝時應以當天文件與套件實際輸出為準。第二,我在本次產文流程沒有執行安裝,因此這段是官方命令轉述,不是本機安裝成功證據。若你在 Windows、Termux 或遠端主機操作,請改讀官方對應的平台文件,不要把 macOS/Linux 的命令直接當成所有環境都適用。

如果要解除安裝,官方 Quickstart 要求使用當初的套件管理器,例如 npm 安裝就執行 npm uninstall -g @earendil-works/pi-coding-agent。文件也提醒,解除 Pi 本身不會自動刪除 ~/.pi/agent/ 裡的設定、credentials、sessions 和已安裝 packages。這也是為什麼解除安裝不等於清除資料,若你要交接機器,還要另外盤點這個目錄。

Provider 登入和 API key 是兩條路

啟動 Pi 後可以用 /login 選擇 subscription provider。官方 Quickstart 目前列出的內建 subscription login 包含 ChatGPT Plus/Pro(Codex)、Claude Pro/Max、GitHub Copilot、xAI、OpenRouter 和 Radius;Providers 文件則分開說明 OAuth、API key、環境變數和 auth file。這份清單會隨產品文件變動,讀者仍要在自己的 Pi 介面讀回。

另一條路是啟動前設定 API key,例如 export ANTHROPIC_API_KEY=sk-ant-...,或在 /login 裡選 API-key provider 存到 ~/.pi/agent/auth.json。不要把真正的 key 貼到文章、AGENTS.md、截圖或 issue。官方文件只是在說明存放方式,並不代表把 auth file 分享出去是安全的做法;後一句是本文的基本憑證管理建議。

帳號方案和 API 費用也要分開看。Pi 文件列出可以連接哪些類型的 provider,不能因此推出你的 subscription 包含第三方 harness 使用,或某個 provider 一定不會另外計費。若你在乎支出,請在 provider 本身讀回方案、usage 和 billing 條件,再用小任務測試;本文沒有取得任何帳號或費用資料。

第一次 session 先做只讀任務

官方 Quickstart 的基本流程是進入想讓 Pi 工作的專案目錄,再執行 pi。第一次不要直接下「重構整個專案並順便清理沒用的檔案」這種範圍模糊的指令。先用 Summarize this repository and tell me how to run its checks. 這類只讀任務,觀察它讀了哪些檔案、引用哪些規則、是否能說出測試命令。

我會把第一輪驗收拆成四個問題:

  • 它是否在正確的工作目錄?
  • 它是否讀到 README.md、AGENTS.md 或其他必要的專案說明?
  • 它提供的檢查命令是否真的存在於專案?
  • 它是否明確說出尚未讀到或無法確認的資料?

確認這四件事後,再讓它處理一個小而可回退的修改。你也可以用 pi @README.md "Summarize this" 把檔案直接提供給初始 prompt,用 pi -p "Summarize this codebase" 做一次性非互動請求,或用 --mode json、--mode rpc 接到其他程序。這些 CLI 行為來自官方文件,是否適合你的 pipeline 則要自己驗收。

Provider、Model 與 Thinking Level 怎麼選

先選工作條件,再選模型名稱

Pi 的 provider 設定影響認證來源和模型目錄,model 設定影響這個 session 實際呼叫哪個模型,thinking level 則是互動設定的一部分。官方 CLI 參考提供 --provider <name>、--model <pattern>、--thinking <level> 和 --list-models [search]。互動模式則可以用 /model、/thinking,並在選擇器中儲存啟動預設。

本文建議的選擇順序是:先確認任務需不需要修改檔案,再確認 provider 的登入或 key,再從目前真的能看到的 model 中選一個,最後才調 thinking level。不要先用一個看起來很強的模型,再回頭處理它是否能寫檔、能否執行命令和誰負擔用量。模型選得再漂亮,工作目錄錯了還是會得到一個很有效率的災難。

你要確認的項目可以從哪裡看未確認時的寫法
Provider 認證/login、環境變數或 auth fileunknown,不要假設已登入
Model 清單/model 或 pi --list-models以當次讀回為準,不寫固定清單
Thinking level/thinking 或 CLI 選項記錄任務與設定,不宣稱一定更準
使用量/費用provider 帳號或 billing 頁面no_data,不由 Pi 文件推估
執行權限Pi 工具選項、工作目錄與隔離設定先用只讀任務,未確認就不要放大範圍

同一個任務要保留可比較的條件

如果你要比較兩個模型,不要一次改 provider、prompt、工具數量和測試資料,然後把結果差異都歸因給模型。先固定專案、任務、輸入資料、驗收條件和允許的工具,再記下 model、thinking level、session、錯誤和人工修改。這是本文的評估建議,不是官方公布的性能測試結果。

網站已有一篇 Claude 與 ChatGPT 比較,比較產品時同樣要把情境和條件寫清楚。這篇 Pi 教學不提供 Pi、Claude、ChatGPT 或 Hermes Agent 的速度、準確率或「誰最好」排名,因為本次沒有同一測試條件,也沒有取得相關性能資料。

Project Instructions、Settings 與 Project Trust

AGENTS.md 是工作規則,不是萬能 Prompt

你可以在 AGENTS.md 寫下專案慣例,例如「修改後執行哪一個 lint」、「不要在本機執行 production migration」、「完成後回報變更檔案和測試結果」。這種規則比每次重新貼一段長 Prompt 穩定,因為 Pi 會在啟動時載入它。但規則仍然是 context,模型可能誤讀、遺漏或遇到互相衝突的要求,所以重要動作仍要用實際 diff 和命令輸出驗收。

Pi 也能用 .pi/SYSTEM.md 或 APPEND_SYSTEM.md 影響 system prompt。這類檔案的影響範圍比一段普通任務訊息大,請先閱讀官方 Using Pi 文件的 System Prompt Files 說明,確認你要的是替換預設 prompt 還是附加內容。本文不建議為了讓 agent 看起來更有個性,就隨便把一堆不可驗收的規則塞進 system prompt。

Global Settings 和 Project Settings 的優先順序

官方 Settings 文件 說明,Pi 使用 JSON settings file,project settings 會覆寫 global settings。全域檔案位於 ~/.pi/agent/settings.json,專案檔案位於目前專案的 .pi/settings.json。互動模式可以用 /settings 處理常見選項,也可以用 /model 和 /thinking 儲存啟動預設。

這種覆寫很方便,也增加了排查成本。你看到的 model、工具、resource 或訊息傳遞方式,可能不是某一個檔案單獨決定的。當行為和預期不同,我會依序記錄目前工作目錄、全域設定、專案設定、載入的 Extensions/Skills、trust 決定和 CLI 參數,再重新啟動或 /reload。不要只改一個檔案就宣布問題已解決。

Project Trust 不等於 Sandbox

這是 Pi 導入時最需要先講清楚的地方。官方 Security 文件 明確說明,project trust 決定 Pi 是否載入專案設定、resources、packages 和 extensions,但它不是 sandbox,也不會限制模型在開始工作後要求工具做什麼。Pi 是 local coding agent,預設以啟動它的使用者權限執行。

互動啟動時,如果目前目錄有 .pi/settings.json、.pi/extensions、.pi/skills、.pi/prompts、.pi/themes、.pi/SYSTEM.md 或 project .agents/skills 等資源,Pi 可能要求你作 trust decision。信任只表示你允許那些專案資源載入,並不是替整個資料夾加上一道作業系統權限牆。如果你需要限制可寫目錄、網路或命令能力,要讀 containerization 方案,不能只按下 trust。

Extensions、Skills、Prompt Templates、Packages 有什麼不同

Pi 的擴充名稱很多,第一次看文件很容易把它們全部當成「插件」。實際上它們的載入方式、能做的事和風險不一樣。

類型官方文件目前說明適合處理的問題主要風險
ExtensionsTypeScript module,可訂閱事件、註冊 tool、command、shortcut、flag 和 custom UI需要真正接入 runtime 或自訂工具行為可執行任意程式,依 Pi 權限執行
Skills可重用、按需要載入的 Agent Skills把一套工作方法和參考資源整理成能力Skill 內容可以指示模型採取行動,來源不可信時不能直接載入
Prompt TemplatesMarkdown snippets,透過 /name 展開成完整 prompt固定常用任務的輸入規格把過時或不完整的規則重複套用
Pi Packages用 npm 或 git 分享 Extensions、Skills、Prompt Templates 和 Themes 的包裝把一套資源安裝到不同環境第三方 package 可能同時帶入多種資源與依賴

Extensions 是程式碼,不只是提示文字

官方 Extensions 文件 顯示,Extension 可以使用 ExtensionAPI,監聽 session_start、tool_call 等事件,註冊自訂 tool 和 command,也能建立 UI。文件也直接提醒,Extensions 會以完整系統權限執行,可以執行任意程式,只應安裝信任來源。

所以我會把 Extension 當成要做 code review 的專案依賴,而不是看到別人分享就複製到 ~/.pi/agent/extensions/。先讀它會 import 什麼、註冊哪些 tool、是否攔截命令、是否送資料到遠端、依賴從哪裡安裝,再決定要不要在隔離環境測試。尤其是能改寫 bash、接外部 API 或讀取整個 home directory 的 Extension,不要用「只是自動化一下」輕輕帶過。

Skills 和 Prompt Templates 的責任比較小,但不代表零風險

官方 Skills 文件 把 Skill 說成自包含的能力包,Pi 會掃描 skill location,把名稱和 description 放進可用清單,符合任務時再讀取完整內容。Skills 可放在 ~/.pi/agent/skills/、專案 .pi/skills/、package 的 skills 目錄或 CLI 指定的位置。

Prompt Template 則是 Markdown 片段,檔名會變成 slash command,例如 review.md 可以用 /review。如果你的需求只是固定「讀 staged diff、列出風險、最後附測試命令」,我會先用 Prompt Template。它不需要為了改一段文字就增加一個能執行任意程式的 Extension。

不過 Packages 文件仍提醒,Skills 可以指示模型執行包含 executable 在內的任意行動,package 裡的 Extensions 也有完整系統存取權。這是官方安全警告,不是說所有 Skill 都危險,而是提醒你不能只看名稱和星星數就放行。

Pi Packages 適合分享,也適合被誤裝

官方 Pi Packages 文件 說明,可以用 pi install npm:@foo/bar@1.0.0、git、URL 或本機路徑安裝 package,也能用 pi list、pi config、pi update 管理。Package 可以透過 package.json 的 pi key 或 convention directories 宣告資源。

本文建議第一次導入時先不要同時安裝一大串 package。用內建工具完成一個小任務,確認 session、provider 和驗收流程,再一個一個加入需要的資源。每次只增加一項,出現行為變化時才知道是哪個依賴造成的,這個做法有點慢,但比最後對著十個新 Extension 猜誰碰了設定檔省事。

Sessions、Branch 與 Compaction:長任務不要靠記憶力

Session 會保存,卻不會替你驗證

Pi 會自動保存 session 到 ~/.pi/agent/sessions/。使用 /session 可以查看目前 session file、ID、訊息數、tokens 和 cost;/tree 可以在 session tree 中跳回較早的訊息,/fork 從舊訊息開新 session,/clone 複製目前 active branch。這些功能適合把探索、修正和不同方案分開,卻不能代替 git、測試或人工讀 diff。

Session JSONL 可能包含 prompt、檔案片段、命令輸出和模型回覆。官方文件在這裡說的是保存位置和命令,不是你的組織資料政策。因此本文建議把 session 目錄視為可能含敏感內容的工作資料,交接、備份或使用 /share 前先檢查。沒有做過實際帳號和資料讀回時,不要對 session 是否符合你的公司保存政策下結論。

Compaction 是整理脈絡,不是增加模型記憶

LLM 有 context window 限制。官方 Compaction 文件 說明,Pi 會在對話變長時用 compaction 摘要較早內容、保留近期工作;/tree 切換分支時另有 branch summarization。兩者都會使用結構化摘要,也會累積追蹤檔案操作。

官方文件目前寫出的 auto-compaction 條件是 contextTokens > contextWindow - reserveTokens,預設 reserveTokens 為 16,384 tokens,可在 global 或 project settings 調整。這個數字是產品文件的現行設定說明,不是「每個模型都能記住 16,384 tokens」的意思,更不是長任務不會遺漏資訊的保證。

長任務遇到 compaction 後,我會重新確認三件事:摘要裡列出的檔案狀態和目前磁碟是否一致,模型是否還知道驗收條件,下一步是否應該先讀測試失敗輸出。若重要決定只存在一段很早的對話,請把它整理進專案文件或明確的任務訊息,不要把它留給摘要器猜。

安全與隔離:Pi 預設有權限,請先決定它能動哪裡

正常啟動時,Pi 不是沙盒

官方 Security 文件的說法很直接:Pi 以啟動它的使用者權限執行,該使用者可寫入的檔案都在同一個 local trust boundary。Project trust 只處理是否載入專案資源,不限制 tool execution。這意味著在陌生 repository、帶有可疑 script 的資料夾或包含客戶資料的 home directory 啟動 Pi,都要先停一下。

下面是我會在第一次導入時使用的風險表。它不是 Pi 官方的安全認證表,而是把官方限制轉成可操作的驗收項目。

風險情境官方已說明的事實本文的先行動作
陌生或不可信 repository專案資源可能需要 trust;trust 不是 sandbox先以不信任的只讀方式檢查,或移到隔離環境
第三方 ExtensionExtension 可執行任意程式並使用 Pi 的系統權限先讀 source、依賴、事件 hook 和網路行為
第三方 Skill/PackageSkill 可以指示模型採取行動;package 可能帶多種 resource固定來源和版本,單獨測試,不直接放進共用全域設定
需要修改檔案write、edit、bash 能影響目前工作目錄先做 checkpoint,限制任務檔案,讀 diff 和測試結果
登入或 API keycredentials 可能存於 ~/.pi/agent/auth.json不放進 repo、截圖或 prompt,另查 provider 的 usage 和 billing
長期保存 sessionsession 存在 ~/.pi/agent/sessions/依組織保存政策處理,不把分享功能當成私密保證

需要隔離時,讀 Containerization 文件

Pi 官方 Containerization 文件 說明,Pi 預設以完整權限執行,但可以選擇把整個 Pi process 放進隔離環境,或讓 host 上的 Pi 把 tool execution 路由到隔離環境。文件列出 Gondolin extension、Plain Docker、OpenShell 和 Docker Sandboxes 等模式,隔離的部分、provider key 位置和前置需求各不相同。

這裡不適合直接宣布哪一種「最好」。如果你要的是 host 上保留認證、只把 built-in tools 放進 local micro-VM,官方表格把 Gondolin 列為一種模式;如果你要把整個 Pi 放進容器,Plain Docker 是另一種模式。你還要確認自訂 Extension 是否仍在 host 執行,因為官方文件提醒,host Pi 加上 tool-routing Extension 時,其他沒有自行委派操作的 custom extension 仍可能在 host 跑。

我的導入順序是:先在不含敏感資料的小型專案理解正常流程,接著決定是否需要容器,最後才加入第三方 Extension。不要把 containerization 當成安裝完成後才想起來的補丁,因為 provider key、project mount、custom tool 和網路出口都可能受架構選擇影響。

六步低風險導入流程

下面是一套可以複製到自己的專案規則裡的起步流程。前四步是在確認環境,第五步才交給 Pi 做小範圍修改,第六步把結果讀回。這是本文建議,不是官方唯一工作流程。

  1. 固定工作目錄。 先在終端執行 pwd、git status 或同等的目錄檢查,確認 Pi 將在哪個 repository 工作。若目前目錄不是你要的專案,先停下來,不要靠 prompt 補救。
  2. 盤點 context 和資源。 找出 AGENTS.md、CLAUDE.md、.pi/settings.json、.pi/extensions、.pi/skills、.pi/prompts 和 .pi/themes。記下哪些是官方或團隊自己維護,哪些是第三方來源。
  3. 先做只讀任務。 啟動 Pi 後先要求它摘要 repository、列出測試命令和仍未知的地方。不要一開始就允許大範圍寫檔或執行會改資料的 shell command。
  4. 確認 provider 和 model。 用 /login、/model、/thinking 或對應 CLI 選項確認實際讀回的設定,並把 provider、model、thinking level 和任務名稱記下來。查不到的項目保留 unknown。
  5. 下可回退的小任務。 明確指定目標檔案、不可改的範圍、輸出格式和驗收命令。可以先處理一個測試、文件或小函式,不要把「順便清理」混進同一個請求。
  6. 讀 diff、跑檢查、決定是否保留。 先看 git diff 和新增檔案,再執行既有 lint、test 或 build。若測試失敗、變更超出範圍、出現未解釋的網路請求或模型把 unknown 補成猜測,就先停,不要因為 agent 說完成了就合併。

你可以用這張表記錄每次任務。它的目的不是增加表格,而是讓「成功」有可以回頭看的證據。

檢查面通過證據需要停下來的情況
工作目錄路徑和 repository 狀態正確目錄不明、dirty 變更來源不明
資料範圍讀取檔案和必要 context 有明確清單agent 引用未提供或找不到的資料
權限只開啟完成任務需要的工具和路徑要求額外 home、網路或破壞性命令
輸出diff 只包含目標修改出現無關檔案、設定或格式變更
品質lint/test/build 或人工檢查有輸出測試未跑、結果被摘要取代或失敗原因不明
可回復性有 git checkpoint、session 名稱或明確備份沒有辦法還原,也說不清誰改了什麼

這套流程和 如何實現工作自動化? 的順序是一致的:先把工作問題和結果定義清楚,再把工具放進去。Pi 的設定很多,但不代表每一個設定都值得今天打開。

Pi Coding Agent 適合誰,什麼情境先不要用

這些需求比較符合 Pi 的設計

如果你的工作本來就發生在終端機,會反覆讀專案檔案、執行檢查、切換模型或需要把任務分成 session branch,Pi 的設計方向是對得上的。你可以從內建工具開始,再視需要加入 Prompt Template、Skill 或 Extension。對希望把 agent 規則放進專案 context、又不想被固定網頁工作區綁住的人,這種可配置性可能比一長串內建按鈕更實用。

如果你需要研究網頁、處理瀏覽器中的檔案或和非工程同事共同編修文件,則要先確認 Pi 是否真的解決你的下一步。網站上的 ChatGPT 介紹 和 Claude 介紹 分別整理了網頁工作區、Projects、研究、檔案和長文等另一類工作方式。這不是說 Pi 做不到,而是本文沒有替那些情境做同一條測試,也沒有取得你實際帳號的功能讀回。

這些情境先不要把 Pi 當成預設答案

第一種是你只想問一次問題,沒有要讓 agent 讀取或修改專案。安裝一個終端 coding harness,再處理 provider、trust、session 和權限,可能比問題本身還重。第二種是你準備把陌生程式碼或第三方 package 直接交給它執行,卻沒有隔離環境、checkpoint 或人工審查。這時候「能做」不是「應該做」。

第三種是你需要可量化比較不同模型,但還沒有固定資料集、任務和驗收標準。Pi 可以提供切換 provider 和 model 的入口,卻不會自動替你設計公平評估。若要做這件事,先建立評估方法,再決定要不要把 Pi 接進去。

Pi Coding Agent FAQ

Pi Coding Agent 是模型嗎?

不是。依 Pi 官方文件,Pi 是 minimal terminal coding harness,負責把模型、provider、工具、context 和 session 組成終端工作流程。模型仍要透過 subscription provider 或 API key provider 取得,實際可用的帳號、模型與額度要在你的環境讀回。

Pi 可以修改我的檔案嗎?

可以。官方 Quickstart 列出 write、edit 和 bash 等能力,也說明 Pi 會在目前工作目錄執行並可修改其中檔案。這不代表每次任務都會修改,也不代表修改一定正確。開始前請先確認目錄,完成後讀 git diff、新增檔案和測試結果。

Project Trust 是不是安全沙盒?

不是。官方 Security 文件明確區分 project trust 和 sandbox。Trust 控制專案設定、資源、packages 和 extensions 是否載入;Pi 仍然以啟動它的使用者權限執行。需要限制可寫目錄、命令或網路時,請另外評估 Containerization 文件列出的隔離模式。

我一定要安裝 Extensions 和 Skills 嗎?

不用。Pi 的核心工具、Prompt Template 或專案 context 已經可以支援不少起步任務。本文建議先用內建能力完成一個只讀任務,再按真正的缺口加入 Extension、Skill 或 Package。你不需要為了讓設定看起來完整而安裝一整套第三方資源。

Skills 和 Extensions 哪一個比較安全?

不能只用名稱判斷。Extensions 是可執行的 TypeScript module,官方提醒它們有完整系統權限。Skills 以可重用能力形式載入,但官方 Packages 文件也提醒 Skill 可以指示模型執行包含 executable 在內的行動。安全性取決於來源、內容、執行環境、權限和你的審查流程,不是取決於標籤。

Pi 的 session 會保存在哪裡?

官方 Sessions 文件指出,session 會自動保存到 ~/.pi/agent/sessions/,依工作目錄整理成 JSONL。你可以用 pi -c、pi -r 或 /resume 繼續工作,也能用 /tree、/fork 和 /clone 管理分支。若內容涉及客戶資料或憑證,請先按照自己的保存政策處理。

Compaction 會讓 Pi 永遠記得整個專案嗎?

不會。Compaction 是在 context 太長時摘要較舊內容並保留近期工作;官方也把 branch summarization 分開說明。摘要仍可能遺漏你沒有寫進明確檔案或任務訊息的條件,所以長任務要用 session、專案文件、git diff 和測試一起回查,不能只相信摘要。

Pi 的 provider 清單代表我現在一定能登入嗎?

不代表。官方 Providers 文件列出支援的認證方式和 provider 類型,但你的帳號、方案、金鑰、地區、額度和當日模型目錄仍可能不同。請把文件證據和帳號讀回分開記錄;本篇沒有替任何特定帳號登入驗證。

結語:先讓第一個任務可回查

Pi Coding Agent 的吸引力不在於把一個聊天視窗搬進終端機,而在於它把模型之外的工作層攤給你設定:provider 可以換,context 可以放進專案,session 可以分支,Extensions 和 Skills 可以按需加入,命令和檔案也真的會在本機發生。這種自由很實用,但它同時要求你自己處理權限、來源、保存和驗收。

如果你今天要試,從一個不含敏感資料的小型專案開始。先跑只讀摘要,再確認 provider 和工作目錄,最後做一個有明確 diff 和測試命令的小修改。做完後把 session、設定和結果記下來,再決定是否需要 package、隔離或更長的自動化流程。先讓第一個任務可回查,通常比一開始就把整個 agent 生態系搬回家更有用。

來源與查證日期

本文查證日期:2026-09-17,Asia/Taipei。以下連結都是 Pi 官方文件或其官方文件導覽頁;功能、provider、模型目錄、方案和介面可能變動,使用前請重新讀回。

  • Pi Documentation:產品定位、Quickstart、Using Pi、Providers、Security、Sessions、Compaction 和擴充文件導覽。
  • Quickstart:安裝、登入、API key、第一個 session、context file、CLI 與非互動模式。
  • Using Pi:互動介面、slash commands、工具、sessions、context files、project trust 和 CLI reference。
  • Providers:subscription、API key、auth file、環境變數、cloud providers 和 provider resolution。
  • Security:使用者權限、project trust、沒有內建 sandbox 的邊界與安全提醒。
  • Containerization:Gondolin、Plain Docker、OpenShell、Docker Sandboxes 與 tool-routing 模式。
  • Settings:global/project JSON settings、project trust、model、message、tool 和 session 選項。
  • Sessions:session 保存、JSONL、resume、tree、fork、clone 和 share。
  • Compaction &amp; Branch Summarization:auto-compaction、branch summary、reserve tokens 與檔案追蹤。
  • Extensions:Extension API、工具/命令/事件、資源位置與完整系統權限提醒。
  • Skills:Skills 的載入位置、progressive disclosure、project trust 與安全提醒。
  • Prompt Templates:Markdown template、slash command、argument hint 和載入位置。
  • Pi Packages:npm/git/本機 package 安裝、資源打包、管理命令與第三方資源風險。