跳转到内容

设置

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

设置 类型 默认值 说明
defaultProvider string - 默认模型提供方(例如 "anthropic""openai"
defaultModel string - 默认模型 ID
defaultThinkingLevel string - "off""minimal""low""medium""high""xhigh""max"
hideThinkingBlock boolean false 在输出中隐藏思考块
showCacheMissNotices boolean false 对显著的提示缓存未命中(prompt-cache miss)显示转录通知
thinkingBudgets object - 每个思考级别的自定义 token 预算
{
"thinkingBudgets": {
"minimal": 1024,
"low": 4096,
"medium": 10240,
"high": 32768
}
}
设置 类型 默认值 说明
theme string "dark" 主题名称("dark""light" 或自定义)
externalEditor string $VISUAL,然后是 $EDITOR,再是 Windows 上的 Notepad 或其他平台上的 nano Ctrl+G 外部编辑器命令;优先于环境变量
quietStartup boolean false 隐藏启动横幅
defaultProjectTrust string "ask" 回退的项目信任行为:"ask""always""never"。仅全局设置
collapseChangelog boolean false 更新后显示精简的更新日志
enableInstallTelemetry boolean true 在首次安装或检测到更新日志更新后发送匿名的安装/更新版本 ping。这不控制更新检查
enableAnalytics boolean false 选择加入的分析数据共享。目前仅在实验性首次安装设置(PI_EXPERIMENTAL=1)期间询问
trackingId string - 分析跟踪标识符,在 enableAnalytics 开启时生成
doubleEscapeAction string "tree" 双击 Esc 的操作:"tree""fork""none"
treeFilterMode string "default" /tree 的默认过滤器:"default""no-tools""user-only""labeled-only""all"
editorPaddingX number 0 输入编辑器的水平内边距(0-3)
outputPad number 1 用户消息、助手消息和思考块的水平内边距(0 或 1)
autocompleteMaxVisible number 5 自动补全下拉列表的最大可见项数(3-20)
showHardwareCursor boolean false 在 TUI 定位光标以支持 IME 时显示终端光标
tuiMode string "regular" 交互式 TUI 模式:"regular" 或实验性的 "fullscreen"。通过 /settings 的更改会立即生效;--tui-mode 在启动时覆盖此设置
fullscreenExitOutput string "transcript" 全屏退出输出:"transcript" 打印最终转录和恢复提示,而 "resume-hint" 恢复之前的屏幕并只打印恢复提示。在常规 TUI 模式下无效
fullscreenScrollbar string "auto" 全屏转录滚动条:"auto" 在滚动时临时显示,"always" 保留最右侧一列并保持可见,"hidden" 隐藏。在常规 TUI 模式下无效

对于 VS Code,加入 --wait,这样 pi 会在编辑器退出后恢复:

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

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

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

设置 类型 默认值 说明
httpProxy string - 作为 HTTP_PROXYHTTPS_PROXY 应用的 HTTP 代理 URL。仅全局设置。
{
"httpProxy": "http://127.0.0.1:7890"
}
设置 类型 默认值 说明
warnings.anthropicExtraUsage boolean true 当 Anthropic 订阅身份验证可能产生付费额外用量时显示警告
{
"warnings": {
"anthropicExtraUsage": false
}
}
设置 类型 默认值 说明
compaction.enabled boolean true 启用自动上下文压缩
compaction.reserveTokens number 16384 为 LLM 响应预留的 token
compaction.keepRecentTokens number 20000 保留的最近 token(不进行摘要)
{
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
}
}
设置 类型 默认值 说明
branchSummary.reserveTokens number 16384 为分支摘要预留的 token
branchSummary.skipPrompt boolean false /tree 导航时跳过“为分支生成摘要?“提示(默认为不生成摘要)
设置 类型 默认值 说明
retry.enabled boolean true 在瞬时错误时启用智能体级别的自动重试
retry.maxRetries number 3 智能体级别的最大重试次数
retry.baseDelayMs number 2000 智能体级别指数退避的基础延迟(2 秒、4 秒、8 秒)
retry.provider.timeoutMs number SDK 默认值 模型提供方/SDK 请求超时时间(毫秒)
retry.provider.maxRetries number 0 模型提供方/SDK 重试次数
retry.provider.maxRetryDelayMs number 60000 失败前允许服务器请求的最大延迟(60 秒)

当模型提供方请求的重试延迟超过 retry.provider.maxRetryDelayMs 时,请求会立即失败并给出信息明确的错误,而不是静默等待。将其设为 0 可禁用该限制。

除非明确需要模型提供方级别的重试,否则请将 retry.provider.maxRetries 保持为 0。设为大于 0 时,SDK/模型提供方的重试可能会在 Pi 看到用量超限错误之前就将其处理掉,在某些情况下可能导致智能体一直阻塞,直到模型提供方配额重置。

{
"retry": {
"enabled": true,
"maxRetries": 3,
"baseDelayMs": 2000,
"provider": {
"timeoutMs": 3600000,
"maxRetries": 0,
"maxRetryDelayMs": 60000
}
}
}
设置 类型 默认值 说明
steeringMode string "one-at-a-time" 引导消息的发送方式:"all""one-at-a-time"
followUpMode string "one-at-a-time" 跟进消息的发送方式:"all""one-at-a-time"
transport string "auto" 支持多种传输方式的模型提供方的首选传输方式:"sse""websocket""websocket-cached""auto"
httpIdleTimeoutMs number 300000 HTTP 报文头/报文主体空闲超时时间(毫秒),也用于显式设置流空闲超时的模型提供方。设为 0 可禁用。
websocketConnectTimeoutMs number 15000 支持 WebSocket 传输方式的模型提供方的 WebSocket 连接/打开握手超时时间(毫秒)。设为 0 可禁用。
设置 类型 默认值 说明
terminal.showImages boolean true 在终端中显示图片(如果支持)
terminal.imageWidthCells number 60 终端单元格中内联图片的首选宽度
terminal.clearOnShrink boolean false 内容收缩时清除空行(可能导致闪烁)
images.autoResize boolean true 将图片调整为最大 2000x2000。适用于 @file 附件、read 以及工具返回的图片
images.blockImages boolean false 阻止所有图片发送给 LLM
设置 类型 默认值 说明
shellPath string - 自定义 shell 路径(例如用于 Windows 上的 Cygwin);支持以 ~ 开头表示主目录
shellCommandPrefix string - 每条 bash 命令的前缀(例如 "shopt -s expand_aliases"
npmCommand string[] - 用于 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 特有标志。

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

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

设置 类型 默认值 说明
enabledModels string[] - 用于 Ctrl+P 切换的模型模式(与 --models CLI 标志格式相同)
{
"enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}
设置 类型 默认值 说明
markdown.codeBlockIndent string " " 代码块的缩进
markdown.mermaid string "streaming" Mermaid 渲染模式:"off""final""streaming"

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

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

设置 类型 默认值 说明
packages array [] 要从中加载资源的 npm/git 包
extensions string[] [] 本地扩展文件路径或目录
skills string[] [] 本地技能文件路径或目录
prompts string[] [] 本地提示词模板路径或目录
themes string[] [] 本地主题文件路径或目录
enableSkillCommands boolean true 将技能注册为 /skill:name 命令

数组支持 glob 模式与排除规则。使用 !pattern 排除匹配项;使用 +path 强制包含精确路径,使用 -path 强制排除精确路径。

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

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

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

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

包管理详情请参阅包管理

{
"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(全局)
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 16384 }
}
// .pi/settings.json(项目)
{
"compaction": { "reserveTokens": 8192 }
}
// 结果
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 8192 }
}