needhelp
← 返回博客

Pi Coding Agent 崛起:一个只有4个工具的终端框架,凭什么成为 AI 编程赛道的黑马

作者 needhelp
pi
pi-coding-agent
ai-agent
open-source
developer-tools
coding-agent
openclaw
minimalism

Mario Zechner 是谁?如果你玩过《杀戮尖塔》的手游移植版,或者用过 libGDX 做游戏开发,那你已经用过他的作品了。这位奥地利程序员在 2025 年底干了一件在 AI 工具军备竞赛里看起来”逆行”的事:他写了一个只有 4 个工具的 AI 编程助手。

这个叫 pi-mono 的项目,现在 GitHub 上 55,000 Stars。基于它构建的 OpenClaw,半年内冲到 374,000 Stars,短暂超越 React 成为 GitHub 上 Star 最多的项目。它的下游 fork(earendil-works/pi)也有 51,000 Stars

当 Claude Code 功能越加越多、Cursor 推订阅、Aider 绑 Python 环境的时候,Pi 的选择是:砍。

“我写了一个偏执的最小化编码助手”

Mario 的博客文章开头就很直白:

“我写了一个偏执且极简的编码 Agent。它只有 4 个工具,系统提示词很短,任何超出基本文件操作的功能全靠扩展。”

不是谦虚——这就是设计目标。

Pi 的核心就是一个 while 循环:喂给 LLM 一段约 300 词的提示词,发给它 readwriteeditbash 四个工具,然后让它干活。没有 Plan Mode、没有子 Agent、没有 MCP 集成、没有权限弹窗。开箱即用就是 “YOLO 模式”——它默认信任你知道自己在做什么。

Terminal window
# Pi 的全部核心工具
read # 读文件
write # 创建或覆写文件
edit # 精确文本替换
bash # 执行 Shell 命令

就这些。代码搜索、Web 访问、浏览器控制、多 Agent 编排——全进扩展层。

功能Claude CodeCursorAiderPi
内置工具数20+15+10+4
系统提示词~8K tokens~6K tokens~5K tokens~1K tokens
Plan Mode扩展实现
子 Agent扩展实现
MCP 支持扩展实现
GUITUI

“比 Claude Code 少了 80% 的功能”,这是社区流传的评价。但这不是 bug——这是 feature。

分层架构:每个层级都可以单拿出来用

Pi 是一个 monorepo,四层分明:

graph TD
    A["pi-ai<br/>LLM 抽象层"] --> B["pi-agent-core<br/>Agent 运行时"]
    B --> C["pi-coding-agent<br/>CLI Agent"]
    C --> D["pi-tui<br/>终端界面"]
    C --> E["pi-web-ui<br/>Web 界面"]
    
    F["Extensions<br/>TypeScript 模块"] -.-> C
    G["Skills<br/>Markdown 提示词"] -.-> C
    H["Packages<br/>npm/Git 分享"] -.-> C

pi-ai 是统一的 LLM 调用层,对接 Anthropic、OpenAI、Google Gemini、xAI Grok、Groq、Cerebras、OpenRouter、Ollama 等 15+ 提供商,全都走同一个 API。内置 token 计数和费用追踪。

pi-agent-core 是核心循环引擎,一个 TypeScript 文件就能看完。管理工具执行、参数校验、中断信号、事件流。

pi-coding-agent 在核心之上加了会话管理、扩展系统、斜杠命令和 CLI 界面。

关键之处:每一层都可以独立引入。OpenClaw 不是把 Pi 当子进程跑的——它直接 import AgentSession,在自己的事件循环里完全掌控 Agent 生命周期。一个聊天机器人框架能在一个终端工具之上建出 374K Stars 的产品,靠的就是这种架构。

扩展系统:你自己写一个 Agent

Pi 的扩展系统用 TypeScript 模块接入 Agent 生命周期。你可以:

  • 注册自定义工具让 LLM 调用(pi.registerTool()
  • 拦截工具调用在真正执行前(阻止 rm -rf、注入环境变量)
  • 添加 TUI 组件和快捷键
  • 打包成 npm 包分享给社区
// 一个 30 行的扩展:拦截危险命令
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
export default function (pi: ExtensionAPI) {
pi.on("tool_call", async (event, ctx) => {
if (event.toolName === "bash" &&
event.input.command?.includes("rm -rf")) {
const ok = await ctx.ui.confirm(
"危险操作!", "确认执行 rm -rf?"
);
if (!ok) return { block: true, reason: "已阻止" };
}
});
}

这彻底改变了 AI 工具的”功能获取”模式。不用等供应商加功能——写 30 行 TypeScript,/reload,功能就有了。

社区响应也很猛。pi-web-access 做网络搜索、pi-subagents 做并行 Agent、pi-chrome 做浏览器控制、pi-btw 做深度任务追踪。甚至还有人写了本中文书,叫《Pi 的设计艺术》,深入剖析整个架构决策。

OpenClaw:374K Stars 的验证

2025 年 11 月 27 日,一个叫 ClawdBot 的项目上线 GitHub。72 小时内经历了三次改名(ClawdBot → MoltBot → OpenClaw)、扛住了 Anthropic 的商标纠纷、熬过了一场与代币绑定的 1600 万美元加密骗局争议。什么都没挡住它。

到 2026 年 5 月,OpenClaw 积累了 374,743 Stars,仅用 60 天超越 React,成为 GitHub 历史上增长最快的仓库。

OpenClaw 是一个自托管、本地优先的 AI 个人助手,覆盖 WhatsApp、Telegram、Discord、Slack 等渠道。而它的底层引擎,就是 Pi 的 Agent Session API。

graph LR
    A[Pi Agent Core] --> B[OpenClaw]
    A --> C[Pi CLI]
    A --> D[VS Code 扩展]
    A --> E[oh-my-pi Rust Agent]
    style B fill:#f96,stroke:#333,stroke-width:2px

这意味着每一次 Pi Agent 循环的改进,所有下游项目立刻受益。Pi 不再只是一个工具——它在变成基础设施。

oh-my-pi:Rust 重写的硬核实验

OpenClaw 证明 Pi 架构能撑住规模,oh-my-pi 则证明这个架构的设计思路可以跨语言移植。

can1357 用 Rust 重写了核心工具链,引入 “hashline edits”——用内容哈希做锚点定位,取代了传统的大段文本复现。在 TerminalBench 上跑 16 个模型、180 个任务:

模型原始oh-my-pi
Grok Code Fast6.7%68.3%
DeepSeek V342.8%71.1%
Claude Sonnet 455.6%77.2%

Grok Code Fast 从 6.7% 跳到 68.3%,不是模型变聪明了,是 hashline edit 大幅缩减了模型的出错表面积。Raudbjorn 的 omp fork 保持了这个特性集。

为什么这很重要

Pi 的崛起不是意外,而是一次”反功能通胀”的投票。

Claude Code 需要 Anthropic 账号,Cursor 推订阅付费,Aider 依赖 Python 环境——Pi 说:带自己的 API Key 来,带自己的模型来,带自己的扩展来,或者什么都不带。它跑在 Bun 上,一个终端窗口装下,不打电话回家。

数字不撒谎:

  • pi-mono 55K StarsGitHub
  • earendil-works/pi 51K StarsGitHub
  • OpenClaw 374K StarsGitHub
  • npm 社区 22+ 扩展包
  • 统一 API 支持 15+ LLM 提供商
  • npm 包 942K 周下载量

但真正的指标不是 Star 数,而是有多少开发者从”我该用哪个 Agent”变成了”我想要我的 Agent 能做什么”。

这就是 Mario Zechner 交付的东西:不是一个工具,而是造自己的工具的许可。


参考

分享本页