核心只写2000行,却撑起23k Star——拆解Pi Agent三层架构
你可能因为三种原因点开了这篇文章想找个好用的编码 Agent、想知道 Agent 怎么做的、要做自己的 Agent。这三个问题恰好对应同一个框架的三个身份。一、三个身份一个项目先说清楚 Pi 是什么。它是Mario ZechnerlibGDX 游戏引擎作者GitHub ID: badlogic开发的开源 AI Agent 框架。MIT 协议TypeScript 写的23.7k Star官网 pi.dev。但 Pi 不是一个产品这么简单。它同时是三件事•编码 Agent CLI— 一个终端里的编程助手跟 Claude Code 同赛道•Agent 源码教材— 核心只有 5 个文件约 2000 行读它就能搞懂 Agent 怎么做•SDK 二开底座— 分层设计让你能嵌进自己的应用长出完全不同的产品这三个身份指向同一个项目本身就值得好奇。二、三层架构Pi 的核心设计决策Pi 最重要的架构决策是三层分离设计原则只有一句话分离不稳定的外部世界与稳定的核心循环。┌─────────────────────────────────┐ │ 产品层 (coding-agent) │ │ CLI · 7工具 · Extension · TUI │ ├─────────────────────────────────┤ │ Agent运行时 (agent-core) │ │ Agent Loop · Steering · 状态 │ ├─────────────────────────────────┤ │ LLM通信层 (pi-ai) │ │ 22提供商 · EventStream · 转换 │ └─────────────────────────────────┘每层只知道自己该知道的事•pi-ai只管和模型说话不知道 Agent 是什么•agent-core只管循环和状态不知道工具具体干什么•coding-agent只管编码业务不关心底层通信细节这里有两个关键边界需要记住LLM 边界统一消息进统一事件出和副作用边界模型只能提议工具调用实际执行在本地可被拦截。三、第一层 pi-aiLLM 通信的脏活3.1 为什么要单独分一层用过多家 LLM API 的人都知道这个痛苦• OpenAI 的 tool call ID 可以有 450 字符带管道符Anthropic 限制 64 字符且只允许特定字符• Anthropic 返回加密的 thinking signatureGoogle 有 thought signature格式完全不同• 每家上下文溢出的错误信息都不一样Pi 用一个统一接口抹平这些差异。核心是一个自建的EventStream。3.2 EventStream不跟风任何流框架Pi 没用 RxJS、没用 Node Stream、没用回调自建了一个极简异步可迭代流classimplementspushvoid// 生产者推事件asyncIterator// 消费者 for-await-ofresult// 等最终结果LLM 的流式响应被标准化为11 种细粒度事件text_delta、thinking_delta、toolcall_delta、done 等。最狠的是toolcall_delta——Pi 在流式传输过程中实时解析不完整的 JSON工具参数不用等传完就能读取。3.3 transformMessages最有工程价值的函数当你在不同提供商之间切换模型时对话历史需要转换。这是全项目最脏但最有价值的代码// OpenAI 的 tool call ID: 450 字符带管道符// ↓ transformMessages()// Anthropic 能接受的: 64 字符以内它还处理四件事thinking block 转换加密的只对同模型有效切换时转纯文本、孤立 tool call 修补模型发了调用没返回结果注入合成结果防报错、thought signature 过滤、错误消息清理。这正是框架的价值把脏活集中到一个地方让上层代码保持干净。3.4 ThinkingLevel 统一每家的思考实现不同Pi 用一个枚举统一ThinkingLevel→Anthropicminimal budget:1024 / medium budget:8192 / high budget:16384ThinkingLevel→OpenAIminimal effort:“minimal” / medium effort:“medium” / high effort:“high”ThinkingLevel→Googleminimal LOW / medium MEDIUM / high HIGH上层代码只需要说我要 high 级别思考不关心底层怎么映射。四、第二层 agent-coreAgent 运行时4.1 不只是一个 while 循环大多数 Agent 教程里的循环是这样的while现实中这不够用。用户在 Agent 执行过程中改主意怎么办多工具能并行要不要并行工具执行一半出错怎么恢复Pi 的解决方案是双层循环外层循环 (Follow-up) └── 内层循环 (Steering Tool Execution) ├── 调 LLM → 发射 message events ├── 执行工具 (可并行) ├── 检查 Steering → 可中断剩余工具 └── 注入新指令4.2 Steering用户随时改主意Steering转向是关键创新。工具执行过程中外部可以往队列塞消息// Agent 正在执行一系列工具...steeruser停不要部署。// → 当前工具执行完后跳过剩余工具Follow-up后续处理另一种场景——Agent 说完了但有后续消息要注入。4.3 并行工具执行Pi 默认并行执行工具但做了精心设计•Preflight 串行— 先逐个校验参数、跑钩子可阻止执行•执行并发— 通过校验的工具 Promise.all 并发•结果按原始顺序返回— 不管哪个先完成顺序和 LLM 发出的一致顺序为什么重要因为 LLM 看到的结果顺序会影响它的推理。五、第三层 coding-agent产品层5.1 七个内置工具read— 读文件支持图片自动缩放到 2000x2000bash— 执行命令超时控制、流式输出、退出码追踪edit— 精确编辑find-and-replace不是整文件覆盖write— 写文件创建或覆盖自动建父目录grep— 搜索内容尊重 .gitignore截断到 30KBfind— 搜索文件glob 模式ls— 列目录POSIX 格式5.2 Operations 接口工具与环境解耦这是 Pi 工具设计里最聪明的部分。工具不直接调fs.readFile而是通过接口interfacereadFilestringstringstatstring// 本地执行const// SSH 远程const同一个 read 工具本地跑、SSH 远程跑、容器里跑——零代码改动。5.3 Extension 系统不替你做决定Pi 明确不用 MCP用 TypeScript 原生扩展export default functionregisterTooldeployontool_callasyncregisterCommandstatssetWidgetkeyLine 1扩展有两种能力监听并介入在 Agent 运行任意节点插入逻辑和向核心注册新能力注册工具、命令、快捷键、UI。覆盖了30 生命周期事件session_start、before_agent_start、tool_call、tool_result、compact 等。这意味着子代理、计划模式、权限弹窗——全都可以通过扩展实现核心不需要改一行代码。5.4 会话管理JSONL 树形 无损压缩Pi 用 JSONL 格式存储会话采用树形结构interfacestringstring// 父节点形成树messagecompactionany关键概念leafId 决定模型看到的上下文路径。模型只看到从根到叶子节点的路径。这使得会话支持分支切换不需要复制整个历史。压缩是无损的——完整历史保留在 JSONL 文件中压缩只是创建摘要条目替代旧消息。六、TUI终端渲染的工程细节pi-tui 是独立终端 UI 框架有两个值得关注的技术点。差分渲染三种策略首次全量输出、尺寸变化清屏重绘、增量更新只重绘变化区域。所有更新用CSI 2026 同步输出协议包裹——零闪烁SSH 远程场景下减少网络传输量。IME 支持用自定义 APC 序列精确告诉终端 IME 光标位置中日韩输入法候选窗口能正确定位——大多数终端 TUI 框架不处理这个。七、Pi vs Claude Code两种哲学读完源码最明显的感受是它和 Claude Code 代表两种 Agent 构建哲学理念Pi 最小内核极致可扩展 vs Claude Code 全功能内置扩展Pi TypeScript Extension vs Claude Code Hooks (shell)MCPPi 设计上排除 vs Claude Code 原生支持权限Pi 无内置交给上层vs Claude Code 内置审批计划模式Pi 无可扩展实现vs Claude Code 内置工具后端Pi Operations可插拔 vs Claude Code 固定本地Pi 的哲学是不替你做决定。Claude Code 的哲学是开箱即用。两种都有效取决于你要平台还是要产品。八、OpenClaw架构的实战验证理解 Pi 架构价值的最佳案例是OpenClaw——一个支持 46 个消息渠道WhatsApp、Telegram、Discord 等的多渠道 AI 助手。它不是 fork Pi 然后魔改而是把 Pi 当引擎嵌入• 复用 Pi 的streamSimple()嵌入运行 Agent 循环• 复用SessionManager做会话持久化• 复用codingTools选择性引入工具• 复用 Extension 系统自建上下文修剪扩展同一套 LLM 通信层和 Agent 运行时长出了两个完全不同形态的产品。这就是分层架构的价值证明。九、写在最后Pi 给我们的启示不是怎么做 Agent而是怎么不做什么。核心 5 个文件 2000 行70 扩展示例覆盖远比核心丰富的功能场景。这种结构传递了一个明确信息框架的作者不替开发者决定 Agent 应该怎么工作。如果你要一个开箱即用的产品选 Claude Code。如果你要一个能嵌进自己流程、能改模型、能改工具、能改权限策略的底座Pi 值得一读。核心只做最必要的事。剩下的全部交给扩展。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

# 鸿蒙 HarmonyOS 应用开发实战(第25期)|骰子(Dice Roller)— Unicode 符号与动画渲染精讲

# 鸿蒙 HarmonyOS 应用开发实战(第25期)|骰子(Dice Roller)— Unicode 符号与动画渲染精讲

一、应用概述 骰子(Dice Roller) 是一款经典的休闲娱乐应用,模拟了真实掷骰子的过程。应用投掷两个骰子(六面标准骰),使用 Unicode 骰面符号直观展示每个骰子的点数,并伴有快速滚动的动画效果。…

2026/7/29 0:15:49阅读更多 →
面试官大笑:“一个任务拆给 5 个 Subagent 并行跑,不比 1 个快 5 倍?“我摇头:“快不了,还可能更慢“

面试官大笑:“一个任务拆给 5 个 Subagent 并行跑,不比 1 个快 5 倍?“我摇头:“快不了,还可能更慢“

前两个月,我在重构 AlgoMooc 网站过程中,发现一个问题:在 Claude Code 里把一个任务拆给 5 个 Subagent 并行跑,结果可能比 1 个 agent 从头干到尾还慢? 大多数人的第一反应是反过来的:活是并行干的&#…

2026/7/29 0:15:49阅读更多 →
Blender贝塞尔曲线插件:3大神奇工具彻底改变你的建模体验

Blender贝塞尔曲线插件:3大神奇工具彻底改变你的建模体验

Blender贝塞尔曲线插件:3大神奇工具彻底改变你的建模体验 【免费下载链接】blenderbezierutils Blender Add-on with Bezier Utility Ops 项目地址: https://gitcode.com/gh_mirrors/bl/blenderbezierutils 想要在Blender中轻松绘制完美的贝塞尔曲线吗&#…

2026/7/29 0:15:49阅读更多 →
Python 最易懂入门 | 从变量引用→列表拷贝→函数→判断循环,手把手实操代码

Python 最易懂入门 | 从变量引用→列表拷贝→函数→判断循环,手把手实操代码

一、前言本篇为纯上手实操向 Python 基础语法,所有代码均经过手写运行验证,新手跟着逐行执行即可掌握变量内存、列表复制、函数、条件判断、循环整套入门知识,避开 90% 新手踩坑点。二、第一阶段:变量本质 —— 变量是标签不是盒子…

2026/7/29 1:30:09阅读更多 →
SQLCipher实战指南:为SQLite数据库穿上加密盔甲

SQLCipher实战指南:为SQLite数据库穿上加密盔甲

1. 项目概述:为什么我们需要SQLCipher?在移动应用和桌面软件开发的日常工作中,数据安全是一个绕不开的话题。尤其是当你的应用需要处理用户敏感信息,比如聊天记录、个人笔记、财务数据,甚至是简单的登录凭证缓存时&…

2026/7/29 1:30:09阅读更多 →
GetQzonehistory:一键备份QQ空间说说,找回你的青春记忆!

GetQzonehistory:一键备份QQ空间说说,找回你的青春记忆!

GetQzonehistory:一键备份QQ空间说说,找回你的青春记忆! 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年你在QQ空间留下的青春足迹吗&am…

2026/7/29 1:30:09阅读更多 →
2026年PaperPass AIGC检测达标指南:PaperPass AI率超标4.8元快速达标完整处理方案

2026年PaperPass AIGC检测达标指南:PaperPass AI率超标4.8元快速达标完整处理方案

2026年PaperPass AIGC检测达标指南:PaperPass AI率超标4.8元快速达标完整处理方案 针对PaperPass AIGC检测达标专门整理了一套方案——平台有差异,策略也要对应调整。 核心工具:嘎嘎降AI(www.aigcleaner.com)&#x…

2026/7/29 1:30:09阅读更多 →
KEYSIGHT是德科技 E6640A高度集成EXM无线测试仪

KEYSIGHT是德科技 E6640A高度集成EXM无线测试仪

KEYSIGHT E6640A(原Agilent E6640A)是一款高度集成的EXM无线测试仪,专为无线设备的研发和生产制造测试而设计。它属于是德科技(Keysight)的EXM(Extended Measurement)系列,核心优势在…

2026/7/29 1:30:09阅读更多 →
驻留集过大会怎么样

驻留集过大会怎么样

驻留集大,好处只有一个(缺页少),坏处却有一堆(内存浪费、并发度低、开销大)。而且,“大”不代表“好”,一旦超过当前进程的工作集,多出来的页框全是“无效投资”&#xf…

2026/7/29 1:28:09阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“! 在构建复杂的 Agent 系统时,我们经常会遇到这样的场景:Agent 正在执行一个多步骤的任务,比如“下单购买商品”,但执行到一半时,我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…

2026/7/29 0:01:46阅读更多 →
【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →