跳转到内容

设置

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 使更改生效。

设置类型默认值说明
defaultProviderstring-默认提供商(例如 "anthropic""openai"
defaultModelstring-默认模型 ID
defaultThinkingLevelstring-"off""minimal""low""medium""high""xhigh"
hideThinkingBlockbooleanfalse在输出中隐藏思考块
thinkingBudgetsobject-各思考级别的自定义 token 预算
{
"thinkingBudgets": {
"minimal": 1024,
"low": 4096,
"medium": 10240,
"high": 32768
}
}
设置类型默认值说明
themestring"dark"主题名称("dark""light" 或自定义)
quietStartupbooleanfalse隐藏启动页眉
defaultProjectTruststring"ask"回退项目信任行为:"ask""always""never"。仅全局设置
collapseChangelogbooleanfalse更新后显示精简变更日志
enableInstallTelemetrybooleantrue在首次安装或检测到变更日志的更新后发送匿名安装/更新版本 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_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 导航时跳过「Summarize branch?」提示(默认为不摘要)
设置类型默认值说明
retry.enabledbooleantrue在瞬时错误时启用代理级自动重试
retry.maxRetriesnumber3代理级最大重试次数
retry.baseDelayMsnumber2000代理级指数退避的基础延迟(2s、4s、8s)
retry.provider.timeoutMsnumberSDK default提供商/SDK 请求超时(毫秒)
retry.provider.maxRetriesnumber0提供商/SDK 重试次数
retry.provider.maxRetryDelayMsnumber60000失败前的最大服务器请求延迟(60s)

当提供商请求的重试延迟超过 retry.provider.maxRetryDelayMs(例如 Google 的「quota will reset after 5h」)时,请求会立即失败并返回 informative 错误,而不是静默等待。设为 0 可禁用上限。

除非明确需要提供商级重试,否则将 retry.provider.maxRetries 保持为 0。设为大于 0 可能使 SDK/提供商重试在 Pi 看到之前处理超出用量限制的错误,在某些情况下可能阻塞代理直到提供商配额重置。

{
"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"支持多种传输的提供商的首选传输:"sse""websocket""websocket-cached""auto"
httpIdleTimeoutMsnumber300000HTTP 头/体空闲超时(毫秒),也用于具有显式流空闲超时的提供商。设为 0 可禁用。
websocketConnectTimeoutMsnumber15000支持 WebSocket 传输的提供商的 WebSocket 连接/打开握手超时(毫秒)。设为 0 可禁用。
设置类型默认值说明
terminal.showImagesbooleantrue在终端中显示图像(若支持)
terminal.imageWidthCellsnumber60终端单元格中首选的内联图像宽度
terminal.clearOnShrinkbooleanfalse内容收缩时清除空行(可能导致闪烁)
images.autoResizebooleantrue将图像调整为最大 2000x2000
images.blockImagesbooleanfalse阻止所有图像发送给 LLM
设置类型默认值说明
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 包依赖安装使用 plain 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.codeBlockIndentstring" "代码块的缩进

这些设置定义从何处加载扩展、技能、提示词和主题。

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

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

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

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

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