5  日常使用

5.1 交互模式界面

Pi 的交互模式界面由四个主要区域组成:

  1. 启动头(Startup Header):显示快捷键、已加载的上下文文件、提示词模板、技能和扩展信息
  2. 消息区(Messages):显示用户消息、助手响应、工具调用、工具结果、通知、错误和扩展 UI
  3. 编辑器(Editor):你输入文字的区域;边框颜色指示当前思考级别
  4. 页脚(Footer):显示工作目录、会话名称、Token/缓存使用量、费用、上下文使用率和当前模型
Note

页脚中的费用总计包括助手响应、工具报告的使用量以及摘要生成。这是整个会话的累计费用。

编辑器可以被内置 UI(如 /settings)或自定义扩展 UI 临时替换。

5.1.1 编辑器功能

功能 操作方式
文件引用 输入 @ 模糊搜索项目文件
路径补全 按 Tab 补全路径
多行输入 Shift+Enter,Windows Terminal 上为 Ctrl+Enter
复制响应 Ctrl+X 复制最后的助手消息;在 /tree 中复制选中消息
图片粘贴 Ctrl+V,Windows 上为 Alt+V,或拖入终端
Shell 命令 !command 执行并将输出发送给模型
隐藏 Shell 命令 !!command 执行但不发送输出给模型
外部编辑器 Ctrl+G 打开 externalEditor$VISUAL$EDITOR、Windows 记事本或 nano
Tip

在 VS Code 中使用外部编辑器时,建议在设置中配置 "externalEditor": "code --wait",这样 Pi 会在编辑器关闭后恢复。

5.2 斜杠命令

在编辑器中输入 / 即可打开命令补全。扩展可以注册自定义命令,技能以 /skill:name 形式出现,提示词模板通过 /templatename 展开。

5.2.1 完整命令列表

命令 描述
/login/logout 管理 OAuth 或 API Key 凭证
/llama 下载、加载和卸载 llama.cpp 路由器模型
/model 切换模型
/scoped-models 启用/禁用 Ctrl+P 循环的模型
/settings 思考级别、主题、消息传递、传输方式
/resume 从历史会话中选择恢复
/new 开始新会话
/name <name> 设置会话显示名称
/session 显示会话文件、ID、消息数、Token 和费用
/tree 跳转到会话中的任意节点并从那里继续
/trust 保存项目信任决策
/fork 从之前的用户消息创建新会话
/clone 复制当前活跃分支到新会话
/compact [prompt] 手动压缩上下文,可带自定义指令
/copy 复制最后的助手消息到剪贴板
/export [file] 导出会话为 HTML 或 JSONL
/import <file> 从 JSONL 文件导入并恢复会话
/share 上传为私有 GitHub Gist 并生成可分享的 HTML 链接
/reload 重新加载快捷键、扩展、技能、提示词、主题和上下文文件
/hotkeys 显示所有键盘快捷键
/changelog 显示版本历史
/quit 退出 Pi

5.3 消息队列

你可以在 Agent 仍在工作时提交消息:

  • Enter:排队一条引导消息(steering message),在当前助手轮次执行完工具调用后发送
  • Alt+Enter:排队一条后续消息(follow-up message),在 Agent 完成所有工作后发送
  • Escape:中止并恢复排队的消息到编辑器
  • Alt+Up:将排队的消息取回编辑器
Warning

在 Windows Terminal 中,Alt+Enter 默认是全屏切换。如果你想让 Pi 接收这个快捷键,请参考终端设置文档进行重新映射。

消息的传递方式可通过设置中的 steeringModefollowUpMode 配置:

  • "one-at-a-time"(默认):逐条发送
  • "all":一次性发送所有排队消息

5.4 会话管理

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

5.4.1 命令行会话选项

pi -c                  # 继续最近的会话
pi -r                  # 浏览并选择历史会话
pi --no-session        # 临时模式,不保存
pi --name "my task"    # 启动时设置会话名称
pi --session <path|id> # 使用特定会话文件或部分 UUID
pi --fork <path|id>    # 将会话分叉为新文件
pi --session-dir <dir> # 自定义会话存储目录

5.4.2 常用会话命令

  • /session:显示当前会话文件和 ID
  • /tree:导航会话内树结构,可对废弃分支生成摘要
  • /fork:从早期用户消息创建新会话
  • /clone:复制当前活跃分支到新会话文件
  • /compact:压缩旧消息以释放上下文空间

5.5 上下文文件

Pi 在启动时自动加载上下文文件来为模型提供项目信息。

5.5.1 加载顺序

  1. ~/.pi/agent/AGENTS.md:全局指令
  2. 从当前目录的父目录开始逐级向上查找,直到根目录
  3. 当前目录中的 AGENTS.mdCLAUDE.md
Note

Pi 同时支持 AGENTS.mdCLAUDE.md 文件名。如果一个目录中两者都存在,优先加载 AGENTS.md

使用 --no-context-files-nc 标志可以禁用上下文文件加载。

5.5.2 系统提示词文件

你可以完全替换默认系统提示词:

  • .pi/SYSTEM.md:项目级替换
  • ~/.pi/agent/SYSTEM.md:全局替换

如果只想追加内容而不替换,使用 APPEND_SYSTEM.md

  • .pi/APPEND_SYSTEM.md:项目级追加
  • ~/.pi/agent/APPEND_SYSTEM.md:全局追加

5.6 项目信任机制

Pi 在启动时会检查项目目录是否包含需要信任的资源。

5.6.1 需要信任的资源

以下资源的存在会触发信任提示:

  • .pi/settings.json
  • .pi/extensions.pi/skills.pi/prompts.pi/themes
  • .pi/SYSTEM.md.pi/APPEND_SYSTEM.md
  • 当前目录或祖先目录中的 .agents/skills
Warning

单纯的 .pi 目录不会触发信任提示。只有包含上述特定资源时才会。

5.6.2 信任决策流程

  1. 交互模式:如果项目包含需要信任的资源且无已保存的决策,Pi 会询问是否信任
  2. 非交互模式-p--mode json--mode rpc):不显示信任提示,根据 defaultProjectTrust 设置决定行为
  3. 保存的决策:存储在 ~/.pi/agent/trust.json 中,按规范目录路径索引

信任决策选项:

  • "ask"(默认):询问用户
  • "always":总是信任
  • "never":从不信任

使用 /trust 命令可以保存当前项目的信任决策。CLI 标志 -a/--approve-na/--no-approve 可为单次运行覆盖信任决策。

5.6.3 信任前后的加载行为

信任决策前,Pi 仅加载:

  • 上下文文件(AGENTS.md、CLAUDE.md)
  • 用户/全局扩展
  • CLI -e 指定的扩展

信任决策后(如果被信任),Pi 额外加载:

  • .pi/settings.json
  • .pi 资源(扩展、技能、提示词模板、主题、系统提示词文件)
  • 缺失的项目包
  • 项目本地扩展和项目包管理的扩展

5.7 导出和分享会话

/export [file]     # 导出会话为 HTML
/share             # 上传为私有 GitHub Gist

/share 会生成一个可分享的 HTML 链接。如果你从事开源工作并希望发布会话用于模型、提示词、工具和评估研究,可以参考 badlogic/pi-share-hf,它将会话发布到 Hugging Face 数据集。

5.8 CLI 完整参考

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

5.8.1 模式选项

标志 描述
默认 交互模式
-p--print 输出响应并退出
--mode json 以 JSON 行输出所有事件
--mode rpc 通过 stdin/stdout 的 RPC 模式
--export <in> [out] 导出会话为 HTML

5.8.2 模型选项

选项 描述
--provider <name> 提供商名称,如 anthropicopenaigoogle
--model <pattern> 模型模式或 ID,支持 provider/id 和可选的 :thinking
--api-key <key> API Key,覆盖环境变量
--thinking <level> 思考级别:offminimallowmediumhighxhighmax
--models <patterns> 逗号分隔的模型模式,用于 Ctrl+P 循环
--list-models [search] 列出可用模型

5.8.3 会话选项

选项 描述
-c--continue 继续最近的会话
-r--resume 浏览并选择会话
--session <path\|id> 使用特定会话文件或部分 UUID
--fork <path\|id> 分叉会话文件或部分 UUID
--session-dir <dir> 自定义会话存储目录
--no-session 临时模式,不保存
--name <name>-n <name> 启动时设置会话名称

5.8.4 工具选项

选项 描述
--tools <list>-t <list> 允许列表:指定可用的内置、扩展和自定义工具
--exclude-tools <list>-xt <list> 禁用特定工具
--no-builtin-tools-nbt 禁用内置工具但保留扩展/自定义工具
--no-tools-nt 禁用所有工具
Note

内置工具列表:readbasheditwritegrepfindls

5.8.5 资源选项

选项 描述
-e--extension <source> 从路径、npm 或 git 加载扩展;可重复
--no-extensions 禁用扩展发现
--skill <path> 加载技能;可重复
--no-skills 禁用技能发现
--prompt-template <path> 加载提示词模板;可重复
--no-prompt-templates 禁用提示词模板发现
--theme <path> 加载主题;可重复
--no-themes 禁用主题发现
--no-context-files-nc 禁用 AGENTS.md 和 CLAUDE.md 发现

可以将 --no-* 标志与显式加载标志组合使用,精确控制加载哪些资源:

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

5.8.6 其他选项

选项 描述
--system-prompt <text> 替换默认提示词;上下文文件和技能仍会追加
--append-system-prompt <text> 追加到系统提示词
--alt 使用备用屏幕 TUI,带可滚动对话记录和固定编辑器/状态栏
--verbose 强制显示详细启动信息
-a--approve 本次运行信任项目本地文件
-na--no-approve 本次运行忽略项目本地文件
-h--help 显示帮助
-v--version 显示版本

5.8.7 文件参数

使用 @ 前缀引用文件:

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

5.9 包管理命令

pi install <source> [-l]     # 安装包,-l 为项目本地
pi remove <source> [-l]      # 移除包
pi uninstall <source> [-l]   # remove 的别名
pi update [source|self|pi]   # 更新 Pi 或单个包
pi update --all              # 更新 Pi 和所有包
pi update --extensions       # 仅更新包
pi update --models           # 仅刷新模型目录
pi update --self             # 仅更新 Pi
pi update --extension <src>  # 更新单个包
pi list                      # 列出已安装的包
pi config                    # 启用/禁用包资源
Note

pi config 和项目包命令接受 --approve/--no-approve 来为单次命令信任或忽略项目本地设置。pi update 从不提示项目信任。

5.10 设计原则

Pi 保持核心精简,将工作流特定的行为推送到扩展、技能、提示词模板和包中。

Pi 有意不包含以下内置功能:

  • MCP 协议支持
  • 子代理(sub-agents)
  • 权限弹窗
  • 计划模式
  • 待办事项列表
  • 后台 bash

这些工作流都可以通过扩展或包来实现,或者使用容器和 tmux 等外部工具来完成。

Tip

要了解完整的设计理念,请阅读作者的博客文章