Pi 的配置、擴充、平台設定和 API 參考。

設定

Pi 使用 JSON 設定檔,其中專案設定覆蓋全域設定。

位置 範圍
~/.pi/agent/settings.json 全域(所有專案)
.pi/settings.json 專案(目前目錄)

可以直接編輯檔案,也可以使用 /settings 修改常用選項。

專案信任

在互動式啟動時,pi 在信任包含專案本機設定、資源或專案 .agents/skills 的專案資料夾之前會詢問,並且在 ~/.pi/agent/trust.json 中沒有儲存該資料夾或父資料夾的決定。信任專案允許 pi 載入 .pi/settings.json.pi 資源、安裝缺少的專案套件以及執行專案擴充。

非互動模式(-p--mode json--mode rpc)不會顯示信任提示。如果沒有適用的已儲存信任決策,它們會使用全域設定中的 defaultProjectTrustask(預設)和 never 會忽略這些專案資源,always 會信任它們。透過 --approve/-a--no-approve/-na 可以覆寫單次執行的專案信任。

如果沒有適用的擴充或已儲存決策,則由 defaultProjectTrust 控制後備行為。可在 ~/.pi/agent/settings.json 中將其設定為 "ask""always""never",也可以透過 /settings 修改。

pi config 和 package 指令使用相同的專案信任流程,但 pi update 從不提示。傳遞 --approve 以信任某個指令的專案本機設定,或傳遞 --no-approve 以忽略它們。

在互動模式下使用 /trust 可以為後續工作階段儲存專案信任決策,包括對直接父資料夾的信任。該指令只寫入 ~/.pi/agent/trust.json;目前工作階段不會重新載入,因此需要重新啟動 pi 才會生效。

所有設定

模型與思考

設定 類型 預設 描述
defaultProvider 字串 - 預設 Provider(例如 "anthropic""openai"
defaultModel 字串 - 預設模型 ID
defaultThinkingLevel 字串 - "off", "minimal", "low", "medium", "high", "xhigh", "max"
hideThinkingBlock 布林值 false 在輸出中隱藏 thinking block
showCacheMissNotices 布林值 false 顯示重要 Prompt cache miss 的記錄通知
thinkingBudgets 物件 - 每個 thinking level 的自訂 token 預算

思考預算

{
  "thinkingBudgets": {
    "minimal": 1024,
    "low": 4096,
    "medium": 10240,
    "high": 32768
  }
}

使用者介面與顯示

設定 類型 預設 描述
theme 字串 "dark" 主題名稱("dark""light" 或自訂主題)
externalEditor 字串 $VISUAL,然後 $EDITOR,Windows 上為 Notepad,其他平台為 nano Ctrl+G 外部編輯器指令;優先於環境變數
quietStartup 布林值 false 隱藏啟動標頭
defaultProjectTrust 字串 "ask" 後備專案信任行為:"ask""always""never"。僅全域設定
collapseChangelog 布林值 false 更新後顯示精簡的變更記錄
enableInstallTelemetry 布林值 true 首次安裝或更改記錄檢測到的更新後傳送匿名安裝/更新版本 ping。這不控制更新檢查
enableAnalytics 布林值 false 選擇加入分析資料共享。目前僅在實驗性首次設定期間要求 (PI_EXPERIMENTAL=1)
trackingId 字串 - 分析追蹤識別碼,在 enableAnalytics 開啟時產生
doubleEscapeAction 字串 "tree" 雙 Escape 動作:"tree""fork""none"
treeFilterMode 字串 "default" /tree 預設過濾器:"default""no-tools""user-only""labeled-only""all"
editorPaddingX 數字 0 輸入編輯器的水平填充(0-3)
outputPad 數字 1 使用者訊息、assistant 訊息和 thinking 的水平填充(0 或 1)
autocompleteMaxVisible 數字 5 自動完成下拉清單中的最大可見專案數 (3-20)
showHardwareCursor 布林值 false 顯示終端機游標,同時 TUI 定位它以支援 IME
tuiMode 字串 "regular" 互動式 TUI 模式:"regular" 或實驗性 "fullscreen"/settings 中的更改立即生效;--tui-mode 會在啟動時覆蓋此設定
fullscreenExitOutput 字串 "transcript" 全螢幕退出輸出:"transcript" 列印最終 transcript 和resume 提示,"resume-hint" 恢復前一螢幕並只列印resume 提示。在一般 TUI 模式下無效果
fullscreenScrollbar 字串 "auto" 全螢幕 transcript 滾動條:"auto" 在滾動時臨時顯示,"always" 保留最右列並保持可見,"hidden" 隱藏。在一般 TUI 模式下無效果

對於 VS Code,請包含 --wait,以便 pi 在編輯器退出後恢復:

{
  "externalEditor": "code --wait"
}

遙測和更新檢查

enableInstallTelemetry 僅控制傳送到 https://pi.dev/api/report-install 的匿名安裝/更新 ping。選擇退出遙測不會停用更新檢查;Pi 仍然可以存取 https://pi.dev/api/latest-version 尋找最新版本。

設定 PI_SKIP_VERSION_CHECK=1 可停用 Pi 版本更新檢查。使用 --offlinePI_OFFLINE=1 可停用此處描述的所有啟動網路操作,包括更新檢查、package 更新檢查和安裝/更新遙測。

網路

設定 類型 預設 描述
httpProxy 字串 - HTTP 代理 URL 應用為 HTTP_PROXYHTTPS_PROXY。僅全域設定。
{
  "httpProxy": "http://127.0.0.1:7890"
}

警告

設定 類型 預設 描述
warnings.anthropicExtraUsage 布林值 true 當 Anthropic 訂閱身分驗證可能使用付費額外使用時顯示警告
{
  "warnings": {
    "anthropicExtraUsage": false
  }
}

壓縮

設定 類型 預設 描述
compaction.enabled 布林值 true 啟用自動壓縮
compaction.reserveTokens 數字 16384 為 LLM 回應保留的 token
compaction.keepRecentTokens 數字 20000 要保留的最近 token(不摘要)
{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

分支摘要

設定 類型 預設 描述
branchSummary.reserveTokens 數字 16384 為分支摘要保留的 token
branchSummary.skipPrompt 布林值 false 跳過“總結分支?” /tree 導航提示(預設不產生摘要)

重試

設定 類型 預設 描述
retry.enabled 布林值 true 對暫時性錯誤啟用自動 Agent 級重試
retry.maxRetries 數字 3 最大 Agent 級重試次數
retry.baseDelayMs 數字 2000 Agent 級指數退避的基礎延遲(2s、4s、8s)
retry.provider.timeoutMs 數字 SDK 預設 Provider/SDK 請求超時(以毫秒為單位)
retry.provider.maxRetries 數字 0 Provider/SDK 重試次數
retry.provider.maxRetryDelayMs 數字 60000 失敗前伺服器請求的最大延遲(60 秒)

當 Provider 請求重試延遲超過 retry.provider.maxRetryDelayMs 時,請求會立即失敗並給出說明性錯誤,而不是靜默等待。將其設定為 0 可停用限制。

除非明確需要 Provider 級重試,否則保持 retry.provider.maxRetries0。將其設定為大於 0 後,SDK/Provider 重試可能會在 Pi 看到超出使用限制的錯誤之前自行處理這些錯誤,在某些情況下可能會阻塞 Agent,直到 Provider 配額重置。

{
  "retry": {
    "enabled": true,
    "maxRetries": 3,
    "baseDelayMs": 2000,
    "provider": {
      "timeoutMs": 3600000,
      "maxRetries": 0,
      "maxRetryDelayMs": 60000
    }
  }
}

訊息傳遞

設定 類型 預設 描述
steeringMode 字串 "one-at-a-time" 如何傳送中途引導訊息:"all""one-at-a-time"
followUpMode 字串 "one-at-a-time" 後續訊息如何傳送:"all""one-at-a-time"
transport 字串 "auto" 支援多種傳輸方式的 Provider 偏好傳輸:"sse""websocket""websocket-cached""auto"
httpIdleTimeoutMs 數字 300000 HTTP header/body 空閒超時(以毫秒為單位),也由具有顯式流空閒超時的 Provider使用。設定為 0 停用。
websocketConnectTimeoutMs 數字 15000 支援 WebSocket 傳輸的 Provider 的 WebSocket 連接/開啟握手超時(以毫秒為單位)。設定為 0 停用。

終端機與圖片

設定 類型 預設 描述
terminal.showImages 布林值 true 在終端機中顯示圖片(如果支援)
terminal.imageWidthCells 數字 60 終端機單元格中的偏好inline 圖片寬度
terminal.clearOnShrink 布林值 false 內容縮小時清除空行(可能導致閃爍)
images.autoResize 布林值 true 將圖片大小調整為最大 2000x2000。適用於 @file 附件、read 以及工具傳回的圖片
images.blockImages 布林值 false 阻止所有圖片傳送至 LLM

Shell

設定 類型 預設 描述
shellPath 字串 - 自訂 shell 路徑(例如,Windows 上的 Cygwin);支援主目錄前導 ~
shellCommandPrefix 字串 - 每個 bash 指令的前綴(例如,"shopt -s expand_aliases"
npmCommand 字串[] - 用於 npm package 尋找/安裝操作的指令 argv(例如,["mise", "exec", "node@20", "--", "npm"]
{
  "npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}

npmCommand 用於所有 npm package 管理操作,包括安裝、解除安裝以及 git package 內的相依套件安裝。使用者範圍的 npm package 安裝在 ~/.pi/agent/npm/ 下;專案範圍的 npm package 安裝在 .pi/npm/ 下。按實際需要啟動的程序填寫 argv 樣式條目。設定 npmCommand 後,git package 相依套件安裝會使用普通 install,以避免包裝器或備用 package manager 中不相容的 npm 專用標誌。

工作階段

設定 類型 預設 描述
sessionDir 字串 - 儲存工作階段檔案的目錄。接受絕對路徑或相對路徑,加上 ~
{ "sessionDir": ".pi/sessions" }

當多個源指定工作階段目錄時,settings.json 中的優先級為 --session-dirPI_CODING_AGENT_SESSION_DIR,然後是 sessionDir

模型切換

設定 類型 預設 描述
enabledModels 字串[] - Ctrl+P 循環的模型模式(與 --models CLI 標誌相同的格式)
{
  "enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}

Markdown

設定 類型 預設 描述
markdown.codeBlockIndent 字串 " " 程式碼塊的縮進
markdown.mermaid 字串 "streaming" Mermaid 渲染模式:"off""final""streaming"

資源

這些設定定義從何處載入擴充、技能、提示和主題。

~/.pi/agent/settings.json 中的路徑相對於 ~/.pi/agent 進行解析。 .pi/settings.json 中的路徑相對於 .pi 進行解析。支援絕對路徑和 ~

設定 類型 預設 描述
packages 陣列 [] 載入資源的 npm/git package
extensions 字串[] [] 本機擴充檔案路徑或目錄
skills 字串[] [] 本機技能檔案路徑或目錄
prompts 字串[] [] 本機提示模板路徑或目錄
themes 字串[] [] 本機主題檔案路徑或目錄
enableSkillCommands 布林值 true 將 Skills 註冊為 /skill:name 指令

陣列支援 glob 模式和排除。使用 !pattern 排除。使用 +path 強制包含精確路徑,使用 -path 強制排除精確路徑。

字串形式載入包中的所有資源:

{
  "packages": ["pi-skills", "@org/my-extension"]
}

物件形式過濾要載入的資源:

{
  "packages": [
    {
      "source": "pi-skills",
      "skills": ["brave-search", "transcribe"],
      "extensions": []
    }
  ]
}

有關包管理的詳細資訊,請參閱packages.md

範例

{
  "defaultProvider": "anthropic",
  "defaultModel": "claude-sonnet-4-20250514",
  "defaultThinkingLevel": "medium",
  "theme": "dark",
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  },
  "retry": {
    "enabled": true,
    "maxRetries": 3
  },
  "enabledModels": ["claude-*", "gpt-4o"],
  "warnings": {
    "anthropicExtraUsage": true
  },
  "packages": ["pi-skills"]
}

專案覆寫

專案設定 (.pi/settings.json) 覆蓋全域設定。巢狀物件被合併:

// ~/.pi/agent/settings.json (global)
{
  "theme": "dark",
  "compaction": { "enabled": true, "reserveTokens": 16384 }
}

// .pi/settings.json (project)
{
  "compaction": { "reserveTokens": 8192 }
}

// Result
{
  "theme": "dark",
  "compaction": { "enabled": true, "reserveTokens": 8192 }
}