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

環境變數

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 目前有效推理等級:offminimallowmediumhighxhighmax

每個命令啟動時都會解析這些值。因此,切換模型或更改推理等級會影響下一個bash指令,而無需重新啟動Pi。 PI_PROVIDERPI_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/yes0/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_KEYOPENAI_API_KEY 等供應商憑證和雲端供應商配置。