前言

大家都知道小龙虾Openclaw,但pi的知名度就低很多了,它是Openclaw的核心,是一个最小化的agent项目,作者是Mario Zechner。他的履历很精彩,也是资深开源极客了。

本文是作者本人的演讲视频《I Hated Every Coding Agent, So I Built My Own — Mario Zechner (Pi)》的学习笔记。


Mario为何要写pi

像视频标题一样直接,吐槽了很多Coding Agent项目,不过演讲中,他还是叠了很多甲,反复强调这些Coding Agent项目其实很好,用的人很多,但不免会有缺点。

Claude Code

  • 越来越重。一直在加入越来越多的feature,视频中他称为spaceship,我们真的需要这么多功能吗?可能只会用到5%到10%的功能?
  • 闪屏问题Claude Code的开发人员在twitter上声称他们在做游戏引擎来解释这个问题,巧了,Mario是游戏开发大佬,Claude Code的闪屏问题并不是复杂度问题,而是他们代码确实不行。
  • 不可预测性。对Context的处理很多很复杂,而且不可观测;后续更新可能会导致已有工作流不可用。
  • 扩展性差。只有hooks,会不断的拉起进程,非常慢。我觉得,这也是他设计piextension的初衷吧,更像函数调用,且有状态。

(哈哈,这里作者还解释,Claude Code 很成功,但是只是不适合他自己,他自己老了。)

OpenCode

  • 上下文管理不够好。会调用compaction.prune去删除tool result,导致一些细节的丢失。不过我理解这本身就是Context的一种tradeoff,后面OpenCode也加了开关。
  • 开箱自带LSPLSP会一直校验文件的语法规则,在修改文件过程中,其实是没必要的,会浪费很多资源开销。
  • SessionJSON管理。这点我也很诧异,甚至不用JSONL
  • 架构漏洞。他只是提了一嘴,我没看懂。详细了解了一下,OpenCode为了做多端,所以设计了CS架构,终端只是其中一个Client,本地会启动一个HTTP Server,所有的文件,shell等操作都在这个Server中运行。这样就可能有问题了,这个Server权限巨大,暴露底层API,认证又太松,本地任何进程都可以请求。接着我又求证了下,目前在TUI中启动OpenCode没有这个漏洞了,只有用opencode serve命令才会启动服务。

pi的设计理念

他先描述了现在混乱的阶段,很多人有各种各样的尝试,各种架构都存在在排行榜上,还在探索阶段。因此他决定创造一个属于自己的,扩展性高的,最小化的Coding Agent。

架构

Agent和idea相关截图

理念

  • 极短的系统提示词。他认为LLM经过了后训练,本身就知道coding是什么了,为什么还要那么多提示词告诉如何coding。
  • YOLO by default。他认为如果需要批准,会导致人很累,不批准的话,安全性不够,其实现在并没有很好的安全性的解决方案。
  • 四个基本工具readwriteeditbash

不做什么

技术替代相关截图

  • 这里提到了tmux,前面mario也用一些篇幅提到了tmux,我也尝试用了下,用起来没那么习惯。。可能不够极客吧,不过关于子agent的编排上,其实就是用pi再调用pi就行。核心就是pi不会帮你编排,而是要你自己去编排agent。
  • 他觉得很多功能都可以本地文件实现,为何不用呢?
  • 我觉得他说的MCP功能的替代方案最有启发,如果要用MCP,那么就用CLI实现,再加上说明书,也就是skills,就完成了。

扩展性

插件热更新相关截图

  • 插件系统是最具有扩展性的,覆盖到了方方面面, 因此可定制性很高。
  • 这里的热更新,并不是改动了任何文件,自动更新,而是要使用一下/reload命令,但至少不用重启。

Context is King

怎么翻译这句话呢,agent管理中的重要任务就是Context管理,可以被查看,可以被追踪。
子agent处理流程

  • 关于树状结构,他提到了一个例子可以跟操作子agent一样,每个分支去分批读文件,然后带着总结回到根节点,这样减少上下文污染,但是细节还保留在分支中。
  • 不会像Claude Code一样给你塞很多上下文,全靠自己。

结尾

  • Mario提到现在维护很困难,尤其是因为Openclaw,很多垃圾PR涌入进来,他给自己发明了开源假期,在这个时间内的PR他是不会看的,都是自动关闭。
  • 他还提了一种防止coding agent乱提PR的办法,在仓库中加了一个白名单,如果不在这个名单中,就会自动关闭PR。人必须知道这个办法,把自己加入白名单,才行。

参考资料