如果你最近关注 AI 圈,一定注意到了 Peter Steinberger 的 OpenClaw——它换过好几个名字(ClawdBot、MoltBot),本质上是一个接入你选择的通信渠道、只管运行代码的 Agent,上周在互联网上彻底火了一把。而在 OpenClaw 的引擎盖底下,藏着一个名叫 Pi 的小编码智能体。Flask 作者 Armin Ronacher 说,Pi 已经是他现在几乎唯一在用的编码智能体,这篇博客就是他给出的一次详细介绍。
关键要点
- Pi 由 Mario Zechner 开发,内核极小:系统提示词是已知智能体里最短的,工具只有四个——Read、Write、Edit、Bash
- 极小的内核靠扩展系统补足,扩展还能把状态持久化到会话里
- 设计哲学不是”下载扩展/技能”,而是让 Agent 自己写代码来扩展自己
- OpenClaw、Armin 自己的 Telegram bot、Mario 的 mom,都构建在 Pi 这套组件之上
Pi 是什么
Pi 是一个编码智能体。市面上的编码智能体已经很多,随便拿一个都能体验到”Agent 化编程”,但 Pi 打动 Armin 的原因有两个:
- 内核极小:它拥有作者见过的所有智能体里最短的系统提示词,只有四个工具:Read、Write、Edit、Bash
- 扩展系统强大:扩展可以把状态持久化进会话,这让”极简内核”变得异常能打
还有个加分项:Pi 本身写得很像高质量软件——不闪烁、内存占用低、不会随机崩坏、非常可靠。作者 Mario 对进入代码库的每一行都很谨慎。
更重要的是,Pi 是一组可以拼装的小组件,你可以在它之上构建自己的 Agent。OpenClaw 是这样建出来的,Armin 自己的 Telegram bot 是这样建出来的,Mario 的 mom 也是。
什么不在 Pi 里
要理解 Pi 里有什么,先得理解它没有什么。最明显的缺位是 MCP 支持——Pi 本身没有 MCP。OpenClaw 支持 MCP 靠的是 mcporter:它把 MCP 调用暴露成 CLI 或 TypeScript 绑定,你的 Agent 能不能用好就各凭本事了。
这并非偷懒的省略,而是 Pi 的哲学:如果想让 Agent 做它现在还不会做的事,你不该去下载一个扩展或技能,而是让 Agent 扩展它自己。Pi 庆祝的正是”代码写代码、代码跑代码”这件事。
当然,下载扩展完全被支持。但比起让你去装别人写好的扩展,Pi 更鼓励另一种做法:把现有扩展指给 Agent,说”照着它做一个,但改成我喜欢的样”。
为”Agent 构建 Agent”而生的架构
当软件像黏土一样可塑时,底层架构就必须为此留出设计空间。Pi 的几个架构决策都指向这一点:
- 多模型会话:底层 AI SDK 允许一个会话里容纳来自多个模型提供方的消息,不深度绑定任何一家模型的专属能力
- 自定义消息:会话文件里可以存放扩展的状态或系统信息,这些内容可以完全不上送 AI,或只上送一部分
- 内置热重载:Agent 写完扩展代码后可以直接重载、测试、再改,循环直到扩展真正可用;配套的文档和示例也是给 Agent 自己看的
- 会话是树:可以分支、导航、回溯。这让”支线任务”成为可能——比如在主会话不浪费上下文的前提下,分出一个分支去修复坏掉的 Agent 工具,修完回卷会话,Pi 会总结另一个分支上发生了什么
这些设计之所以重要,是因为 MCP 这类机制在大多数模型提供方上,工具需要在会话开始时就被载入系统上下文或工具区。想在不毁掉整个缓存、不让模型混淆历史调用语义的情况下完整重载工具能力,几乎不可能。
上下文之外的工具
Pi 的扩展可以注册工具供 LLM 调用。Armin 实际只额外加载了一个工具:让 Agent 管理待办清单(他自己还有一个让 Agent 自建的本地问题追踪器)。其余扩展大多是 skills,或者让终端交互更顺手的 TUI 扩展——比如 spinner、进度条、文件选择器、数据表格和预览面板。TUI 的弹性大到什么程度?Mario 在终端里跑起了 Doom。虽然不实用,但”连 Doom 都能跑”,做个仪表盘或调试界面自然不在话下。
下面是 Armin 分享的几个扩展,思路是”指给 Agent 看,然后随意魔改”:
| 扩展 | 作用 |
|---|---|
/answer | 读取 Agent 上一条回复,把所有问题抽取出来重排成输入框。他不喜欢结构化提问弹窗,更喜欢自然语言来回 |
/todos | 展示 .pi/todos 目录下的 Markdown 待办,人机都能编辑,会话还可以认领任务标记进行中 |
/review | 利用会话树分出一个全新审查上下文,列出问题后再把修复带回主会话。界面模仿 Codex,可以审提交、diff、未提交变更或远端 PR,还会专门点出新增依赖 |
/control | 实验性质:让一个 Pi 给另一个 Pi 发提示词,不做复杂编排的轻量多智能体系统 |
/files | 列出会话中改动或引用过的文件,可在 Finder 显示、在 VS Code 里 diff、快速预览(shift+ctrl+r 直接预览最近提到的文件) |


社区里也有其他人构建的扩展:Nico 的 subagent 扩展,以及能让 Pi 在可观察的 TUI 覆盖层里自主运行交互式 CLI 的 interactive-shell。
软件构建软件
Armin 强调:上面这些扩展没有一个是手写的,全是让 Pi 按规格写出来的。没有 MCP,没有社区技能下载,一切功能由 Agent 自己维护。他也用很多技能,但都是”自己的 Agent 手工打造”的,不是从别处下载的。比如他把浏览器自动化相关的 CLI 和 MCP 全部换成了一个只用 CDP 的技能——不是原来的不好用,而是这样更自然。
技能用不上就扔掉,这是他的习惯。他给 Agent 配过”读取其他工程师共享的 Pi 会话”用于代码审查的技能、“按我习惯写提交信息与 changelog”的技能,还有让 Pi 优先用 uv 而不是 pip 的技能——并配了一个拦截 pip/python 调用、重定向到 uv 的自定义扩展。
和 Pi 这样的极简 Agent 一起工作的迷人之处在于:你每天都在实践”用软件构建软件”这件事。把这个思路推到极致,就是去掉界面和输出、把它接到聊天里——那就是 OpenClaw。看着它惊人的增长速度,Armin 越来越确信,这或多或少就是我们的未来。
核心总结
- 极简内核:最短系统提示词 + 四个工具(Read/Write/Edit/Bash),可靠、稳定、轻量
- 自我扩展:没有 MCP,不靠下载技能;Agent 自己写扩展、热重载、跑测试,直到功能可用
- 会话即树:分支、支线任务、回卷总结,让”修工具”不污染主会话
- 愿景:软件构建软件,去掉 UI 接上聊天,就是 OpenClaw 代表的未来
原文:Pi: The Minimal Agent Within OpenClaw(Armin Ronacher)



