乐于分享
好东西不私藏

OpenClaw 为什么爆火?我顺着源码找到了它的“Pi 大脑”

OpenClaw 为什么爆火?我顺着源码找到了它的“Pi 大脑”

就在昨天,OpenClaw 在 Github 上突破了250K+的Star,正式超过React的243K,成为GitHub上获星最多的软件项目。

之前一直霸榜多年的 React,也只能退居第二。而之前的第二名,Linux,现在220K,变成了第三名。

更值得关注的是,超过他们,成为 github Star数最高的项目,登顶,OpenClaw 仅仅只花了4个月时间。

AI 时代有太多让人超出想象的事情了。

这个现象级产品的热度不知道还会继续保持多少天,但是,OpenClaw 的出现让我们看到了未来智能体的一些影子,而这肯定不是结束,或许仅仅也只是刚刚开始。

如果你自己部署了这个爆火的小龙虾,亲身体验后你会发现它似乎和你之前玩过的其他 AI 工具不太一样。有些时候它表现的更像一个人,而这个人除了能陪你聊天还可以帮你实际做事情,甚至会自动进化。

OpenClaw 作为一个本地智能体设计了强大的工具体系和自动化架构,它可以根据人类的指令进行具体的操作,完成某项任务。

我个人对 OpenClaw 背后的 Agent 实现特别感兴趣,于是便通过源码研究 OpenClaw 的 Agent 实现。

通过源码可以发现 OpenClaw 并没有采用 LangGraph/AutoGen 这类常见框架,而是使用了自研的 Agent 框架,并且其核心深度集成了与 Pi 相关的技术栈。

OpenClaw 的作者 Peter Steinberger 在 README 中也特别感谢了 Mario Zechner 及其项目 pi-mono

查看 OpenClaw 的 README 文件你会发现如下一段话:

这个 Pi 是什么东西呢,为什么能成为 OpenClaw 的核心?读到这里我真的有点感兴趣了。

什么是 Pi 为什么要叫Pi ?

简单来说 Pi 是由 Mario Zechner 开发的 Agent 引擎(也是 OpenClaw 的内核)。它拒绝了当前 AI 领域“功能越全越好”的趋势,转而追求极致的简单。

在 Mario 的一篇博文中提到过,Pi 名字来源于数学常数 $\pi$。作者认为 $\pi$ 是无穷的、基础的,且这种极简主义的命名也代表了该项目的核心诉求:最小的体积,无限的潜力。

Pi 的 设计哲学

Pi 的设计哲学可以总结为一句话:“激进的极简主义,换取极致的可塑性。”

Mario 设计 Pi 的理念是将其作为开发者身体的延伸,而不是一个帮你打理一切的管家。

  • 4 工具原则:Pi 只有 read(读)、write(写)、edit(改)、bash(运行命令)。剩下的所有高级功能,都应该通过这四个基础工具“当场构建”。
  • 代码即技能:如果你需要 AI 具有“搜索网页”的功能,不应该下载插件,而是让 AI 用 Python 写一个搜索脚本,然后把这个脚本存为它的一个“Skill”。

三大技术支柱

1. Session 是一棵树 (Sessions are Trees)

这是 Pi 最具创新的地方。传统的对话是线性的,而 Pi 的会话可以分叉(Branching)

  • 你可以随时从主任务切出一个分支,让 AI 去修一个临时的 Bug 或探索一个新想法。
  • 如果分支尝试失败,你可以直接**回滚(Rewind)**到之前的节点,就像 Git 一样,不会污染主对话的上下文。

2. 协作协议:Tmux 与 TUI

Pi 放弃了独立的 UI 界面,转而深度集成 Tmux

  • AI 在一个 Pane 里跑代码,你在另一个 Pane 里观察。
  • Pi 提供了一套简单的协议,让 Agent 能在终端渲染出漂亮的进度条、表格或弹窗(TUI),这让“人机协作”非常直观。

3. 热重载与自我进化

因为 Pi 的扩展(Extensions)就是简单的 JavaScript 文件,Pi 支持热重载

  • Agent 可以一边运行,一边修改自己的扩展代码,修改完立刻生效。
  • 这意味着 Agent 可以在运行过程中“给自己做手术”,实现真正的自我进化。

Pi 的技术架构

我们可以在 github 上找到这个项目源码:

https://github.com/badlogic/pi-mono

Pi 这个项目包含了如下包,可以按需安装使用。

软件包名称 功能描述
@mariozechner/pi-ai
统一的多供应商 LLM API(支持 OpenAI, Anthropic, Google 等)
@mariozechner/pi-agent-core
具备工具调用和状态管理能力的 Agent 运行时
@mariozechner/pi-coding-agent
交互式编程代理命令行工具(CLI)
@mariozechner/pi-mom
Slack 机器人,可将消息转发给 Pi 编程代理处理
@mariozechner/pi-tui
具备增量渲染(Differential Rendering)能力的终端 UI 库
@mariozechner/pi-web-ui
用于 AI 聊天界面的 Web 组件库
@mariozechner/pi-pods
用于在 GPU 容器集群(Pods)上管理 vLLM 部署的命令行工具

下面是一个根据其源码和文档画的技术架构图,可以辅助我们理解 Pi 的整体架构。

如何在自己的程序中使用这个 Pi

如果你自己也在开发智能体,或者想构建一个可以自主进化的 AI 程序,那么最简单的办法就是直接集成 Pi 到自己的项目了。

集成 Pi 的 RPC 模式只需三步:启动、输入、监听

  1. 进程启动:在后端程序中通过子进程(Child Process)执行 pi --mode rpc。此时 Pi 作为一个“无头”服务运行,不再渲染终端界面。
  2. 指令发送(StdIn):通过标准输入向进程发送单行 JSON 指令。例如发送 {"type": "prompt", "message": "重构代码"} 来触发 Agent。
  3. 结果监听(StdOut):解析标准输出返回的 JSON 流。Pi 会源源不断吐出消息,你需要识别两种核心类型:
    • Response:指令的执行结果。
    • Event:实时的中间状态,包括 Agent 的思考过程(Thought)和流式文字(Stream)。

关键交互:若插件需要用户点击“确认”,Pi 会发送 ui_request 事件,你只需回传对应的 ui_response 即可。

核心哲学:将 Pi 视为一个黑盒“编码大脑”,你的项目只需负责提供 UI 和处理 JSON 对话。保持解耦,极简集成。

如下是一个简单 ts 伪代码示例:

import { spawn } from 'child_process';const pi = spawn('pi', ['--mode''rpc']);// 1. 处理 Pi 的输出pi.stdout.on('data'(data) => {    const lines = data.toString().split('\n');    for (const line of lines) {        if (!line) continue;        const msg = JSON.parse(line);        if (msg.type === 'response') {            console.log(`指令 ${msg.command} 的结果为:`, msg.success);        } else if (msg.type === 'message_update') {            // 这里处理流式文字,更新你的前端 UI            process.stdout.write(msg.assistantMessageEvent.delta);        } else if (msg.type === 'extension_ui_request') {            // 处理插件的弹窗请求            handleUIRequest(msg);        }    }});// 2. 向 Pi 发送指令function sendPrompt(text: string) {    const cmd = {        idDate.now().toString(),        type'prompt',        message: text,        streamingBehavior'followUp'    };    pi.stdin.write(JSON.stringify(cmd) + '\n');}

总结分析:谁适合用 Pi?

谁适合用 Pi?这个问题的答案我想引用 Mario 在那篇介绍 Pi 的文章最后的内容:

  • 如果你想要“一键生成应用”:别用 Pi,去用 Cursor 或 Lovable。
  • 如果你是硬核开发者:想要一个完全透明、可定制、能无缝嵌入你现有 CLI 工作流的 Agent,Pi 是目前唯一的选择。

关于 Pi 的作者

最后我们再来说一说 Pi 的作者 Mario,我从 Pi 的设计文档中找到了它的个人网站,里面有很多他的文章。

从他的个人网站我们可以从多方面认识他对技术和生活的态度。

Mario Zechner 的个人主页(mariozechner.at)是一个硬核技术人员的“自留地”,不仅记录了他的技术思考,也展现了他作为独立开发者和社会行动主义者的多重身份。

1. 核心技术哲学:极简主义与 Agentic Workflow

网站 2025 年的大部分文章都围绕着 AI 编程代理(Coding Agents)展开,反映了他最前沿的思考:

  • Minimal Agent (Pi):他坚信 Agent 应该只有极简的内核。通过《What I learned building an opinionated and minimal coding agent》等文章,他阐述了为什么复杂的框架(如重型 MCP)反而会干扰 AI 的推理。
  • 反 MCP 倾向:在《What if you don’t need MCP at all?》中,他挑战了行业对 MCP 协议的盲目追求,主张回归 Bash 和代码这种最自然的交互方式。
  • Context 治理:通过与 Armin Ronacher 的辩论(《Armin is wrong》),他明确了“按需获取上下文”优于“全量注入”的工程观。

2. 社会行动主义 (Hacktivism) 与媒体关注

Mario 利用技术手段介入社会议题,这让他在媒体中频频露面:

  • 物价监控:他开发了对比食品价格的门户网站,揭露通胀真相,被《Wired》和《Der Standard》报道。
  • 批判性技术拆解:他曾公开拆解并批评奥地利就业服务机构(AMS)发布的劣质或带有偏见的 AI 聊天机器人。
  • 社会公益:网站提到了他为难民提供代金券的自动化系统(BMFG 项目),体现了技术向善。

3. 硬核工程实践

除了 AI,他的博客还涵盖了极具深度的底层技术:

  • 编译器与解释器:例如《Infinite Footguns: Writing a JavaScript Interpreter in JavaScript》,展示了他在编译器工程方面的造诣。
  • 硬件与嵌入式:有一系列关于《Electronic Nights》的文章,记录了他从零开始学习电路、LED 动画和电子元器件的过程。
  • 逆向与注入:比如研究 macOS 的代码注入技术,单纯为了技术乐趣。

4. 个人履历与价值观

  • 身份多样:拥有 15 年以上经验的独立开发者、教练、演说家和天使投资人。
  • 专业背景:擅长机器学习、数据科学、编译器工程和计算机图形学。
  • 转折点:儿子的出生是他人生和技术导向的重要转折点,促使他开始关注数据隐私、社会公正,并开发了如“Boxie”(离线音频播放器)这类温情的个人项目。

Mario Zechner 的网站展现了一个 “极简主义黑客” 的典型形象。他不随大流,对热门技术趋势(如 MCP、重型 Agent 框架)保持高度警惕,提倡代码的可塑性和透明度。他的项目往往起源于真实的社会问题或个人生活需求,而非纯粹的商业驱动。

如果对 Mario 感兴趣的也可以去看下他的个人主页:https://mariozechner.at/

总结:软件开发的未来形态

最近我经常想未来软件的形态,通过研究 OpenClaw 和 Pi,我感觉这种 “可塑性软件” 可能就是未来一种主流或唯一的形式:

  1. 去中心化:不再依赖通用的插件市场,而是每个人拥有根据自己习惯量身定制的“手工活”。
  2. 自我维护:Agent 负责维护自己的功能集(Skills),不用的功能随时丢弃。
  3. 连接一切:当这种极简、高效的编程代理连接到通讯渠道(如 Telegram),就演变成了 OpenClaw 这种能够通过指令完成复杂任务的自动化系统。

如果你也想开发智能体应用,那么这个 Pi 将是一个非常值得关注和尝试使用的AI 基座项目。

关于我

大家好,我是希扬

一个有十余年工作经验的老程序员。 喜欢编程,热爱生活,仍然对各种新鲜事物保持好奇心。

我会在这里持续分享技术心得、生活感悟和好用的工具推荐。

关注我,在这个变化的时代,我们一起通过“创造”来对抗焦虑。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » OpenClaw 为什么爆火?我顺着源码找到了它的“Pi 大脑”

评论 抢沙发

1 + 5 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮