<aside>

本文全程由人类书写,无任何 AI 辅助,请放心食用

</aside>

0. 愿景

大家一提到 Coding Agent 工具,大多都会立马说出主流的两大工具:大名鼎鼎的 Claude Code 和经常发重置卡的 Codex。诚然这俩是目前市面上投入巨大,适配最广的框架,但是也都有各自的不足。比如 Claude Code,先是抛弃 NPM 方式安装, 改成二进制下载,完全闭源(虽然之前泄露源码),黑历史众多:包括但不限于:监测到如果用了中转站,会给每次请求加一个随机的值,破坏缓存命中;监测时区等等,判断是不是中国用户,是的话就默认加一些「隐水印」作为监测等等,实在是破坏了大家对它的信任;至于 Codex,APP 端卡到爆炸,经常更新,vibe 出来的 APP 用起来实在费心,也有日志写入过多的 BUG,以及一个 BUG 来回修修不好的情况,CLI 端更是不太好用,工具都是自家的工具,引入其他模型,适配的总是不好,以及每次新开会话,必定刷新半天的 MCP 初始化。甚至还有 codex 为了用户体验,加快模型响应,鼓励模型在 commentary channel 总结回复,导致「降智」,也就是常说的 516 thinking tokens 事件,相当于截断了模型的思考长度,导致回复不尽人意。

当然,开源世界总是蓬勃发展的,有 OpenCode,Oh-My-Pi 等等开源的 Coding Agent 框架存在,前者是囊括了 TUI+GUI 的框架,而且还提供了廉价的开源模型Coding Plan。但是就我体验而言,有点过于臃肿了,且性能一般。至于 Oh-My-Pi,本质是基于 Pi 项目的二开。且开发质量难以恭维,有过度使用 AI 的嫌疑(叠个甲,不是抵制 AI 参与)。

这里就要说到 Pi 了,Pi 是一个及其精简的 Agent 框架,可以称之为 Agent Core。仅仅包含了最基本的四种工具,且基本适配了 OpenAI 家和 A/ 家的工具协议转化和模型 API 请求。并且 Pi 是自解释的,其源码目录中也包含了相当丰富的文档,如果想二开,配合自己的模型也是相当惬意的。于是图穷匕见:

<aside>

如果你想掌握自己的开发节奏,逐步搭积木一般地形成独属于自己的开发工具,且不必担心隐私/性能问题,并且乐意使用多种模型配合工作,不想被一种模型供应商绑定。那么基于 Pi 的二开无疑是合适的。

</aside>


1. 插件机制,Pi 的灵魂

1.1 插件的原理

前文说到,Pi 其实是一个很轻量的框架,且抽象性做的极好。这也为开源插件的蓬勃发展以及自己开发带来了极大的便利。虽然理论上,可以像 Oh-My-Pi 项目一样,直接改 Pi 的源码,但这里笔者还是不太推荐,毕竟保持 core 不动,可以持续跟上上游的更新。那么插件可以改哪些东西呢?我们这就来看看官方的 readme:

Key capabilities:

实际上,可以拓展/覆写的范围远大于此。可以覆写掉模型提供商,可以覆写掉工具的使用规范(也就是 schema)等等,只要有你觉得使用起来不爽的点,都可以和 AI 快速合作,将其改造成你想要的样子。

1.2 插件推荐

这里先推荐几个必装的,且基本不需要自己二开的插件:

<1> Codex-Conversion

如果你是 codex 的订阅用户,这个插件是必装的。包含了 codex 常用的生图接口,codex 特有的工具(如 apply_patch, stdin 等等),且可以方便地查看模型用量,使用重置卡,调用原生压缩接口等等关键特性,当然也是可以对特定模型做覆写的(厂内 API 调用也方便)

howaboua-pi-stuff/packages/pi-codex-conversion at main · IgorWarzocha/howaboua-pi-stuff

<2> Pi-Context

得益于 Pi 的独特的树状的上下文管理,给了我们 “回到未来”的机会:不同于Claude Code 逐步压缩上下文,逐步清理工具调用结果的方式,也不同于Codex 那样,全部交给一个专门压缩上下文的模型去压缩(这个接口经常报错,实在不好用)。这个插件结合了「命运石之门」中「D-Mail」的思路:从未来往过去发信。简单来说,就是在session 开头的几轮对话中,建立好 checkPoint,当用户要求或者上下文到极限时,就可以调用一次 「Hand-Off」,把关键工作/进展总结好,写成短信,塞到系统提示词里,回到上下文较短的时刻。这样模型的一部分上下文缓存还能命中,且一个 session 可以反复使用,对于我这种切换 session 的苦手来说,实乃福音,具体仓库如下: