OpenClaw 背后核心框架Pi:好的Coding Agent 应该让用户来决定需要什么

日期:2026-03-18 22:44:25 / 人气:7



在当下AI技术飞速发展的时代,开源个人AI助手OpenClaw备受关注,而其背后核心的极简框架Pi - coding - agent更是有着独特的魅力和设计理念。这一框架由有着二十多年开源经验的奥地利开发者Mario Zechner打造,他在开发过程中有着诸多思考和见解,与多位深度用户交流中展现出Pi在Coding Agent领域的创新之处。

一、极简设计的诞生:对现有产品的反思

1. 对传统Coding产品的失望

Mario对Claude Code这类成熟产品感到失望。尽管Claude Code定义了Coding产品,团队也很出色,但它存在输出不稳定、工作流被破坏的问题。模型行为随harness的变化而改变,系统提示词和工具定义在每次发布时都会变动,这让工程师的工作流无法保持确定性,甚至出现闪屏等问题,影响正常工作。

2. 受Terminal Bench排行榜启发

Mario观察到Terminal Bench排行榜上名为Terminus的harness,它只给LLM一个与tmux session交互的工具,几乎永远排在前三。这让他意识到,经过大量强化学习训练的模型天然就知道coding harness是什么,不需要在上面堆加太多东西。Pi就是基于这个理念实现的极简但可扩展的harness。

二、Pi的极简特性:聚焦核心功能

1. 极简的系统提示词和工具定义

Pi最大的特点是其极简性,整套系统提示词加工具定义加起来不到1000 tokens,与Claude Code(超过10000 tokens)和OpenCode(类似量级)形成鲜明对比。Pi核心只有read、write、edit、bash四个工具,没有内置plan mode、to - do系统、MCP支持、权限弹窗,甚至没有绑定任何特定模型。

2. 主动选择“不做”的功能

 • 不支持MCP:主流MCP server会把大量工具定义一次性灌入上下文,消耗大量tokens,还未开始干活就占用大量上下文窗口。Pi的替代方案是写CLI工具配README文件,agent需要某个工具时才读对应的README,按需付出token成本,然后用bash调用,搭建的浏览器自动化工具集只消耗225 tokens,是Playwright MCP的1/60。

 • 不内置plan mode:直接告诉agent先一起想清楚问题,不要改文件也不要执行命令,若需要跨session的规划,写到PLAN.md里,该文件可随代码一起版本化,且所有探索过程都可见,避免了Claude Code plan mode中子agent操作的不可见性。

 • 不内置to - do系统:to - do列表通常让模型更困惑,增加需要追踪和更新的状态,引入更多出错机会。

 • 不做后台bash:后台进程管理会引入大量复杂性,如进程追踪、输出缓冲、退出清理、向运行中的进程发送输入,且Claude Code的后台bash功能可观测性差,上下文压缩后agent会忘掉所有后台进程并且没有工具去查询它们。

 • 不内置SubAgent:Claude Code执行复杂任务时经常在背后生成SubAgent,完全看不到子agent的对话过程,属于“黑箱里的黑箱”。如果需要收集上下文,应在独立的session里先做完,产出一个artifact,然后在新session里用这个artifact给agent提供干净的上下文。

三、不同用户的使用工作流:个性化与极简的融合

1. Sentry工程高级总监Daniel的工作流

 • 规划阶段:用调整过的brainstorming skill做规划,让模型给出激进、务实、豪华三种方案,与模型讨论确定方案,产出markdown计划文件和一系列to - dos。

 • 实施阶段:对于已有代码库,先启动scoutSubAgent探索需要改动的文件,将结果传给worker agents,worker agents只用Sonnet 4.6,实施完成后,用Codex reviewerSubAgent做代码审查。

 • 迭代修复阶段:大功能实施完后,利用剩余的完美热上下文,直接使用应用找到问题,让agent修复,然后rewind回实施完成的节点,修下一个问题,如此循环直到打磨完成。

2. Pi核心贡献者Armen的使用方式

 • 替换内置edit tool:换成支持patch - based多文件编辑的版本,灵感来自Codex的apply patch。

 • 使用answer扩展:替代Claude Code的plan mode中自带的“提问”工具,提取模型提出的所有问题,重新渲染成UI,逐个回答后提交,完全不消耗上下文。

 • 自动截图功能:让agent在验证改动时自动截图,Pi能把截图读进LLM并且漂亮显示,即使几天后加载旧session,仍能看到agent当时截的每一张图。

3. Modem创始人Ben(Mario本人)的使用方式

Mario追求极简体验,只要极简的交互,如打个招呼、开始干活、别出错,自己构建了一个能获得完全可观测性的环境。

四、关于SubAgent的争议:并行开发的思考

1. Mario的观点

Mario认为让多个子agent并行开发不同功能是反模式,不会有好结果,除非不在乎代码库变成一堆垃圾。在session中途用子agent做上下文收集,说明没有提前规划好,应在一个独立的session里先做完,产出一个artifact,然后在新session里用这个artifact给agent提供干净的上下文,这样能获得完全的可观测性和可操控性。对于真正的功能构建,他追求做更多决策,而不是依赖多个agent并行工作。

2. Armen的观点

Armen认为必须先把串行流程跑通了,才能考虑并行化,目前还没有找到一种方法可以自动化“探索”这一步,且并行化会同时引入太多修改,导致merge conflicts。

3. 特殊情况的讨论

Shopify的Tobi做的Pi扩展,对于“把东西往墙上扔、看哪个粘住了”的探索型任务,SubAgent确实很强大,但对于真正的功能构建,还是需要在loop里做最后拍板。

五、安全与权限系统:直面挑战

1. Pi的无权限系统设计

Pi完全没有权限系统,因为给agent执行命令、读取网络内容、读取本地文件的能力,同时又设置权限弹窗等问题很多。权限弹窗导致permission fatigue,用户最终会一路同意,而大部分权限系统形同虚设,agent可能会通过一个脚本做各种改动。Mario的做法是在宿主机上有需要保护的东西,就把Pi放进Docker容器,只挂载它需要的数据,其他时候就全开。

2. 权限系统的“安全剧场”本质

大部分编程agent的安全措施被认为是“安全剧场”,只要agent能写代码和执行代码,数据泄露风险就很大,唯一能防止数据泄露的方法是切断执行环境的所有网络连接,但这会让agent基本没法用。Pi选择直接面对,将无权限系统作为默认选项。

六、Coding Agent的长期记忆:代码库即真相

1. Mario的观点

Mario认为目前Coding Agent不需要额外维护一套记忆系统,至少对编程任务来说不需要,代码库就是source of truth。Claude Code让agent每次从零开始探索代码库的当前状态,然后在动手,这在收集上下文方面做得很好,传统的写文档方式容易过时且没人读。

2. 其他用户的尝试

Daniel试过在session快超出上下文窗口时做摘要,在新session里从摘要继续,但发现没什么用,最后用本地的agents.md记录想让agent记住的内容。Armen做实验把最近的Git变更推进上下文,帮agent从上次断点继续,结果好坏参半。

七、AI工具的稳定性与开源社区维护:新的挑战

1. AI工具的“变笨”现象

很多人觉得AI工具“变笨了”,这并非错觉。以Claude Code为例,其系统提示词和工具定义有很多“静默调整”,这些变更会影响模型在session中的行为,但用户完全不知情。

2. 开源社区维护的挑战

大量由AI生成、没有人工监督的issue和PR涌入Mario的仓库。对于PR,Mario搭了一套系统,要求先用人类的声音开一个issue,账号名被写进白名单后才能提PR,一定程度上解决了PR的问题,但issue提交门槛更低,没法要求每个人都先经过手动审批,仍然是个难题。

Pi框架以其极简设计、独特的使用工作流、对SubAgent的思考、安全与权限系统的处理以及对长期记忆的看法,为Coding Agent领域带来了新的思路和启示。在AI技术不断发展的今天,如何在保证功能的同时,实现简洁、稳定、安全且符合用户需求的开发工具,是开发者们需要不断探索的问题。

作者:杏彩娱乐




现在致电 xylmwohu OR 查看更多联系方式 →

COPYRIGHT © 杏彩娱乐 版权所有