环境变量
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 之前,因此钩子接收 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 时外部编辑器回退 |
HTTP_PROXY, HTTPS_PROXY |
代理出站 HTTP 请求 |
Providers 中列出了 ANTHROPIC_API_KEY、OPENAI_API_KEY 等 Provider 凭据和云 Provider 配置。