Pi:OpenClaw 背后的极简 Agent 哲学
Pi:OpenClaw 背后的极简 Agent 哲学
原文: Pi: The Minimal Agent Within OpenClaw
作者: Armin Ronacher (Flask 创始人)
翻译整理: 2026-02-21
什么是 Pi?
Pi 是 OpenClaw 的核心 coding agent,由 Mario Zechner 开发。如果说 OpenClaw(由 Peter Steinberger 创建)追求的是”科幻般的疯狂”,那 Pi 则完全相反——它极其克制和极简。
但两者核心理念一致:LLM 擅长写代码和运行代码,那就拥抱这一点。
Pi 的极简设计哲学
核心特点
| 特性 | Pi 的做法 | 其他 Agent |
|---|---|---|
| 系统提示词 | 最短 | 通常很长 |
| 内置工具 | 只有 4 个 | 几十个甚至上百 |
| 扩展方式 | 让 Agent 自己写扩展 | 下载安装扩展 |
| 状态管理 | Session 树形结构,可分支回溯 | 线性对话 |
四大核心工具
Pi 只提供最基础的 4 个工具:
- Read - 读取文件
- Write - 写入文件
- Edit - 编辑文件
- Bash - 执行命令
“如果你需要 Agent 做它还没做的事情,不要下载扩展,让 Agent 自己扩展自己。”
为什么不用 MCP?
Pi 不支持 MCP(Model Context Protocol),这不是懒惰的 omission,而是有意的设计选择。
MCP 的问题是:工具需要在会话开始时加载到系统上下文中,这使得热重载变得非常困难——如果不清空缓存或让 AI 困惑,就无法完全重新加载工具的功能。
Pi 的解决方案:Session 树形结构。
Session 树:Pi 的秘密武器
Pi 的会话不是线性的,而是树形结构:
主分支: 开发功能 A
↓
分支 1: 修复工具 bug
↓
回到主分支: 继续开发功能 A(带修复)
好处:
- 可以在不浪费主会话上下文的情况下,分支出去修复工具
- 修复完成后,回溯到之前的时间点
- Pi 会自动总结分支上发生的事情
扩展系统:Agent 为自己写扩展
Pi 的扩展系统允许:
- 扩展可以在 Session 中持久化状态
- 支持热重载——Agent 可以写代码、重载、测试,循环直到扩展可用
- 扩展可以注册自定义 TUI 组件(旋转器、进度条、文件选择器、数据表格等)
Armin 的扩展示例
1. /answer - 优雅回答问题
Armin 不喜欢结构化的问答对话框,他更喜欢 Agent 自然的散文式回答(带解释和图表)。
问题:内联回答问题会变得很乱。
解决:/answer 读取 Agent 的最后回复,提取所有问题,重新格式化为漂亮的输入框。
2. /todos - Agent 待办清单
虽然 Armin 批评 Beads 的实现方式,但他确实认为给 Agent 一个待办清单很有用。
/todos 将所有项目存储在 .pi/todos 目录下的 markdown 文件中。Agent 和人类都可以操作它们,会话可以认领任务将其标记为进行中。
3. /review - Agent 代码审查
随着更多代码由 Agent 编写,在丢给人类之前先让 Agent 审查更有意义。
利用 Pi 的 Session 树,可以分支到一个全新的审查上下文,获取发现的问题,然后将修复带回主会话。
UI 参考了 Codex,提供易于审查的 commits、diffs、未提交更改或远程 PR。
4. /control - 多 Agent 实验
一个实验性扩展,让一个 Pi Agent 可以向另一个发送提示。这是一个简单的多 Agent 系统,没有复杂的编排,适合实验。
5. /files - 文件管理
列出会话中更改或引用的所有文件。可以在 Finder 中显示、在 VS Code 中 diff、快速查看,或在提示中引用。
shift+ctrl+r 快速查看最近提到的文件,当 Agent 生成 PDF 时很方便。
软件构建软件
这些扩展都不是 Armin 自己写的,而是他告诉 Pi 做一个扩展,Pi 就做了。
“没有 MCP,没有社区技能,什么都没有。我用了很多技能,但它们都是由我的’小铁匠’(Agent)手工打造的,而不是从任何地方下载的。”
Armin 的技能示例
- 浏览器自动化技能: 完全替代了 CLIs 或 MCPs,使用 CDP(Chrome DevTools Protocol)
- Pi 会话读取技能: 帮助 Agent 读取其他工程师分享的 Pi 会话,有助于代码审查
- 提交信息技能: 帮助 Agent 按 Armin 想要的方式编写提交信息和更新变更日志
- uv 迁移技能: 帮助 Pi 使用 uv 而不是 pip
Pi vs OpenClaw
| Pi | OpenClaw | |
|---|---|---|
| 定位 | 核心 coding agent | 完整的 AI Gateway |
| 界面 | 终端 TUI | 多平台(Telegram/Discord/等) |
| 使用场景 | 开发者本地编码 | 24/7 自动化助手 |
| 关系 | OpenClaw 构建在 Pi 之上 | 包含 Pi |
Pi 是 OpenClaw 的引擎,OpenClaw 是 Pi 的”去 UI 化”版本——移除界面和输出,连接到聊天应用。
核心启示
- 极简主义获胜: 4 个工具足够完成大多数任务
- 让 Agent 自扩展: 不要下载扩展,让 Agent 写扩展
- Session 树形结构: 分支和回溯是处理复杂工作流的关键
- 热重载: Agent 应该能写代码、测试、修复,循环迭代
- 软件构建软件: 这是未来的编程方式
正如 Armin 所说:
“使用像 Pi 这样的极简 Agent 工作让我真正体验到’用软件构建更多软件’的理念。将其推向极致就是移除 UI 和输出,将其连接到你的聊天应用。这就是 OpenClaw 所做的,考虑到它的巨大增长,我真的越来越觉得这将以某种方式成为我们的未来。”
相关链接
- Pi 源码: https://github.com/badlogic/pi-mono/
- Mario Zechner: https://mariozechner.at/
- Armin 的扩展: https://github.com/mitsuhiko/agent-stuff/
- 原文: https://lucumr.pocoo.org/2026/1/31/pi/