Settings(设置)

本页面是 Pi 官方文档 的中文翻译。仅供学习参考。

Pi 使用 JSON 设置文件,项目级配置优先于全局配置。

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

可以直接编辑文件,或使用 /settings 进行常用选项配置。

项目信任

在交互式启动时,如果项目目录包含项目本地设置、资源或项目 .agents/skills,且在 ~/.pi/agent/trust.json 中该目录或父目录没有已保存的决策,Pi 会询问是否信任该目录。信任项目后,Pi 可以加载 .pi/settings.json.pi 资源、自动安装缺失的项目包,并执行项目扩展。

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

如果没有扩展或已保存决策适用,则由 defaultProjectTrust 控制回退行为。可在 ~/.pi/agent/settings.json 中将其设置为 "ask""always""never",或通过 /settings 更改。

pi config 与包命令使用相同的项目信任流程,但 pi update 从不进行提示。传入 --approve 即可在单次命令中信任项目本地设置,或传入 --no-approve 忽略它们。

在交互模式中使用 /trust 保存项目的信任决策以供未来会话使用,包括对直接父目录的信任。该命令仅写入 ~/.pi/agent/trust.json;当前会话不会重新加载,需要重启 Pi 才能使更改生效。

所有设置项

模型和思维(Model & Thinking)

设置项类型默认值说明
defaultProviderstring-默认 Provider,如 "anthropic""openai"
defaultModelstring-默认模型 ID
defaultThinkingLevelstring-"off""minimal""low""medium""high""xhigh"
hideThinkingBlockbooleanfalse是否隐藏 thinking block
thinkingBudgetsobject-每个 thinking level 的自定义 Token 预算

thinkingBudgets

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

UI 和显示

设置项类型默认值说明
themestring"dark"主题名称("dark""light" 或自定义)
quietStartupbooleanfalse隐藏启动头部
defaultProjectTruststring"ask"回退项目信任行为:"ask""always""never"。仅作为全局设置
collapseChangelogbooleanfalse更新后显示精简的 changelog
enableInstallTelemetrybooleantrue首次安装或 changelog 检测到更新时发送匿名安装/更新版本 ping。这不控制更新检查
enableAnalyticsbooleanfalse选择加入的数据分析共享。目前仅在实验性首次设置流程中询问(PI_EXPERIMENTAL=1
trackingIdstring-数据分析追踪标识符,在开启 enableAnalytics 时自动生成
doubleEscapeActionstring"tree"双击 Esc 的行为:"tree""fork""none"
treeFilterModestring"default"/tree 的默认过滤器:"default""no-tools""user-only""labeled-only""all"
editorPaddingXnumber0编辑器水平内边距(0-3)
autocompleteMaxVisiblenumber5自动补全下拉框最大可见项(3-20)
showHardwareCursorbooleanfalseTUI 为 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 以禁用此处描述的所有启动时网络操作,包括更新检查、包更新检查和安装/更新遥测。

网络

设置项类型默认值说明
httpProxystring-HTTP 代理 URL,作为 HTTP_PROXYHTTPS_PROXY 应用。仅限全局设置。
{
  "httpProxy": "http://127.0.0.1:7890"
}

Warnings(警告)

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

Compaction(压缩)

设置项类型默认值说明
compaction.enabledbooleantrue启用自动压缩
compaction.reserveTokensnumber16384为 LLM 响应预留的 Token
compaction.keepRecentTokensnumber20000保留的最近 Token(不总结)
{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

Branch Summary(分支摘要)

设置项类型默认值说明
branchSummary.reserveTokensnumber16384分支摘要预留的 Token
branchSummary.skipPromptbooleanfalse跳过 /tree 导航时的"摘要分支?"提示(默认不生成摘要)

Retry(重试)

设置项类型默认值说明
retry.enabledbooleantrue启用自动 Agent 级别重试(针对瞬态错误)
retry.maxRetriesnumber3最大 Agent 级别重试次数
retry.baseDelayMsnumber2000Agent 级别指数退避的基础延迟(2s、4s、8s)
retry.provider.timeoutMsnumberSDK 默认Provider/SDK 请求超时(毫秒)
retry.provider.maxRetriesnumber0Provider/SDK 重试次数
retry.provider.maxRetryDelayMsnumber60000最大服务器请求延迟,超时则直接失败(60s)

当 Provider 请求的重试延迟超过 retry.provider.maxRetryDelayMs 时(例如 Google 的"配额将在 5 小时后重置"),请求会立即失败并显示信息性错误,而不是静默等待。设为 0 可禁用此上限。

除非明确需要 Provider 级别重试,否则请保持 retry.provider.maxRetries0。将其设为大于 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"Steering 消息投递方式:"all""one-at-a-time"
followUpModestring"one-at-a-time"Follow-up 消息投递方式:"all""one-at-a-time"
transportstring"auto"支持多种传输的 Provider 的首选传输方式:"sse""websocket""websocket-cached""auto"
httpIdleTimeoutMsnumber300000HTTP 头部/正文空闲超时(毫秒),也用于具有显式流空闲超时的 Provider。设为 0 禁用
websocketConnectTimeoutMsnumber15000WebSocket 连接/握手超时(毫秒),用于支持 WebSocket 传输的 Provider。设为 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" "代码块缩进

资源

这些设置定义了扩展、Skills、Prompt 和主题的加载位置。

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

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

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

packages

字符串形式加载包的所有资源:

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

对象形式过滤要加载的资源:

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

包管理详情请参阅 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.dev 官方文档的中文翻译版本,仅供学习参考。本网站与 pi.dev 及 Earendil Inc. 无任何法律关系。