Pi 官方文档

使用 Pi

使用 Pi

本页汇总的是日常使用细节。它们不太适合放在快速上手页里。

交互模式

<p align="center"><img src="images/interactive-mode.png" alt="Interactive Mode" width="600"></p>

界面分为四个主要区域:

  • 启动头部 - 快捷方式、已加载的上下文文件、提示词模板、Skill 和扩展
  • 消息区 - 用户消息、助手回复、tool call、tool result、通知、错误和扩展 UI
  • 编辑器 - 你输入内容的地方;边框颜色表示当前思考级别
  • 底部栏 - 工作目录、会话名称、token/cache 使用情况、费用、上下文使用量和当前模型

编辑器可以被内置 UI 临时替换,比如 /settings,也可以被自定义扩展 UI 替换。

编辑器功能

功能使用方法
文件引用输入 @ 来模糊搜索项目文件
路径补全按 Tab 补全路径
多行输入Shift+Enter,或在 Windows Terminal 中按 Ctrl+Enter
图片用 Ctrl+V、Windows 上的 Alt+V 粘贴,或拖入终端
Shell 命令!command 会运行命令,并把输出发送给模型
隐藏的 Shell 命令!!command 会运行命令,但不会把输出发送给模型
外部编辑器Ctrl+G 打开 $VISUAL$EDITOR

所有快捷键和自定义方式见 键位绑定

斜杠命令

在编辑器中输入 /,可以打开命令补全。扩展可以注册自定义命令,Skill 可通过 /skill:name 使用,提示词模板则通过 /templatename 展开。

命令说明
/login, /logout管理 OAuth 或 API-key 凭据
/model切换模型
/scoped-models为 Ctrl+P 轮转启用/禁用模型
/settings思考级别、主题、消息传递、传输方式
/resume从之前的会话中选择
/new开始一个新会话
/name <name>设置会话显示名称
/session显示会话文件、ID、消息、token 和费用
/tree跳到会话中的任意位置,并从那里继续
/fork基于之前的一条用户消息创建新会话
/clone将当前活动分支复制到一个新会话中
/compact [prompt]手动执行上下文压缩,可附带自定义指令
/copy将上一条助手消息复制到剪贴板
/export [file]将会话导出为 HTML
/share上传为私有 GitHub gist,并生成可分享的 HTML 链接
/reload重新加载键位绑定、扩展、Skill、提示词和上下文文件
/hotkeys显示所有键盘快捷键
/changelog显示版本历史
/quit退出 pi

消息队列

你可以在 agent 仍在工作时继续提交消息:

  • Enter 会把一条 steering 消息加入队列,在当前助手轮次执行完它的 tool call 后发送。
  • Alt+Enter 会把一条后续消息加入队列,在 agent 完成全部工作后发送。
  • Escape 会中止,并把队列里的消息恢复到编辑器中。
  • Alt+Up 会把队列里的消息取回编辑器。

在 Windows Terminal 中,Alt+Enter 默认是全屏快捷键。如果你希望 pi 接收这个快捷键,请按照 终端设置 里的说明重新映射。

可在 设置 中通过 steeringModefollowUpMode 配置消息传递方式。

会话

会话会自动保存到 ~/.pi/agent/sessions/,并按工作目录组织。

pi -c                  # Continue most recent session
pi -r                  # Browse and select a session
pi --no-session        # Ephemeral mode; do not save
pi --name "my task"    # Set session display name at startup
pi --session <path|id> # Use a specific session file or session ID
pi --fork <path|id>    # Fork a session into a new session file

常用会话命令:

  • /session 显示当前会话文件和 ID。
  • /tree 浏览文件内的会话树,并可以对被放弃的分支做摘要。
  • /fork 根据更早的一条用户消息创建新会话。
  • /clone 将当前活动分支复制到一个新的会话文件中。
  • /compact 对较早的消息做上下文压缩,以释放上下文。

详情见 会话上下文压缩

上下文文件

Pi 会在启动时从以下位置加载 AGENTS.mdCLAUDE.md

  • ~/.pi/agent/AGENTS.md,作为全局指令
  • 当前工作目录向上逐级查找父目录
  • 当前目录

把上下文文件用于记录项目规范、命令、安全规则和偏好。可使用 --no-context-files-nc 禁用加载。

系统提示词文件

用以下文件替换默认系统提示词:

  • .pi/SYSTEM.md,用于项目
  • ~/.pi/agent/SYSTEM.md,用于全局

如果在任一位置使用 APPEND_SYSTEM.md,则会在默认提示词后追加内容,而不会替换它。

项目信任

在交互式启动时,如果某个项目文件夹包含项目本地设置、资源或项目 .agents/skills,并且在 ~/.pi/agent/trust.json 中没有针对该文件夹或其父文件夹的已保存决定,pi 会先询问是否信任它。信任项目后,pi 就可以加载 .pi/settings.json.pi 资源、安装缺失的项目 Package,并执行项目扩展。

在做出信任决定之前,pi 只会加载上下文文件、用户/全局扩展和 CLI -e 扩展,这样它们就能处理 project_trust 事件。项目本地扩展、由项目 Package 管理的扩展和项目设置,只有在项目被信任后才会加载。切换到来自其他 cwd 的会话时,如果该 cwd 的信任状态在当前进程中还没有确定,这种拆分也同样适用。

非交互模式(-p--mode json--mode rpc)不会显示信任提示。如果没有适用的已保存信任决定,它们会使用全局设置中的 defaultProjectTrustask(默认)和 never 会忽略这些项目资源,而 always 会信任它们。可传入 --approve/-a--no-approve/-na,在单次运行中覆盖项目信任。

如果没有任何扩展或已保存决定适用,defaultProjectTrust 会控制回退行为。可在 ~/.pi/agent/settings.json 中将其设为 "ask""always""never",也可以通过 /settings 修改。

pi config 和 package 命令使用同样的项目信任流程,但 pi update 绝不会提示。传入 --approve 可让单条命令信任项目本地设置,传入 --no-approve 则忽略它们。

在交互模式下使用 /trust,可以保存项目信任决定,供后续会话使用,也会一并信任其直接父文件夹。它只会写入 ~/.pi/agent/trust.json;当前会话不会重新加载,所以需要重启 pi 才会生效。


导出和分享会话

使用 /export [file] 将会话写入 HTML。

使用 /share 上传一个私有 GitHub gist,并生成可分享的 HTML 链接。

如果你用 pi 做开源工作,并希望把会话发布出来,用于模型、提示词、工具和评估研究,请看 badlogic/pi-share-hf。它会把会话发布到 Hugging Face datasets。

CLI 参考

pi [options] [@files...] [messages...]

Package 命令

pi install <source> [-l]     # Install package, -l for project-local
pi remove <source> [-l]      # Remove package
pi uninstall <source> [-l]   # Alias for remove
pi update [source|self|pi]   # Update pi only, or one package source
pi update --all              # Update pi and packages; reconcile pinned git refs
pi update --extensions       # Update packages only; reconcile pinned git refs
pi update --self             # Update pi only
pi update --extension <src>  # Update one package
pi list                      # List installed packages
pi config                    # Enable/disable package resources

这些命令用于管理 pi packages,而 pi update 可以更新 pi CLI 的安装。要卸载 pi 本身,请参见 快速开始pi config 和项目 package 命令都支持 --approve/--no-approve,可在单次命令中信任或忽略项目本地设置。pi update 从不会提示项目信任。

参见 Pi Packages,了解 package 来源和安全说明。

模式

标志说明
default交互模式
-p, --print打印响应并退出
--mode json将所有事件输出为 JSON lines;参见 JSON 模式
--mode rpc通过 stdin/stdout 以 RPC 模式运行;参见 RPC 模式
--export <in> [out]将会话导出为 HTML

在打印模式下,pi 还会读取通过管道传入的 stdin,并将其合并到初始提示词中:

cat README.md | pi -p "Summarize this text"

模型选项

选项说明
--provider <name>Provider(模型提供方),例如 anthropicopenaigoogle
--model <pattern>模型模式或 ID;支持 provider/id 以及可选的 :<thinking>
--api-key <key>API key,会覆盖环境变量
--thinking <level>offminimallowmediumhighxhigh
--models <patterns>以逗号分隔的模式,用于 Ctrl+P 循环切换
--list-models [search]列出可用模型

会话选项

选项说明
-c, --continue继续最近一次会话
-r, --resume浏览并选择一个会话
--session <path|id>使用指定的会话文件或部分 UUID
--fork <path|id>将会话文件或部分 UUID 分叉为新的会话
--session-dir <dir>自定义会话存储目录
--no-session临时模式;不保存
--name <name>, -n <name>启动时设置会话显示名称

工具选项

选项说明
--tools <list>, -t <list>允许特定的内置、扩展和自定义工具
--exclude-tools <list>, -xt <list>禁用特定的内置、扩展和自定义工具
--no-builtin-tools, -nbt禁用内置工具,但保留扩展/自定义工具可用
--no-tools, -nt禁用所有工具

内置工具:readbasheditwritegrepfindls

资源选项

选项说明
-e, --extension <source>从路径、npm 或 git 加载一个扩展;可重复使用
--no-extensions禁用扩展发现
--skill <path>加载一个 Skill;可重复使用
--no-skills禁用 Skill 发现
--prompt-template <path>加载一个提示词模板;可重复使用
--no-prompt-templates禁用提示词模板发现
--theme <path>加载一个主题;可重复使用
--no-themes禁用主题发现
--no-context-files, -nc禁用 AGENTS.mdCLAUDE.md 发现

--no-* 与显式标志组合使用,可以只加载你需要的内容,并忽略设置。示例:

pi --no-extensions -e ./my-extension.ts

其他选项

选项说明
--system-prompt <text>替换默认提示词;上下文文件和 Skills 仍会追加
--append-system-prompt <text>追加到 system prompt
--verbose强制详细启动输出
-a, --approve本次运行信任项目本地文件
-na, --no-approve本次运行忽略项目本地文件
-h, --help显示帮助
-v, --version显示版本

文件参数

在文件名前加 @,即可把它们包含到消息中:

pi @prompt.md "Answer this"
pi -p @screenshot.png "What's in this image?"
pi @code.ts @test.ts "Review these files"

示例

# Interactive with initial prompt
pi "List all .ts files in src/"

# Non-interactive
pi -p "Summarize this codebase"

# Non-interactive with piped stdin
cat README.md | pi -p "Summarize this text"

# Named one-shot session
pi --name "release audit" -p "Audit this repository"

# Different model
pi --provider openai --model gpt-4o "Help me refactor"

# Model with provider prefix
pi --model openai/gpt-4o "Help me refactor"

# Model with thinking level shorthand
pi --model sonnet:high "Solve this complex problem"

# Limit model cycling
pi --models "claude-*,gpt-4o"

# Read-only mode
pi --tools read,grep,find,ls -p "Review the code"

# Disable one extension or built-in tool while keeping the rest available
pi --exclude-tools ask_question

环境变量

变量说明
PI_CODING_AGENT_DIR覆盖配置目录;默认是 ~/.pi/agent
PI_CODING_AGENT_SESSION_DIR覆盖会话存储目录;会被 --session-dir 覆盖
PI_PACKAGE_DIR覆盖 Package 目录,适用于 Nix/Guix store 路径
PI_OFFLINE禁用启动时的网络操作,包括更新检查、Package 更新检查,以及安装/更新遥测
PI_SKIP_VERSION_CHECK启动时跳过 Pi 版本更新检查。这会避免向 pi.dev 发起最新版本请求
PI_TELEMETRY覆盖安装/更新遥测和 Provider 归因请求头:1/true/yes0/false/no。这不会禁用更新检查
PI_CACHE_RETENTION在支持的情况下,设为 long 以启用更长的提示词缓存保留
VISUAL, EDITORCtrl+G 使用的外部编辑器

设计原则

Pi 会把核心保持得很小,并把与工作流相关的行为放到扩展、Skill、提示词模板和 Package 里。

它刻意不内置 MCP、子 agent、权限弹窗、计划模式、待办事项或后台 bash。你可以把这些工作流做成扩展或 Package 安装进来,也可以使用容器、tmux 之类的外部工具。

如果想看完整的设计理由,请阅读这篇 blog post

Pi 官方文档中文整理 · 机器初译,待人工校对

本文基于官方 MIT 文档翻译整理,不代表 pi.dev 官方中文站。同步 commit:8b97e75c,同步时间:2026/6/20

查看官方原文