
Pi是一个极简、可扩展的AI编码智能体框架(harness),其核心设计哲学可以用一句话概括:一个调用LLM的while循环,加上四个基础工具。与当今复杂的AI Agent平台不同,Pi选择了一条反其道而行的道路——不是增加更多功能,而是将复杂性降到最低。
开发者Armin Ronacher和Mario Zechner认为,现代顶尖大语言模型(如Claude Sonnet)已经具备足够的能力:它们擅长读取文件、编辑文件、执行命令。因此,Pi坚信: “Bash就是你所需要的一切” 。这个看似极端的理念背后,是对LLM能力的深度信任和对工具链复杂性的警惕。
让我们看看Pi的核心代码,理解什么是真正的”极简”。
Pi的核心确实如开发者所说——就是一个while循环。在 packages/agent/src/agent-loop.ts 中:
人话解释:
这个循环逻辑非常简单:
这就是全部。 没有复杂的状态机,没有工作流引擎,没有递归调用——就是一个简单的”对话-执行-反馈”循环。
在 packages/coding-agent/src/core/tools/index.ts 中,Pi定义了四个核心工具:
四个核心工具的职责:
| read | 读取文件内容 | AI需要知道代码长什么样 |
| bash | 执行shell命令 | 运行git、npm、测试、grep、find等 |
| edit | 精确修改文件(查找替换) | 修改现有代码 |
| write | 写入新文件 | 创建新文件 |
为什么不需要更多?
看 bash 工具的定义(简化版):
Bash可以调用grep、find、ls、git、npm……整个Unix工具链都是AI的延伸。Pi的哲学是:不要为每个功能写新工具,让AI用Bash调用现有工具。
可迁移经验:
Pi的”元文档”约占总提示词的25%,教AI如何扩展自己。这是通过Skill系统实现的。
在 packages/coding-agent/src/core/skills.ts 中:
人话解释:
技能系统的工作流程:
一个典型的SKILL.md:
./extract-text.js
热重载原理:
Skill就是Markdown文件。当AI读取它时,内容立即进入上下文。没有注册过程,没有重启需求——这就是”编写即用,修改即生效”。
可迁移经验:
这是Pi最独特的功能之一。在 packages/agent/src/agent.ts 中:
在 agent-loop.ts 中的实际使用:
人话解释:
想象你在和AI对话,AI正在执行一系列操作:
这就像开车时的”转向”和”下一站”的区别。
可迁移经验:
Pi明确拒绝向量数据库、记忆银行等外部记忆系统。看 compaction/compaction.ts 中的上下文管理:
人话解释:
Pi的”记忆”策略很简单:
可迁移经验:
Pi的设计告诉我们:在AI时代,减法比加法更难,但也更有价值。当其他框架在比拼功能列表长度时,Pi证明了——一个设计良好的极简系统,可以通过组合和扩展,完成复杂系统能做到的一切,同时保持清晰和可控
https://x.com/yibie/status/2019317056815190110
用心写的没人看…