環境變數
Pi以三種方式使用環境變數:
PI_OFFLINE等變數配置Pi 進程。- Pi 設定
PI_CODING_AGENT,以便子進程可以偵測到它們在Pi 內運行。 - 由 LLM 可呼叫 bash 工具運行的指令接收描述目前會話的
PI_*變數。
提供者API-關鍵變數單獨記錄在Providers中。
過程標記
CLI和RPC入口點設定為PI_CODING_AGENT=true。子進程繼承它並且可以使用它來檢測它們是否在Pi內運行。它不是特定於會話的,並且當透過 SDK 嵌入 Pi 時不會自動設定。
Bash 工具會話環境
由 bash 工具運行的指令接收目前 Pi 會話狀態:
| 多變的 | 描述 |
|---|---|
PI_SESSION_ID |
目前會話ID |
PI_SESSION_FILE |
目前會話JSONL檔案的絕對路徑;未設定臨時會話 |
PI_PROVIDER |
目前選擇的模型提供者 |
PI_MODEL |
目前選擇的型號 ID |
PI_REASONING_LEVEL |
目前有效推理等級:off、minimal、low、medium、high、xhigh、max |
每個命令啟動時都會解析這些值。因此,切換模型或更改推理等級會影響下一個bash指令,而無需重新啟動Pi。 PI_PROVIDER和PI_MODEL標識所選的Pi模型,而不是路由器可能在內部選擇的不同上游模型。
當詢問哪個模型或提供者正在運行時,請檢查這些變量,而不是從系統提示推斷答案:
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之前,因此鉤子接收ctx.env中的變數:
const bashTool = createBashTool(cwd, {
spawnHook: (ctx) => ({
...ctx,
env: { ...ctx.env, CI: "1" },
}),
});獨立於生成鉤子禁用會話元資料:
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 |
涵蓋安裝/更新遙測和提供者歸因標頭:1/true/yes或0/false/no |
PI_CACHE_RETENTION |
設定為 long 以獲得支援的擴充提供者提示快取 |
PI_SHARE_VIEWER_URL |
覆蓋 /share 使用的基本 URL |
PI_HARDWARE_CURSOR |
設定為1顯示硬體遊標;見Terminal setup |
VISUAL, EDITOR |
未設定 externalEditor 時外部編輯器回退 |
HTTP_PROXY, HTTPS_PROXY |
代理出站 HTTP 請求 |
Providers 中列出了ANTHROPIC_API_KEY、OPENAI_API_KEY 等供應商憑證和雲端供應商配置。