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

環境變數

Pi 以三種方式使用環境變數:

  • PI_OFFLINE 等變數設定 Pi 程序。
  • Pi 設定程序標記,讓子程序可以將 Pi 識別為啟動它們的 Agent。
  • 由 LLM 可呼叫的 Bash 工具執行的指令,會接收描述目前工作階段的 PI_* 變數。

Provider API Key 變數單獨記錄在 Providers 中。

程序標記

CLI 和 RPC 入口點會設定兩個程序標記:

  • AI_AGENT=pi 是通用標記,讓工具可以將 Pi 識別為啟動該程序的 Agent。
  • PI_CODING_AGENT=true 是 Pi 專用標記,讓子程序可以檢測自身是否在 Pi 內執行。

子程序會繼承這兩個標記。它們都不是工作階段級標記,並且透過 SDK 嵌入 Pi 時不會自動設定。

Bash 工具工作階段環境

由 Bash 工具執行的指令會接收目前 Pi 工作階段狀態:

變數 描述
PI_SESSION_ID 目前工作階段 ID
PI_SESSION_FILE 目前工作階段 JSONL 檔案的絕對路徑;臨時工作階段中未設定
PI_PROVIDER 目前選擇的模型 Provider
PI_MODEL 目前選擇的模型 ID
PI_REASONING_LEVEL 目前有效推理等級:offminimallowmediumhighxhighmax

每個指令啟動時都會解析這些值。因此,切換模型或更改推理等級會影響下一個 Bash 指令,而無需重新啟動 Pi。PI_PROVIDERPI_MODEL 標識所選的 Pi 模型,而不是路由器可能在內部選擇的不同上游模型。

當詢問哪個模型或 Provider 正在執行階段,請檢查這些變數,而不是從系統提示中推斷答案:

printf '%s/%s\n' "$PI_PROVIDER" "$PI_MODEL"
printf 'reasoning=%s session=%s\n' "$PI_REASONING_LEVEL" "$PI_SESSION_ID"

當工作階段持久化時,可以直接檢查工作階段檔案:

if [ -n "$PI_SESSION_FILE" ]; then
  tail -n 1 "$PI_SESSION_FILE"
fi

這些變數會注入到 LLM 可呼叫的 Bash 工具中。它們不會注入到使用者輸入的 !!! 指令中。

自訂 Bash 工具

使用 createBashTool() 建立的 Bash 工具在使用 Pi 註冊時預設公開工作階段環境。注入發生在 spawnHook 之前,因此Hook接收 ctx.env 中的變數:

const bashTool = createBashTool(cwd, {
  spawnHook: (ctx) => ({
    ...ctx,
    env: { ...ctx.env, CI: "1" },
  }),
});

可以獨立於 spawn hook 停用工作階段元資料:

const bashTool = createBashTool(cwd, {
  exposeSessionEnvironment: false,
  spawnHook: (ctx) => ctx,
});

停用後,Pi 會刪除這些變數的繼承值,因此巢狀的 Pi 程序不會公開過時的父工作階段元資料。

Pi 程序設定

這些變數由 Pi 本身讀取:

變數 描述
PI_CODING_AGENT_DIR 覆寫 config 目錄;預設為 ~/.pi/agent
PI_CODING_AGENT_SESSION_DIR 覆蓋工作階段儲存;被 --session-dir 覆寫
PI_PACKAGE_DIR 覆蓋包目錄,對於 Nix/Guix 儲存路徑很有用
PI_OFFLINE 停用啟動網路操作,包括更新檢查、套件更新和安裝/更新遙測
PI_SKIP_VERSION_CHECK 停用 pi.dev 最新版本請求
PI_TELEMETRY 覆蓋安裝/更新遙測和 Provider 歸因 header:1/true/yes0/false/no
PI_CACHE_RETENTION 設定為 long,在支援的 Provider 上啟用擴充 prompt caching
PI_SHARE_VIEWER_URL 覆寫 /share 使用的基本 URL
PI_HARDWARE_CURSOR 設定為 1 顯示硬體游標;見 Terminal setup
PI_TUI_ESC_TIMEOUT 單獨收到 ESC 後等待多久才將其視為 Escape,單位為毫秒;透過 SSH 時預設為 100,其他情況下為 10。如果 Alt 鍵輸入被誤識別為 Escape,可提高此值
VISUAL, EDITOR 未設定 externalEditor 時外部編輯器fallback
HTTP_PROXY, HTTPS_PROXY 代理出站 HTTP 請求

Providers 中列出了 ANTHROPIC_API_KEYOPENAI_API_KEY 等 Provider 憑證和雲 Provider 設定。