最近发现一个很有意思的项目,叫 PI。
作者是 Mario Zechner,如果你做游戏开发应该知道这个名字——他是 libgdx 的作者,一个 Java 游戏开发框架,在移动游戏时代很火。
PI 不是什么大厂出品,也没有铺天盖地的营销。但它的设计理念把我震住了——在这个所有 AI 编程工具都在拼命堆功能的时代,有人硬生生踩了一脚刹车,说:
"老子只做最少的事,多的不要。"
我仔细研究了两天,越看越觉得这可能是目前最被低估的编程 Agent 之一。
极简到什么程度?
先看一组数字。
Claude Code 的 system prompt 大概 10000+ tokens。而 PI 的 system prompt 只有 1000 tokens 左右。
足足差了一个数量级。
Mario 的原话是:"我实在看不出有什么必要塞 10000 tokens 的 system prompt。"
工具的个数更是夸张。Claude Code 有十几个工具,各种复杂的定义。PI 只有 4 个工具:
• read —— 读文件(文本和图片都支持) • write —— 创建或覆盖文件 • edit —— 精确文本替换(旧文本必须完全匹配) • bash —— 跑命令
就这。四个工具,一个不多。
有人可能会说,这也太少了,能干啥?
但仔细想想,AI 编程代理的核心能力是什么?不就是读代码、写代码、改代码、跑命令吗?这四个工具覆盖了全部。
没有花里胡哨的东西,每个工具做好一件事。
它砍掉了什么,以及为什么
PI 让我觉得最有意思的,不是它提供了什么,而是它刻意不提供什么。
我列一下它砍掉的功能,以及砍掉的理由,你会发现一个非常一致的哲学。
没有权限弹窗。
你用 Claude Code 的时候,每次执行命令都要点确认,对吧?PI 默认完全信任你——没有确认对话框,没有权限审批。Mario 的原话是:"这些安全措施本质上是个心理安慰,当你的代理能写代码能跑代码的时候,game already over 了。"
想想确实有道理。你都在让 AI 写代码执行命令了,几个弹窗能拦住什么?真正有风险的场景,你应该在容器里跑,而不是靠弹窗。
没有子代理。
Claude Code 经常会 spawn 出子代理去做事,这个过程对于用户来说就是个黑箱。Mario 说得很直接:"子代理就是黑箱里套黑箱。"
他如果需要多代理协作,会直接在 bash 里再起一个 PI 实例,比如让它做代码 review。整个过程你可以看到、可以控制。
他还特别强调:"同时 spawn 多个子代理去并行实现不同功能,这本质上是个反模式。"
没有 MCP 支持。
这个争议最大。现在 MCP(Model Context Protocol)这么火,PI 居然不支持?
Mario 专门写过一篇文章讲为什么。他的核心观点是:MCP server 往上下文里塞了太多 tokens。
他实测过——Playwright MCP 有 21 个工具,占了 13700 tokens;Chrome DevTools MCP 有 26 个工具,占了 18000 tokens。
这么多工具一口气塞进上下文,模型根本处理不过来。他的方案更轻量:在 README 里写清楚怎么用,让代理需要的时候再去读。 他管这叫"渐进式信息披露"——需要了再看,而不是一股脑全塞进去。
如果你真的需要 MCP?造个扩展就是了。PI 有扩展机制。
没有 Plan Mode。
现在几乎所有编程 Agent 都有 Plan Mode。Claude Code 有,Codex 有。PI 不要。
Mario 更喜欢的方式是:写一个 PLAN.md 文件,让代理边读边执行。这个文件可以跨 session 共享,可以进版本控制,你自己也能看得清清楚楚。
他吐槽 Claude Code 的 Plan Mode 会 spawn 子代理去做规划,整个过程"你啥都看不到"。
没有内置 TODO。
现在很多 AI 工具内置了 Todo List 来管理多步骤任务。Mario 觉得TODO 列表多数时候给模型带来的不是帮助,而是困惑。
他的方案更简单:写 TODO.md,让代理读这个文件、更新这个文件。你需要什么任务管理都写在 markdown 里,自己可控。
没有后台 bash。
Claude Code 支持后台运行命令——提交之后你可以继续干别的。PI 所有命令都是同步执行的。
那你想要跑个耗时很长的命令怎么办?Mario 推荐用 tmux。他还演示了怎么在 tmux 里用 LLDB 调试一个 C 程序的崩溃——整个过程完全可见,你可以随时 attach 上去看状态。
说到底,这些都是 tmux 本来就有的能力,何必再封装一层?
用 Extension 给你自由
看到这里你可能觉得——这工具啥也没有,我用它干嘛?
别急。PI 有一个核心设计思路和上面所有"砍掉"的操作是配套的:核心只做最基础的事,扩展用 Extension 机制来实现。
你想加什么功能?写个 TypeScript 模块就行了。
• 想要 MCP?写个 extension • 想要子代理?写个 extension • 想要权限控制?写个 extension • 想要 Plan Mode?写个 extension • 想要远程 SSH 执行?写个 extension • 想要沙箱?写个 extension
PI 的 Extension 有完整的 API 支持:可以注册工具、命令、快捷键、事件、自定义 UI。甚至可以打包成 Pi Package,通过 npm 或者 git 分享。安装就是一句:
pi install npm:@foo/pi-tools这套设计让我想到什么?Vim。Vim 核心很小,但通过插件系统可以变成任何你想要的东西。
对比之下,Claude Code 和 Codex 都是「大而全」路线——我替你想好了你需要什么,全给你塞进去。而 PI 是「小而核」路线——我给你基础能力,你自己搭积木。
两种哲学说不上谁对谁错,但 PI 的方式对高级用户来说太友好了。
而且有一个很酷的效果:代理可以自我修改。 你让它帮你写个 extension,它写完 reload 一下就能用。等于说你在用 PI 的过程中,可以不断给它加功能。
一点感想
PI 最打动我的不是技术,而是态度。
Mario 在自己的博客里说过一句话,让我印象很深:"如果 PI 不适合你的需求,我恳请你 fork 它。"
他还说:"PI 这个名字是完全搜不到的,所以永远不会有什么用户。"——一句玩笑话,但也很真实地表明:这首先是他自己用的工具,不是为了做成平台、做成生态、做成商业产品。
在这个 AI 编程工具已经卷到天际的时代,所有产品都在比谁功能多、谁能力强。突然冒出一个项目说"我觉得你们搞的这些东西大部分都没用",然后真的砍掉,再给出一个更干净、更可控的替代方案。
这种"少即是多"的逆行者气质,值得关注。
当然,PI 不适合所有人。如果你是小白用户,希望开箱即用、什么都有,Claude Code,Codex 更适合你。但如果你希望理解每一个 token 的作用、希望 100% 控制自己的上下文、喜欢自己搭积木而不是用成品——PI 值得你试试。
项目地址:https://github.com/earendil-works/pi官网:https://pi.dev/作者博客:https://mariozechner.at/posts/2025-11-30-pi-coding-agent/
END
如果您觉得本文对您有帮助,欢迎关注、点赞、转发、推荐
夜雨聆风