JINLOOPEST. 2026
浏览文档
PI DOCUMENTATION更新于

环境变量

Pi 通过三种方式使用环境变量:

  • 诸如 PI_OFFLINE 之类的变量用于配置 Pi 进程。
  • Pi 设置进程标记,以便子进程能够将 Pi 识别为启动代理。
  • 由 LLM 可调用的 bash 工具运行的命令会接收 PI_* 变量,这些变量描述了当前会话。

提供商 API 密钥变量在 提供商.

进程标记

CLI 和 RPC 入口点设置两个进程标记:

  • AI_AGENT=pi 是一个通用标记,允许工具将 Pi 识别为启动该进程的代理。
  • PI_CODING_AGENT=true 是 Pi 特有的标记,允许子进程检测到它们正在 Pi 内部运行。

子进程会继承这两个标记。它们不是会话特定的,并且当 Pi 通过 SDK 嵌入时不会自动设置。

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_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" },
  }),
});

独立于 spawn 钩子禁用会话元数据:

const bashTool = createBashTool(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覆盖包目录,对于 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覆盖以下组件使用的基础 URL:/share
PI_HARDWARE_CURSOR设置为 1 以显示硬件光标;请参阅 终端设置
PI_TUI_ESC_TIMEOUT在单独收到 ESC 后等待多长时间才将其视为 Escape,以毫秒为单位;默认为 100 通过 SSH 时和 10 其他情况。如果 Alt 键输入被误读为 Escape,请增大此值
VISUAL, EDITORexternalEditor 未设置时的外部编辑器回退
HTTP_PROXY, HTTPS_PROXY代理出站 HTTP 请求

提供商凭据,例如 ANTHROPIC_API_KEY, OPENAI_API_KEY,以及云提供商配置在 提供商.

本文档内容同步自 PI 官方 GitHub 仓库。

查看源文件