如果你最近关注 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 的原因有两个:

  1. 内核极小:它拥有作者见过的所有智能体里最短的系统提示词,只有四个工具:Read、Write、Edit、Bash
  2. 扩展系统强大:扩展可以把状态持久化进会话,这让”极简内核”变得异常能打

还有个加分项: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 直接预览最近提到的文件)

/answer 扩展:把 Agent 回复中的问题重排成输入框

/review 扩展:模拟 Codex 风格的代码审查界面

社区里也有其他人构建的扩展: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)