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 工具的会话环境

bashpowershell 工具执行的命令会收到当前 Pi 会话状态:

变量说明
PI_SESSION_ID当前会话 ID
PI_SESSION_FILE当前会话 JSONL 文件的绝对路径;临时会话中未设置
PI_PROVIDER当前选中的模型 Provider
PI_MODEL当前选中的模型 ID
PI_REASONING_LEVEL当前生效的思考级别:offminimallowmediumhighxhighmax

这些值会在每条命令启动时解析。因此,切换模型或修改思考级别后,下一条 shell 命令就会使用新值,无需重启 Pi。PI_PROVIDERPI_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 可调用的 bashpowershell 工具,但不会注入用户输入的 !!! 命令。

自定义 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/yes0/false/no
PI_CACHE_RETENTION在支持的 Provider 中设置为 long,启用更长时间的提示词缓存
PI_SHARE_VIEWER_URL覆盖 /share 使用的基础 URL
PI_HARDWARE_CURSOR设置为 1 显示硬件光标;参见 终端设置
PI_HYPERLINKS使用 10auto 覆盖 OSC 8 超链接检测
PI_IMAGE_PROTOCOL使用 kittyiterm2noneauto 覆盖内联图片检测
PI_TRUE_COLOR使用 10auto 覆盖真彩色检测
PI_TUI_ESC_TIMEOUT遇到单独的 ESC 后,判定为 Escape 前等待的时间,单位为毫秒;SSH 下默认为 100,其他情况为 10。如果 Alt 键输入被误判为 Escape,可增大此值
VISUALEDITOR未设置 externalEditor 时使用的外部编辑器回退值
HTTP_PROXYHTTPS_PROXY出站 HTTP 请求使用的代理

ANTHROPIC_API_KEYOPENAI_API_KEY 等 Provider 凭据,以及云 Provider 配置,参见 Providers

Pi 官方文档中文整理 · 已人工校对

本文基于官方 MIT 文档翻译整理,不代表 pi.dev 官方中文站。同步 commit:1defa151,同步时间:2026/8/27

查看官方原文