跳至内容

设置

创建于 2025-07-16·更新于 2026-07-16

Pi 使用 JSON 设置文件,项目设置会覆盖全局设置。

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

可直接编辑文件,或使用 /settings 命令设置常用选项。

项目信任 Project Trust

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

非交互模式(-p--mode json--mode rpc)不弹出信任提示,使用全局 defaultProjectTrust 决定行为:"ask"(默认)和 "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 才能让更改生效。

所有设置 All Settings

模型与思考 Model & Thinking

设置 Setting类型 Type默认值 Default描述 Description
defaultProviderstring-默认提供商(如 "anthropic""openai"
defaultModelstring-默认模型 ID
defaultThinkingLevelstring-"off""minimal""low""medium""high""xhigh""max"
hideThinkingBlockbooleanfalse在输出中隐藏思考块
showCacheMissNoticesbooleanfalse显示关于显著提示缓存未命中的对话记录通知
thinkingBudgetsobject-每个思考级别的自定义令牌预算

thinkingBudgets

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

UI 与显示 UI & Display

设置 Setting类型 Type默认值 Default描述 Description
themestring"dark"主题名称("dark""light" 或自定义)
externalEditorstring$VISUAL,然后是 $EDITOR,Windows 上为 Notepad,其他平台为 nanoCtrl+G 外部编辑器命令;优先级高于环境变量
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)
outputPadnumber1用户消息、助手消息和思考块的水平内边距(0 或 1)
autocompleteMaxVisiblenumber5自动补全下拉菜单中最大可见项数(3-20)
showHardwareCursorbooleanfalse在 TUI 定位光标以支持 IME 时,显示终端光标

对于 VS Code,包含 --wait 以便 pi 在编辑器退出后恢复:

{
  "externalEditor": "code --wait"
}

遥测与更新检查 Telemetry and update checks

enableInstallTelemetry 仅控制向 https://pi.dev/api/report-install 发送的匿名安装/更新 ping。退出遥测不会禁用更新检查;Pi 仍可访问 https://pi.dev/api/latest-version 以查找最新版本。

设置 PI_SKIP_VERSION_CHECK=1 可禁用 Pi 版本更新检查。使用 --offlinePI_OFFLINE=1 可禁用此处描述的所有启动网络操作,包括更新检查、包更新检查以及安装/更新遥测。

网络 Network

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

警告 Warnings

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

压缩 Compaction

设置 Setting类型 Type默认值 Default描述 Description
compaction.enabledbooleantrue启用自动压缩
compaction.reserveTokensnumber16384为 LLM 响应预留的令牌数
compaction.keepRecentTokensnumber20000保留的最近令牌数(不进行摘要)
{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

分支摘要 Branch Summary

设置 Setting类型 Type默认值 Default描述 Description
branchSummary.reserveTokensnumber16384为分支摘要预留的令牌数
branchSummary.skipPromptbooleanfalse/tree 导航时跳过「汇总分支?」提示(默认不生成摘要)

重试 Retry

设置 Setting类型 Type默认值 Default描述 Description
retry.enabledbooleantrue启用临时错误时的自动代理级重试
retry.maxRetriesnumber3最大代理级重试次数
retry.baseDelayMsnumber2000代理级指数退避的基础延迟(2s、4s、8s)
retry.provider.timeoutMsnumberSDK 默认值提供商/SDK 请求超时(毫秒)
retry.provider.maxRetriesnumber0提供商/SDK 重试次数
retry.provider.maxRetryDelayMsnumber60000服务器请求延迟的最大值,超过此值则失败(60 秒)

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

除非明确需要提供商级别的重试,否则将 retry.provider.maxRetries 保持在 0。将其设置为高于 0 可能会使 SDK/提供商重试在处理超出使用限制的错误时,Pi 无法感知,这可能在特定情况下阻塞代理直到提供商配额重置。

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

消息投递 Message Delivery

设置 Setting类型 Type默认值 Default描述 Description
steeringModestring"one-at-a-time"引导消息的发送方式:"all""one-at-a-time"
followUpModestring"one-at-a-time"跟进消息的发送方式:"all""one-at-a-time"
transportstring"auto"支持多种传输方式的提供商的首选传输协议:"sse""websocket""websocket-cached""auto"
httpIdleTimeoutMsnumber300000HTTP 头部/主体空闲超时(毫秒),也用于具有显式流空闲超时的提供商。设置为 0 可禁用。
websocketConnectTimeoutMsnumber15000支持 WebSocket 传输的提供商的 WebSocket 连接/开启握手超时(毫秒)。设置为 0 可禁用。

终端与图片 Terminal & Images

设置 Setting类型 Type默认值 Default描述 Description
terminal.showImagesbooleantrue在终端中显示图片(如果支持)
terminal.imageWidthCellsnumber60终端中内联图片的首选宽度(以终端单元格为单位)
terminal.clearOnShrinkbooleanfalse内容收缩时清除空行(可能导致闪烁)
images.autoResizebooleantrue将图片调整为最大 2000x2000
images.blockImagesbooleanfalse阻止所有图片发送给 LLM

终端 Shell

设置 Setting类型 Type默认值 Default描述 Description
shellPathstring-自定义 Shell 路径(例如 Windows 上的 Cygwin);支持前导 ~ 表示 home 目录
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 特定标志。

会话 Sessions

设置 Setting类型 Type默认值 Default描述 Description
sessionDirstring-存储会话文件的目录。接受绝对路径、相对路径以及 ~
{ "sessionDir": ".pi/sessions" }

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

模型切换 Model Cycling

设置 Setting类型 Type默认值 Default描述 Description
enabledModelsstring[]-Ctrl+P 切换的模型模式(格式与 --models CLI 标志相同)
{
  "enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}

Markdown

设置 Setting类型 Type默认值 Default描述 Description
markdown.codeBlockIndentstring" "代码块的缩进

资源 Resources

以下设置定义了从何处加载扩展、技能、提示模板和主题。

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

设置 Setting类型 Type默认值 Default描述 Description
packagesarray[]从中加载资源的 npm/git 包
extensionsstring[][]本地扩展文件路径或目录
skillsstring[][]本地技能文件路径或目录
promptsstring[][]本地提示模板文件路径或目录
themesstring[][]本地主题文件路径或目录
enableSkillCommandsbooleantrue将技能注册为 /skill:name 命令

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

packages

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

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

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

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

详见 packages.md

示例 Example

{
  "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"]
}

项目覆盖 Project Overrides

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

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

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

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