首页 / pi-agent 入门教程 / settings.json 配置大全

pi-agent 入门教程

settings.json 配置大全

本教程共 30 篇 · 第 9 篇 · 更新于 2026-08-10 · 约 10 分钟阅读

pi-agent配置settingsJSON

本节目标:搞清楚 pi 的配置文件放哪、全局配置和项目配置怎么配合、各种配置项大概管什么。这一章给你一张”地图”,具体每个字段怎么调留到第 28 章。

配置文件在哪

pi 用两个 JSON 文件管理配置:

文件作用范围怎么编辑
~/.pi/agent/settings.json全局,影响所有项目直接编辑文件,或交互模式里用 /settings
.pi/settings.json项目级,只影响当前目录同上

项目配置的优先级高于全局配置。也就是说,项目级 settings.json 里的值会覆盖全局的同名字段。

Tip

项目配置放在项目根目录的 .pi/ 文件夹下。把这个文件夹加入 .gitignore——队友可能有不同的模型偏好或代理设置。

一个最小配置长什么样

至少要告诉 pi 用哪个模型:

{
  "defaultProvider": "anthropic",
  "defaultModel": "claude-sonnet-4-20250514"
}

这两个字段是必填的——不然 pi 不知道找谁要答案。其余所有字段都是可选的,pi 会给它们用默认值。

首次启动 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
  }
}

看效果:compaction.reserveTokens 被项目配置覆盖成了 8192,但 compaction.enabledtheme 继续沿用全局配置。项目配置只覆盖你明确写的字段,没写的保留全局值。

Note

数组字段(比如 enabledModelsextensions)的行为略有不同——项目配置的数组会替换全局数组,而不是合并。如果你同时在全局和项目里都配了 enabledModels,生效的是项目级的那一份。

配置项一览表

下面按分类把主要配置项过一遍。不用背,当成速查目录就行:

模型与推理

配置项类型默认值一句话说明
defaultProviderstring默认模型提供商,如 "anthropic""openai"
defaultModelstring默认模型 ID
defaultThinkingLevelstring推理深度:"off""low""medium""high"
hideThinkingBlockbooleanfalse隐藏 AI 的推理过程,只看最终回答
showCacheMissNoticesbooleanfalse显示提示词缓存未命中的提示
thinkingBudgetsobject自定义各推理等级对应的 token 预算
Tip

如果你用推理型模型(比如 Claude Sonnet),defaultThinkingLevel 设成 "medium" 是个不错的起点——有一定思考深度但不会太慢。

UI 与显示

配置项类型默认值一句话说明
themestring"dark"主题:"dark""light",或自定义主题名
externalEditorstring系统默认Ctrl+G 打开的外部编辑器(VS Code 用户设 "code --wait"
quietStartupbooleanfalse关闭启动时的头部信息
defaultProjectTruststring"ask"项目信任策略:"ask""always""never"(仅全局配置)
treeFilterModestring"default"/tree 的默认过滤模式
doubleEscapeActionstring"tree"双击 Escape 触发什么:"tree""fork""none"
editorPaddingXnumber0编辑器水平内边距(0-3)
autocompleteMaxVisiblenumber5自动补全最多显示几项(3-20)

网络与代理

配置项类型默认值一句话说明
httpProxystringHTTP 代理地址,如 "http://127.0.0.1:7890"(仅全局配置)

如果你在国内需要代理才能访问 OpenAI 或 Anthropic API,在这里设你的代理地址。

上下文压缩

配置项类型默认值一句话说明
compaction.enabledbooleantrue是否开启自动压缩
compaction.reserveTokensnumber16384留给模型回复的 token 空间
compaction.keepRecentTokensnumber20000保留不被压缩的最近 token 数

分支摘要

配置项类型默认值一句话说明
branchSummary.reserveTokensnumber16384分支摘要的 token 预算
branchSummary.skipPromptbooleanfalse/tree 跳转时跳过”是否摘要”的提问

重试策略

配置项类型默认值一句话说明
retry.enabledbooleantrueAPI 出错时自动重试
retry.maxRetriesnumber3最多重试几次
retry.baseDelayMsnumber2000重试基础间隔(毫秒),指数退避:2s → 4s → 8s
retry.provider.timeoutMsnumberSDK 默认请求超时时间(毫秒)
retry.provider.maxRetriesnumber0提供商级别的重试次数(一般保持为 0)

消息传输

配置项类型默认值一句话说明
steeringModestring"one-at-a-time"steering 消息发送策略
followUpModestring"one-at-a-time"follow-up 消息发送策略
transportstring"auto"传输协议偏好:"sse""websocket""auto"

终端与图片

配置项类型默认值一句话说明
terminal.showImagesbooleantrue终端里显示图片(需终端支持)
terminal.imageWidthCellsnumber60内嵌图片宽度(终端单元格)
images.autoResizebooleantrue图片自动缩放到 2000×2000 以内
images.blockImagesbooleanfalse阻止所有图片发给模型

Shell

配置项类型默认值一句话说明
shellPathstring自定义 shell 路径(如 Cygwin)
shellCommandPrefixstring每个 bash 命令执行前的前置命令
npmCommandstring[]自定义 npm 命令路径(如用 mise 管理 Node 时)

会话

配置项类型默认值一句话说明
sessionDirstring自定义会话文件存储目录

模型循环

配置项类型默认值一句话说明
enabledModelsstring[]Ctrl+P 切换模型时显示哪些模型,支持通配符如 "claude-*"

资源加载

配置项类型默认值一句话说明
packagesarray[]从 npm/git 加载的扩展包
extensionsstring[][]本地 extension 路径
skillsstring[][]本地 skill 路径
promptsstring[][]本地提示词模板路径
themesstring[][]本地主题路径
enableSkillCommandsbooleantrue把 skill 注册为 /skill:名称 命令

一个典型的全局配置

把上面这些串起来,一个实用的全局配置大概是这样:

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

配置优先级总结

当多个来源定义了同一个配置项时,生效优先级从高到低:

  1. CLI 参数(比如 --model--session-dir)——启动时直接覆盖
  2. 项目级 .pi/settings.json——只影响当前项目
  3. 全局级 ~/.pi/agent/settings.json——所有项目的兜底
  4. 环境变量(比如 PI_SKIP_VERSION_CHECK)——少数字段支持
  5. 内置默认值——pi 源码里的硬编码默认值

理解这个优先级就够了。日常使用时改全局 settings.json,特定项目需要不同配置时在项目里加一个 .pi/settings.json

Note

改完 settings.json 通常要重启 pi 才能生效——和 /reload 不同,后者管的是上下文文件、扩展、技能、提示词模板和主题。只有 /settings 命令改的少数选项可以立即生效。

下一步

这张配置地图先看到这里。每个字段的详细说明、边界值、使用场景,记得到第 28 章”配置参考手册”去查。接下来几章我们来看看怎么通过 providers、prompts 和 skills 让 pi 更顺手。