Pi 官方文档
环境变量
环境变量
Pi 使用环境变量的方式有三种:
PI_OFFLINE等变量用于配置 Pi 进程。- Pi 会设置进程标记,让子进程能够识别启动它们的 agent。
- LLM 可调用的 shell 工具执行的命令,会收到描述当前会话的
PI_*变量。
Provider(模型提供方)的 API key 相关变量单独记录在 Providers 中。
进程标记
CLI 和 RPC 入口会设置两个进程标记:
AI_AGENT=pi是通用标记,用于让工具识别启动当前进程的 agent 是 Pi。PI_CODING_AGENT=true是 Pi 专用标记,用于让子进程识别自己运行在 Pi 内部。
子进程会继承这两个标记。它们与具体会话无关;通过 SDK 嵌入 Pi 时,也不会自动设置这些标记。
Shell 工具的会话环境
bash 和 powershell 工具执行的命令会收到当前 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 |
这些值会在每条命令启动时解析。因此,切换模型或修改思考级别后,下一条 shell 命令就会使用新值,无需重启 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 和 powershell 工具,但不会注入用户输入的 ! 或 !! 命令。
自定义 Shell 工具
使用 createBashTool() 或 createPowerShellTool() 创建的工具,在注册到 Pi 后默认会暴露会话环境。注入发生在 spawnHook 之前,因此 hook 可以在 ctx.env 中读取这些变量:
const bashTool = createBashTool(cwd, {
spawnHook: (ctx) => ({
...ctx,
env: { ...ctx.env, CI: "1" },
}),
});
可以独立于 spawn hook 禁用会话元数据:
const powershellTool = createPowerShellTool(cwd, {
exposeSessionEnvironment: false,
spawnHook: (ctx) => ctx,
});
禁用后,Pi 会移除这些变量的继承值,避免嵌套 Pi 进程暴露父会话遗留的会话元数据。
Pi 进程配置
以下变量由 Pi 自身读取:
| 变量 | 说明 |
|---|---|
PI_CODING_AGENT_DIR | 覆盖配置目录;默认为 ~/.pi/agent |
PI_CODING_AGENT_SESSION_DIR | 覆盖会话存储目录;会被 --session-dir 覆盖 |
PI_PACKAGE_DIR | 覆盖 Package 目录,适合 Nix/Guix store 路径 |
PI_OFFLINE | 禁用启动时的网络操作,包括更新检查、Package 更新和安装/更新遥测 |
PI_SKIP_VERSION_CHECK | 禁用向 pi.dev 发起的最新版本请求 |
PI_TELEMETRY | 覆盖安装/更新遥测和 Provider attribution header:1/true/yes 或 0/false/no |
PI_CACHE_RETENTION | 在支持的 Provider 中设置为 long,启用更长时间的提示词缓存 |
PI_SHARE_VIEWER_URL | 覆盖 /share 使用的基础 URL |
PI_HARDWARE_CURSOR | 设置为 1 显示硬件光标;参见 终端设置 |
PI_HYPERLINKS | 使用 1、0 或 auto 覆盖 OSC 8 超链接检测 |
PI_IMAGE_PROTOCOL | 使用 kitty、iterm2、none 或 auto 覆盖内联图片检测 |
PI_TRUE_COLOR | 使用 1、0 或 auto 覆盖真彩色检测 |
PI_TUI_ESC_TIMEOUT | 遇到单独的 ESC 后,判定为 Escape 前等待的时间,单位为毫秒;SSH 下默认为 100,其他情况为 10。如果 Alt 键输入被误判为 Escape,可增大此值 |
VISUAL、EDITOR | 未设置 externalEditor 时使用的外部编辑器回退值 |
HTTP_PROXY、HTTPS_PROXY | 出站 HTTP 请求使用的代理 |
ANTHROPIC_API_KEY、OPENAI_API_KEY 等 Provider 凭据,以及云 Provider 配置,参见 Providers。