PiPi
快速开始
使用 Pi
  • 简体中文
  • English
快速开始
使用 Pi
  • 简体中文
  • English
  • 从这里开始

    • 快速开始
    • 使用 Pi
    • 提供商
    • 安全
    • 容器化
    • 设置
    • 键位绑定
    • 会话
    • 压缩与分支总结
  • 自定义

    • 扩展
    • 技能
    • 提示词模板
    • 主题
    • Pi 包
    • 自定义模型
    • 自定义提供商
  • 参考

    • 会话文件格式
  • 编程式使用

    • SDK
    • RPC 模式
    • JSON 事件流模式
    • TUI 组件
  • 平台设置

    • Windows 设置
    • Termux(Android)设置
    • tmux 设置
    • 终端设置
    • Shell 别名
  • 开发

    • 开发

设置

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)不会显示信任提示。如果没有适用的已保存信任决策,它们会使用全局设置中的 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 以使更改生效。

所有设置

模型与思考

设置类型默认值描述
defaultProviderstring-默认提供商(例如 "anthropic"、"openai")
defaultModelstring-默认模型 ID
defaultThinkingLevelstring-"off"、"minimal"、"low"、"medium"、"high"、"xhigh"
hideThinkingBlockbooleanfalse在输出中隐藏 thinking blocks
thinkingBudgetsobject-每个思考级别的自定义 token budget

thinkingBudgets

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

UI 与显示

设置类型默认值描述
themestring"dark"主题名称("dark"、"light" 或自定义)
externalEditorstring$VISUAL,然后 $EDITOR,Windows 上为 Notepad,其他平台为 nanoCtrl+G 外部编辑器命令;优先于环境变量
quietStartupbooleanfalse隐藏启动标题
defaultProjectTruststring"ask"项目信任回退行为:"ask"、"always" 或 "never"。仅全局设置
collapseChangelogbooleanfalse更新后显示精简 changelog
enableInstallTelemetrybooleantrue首次安装或检测到 changelog 更新后发送匿名安装/更新版本 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输入编辑器的水平 padding(0-3)
outputPadnumber1用户消息、助手消息和 thinking 的水平 padding(0 或 1)
autocompleteMaxVisiblenumber5自动补全下拉框最大可见项数(3-20)
showHardwareCursorbooleanfalse在 TUI 为 IME 支持定位终端光标时显示硬件光标

对于 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 版本更新检查。使用 --offline 或 PI_OFFLINE=1 可禁用这里描述的所有启动网络操作,包括更新检查、包更新检查和安装/更新遥测。

网络

设置类型默认值描述
httpProxystring-HTTP proxy URL,会应用为 HTTP_PROXY 和 HTTPS_PROXY。仅全局设置。
{
  "httpProxy": "http://127.0.0.1:7890"
}

警告

设置类型默认值描述
warnings.anthropicExtraUsagebooleantrue当 Anthropic 订阅身份验证可能使用付费 extra usage 时显示警告
{
  "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启用 agent 级别的瞬时错误自动重试
retry.maxRetriesnumber3agent 级别最大重试次数
retry.baseDelayMsnumber2000agent 级别指数退避基础延迟(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")时,请求会立即失败并给出信息性错误,而不是静默等待。设置为 0 可禁用该上限。

除非明确需要提供商级别重试,否则保持 retry.provider.maxRetries 为 0。将其设为大于 0 可能会让 SDK/provider 重试先于 Pi 处理用量耗尽错误,在某些情况下可能阻塞 agent,直到提供商配额重置。

{
  "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 header/body 空闲超时(毫秒),也用于具有显式 stream idle timeout 的提供商。设置为 0 可禁用。
websocketConnectTimeoutMsnumber15000支持 WebSocket 传输的提供商的 WebSocket connect/open 握手超时(毫秒)。设置为 0 可禁用。

终端与图片

设置类型默认值描述
terminal.showImagesbooleantrue在终端中显示图片(如果支持)
terminal.imageWidthCellsnumber60终端中内联图片的首选宽度(以 cells 计)
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,以避免 wrapper 或替代包管理器中的 npm 特定标志。

会话

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

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

模型循环

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

Markdown

设置类型默认值描述
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

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

{
  "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 }
}
最近更新:: 2026/7/6 09:32
Contributors: seepine
Prev
容器化
Next
键位绑定