Pi 官方文档

设置

设置

Pi 使用 JSON settings 文件。项目 settings 的优先级高于全局 settings。

位置作用域
~/.pi/agent/settings.json全局(所有项目)
.pi/settings.json项目(当前目录)

可以直接编辑,也可以使用 /settings 配置常用选项。

项目信任

在交互式启动时,如果某个项目文件夹包含项目级设置、资源或项目 .agents/skills,并且在 ~/.pi/agent/trust.json 中,这个文件夹或其父文件夹都没有保存过信任决策,pi 会先询问是否信任该项目文件夹。信任项目后,pi 可以加载 .pi/settings.json.pi 资源,安装缺失的项目 Package,并执行项目扩展。

非交互模式(-p--mode json--mode rpc)不会显示信任提示。如果没有适用的已保存信任决策,它们会使用全局设置里的 defaultProjectTrustask(默认)和 never 会忽略这些项目资源,always 则会信任它们。可以传入 --approve/-a--no-approve/-na,在单次运行中覆盖项目信任设置。

如果没有扩展或已保存的决策适用,defaultProjectTrust 会决定兜底行为。可以在 ~/.pi/agent/settings.json 中把它设为 "ask""always""never",也可以通过 /settings 修改。

pi config 和 Package 命令使用同一套项目信任流程,但 pi update 从不提示。可以传入 --approve,在单个命令中信任项目本地设置;也可以传入 --no-approve,忽略这些设置。

在交互模式下使用 /trust,可以保存未来会话的项目信任决策,也会一并信任紧邻的父文件夹。它只会写入 ~/.pi/agent/trust.json;当前会话不会重新加载,所以需要重启 pi,改动才会生效。

全部设置

模型与思考

设置类型默认值描述
defaultProviderstring-默认 Provider(模型提供方)(例如 "anthropic""openai"
defaultModelstring-默认模型 ID
defaultThinkingLevelstring-"off""minimal""low""medium""high""xhigh"
hideThinkingBlockbooleanfalse在输出中隐藏思考块
thinkingBudgetsobject-按思考级别自定义 token 预算

thinkingBudgets

{
  "thinkingBudgets": {
    "minimal": 1024,
    "low": 4096,
    "medium": 10240,
    "high": 32768
  }
}

UI 与显示

设置类型默认值描述
themestring"dark"主题名称("dark""light" 或自定义)
quietStartupbooleanfalse隐藏启动头部信息
defaultProjectTruststring"ask"兜底的项目信任行为:"ask""always""never"。仅全局设置
collapseChangelogbooleanfalse更新后显示精简版更新日志
enableInstallTelemetrybooleantrue在首次安装或通过更新日志检测到更新后,发送一次匿名的安装/更新版本 ping。这个设置不控制更新检查
enableAnalyticsbooleanfalse选择加入分析数据共享。目前只会在实验性的首次设置(PI_EXPERIMENTAL=1)时询问
trackingIdstring-分析跟踪标识符,在开启 enableAnalytics 时生成
doubleEscapeActionstring"tree"连按两次 Escape 的动作:"tree""fork""none"
treeFilterModestring"default"/tree 的默认筛选:"default""no-tools""user-only""labeled-only""all"
editorPaddingXnumber0输入编辑器的水平内边距(0-3)
autocompleteMaxVisiblenumber5自动完成下拉框中可见项的最大数量(3-20)
showHardwareCursorbooleanfalse在 TUI 为 IME 支持定位光标时显示终端光标

遥测与更新检查

enableInstallTelemetry 只控制发送到 https://pi.dev/api/report-install 的匿名安装/更新 ping。选择退出遥测,不会关闭更新检查;Pi 仍然可以获取 https://pi.dev/api/latest-version 来查找最新版本。

PI_SKIP_VERSION_CHECK=1 设为可禁用 Pi 版本更新检查。使用 --offlinePI_OFFLINE=1 可以禁用这里提到的所有启动时网络操作,包括更新检查、Package 更新检查,以及安装/更新遥测。

网络

设置类型默认值描述
httpProxystring-应用为 HTTP_PROXYHTTPS_PROXY 的 HTTP 代理 URL。仅全局设置。
{
  "httpProxy": "http://127.0.0.1:7890"
}

警告

设置类型默认值描述
warnings.anthropicExtraUsagebooleantrue当 Anthropic 订阅认证可能使用额外付费用量时,显示警告
{
  "warnings": {
    "anthropicExtraUsage": false
  }
}

上下文压缩

设置类型默认值描述
compaction.enabledbooleantrue启用自动上下文压缩
compaction.reserveTokensnumber16384为 LLM 响应预留的 token
compaction.keepRecentTokensnumber20000要保留的最近 token(不参与摘要)
{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

分支摘要

设置类型默认值描述
branchSummary.reserveTokensnumber16384为分支摘要预留的 token
branchSummary.skipPromptbooleanfalse/tree 切换时跳过“是否总结分支?”提示(默认不生成摘要)

重试

设置类型默认值描述
retry.enabledbooleantrue在临时错误时启用 agent 级自动重试
retry.maxRetriesnumber3agent 级最大重试次数
retry.baseDelayMsnumber2000agent 级指数退避的基础延迟(2s、4s、8s)
retry.provider.timeoutMsnumberSDK defaultProvider/SDK 请求超时时间,单位为毫秒
retry.provider.maxRetriesnumber0Provider/SDK 重试次数
retry.provider.maxRetryDelayMsnumber60000在失败前允许的最大服务端要求延迟(60s)

当 Provider 要求的重试延迟长于 retry.provider.maxRetryDelayMs 时(例如 Google 的 "quota will reset after 5h"),请求会立即失败,并返回说明性错误,而不是静默等待。设为 0 可取消这个上限。

除非明确需要 Provider 级重试,否则请将 retry.provider.maxRetries 保持为 0。把它设为大于 0,可能会让 SDK/Provider 重试在 Pi 看到之前就处理超出用量上限的错误;在某些情况下,这会让 agent 一直阻塞到 Provider 配额重置。

{
  "retry": {
    "enabled": true,
    "maxRetries": 3,
    "baseDelayMs": 2000,
    "provider": {
      "timeoutMs": 3600000,
      "maxRetries": 0,
      "maxRetryDelayMs": 60000
    }
  }
}

消息传递

设置类型默认值说明
steeringModestring"one-at-a-time"引导消息的发送方式:"all""one-at-a-time"
followUpModestring"one-at-a-time"后续消息的发送方式:"all""one-at-a-time"
transportstring"auto"支持多种传输方式的 Provider(模型提供方)的首选传输方式:"sse""websocket""websocket-cached""auto"
httpIdleTimeoutMsnumber300000HTTP 头/正文空闲超时,单位为毫秒;也会被具有显式流空闲超时的 Provider 使用。设为 0 可禁用。
websocketConnectTimeoutMsnumber15000支持 WebSocket 传输的 Provider 的 WebSocket 连接/打开握手超时,单位为毫秒。设为 0 可禁用。

终端与图片

设置类型默认值说明
terminal.showImagesbooleantrue在终端中显示图片(如果支持)
terminal.imageWidthCellsnumber60终端单元格中的首选内联图片宽度
terminal.clearOnShrinkbooleanfalse当内容变少时清除空行(可能会导致闪烁)
images.autoResizebooleantrue将图片缩放到最大 2000x2000
images.blockImagesbooleanfalse阻止所有图片发送给 LLM

Shell

设置类型默认值说明
shellPathstring-自定义 shell 路径(例如 Windows 上的 Cygwin)
shellCommandPrefixstring-每条 bash 命令的前缀(例如 "shopt -s expand_aliases"
npmCommandstring[]-用于 npm 包查找/安装操作的命令 argv(例如 ["mise", "exec", "node@20", "--", "npm"]
{
  "npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}

npmCommand 用于所有 npm 包管理操作,包括安装、卸载,以及在 git 包内部安装依赖。用户级 npm 包安装在 ~/.pi/agent/npm/;项目级 npm 包安装在 .pi/npm/。请使用 argv 风格的条目,并让每一项都与进程实际启动方式一致。当配置了 npmCommand 时,git 包的依赖安装会使用原始的 install,以避免包装器或其他包管理器带来的 npm 特定参数问题。

会话

设置类型默认值说明
sessionDirstring-存放会话文件的目录。支持绝对路径、相对路径,以及 ~
{ "sessionDir": ".pi/sessions" }

当多个来源都指定了会话目录时,优先级依次是 --session-dirPI_CODING_AGENT_SESSION_DIR,然后是 settings.json 里的 sessionDir

模型轮换

设置类型默认值说明
enabledModelsstring[]-用于 Ctrl+P 轮换的模型模式(格式与 --models CLI 标志相同)
{
  "enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}

Markdown

设置类型默认值说明
markdown.codeBlockIndentstring" "代码块缩进

资源

这些设置定义了从哪里加载扩展、Skill、提示词模板和主题。

~/.pi/agent/settings.json 中,路径相对于 ~/.pi/agent 解析。在 .pi/settings.json 中,路径相对于 .pi 解析。支持绝对路径和 ~

设置类型默认值说明
packagesarray[]用于加载资源的 npm/git 包
extensionsstring[][]本地扩展文件路径或目录
skillsstring[][]本地 Skill 文件路径或目录
promptsstring[][]本地提示词模板路径或目录
themesstring[][]本地主题文件路径或目录
enableSkillCommandsbooleantrue将 Skill 注册为 /skill:name 命令

数组支持 glob 模式和排除项。使用 !pattern 排除。使用 +path 强制包含精确路径,使用 -path 强制排除精确路径。

packages

字符串形式会从一个包加载所有资源:

{
  "packages": ["pi-skills", "@org/my-extension"]
}

对象形式用于筛选要加载的资源:

{
  "packages": [
    {
      "source": "pi-skills",
      "skills": ["brave-search", "transcribe"],
      "extensions": []
    }
  ]
}

有关 Package 管理的详细信息,请参见 packages.md

示例

{
  "defaultProvider": "anthropic",
  "defaultModel": "claude-sonnet-4-20250514",
  "defaultThinkingLevel": "medium",
  "theme": "dark",
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  },
  "retry": {
    "enabled": true,
    "maxRetries": 3
  },
  "enabledModels": ["claude-*", "gpt-4o"],
  "warnings": {
    "anthropicExtraUsage": true
  },
  "packages": ["pi-skills"]
}

项目覆盖

项目设置(.pi/settings.json)会覆盖全局设置。嵌套对象会合并:

// ~/.pi/agent/settings.json (global)
{
  "theme": "dark",
  "compaction": { "enabled": true, "reserveTokens": 16384 }
}

// .pi/settings.json (project)
{
  "compaction": { "reserveTokens": 8192 }
}

// Result
{
  "theme": "dark",
  "compaction": { "enabled": true, "reserveTokens": 8192 }
}

Pi 官方文档中文整理 · 机器初译,待人工校对

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

查看官方原文