
Hello,大家好。这里是「周记周享」。
说实话,我以前挺看不上那种「什么都不内置」的工具的。功能少不就是没做完吗?直到我顺着 OpenClaw 的代码,摸到了它下面那个叫 Pi 的项目——它默认只给模型四个工具。
一、38 万 Star,长在四个工具上面
先把事情说清楚。
OpenClaw 现在 38.4 万 Star,是今年最出圈的开源 AI 项目之一。很多人研究它的架构,翻着翻着会翻到另一个名字:Pi。
OpenClaw 的官方 README 里有一句致谢,原文是:
"Special thanks to Mario Zechner for his support and for pi."
Mario Zechner 就是 Pi 的作者,也是当年游戏开发框架 libGDX 的创建者。OpenClaw 早期把 Pi 的 SDK 深度嵌进了自己的 Agent Runtime,后来虽然把 Runtime 收回了自己代码库,但部分实现是从 Pi 演化来的,终端界面到现在还依赖 Pi 的 TUI 组件。
Pi 自己也不小。转述这件事的那篇中文文章写的是 7.7 万 Star,我写这篇的时候去数了一下,已经 8 万了。它还被 Fork 出一个 oh-my-pi,两万 Star 起步。
然后我打开 Pi 的官方文档,第一句话就把我看愣了:
"pi gives the model four tools:
read,write,edit, andbash"
读、写、改、跑命令。就这四个。
没有 MCP,没有子 Agent,没有计划模式,连待办列表都没有。
二、我原来也是「装得越满越安心」那一派
我得先坦白我的立场。
过去大半年,我给自己的 AI 工作台干的事,跟 Pi 的方向正好相反:做加法。
看到有人分享一个好用的 MCP,接上。看到一个新的 skill,装上。看到别人的规则文件写得漂亮,抄一段。我心里的逻辑很朴素——我是一个人干活,工具多一样,就等于多一个帮手,装着总没坏处吧。
那阵子我打开自己的配置,是有点小得意的。看着挺全的。
三、我真干过的事:装的时候爽,砍的时候更爽
3.1 装到后来,不对劲了
不对劲是慢慢察觉的,不是某一天突然崩了。
大概是这么个感觉:我开一个新会话,问一个特别简单的问题,它得先在一堆规则和工具说明里绕一圈,才回到我的问题上。有时候我明明只是想让它改一行配置,它先给我列了个计划。
我后来意识到问题出在哪:每开一个会话,还没轮到我的项目,上下文就已经被"我是谁、我有哪些工具、我该怎么干活"吃掉一块了。
我不是心疼那点 Token。我心疼的是,那块空间本来该装我的代码、我的稿子、我这篇文章的上下文。
3.2 我一条条砍回去
于是我开始砍。
没装过就不知道该砍哪个,所以那些也不算白装。我的标准就一条:最近一周,我真用到它了吗? 用不到的,先关掉,看会不会想它。结果是——大部分都没想起来。
砍完之后最直接的变化不是变快了,是它不再自作主张。我说改一行,它就改一行。
我在自己这个内容项目里也做了同样的事:写了一份 AGENTS.md,把七步流程钉死。里面最有用的一条不是「要做什么」,而是**「日更不写 plans、不写 specs,只有大选题才动重型流程」**——一条「不做什么」。
当时我没觉得这是什么了不起的方法论,就是被逼的。一个人干活,多一道流程就多一道自己给自己设的关卡。
四、我当时为什么看不上「极简」
所以你看,我其实已经在做减法了,但我依然看不上「极简工具」。两个具体理由:
第一,我觉得「极简」是没做完的托辞。
功能少你就说自己极简,那我这个 demo 也可以叫极简。我信奉的是先把东西做出来,再谈取舍——「先做出来,再说。」一个连子 Agent、连计划模式都没有的 Coding Agent,凭什么?
第二,我是一个人,我需要工具替我多干,不是让我自己写扩展。
Pi 说「要 MCP?你写个扩展加上」「要子 Agent?你用 tmux 开几个 Pi 实例」。我第一反应是:兄弟,我要是有空写扩展,我还用你干嘛?开源项目最爱说「这个交给社区」,翻译过来经常就是「这个我们没做」。
五、但是——我要说但是了
让我改主意的,是 Pi 官方文档里的「不做什么」清单。
我原以为会看到一句轻飘飘的「保持简单」。结果它是这样写的——每一条「不做」后面,都跟着一条替代路径:
• 不内置 MCP:你可以把工具做成带 README 的 CLI,或者写个扩展加 MCP 支持。 • 不内置子 Agent:用 tmux 开几个 Pi 实例,或者用扩展自己搭。 • 不内置权限弹窗:跑在容器里,或者用扩展写你自己的确认流程。 • 不内置计划模式:把计划写进文件,或者用扩展做一个。
最戳我的是待办列表那条。它不做的理由只有三个词:
"They confuse models."(它们会让模型犯迷糊。)
我当场就笑了。因为这不就是我砍掉那堆东西的原因吗?我砍的时候只当是自己配置没搞明白,人家把它写成了产品哲学。
再往下看,我发现「小」不是省事,是拆得清楚。Pi 拆成几个包,各管一段:pi-ai 统一各家模型的接口,pi-agent-core 只管那个「模型调工具→执行→结果回传→下一轮」的循环,pi-tui 只管终端界面的差分渲染,pi-coding-agent 才是把前三个组装起来、你能直接用的那个。
这就是为什么 OpenClaw 能长在它上面。 它不是给你一个成品让你凑合用,它是把每一层都留出了接口。
还有一个细节我很服:Pi 的会话历史是树状的。走错方向了,可以回到之前任意一个节点重开一条分支,原来那条尝试还留在同一个会话文件里,没删。
我自己写稿改到第三版发现第一版更好、又找不回来的次数,不想说了。
至于作者为什么要做这个东西——他自己说得很直白:他长期用 Claude Code,觉得功能越加越多,系统提示词和默认行为老在变,干脆自己写一个更小、更可控的。
都是被逼的。
六、核心洞察:不是功能越全越强,是内核越小越能长
那句话在我脑子里是这么成型的:
一个 Agent 能长多大,不取决于它内置了多少功能,而取决于它把多少决定权留给了你。
不是功能越全的 Agent 越强,是内核越小的 Agent 越能长。
38 万 Star 的 OpenClaw 长在 8 万 Star 的 Pi 上面,这句话就是它的注脚。
我想到健身房里那两样东西。
一边是综合训练器,坐上去,轨道帮你固定好,配重片插销一插就能练,看起来功能特别全——胸推、下拉、蹬腿,一台顶好几台。另一边就是一根杠铃,光秃秃的,什么都没有。
但你要真练下去就知道:综合训练器能练的动作,是它设计的时候就定死的那几个;一根杠铃能练的动作,是你自己能想出来多少个。深蹲、硬拉、卧推、推举、划船……杠铃什么都不「内置」,所以什么都能长在它上面。
Pi 就是那根杠铃。它把动作轨迹的决定权还给了你。
代价当然也一样——杠铃会砸到人。这个我们下面说。
七、我抄走的四条原则
7.1 加功能没用,先定「不做什么」
Pi 最狠的不是那四个工具,是它敢把「不做什么」写成一份公开清单,还给每条配替代方案。
我们做产品的通常反过来:功能列表写满满一页,「暂不支持」藏在 FAQ 最底下。但用户其实很需要知道你的边界在哪——说清楚不做什么,比多做两个功能更让人敢用你。
7.2 塞规则没用,先腾上下文
上下文是有限的,这句话谁都懂,但落到行为上就是:你在开场塞进去的每一条规矩,都是从「这次到底要干的活」里抠出来的。
我现在的判断标准变成了:这条规则,是不是每次都需要?不是每次都需要的,就别放在全局。
7.3 做完整没用,先做可被改造
想让别人在你上面搭东西,得先把手伸出去的地方留出来。
Pi 的扩展就是一个 TypeScript 模块,能注册工具、命令、快捷键、事件处理器和 UI 组件,甚至能接管 Bash 执行、替换上下文压缩策略;改完 /reload,当前会话接着用。模型也是开放的——同一段会话里从 Claude 切到 GPT 再切 Gemini,或者挂个本地模型,都行。
对我这种一个人做产品的,这条翻译过来是:别急着做一个「完整的产品」,先做一个「别人能改的东西」。完整是你一个人的上限,可改造是所有人的上限。
7.4 省事没用,先留退路
树状会话这个设计,本质是承认「你会走错」。
我现在写稿也这么干了:一个思路写崩了,不是原地改,是留着,另开一份。找回一版旧稿的成本,远低于重新想一遍。
7.5 补一条:极简不等于安全
这条是给我自己泼冷水的,不能不说。
Pi 官方文档写得很清楚:
"Pi does not include a built-in permission system for restricting filesystem, process, network, or credential access. By default, it runs with the permissions of the user and process that launched it."
翻译过来:它没有内置权限系统,默认就以启动它的那个用户的权限在跑。 扩展代码也一样。项目信任机制能拦住陌生仓库偷偷加载本地扩展,但拦不住模型后面要执行的命令。
官方自己的建议是:碰陌生代码、跑无人值守任务、或者机器上有重要凭证的时候,把它放进容器或虚拟机,只挂载这次任务需要的目录。
所以「极简」不是免费的。它把复杂度从工具挪到了你身上——它信任你,你就得配得上这份信任。
八、说回我自己
这几条为什么戳我?
因为我一直在犯一个更隐蔽的错:我把「我一个人」当成了「所以我需要更多外挂」的理由。
真相可能反过来。正因为我一个人,我更输不起注意力。每多一个自作主张的默认行为,我就要多花一次判断力去纠正它。工具替我干的活越多,我要盯的地方也越多——这笔账,我以前只算了前半截。
我给这个内容项目写七步流程的时候,其实已经摸到答案了:我最该做的不是给自己配更强的工具,是把「不做什么」定下来。 只是当时没意识到这是一条能往外说的原则。
九、我准备怎么做
三件事,都不大:
1. 这周把我配置里那些「装着以防万一」的东西,再过一遍。标准还是那条——最近一周真用到了吗? 2. 把我那份 AGENTS.md里的「不做什么」单独拎出来,写成明确的一节,而不是散在各处。3. 找个下午,装一次 Pi。不是要换掉手上的工具,是想亲手体验一下「只有四个工具」到底是什么手感——不用一遍,我说什么都是隔着屏幕在评价别人。先做出来,再说。
给工具做加法,是在补自己的不安;给工具做减法,才是真知道自己要干什么。
最后想问一句:你的 AI 工具里,有没有那种「装上之后其实一次没用过」的东西?我打算这周清一轮,评论区交换一下清单,看看是不是大家装的都差不多。
夜雨聆风