Pi Agent 使用小技巧
【摘要】 Pi Agent 使用技巧Pi(pi.dev)是 Earendil Inc. 出品的最小化、可扩展终端 AI 编程 agent(agent harness),npm 包 @earendil-works/pi-coding-agent。核心理念:「改的是 harness,不是你的工作流」——它只给原语(extensions / skills / prompt templates / them...
Pi Agent 使用技巧
Pi(pi.dev)是 Earendil Inc. 出品的最小化、可扩展终端 AI 编程 agent(agent harness),npm 包
@earendil-works/pi-coding-agent。
核心理念:「改的是 harness,不是你的工作流」——它只给原语(extensions / skills / prompt templates / themes),sub-agents、plan mode、权限弹窗等都不内置,需要时让 Pi 自己造或装个包。
1. 首次连接
- 配置目录默认
~/.pi/agent/,AGENTS.md、SYSTEM.md、keybindings.json、skills、prompt templates 都放这里。 - 首次启动按提示连接模型(API key 或 OAuth),支持 15+ 提供商:Anthropic / OpenAI / Google / Azure / Bedrock / Mistral / Groq / Cerebras / xAI / HF / Kimi / MiniMax / NVIDIA / OpenRouter / Ollama 等。
2. 模型使用技巧
| 操作 | 方式 |
|---|---|
| 打开模型选择器 | Ctrl+L 或 /model |
| 循环下一个 / 上一个收藏模型 | Ctrl+P / Shift+Ctrl+P |
| 保存当前模型为默认 | Ctrl+S |
| 循环 thinking 等级 | Shift+Tab |
| 折叠 / 展开 thinking 块 | Ctrl+T |
| 按场景配置不同模型(scoped) | /scoped-models |
技巧:
- 会话中途换模型:长上下文用便宜模型做检索/总结,关键步骤
Ctrl+L切到强模型,无需重启会话。 - 自定义 provider / 模型:编辑
models.json,或写个 custom-provider extension 接私有网关 / 兼容端点。 - Ollama 本地模型:离线或隐私场景直接选 Ollama provider,零外发。
3. 会话是树,不是线
Pi 把会话存成树,所有分支共用一个文件。这是它最值得用的特性。
| 命令 / 键 | 作用 |
|---|---|
/tree |
打开会话树导航,跳到任意历史点继续 |
/fork |
从当前点分叉,试另一种思路不丢原历史 |
/resume |
恢复历史会话 |
/new |
新建会话 |
/export |
导出为 HTML |
/share |
上传 GitHub gist,拿到可渲染的分享 URL |
Ctrl+Shift+Up/Down |
在 marked message 间跳转 |
Ctrl+Home/End |
滚到顶 / 底 |
技巧:
- 试错不覆盖:拿不准的方向先
/fork,两条分支并行对比,留下效果更好的那条。 - 给关键节点打 label:在
/tree里Shift+L编辑标签,Ctrl+L过滤只看 labeled,长会话里快速定位。 - 分享排错过程:
/share生成 URL 直接贴给同事,比截图完整。
4. 上下文工程(Pi 的核心卖点)
Pi 系统提示极简,把上下文控制权交给你:
AGENTS.md:启动时从~/.pi/agent/、各级父目录、当前目录加载,叠加生效。放项目约定、编码规范、目录说明。SYSTEM.md:按项目替换或追加默认系统提示,比 AGENTS.md 更底层。- Skills:带指令 + 工具的能力包,按需加载,不会一上来撑爆 prompt cache。适合「用到才加载」的重型能力。
- Prompt templates:把常用 prompt 存成 Markdown,输入
/name即展开。重复任务一键复用。 - Compaction:逼近上下文上限时自动总结旧消息。可写 extension 做主题式压缩 / 代码感知摘要 / 换模型总结。
技巧:
- 分层放 AGENTS.md:
~/.pi/agent/AGENTS.md放全局偏好(语言、风格),项目根放项目约定,子目录放模块局部规则,自动叠加。 - 用 SYSTEM.md 锁死角色:不希望被项目 AGENTS.md 稀释时,用 SYSTEM.md 直接替换默认提示。
- 重型能力做成 Skill:比如「数据库迁移审查」只在触发时加载,平时不占上下文。
- 自定义 compaction:默认总结可能丢代码细节,写个 code-aware compaction extension 保留关键 diff。
5. Steering:中途纠偏不打断
agent 跑起来时你仍能输入:
| 键 | 行为 |
|---|---|
Enter |
steering 消息:当前工具跑完后送达,中断剩余工具 |
Alt+Enter |
follow-up:排队,等 agent 完全跑完再送 |
Alt+Up |
把已排队消息拉回编辑器继续改 |
技巧:
- 跑偏立刻 steer:
Enter发「停,先看 X 文件」能及时止损,不必等它把错路走完。 - 补充需求用 follow-up:
Alt+Enter排「顺便加测试」,不打断当前节奏。 Escape随时中断取消整轮。
6. 让 Pi 改造自己(self-modify)
Pi 不是密封产品。缺命令 / 工具 / UI 调整,直接让 Pi 现场造:
- 告诉它:「给我加一个 xxx 命令 / extension」
- 它就地改自己的源码 / 配置
- 你
/reload,继续用 - 觉得通用就打包发 npm / git
这是「primitives, not features」的实操:sub-agents、plan mode、permission gate、path protection、SSH 执行、sandbox 等都有现成示例 extension 可抄。
7. 扩展与包
pi install npm:@foo/pi-tools # 从 npm 装
pi install git:github.com/badlogic/pi-doom # 从 git 装
- Extension:TypeScript 模块,可挂工具、命令、快捷键、事件、TUI(状态栏 / overlay / 自定义编辑器)。
- 包 = extensions + skills + prompts + themes 的打包,npm / git 分发。
- 浏览可用包:pi.dev/packages。
缺能力时的决策树:先问 Pi 造 → 造不出就装包 → 都没有就自己写 extension。
8. 四种模式与自动化
| 模式 | 用法 | 场景 |
|---|---|---|
| Interactive | pi |
日常 TUI |
pi -p "query" |
一次性 / 脚本 | |
| JSON | pi -p "query" --mode json |
消费结构化事件流 |
| RPC | JSON over stdin/stdout | 非 Node 进程控制 Pi |
| SDK | 嵌入应用 | 把 Pi 当库用(参考 OpenClaw) |
技巧:
- CI 里跑 Pi:
pi -p "给 src/ 加单测并跑 vitest" --mode json,解析事件流拿结果。 - 编辑器集成:用 RPC 模式起一个常驻 Pi 进程,前端发指令、收流式输出。
9. MCP + Codemode
- MCP 内置:直接连 MCP server,无需额外桥(旧 MCP extension 仍兼容)。
- Codemode:让 agent 在 JavaScript sandbox 里组合工具调用,适合需要「先调 A 再用 A 的结果调 B」的复杂编排。
10. 常用快捷键速查
| 键 | 作用 |
|---|---|
Enter / Shift+Enter |
提交 / 换行 |
Escape |
中断 / 取消 |
Ctrl+C |
清空编辑器(再按退出) |
Ctrl+D |
退出(编辑器空时) |
Ctrl+Z |
挂起到后台(fg 回来) |
Ctrl+G |
用外部编辑器($EDITOR)写长 prompt |
Ctrl+L |
模型选择器 |
Ctrl+P / Shift+Ctrl+P |
循环模型 |
Shift+Tab |
循环 thinking 等级 |
Ctrl+T |
折叠 / 展开 thinking |
Ctrl+O |
折叠 / 展开工具输出 |
Ctrl+X |
复制消息 |
Alt+Enter |
排队 follow-up |
Alt+Up |
恢复排队消息 |
Ctrl+Shift+F |
搜索 transcript |
Ctrl+W / Ctrl+U / Ctrl+K |
删词 / 删到行首 / 删到行尾 |
Ctrl+Y |
yank 粘回最近删除 |
Ctrl+V |
粘贴图片 / 文件 / 文本 |
运行
/hotkeys查看当前生效的全部快捷键;改~/.pi/agent/keybindings.json后/reload生效。
11. 常用斜杠命令速查
| 命令 | 作用 |
|---|---|
/model |
选模型 |
/scoped-models |
按场景配模型 |
/new /resume /fork /tree |
会话新建 / 恢复 / 分叉 / 树导航 |
/export /share |
导出 HTML / 上传 gist 分享 |
/hotkeys |
查看快捷键 |
/reload |
重载配置 / extension / 快捷键 |
/settings |
设置面板 |
12. 安全与最佳实践
- 工具以 Pi 进程权限运行,不沙箱化:别在含密钥 / 生产凭证的目录裸跑,或先写个 permission-gate extension / protected-paths。
- 跑不可信仓库 / extension:放容器里(见 containerization 文档),别直接在主机。
- 无人值守自动化:务必加确认流 extension,避免 agent 自主跑危险命令。
- background bash 用 tmux:Pi 不内置后台 shell,开 tmux 窗口给 agent,全程可观测、可直接交互,比黑盒后台更安全。
- sub-agents 用 tmux 或 extension:多开 Pi 实例各管一摊,比单进程塞子代理更可控。
13. 避坑清单
| 坑 | 解法 |
|---|---|
| 以为没有 plan mode / todo / sub-agents 就不能用 | 这些都能 extension / 包 / tmux 补,是设计选择不是缺失 |
| 改了配置不生效 | /reload |
| 上下文老爆 | 调 compaction extension,或把重型能力改造成按需 Skill |
| 想分享会话但找不到入口 | /share 上传 gist 拿 URL,/export 存本地 HTML |
| 长会话找不到关键节点 | /tree + 打 label + labeled 过滤 |
| 模型切换要重启 | 不用,Ctrl+L 会话中途切 |
Windows 下 Ctrl+Z 没反应 |
Windows 不支持 job control,Pi 只提示不挂起;WSL 正常 |
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)