编程 4万Star的AI Agent底层框架pi-mono:OpenClaw的发动机,用4个工具做到了极致

2026-04-27 21:05:47 +0800 CST views 12

4 万 Star 的 AI Agent 底层框架 pi-mono:OpenClaw 的发动机,用 4 个工具做到了极致

2026 年,人人都想造一个自己的 AI Agent。但从零开始踩坑、从头造轮子,代价太高了。

pi-mono 是一个 TypeScript 单仓项目,专门用来构建 AI Agent 和管理 LLM 部署。OpenClaw 的核心运行时就是基于 Pi 的 SDK 构建的。这个项目已经把 Agent 底层架构打磨得非常干净,4 万 Star 不是白来的。

如果你 2026 年想造自己的 Agent,先把 pi-mono 吃透再说。

一、项目背景:为什么值得关注

pi-mono 的作者是 Mario Zechner(网名 badlogic),libGDX 游戏框架的作者。他在 AI Engineer London 大会上的演讲标题是:

"我讨厌每一个 Coding Agent,所以我自己写了一个。"

挺霸气的。而 OpenClaw 的 README 里直接写了:特别感谢 Mario Zechner 的支持以及 pi-mono

OpenClaw 为什么选 Pi 做底层?因为 Pi 做到了一件极难的事:极致极简,却又不失强大

开源地址:github.com/badlogic/pi-mono


二、极简哲学:4 个工具撑起一切

Pi 和其他 Coding Agent 最大的区别,在于它的设计哲学。

大多数 Agent 工具恨不得把所有功能都塞进去:MCP 支持、子 Agent、Plan 模式、权限弹窗、内置 Todo。功能列表越来越长,但你用的可能不到三分之一。

Pi 反着来。

它的核心只有 四个工具readwriteeditbash。系统提示词不到 1000 个 token,是所有主流 Agent 里最短的。

它刻意没有内置这些:

功能Pi 的选择
MCP不内置,通过扩展按需添加
子 Agent不内置,保持内核纯净
权限弹窗不内置,避免打断工作流
Plan 模式不内置,用户自行配置
内置 Todo不内置,交给 Skills 处理
后台 Bash不内置,保持简单

这些功能不是做不了,而是让你通过 Extensions、Skills、Packages 按需扩展。

Pi 的理念:让工具适应你的工作流,而不是让你适应工具。

Pi 给你一个干净的内核,剩下的你自己搭。不想搭也行,装别人做好的包就行。这也是为什么 OpenClaw 选了它——底层足够干净,上面才能搭出足够复杂的东西。


三、架构拆解:七个包各司其职

pi-mono 把 Agent 开发需要的每一层都拆成了独立的 npm 包:

包名功能可独立使用
@mariozechner/pi-ai统一多提供商 LLM API,对接 20+ 提供商✅ 完全可独立
@mariozechner/pi-agent-coreAgent 运行时:工具调用循环、状态管理、上下文维护✅ 只依赖 pi-ai
@mariozechner/pi-coding-agent终端编程 Agent 主产品(pi 命令行),含会话管理、扩展系统、UI 渲染✅ 暴露 SDK
@mariozechner/pi-tui终端 UI 库,差分渲染引擎✅ 可独立
@mariozechner/pi-web-uiWeb 端 AI 对话聊天组件✅ 可独立
@mariozechner/pi-momSlack 机器人,频道消息自动委托给 Pi Agent✅ 可独立
@mariozechner/pi-pods管理 vLLM 在 GPU Pod 上的部署✅ 可独立

核心亮点:每一个包都可以独立使用。

你不需要用整个 Pi——只用 pi-ai 来统一 LLM 调用也行,只用 pi-agent-core 来搭自己的 Agent 运行时也行。这就是模块化设计的威力。

pi-ai 详解:20+ LLM 统一接入

一个 API 对接 20 多个提供商,包括 OpenAI、Anthropic、Google、Azure、Kimi、MiniMax、Hugging Face 等。

你不需要关心每个提供商的 API 差异,pi-ai 帮你抹平了。

支持两种认证方式:

  • API Key:标准方式
  • OAuth 订阅登录:直接用 Anthropic Claude Pro/Max、OpenAI ChatGPT Plus、GitHub Copilot 的订阅来跑 Pi,不用单独买 API 额度

切换模型也极方便:Ctrl+L 呼出模型选择器,Ctrl+P 在多个模型之间快速轮换。


四、核心特性

特性 1:Sessions 树状分支

Pi 的会话用 JSONL 文件存储,每个条目有 idparentId,形成树状结构。

你可以在对话中的任意历史节点分叉出去探索新方向,所有历史都保留在一个文件里。

输入 /tree 可以看到完整的对话树,支持折叠、展开、搜索、跳转。像 Git 一样管理对话历史,这个设计真的挺巧妙的。

特性 2:Extensions 扩展机制

用 TypeScript 写扩展,可以自定义:

  • 工具、命令、快捷键
  • UI 组件
  • 替换内置工具
  • 添加自定义 LLM Provider

社区里有人做了一个 Doom 扩展——在等待 Agent 回复的时候可以在终端里打 Doom,非常离谱但确实能跑。

特性 3:Skills 技能系统

遵循 Agent Skills 标准,一个 Markdown 文件就是一个技能。零代码就能扩展 Agent 的能力。

特性 4:Pi Packages 生态

把扩展、技能、提示词模板、主题打包成 npm 包,一行命令安装:

pi install npm:@foo/pi-tools
pi install git:github.com/user/repo

还有 pi.dev/packages 画廊页面展示社区包。

特性 5:四种运行模式

模式说明
交互式终端默认模式,pi 直接启动
Print/JSON 模式非交互输出,适合脚本调用
RPC 模式stdin/stdout JSON-RPC 通信,方便进程集成
SDK 模式作为库嵌入你自己的应用(OpenClaw 就是这么用的)

特性 6:上下文压缩

长会话会把上下文窗口撑爆。Pi 支持自动和手动两种压缩方式:

  • 旧消息 → 总结精简
  • 最近对话 → 保持原样
  • 完整历史 → 仍在文件里,随时通过 /tree 回溯

五、5 分钟上手

安装:

npm install -g @mariozechner/pi-coding-agent

设置 API Key:

export ANTHROPIC_API_KEY=sk-ant-...

或用订阅登录:

pi
# 输入 /login,选择提供商,浏览器完成授权

常用快捷键:

快捷键功能
Ctrl+L切换模型
Ctrl+P在多个模型间轮换
Shift+Tab切换思考等级
Escape × 2打开对话树
@模糊搜索项目文件引用
! + 命令直接跑 bash 并把结果发给 LLM

安装社区包:

pi install npm:包名

写自己的扩展:

~/.pi/agent/extensions/ 目录下创建一个 .ts 文件就行。


六、社区特色

Pi 的社区有几个挺有意思的地方:

贡献机制

新贡献者的 Issue 和 PR 默认自动关闭。维护者每天审核后重新打开有价值的。

通过 lgtmilgtm 两个等级晋升——拿到 lgtm 才能提交 PR。

唯一的规则:你必须理解你的代码。用 AI 写代码可以,但不理解就提交不行。

OSS Session 分享

Mario 鼓励用户把真实的编程会话数据发布到 Hugging Face,包含完整的工具调用、失败和修复过程。他认为这种真实数据比玩具基准测试有价值得多。

他自己已在 Hugging Face 上公开了 627 条以上的 pi-mono 工作会话:badlogicgames/pi-mono


七、pi-mono vs Claude Code

维度pi-mono (Pi)Claude Code
设计哲学极简内核 + 按需扩展功能齐全的终端 Agent
定制性极高,可替换任何组件有限,预设配置
透明度系统提示词 <1000 token,全部可见相对黑箱
多模型20+ 提供商统一接入主要依赖 Anthropic
生态npm 包 + 扩展 + Skills依赖 Anthropic 生态
集成能力4 种运行模式,可作为库嵌入主要是 CLI

和 Claude Code 比,Pi 更极简更可定制。 它是终端原生工具,不是 IDE 插件。更轻量,也更透明。

如果你是 Agent 开发者,想基于成熟的底层搭自己的产品,Pi 的 SDK 和 pi-ai 包就是为你准备的。OpenClaw 已经证明这条路走得通。

最简洁的底层,支撑起了最复杂的应用。

站在巨人的肩膀上,比从地上爬起来快多了。

复制全文 生成海报 Agent框架 开源项目 AI编程 GitHub pi-mono

推荐文章

js生成器函数
2024-11-18 15:21:08 +0800 CST
GROMACS:一个美轮美奂的C++库
2024-11-18 19:43:29 +0800 CST
如何使用go-redis库与Redis数据库
2024-11-17 04:52:02 +0800 CST
使用 Git 制作升级包
2024-11-19 02:19:48 +0800 CST
前端项目中图片的使用规范
2024-11-19 09:30:04 +0800 CST
# 解决 MySQL 经常断开重连的问题
2024-11-19 04:50:20 +0800 CST
Golang - 使用 GoFakeIt 生成 Mock 数据
2024-11-18 15:51:22 +0800 CST
开源AI反混淆JS代码:HumanifyJS
2024-11-19 02:30:40 +0800 CST
ElasticSearch简介与安装指南
2024-11-19 02:17:38 +0800 CST
Go语言中实现RSA加密与解密
2024-11-18 01:49:30 +0800 CST
Vue3中如何处理权限控制?
2024-11-18 05:36:30 +0800 CST
一些好玩且实用的开源AI工具
2024-11-19 09:31:57 +0800 CST
程序员茄子在线接单