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 等提供商凭据和云提供商配置。