環境變數
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 |
目前有效推理等級:off、minimal、low、medium、high、xhigh、max |
每個指令啟動時都會解析這些值。因此,切換模型或更改推理等級會影響下一個 Bash 指令,而無需重新啟動 Pi。PI_PROVIDER 和 PI_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/yes 或 0/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_KEY、OPENAI_API_KEY 等 Provider 憑證和雲 Provider 設定。