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"設定為"ask""always""never",或將其改為/settings

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

在互動模式下使用 /trust 可以為未來的會話保存專案信任決策,包括對直接父資料夾的信任。只寫~/.pi/agent/trust.json;當前會話不會重新加載,因此請重新啟動 pi 以使更改生效。

所有設定

模型與思考

環境 類型 預設 描述
defaultProvider 細繩 - 預設提供者(例如,"anthropic""openai"
defaultModel 細繩 - 預設型號 ID
defaultThinkingLevel 細繩 - "off", "minimal", "low", "medium", "high", "xhigh", "max"
hideThinkingBlock 布林值 false 在輸出中隱藏思維區塊
showCacheMissNotices 布林值 false 顯示重大提示快取未命中的記錄通知
thinkingBudgets 目的 - 每個思維等級的自訂代幣預算

思考預算

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

使用者介面與顯示

環境 類型 預設 描述
theme 細繩 "dark" 主題名稱("dark""light"或自訂)
externalEditor 細繩 $VISUAL,然​​後$EDITOR,然後 Windows 上的記事本或 nano 其他地方 Ctrl+G 外部編輯器的命令;優先於環境變量
quietStartup 布林值 false 隱藏啟動標頭
defaultProjectTrust 細繩 "ask" 後備項目信任行為:"ask""always""never"。僅全域設定
collapseChangelog 布林值 false 更新後顯示精簡的變更日誌
enableInstallTelemetry 布林值 true 首次安裝或變更日誌偵測到的更新後傳送匿名安裝/更新版本 ping。這不控制更新檢查
enableAnalytics 布林值 false 選擇加入分析資料共享。目前僅在實驗性首次設定期間要求 (PI_EXPERIMENTAL=1)
trackingId 細繩 - 分析追蹤標識符,在 enableAnalytics 開啟時生成
doubleEscapeAction 細繩 "tree" 雙轉義動作:"tree""fork""none"
treeFilterMode 細繩 "default" /tree 的預設濾鏡:"default""no-tools""user-only""labeled-only""all"
editorPaddingX 數位 0 輸入編輯器的水平填充(0-3)
outputPad 數位 1 使用者訊息、輔助訊息和思考的水平填充(0 或 1)
autocompleteMaxVisible 數位 5 自動完成下拉清單中的最大可見項目數 (3-20)
showHardwareCursor 布林值 false 顯示終端遊標,同時 TUI 定位它以支援 IME
tuiMode 細繩 "regular" 互動TUI模式:"regular"或實驗性"fullscreen"/settings 的變更立即生效; --tui-mode 在啟動時覆寫此設定
fullscreenExitOutput 細繩 "transcript" 全螢幕退出輸出:"transcript"列印最終成績單和恢復提示,而"resume-hint"恢復前一螢幕並僅列印恢復提示。在常規TUI模式下沒有效果
fullscreenScrollbar 細繩 "auto" 全螢幕文字記錄捲軸:"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 停用此處所述的所有啟動網路操作,包括更新檢查、套件更新檢查和安裝/更新遙測。

網路

環境 類型 預設 描述
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 回應保留的令牌
compaction.keepRecentTokens 數位 20000 最近要保留的令牌(未匯總)
{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

分行概要

環境 類型 預設 描述
branchSummary.reserveTokens 數位 16384 為branch summarization保留的代幣
branchSummary.skipPrompt 布林值 false 跳過“總結分支?” /tree導航提示(預設無摘要)

重試

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

當提供者請求重試延遲超過 retry.provider.maxRetryDelayMs 時,請求會立即失敗並出現資訊性錯誤,而不是靜默等待。將其設為 0 以停用限制。

retry.provider.maxRetries 保持在 0 除非明确需要提供者级别的重试。將其設為高於 0 可以使 SDK/provider 重試在 Pi 看到超出使用限制的錯誤之前處理這些錯誤,這可能會阻止代理,直到在某些情況下提供程序配額重置。

{
  "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" 支援多種傳輸的供應商的首選傳輸:"sse""websocket""websocket-cached""auto"
httpIdleTimeoutMs 數位 300000 HTTP header/body 空閒逾時(以毫秒為單位),也由具有明確串流空閒逾時的提供者使用。設定為 0 禁用。
websocketConnectTimeoutMs 數位 15000 支援 WebSocket 傳輸的提供者的 WebSocket 連線/開啟握手逾時(以毫秒為單位)。設定為 0 禁用。

終端與影像

環境 類型 預設 描述
terminal.showImages 布林值 true 在終端中顯示影像(如果支援)
terminal.imageWidthCells 數位 60 終端單元格中的首選內聯影像寬度
terminal.clearOnShrink 布林值 false 內容縮小時清除空白行(可能導致閃爍)
images.autoResize 布林值 true 將影像大小調整為最大 2000x2000。适用于@file附件、read以及工具返回的图像
images.blockImages 布林值 false 阻止所有影像發送至 LLM

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

npmCommand 用於所有 npm 套件管理器操作,包括安裝、卸載以及 git 套件內的依賴項安裝。使用者範圍的 npm 軟體包安裝在 ~/.pi/agent/npm/ 下;專案範圍的 npm 軟體包安裝在 .pi/npm/ 下。完全按照應啟動的流程使用 argv 樣式條目。配置 npmCommand 時,git 套件依賴項安裝使用普通 install 以避免包裝器或備用套件管理器中特定於 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" 美人魚渲染模式:"off""final""streaming"

資源

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

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

環境 類型 預設 描述
packages 大批 [] npm/git 套件載入資源
extensions 細繩[] [] 本機擴充檔案路徑或目錄
skills 細繩[] [] 本地技能檔案路徑或目錄
prompts 細繩[] [] 本地提示範本路徑或目錄
themes 細繩[] [] 本地主題檔案路徑或目錄
enableSkillCommands 布林值 true 將技能註冊為/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 }
}