说实话,现在的 AI 编程工具越来越像“瑞士军刀”了,恨不得把能想到的功能都塞进去。
但有人偏偏不信邪。
Mario Zechner,一个资深的开发者,受够了那些功能臃肿、闪烁不停、还喜欢在背后偷偷改你上下文的“宇宙飞船”级工具。他一气之下,自己动手写了一个极简到极致的 AI 编程 Agent——pi。
没有花哨的 Plan Mode,没有烦人的权限弹窗,甚至没有所谓的“安全围栏”。
结果呢?这个只有四个核心工具的“极简主义”作品,在权威基准测试 Terminal-Bench 2.0 里,硬是把 Cursor、Windsurf 这些行业主流工具踩在脚下,甚至在某些榜单上杀进了前三。
这事儿有点意思。
这不是代码,这是“失控的宇宙飞船”
过去三年,Mario 跟大多数人一样,经历了从“复制粘贴到 ChatGPT”到“用 Copilot 自动补全”,再到“投奔 Cursor”的进化论。
但今年,他成了 Claude Code 的铁粉——起初是。
那时候的 Claude Code 还很简单,很纯粹。但几个月过去,Mario 发现这工具变味了。它变得越来越像一艘功能过剩的宇宙飞船,80% 的功能他根本用不上。
更让他抓狂的是,每次更新,系统提示词和工具定义就变一次,直接把他的工作流搞崩。界面闪烁,像个接触不良的老电视。
最致命的是,这些主流 Harness 都有一个通病:喜欢在背后搞小动作。
它们会在你不知情的情况下,往上下文里塞一堆你看不到的垃圾信息。对于 Mario 这种“上下文工程控”来说,这简直是不可接受的。他想要的是完全的掌控权,每一个字节喂给模型的内容,都必须经过他的眼睛。
既然没人愿意给他做一个“听话”的工具,那他就自己造一个。
甚至为了防止被搜到,他给这个项目起了一个根本搜不到的名字——pi。
API 世界的“巴别塔”困境
造个轮子容易,但要兼容全世界所有的 LLM,那就是另一回事了。
Mario 想要一个统一的 API,能同时搞定 OpenAI、Anthropic、Google、xAI 等等十几家提供商。听起来很美,做起来全是坑。
这帮厂商的 API 接口,表面看着差不多,私底下全是“方言”。
比如 OpenAI 的 Completions API,大家都兼容,但每个人对“推理过程”的理解都不一样。有的支持 reasoning_content,有的只认 reasoning,有的干脆不支持。甚至连参数名都不一样,Mistral 非要用 max_tokens 而不是 max_completion_tokens。
特别点名表扬一下 Google,到现在居然还不支持工具调用流式传输,这真的很“Google”。
这让我想起前段时间 MiniMax 团队的操作。他们在发布 M2 模型后,为了解决用户无意中丢弃模型思考过程导致的性能血崩问题,疯狂向 Cline、Kilo Code、OpenRouter 这些平台发起 PR 攻势,硬生生把 reasoning_details 字段从一个“私有协议”推成了事实标准。
你看,连大厂都在为了上下文的标准化打架,个人开发者想要统一这些 API,难度可想而知。
但 Mario 还是干了。他写了一套 pi-ai,把这些乱七八糟的接口全部抹平,甚至支持在不同模型之间无缝切换上下文。
比如你可以先让 Claude 思考,然后无缝切换给 GPT-5.1 继续干活,GPT 甚至能直接看到 Claude 的 <thinking> 标签。这种跨提供商的“上下文接力”,在目前的工具里绝对是独一份的。
既然防不住,不如彻底“YOLO”
现在的 AI 编程工具,最强调的是什么?安全。
运行个命令要弹窗确认,写个文件要你授权,生怕 AI 把你的硬盘格式化了。
Mario 直接把这些东西全砍了。
pi 的默认模式是 YOLO(You Only Live Once)。它拥有你文件系统的完全访问权,可以执行任何命令,没有任何安全沙箱,没有任何权限检查。
这听起来很疯狂?Mario 的观点更犀利:
“如果你看一眼其他编程代理的安全措施,就会发现那大多是‘安全剧场’。”
只要 Agent 能写代码并运行代码,理论上它就已经能绕过你的一切防御了。与其搞那些自欺欺人的弹窗,不如直接承认现实:要么给断网,要么给全权。
Simon Willison 这种大牛都试过用“双 LLM 模式”来防止数据泄露,最后自己也承认这方案“挺烂的”,还增加了巨大的复杂度。
所以 Mario 的选择是:不装了,我摊牌了。
如果你怕出事,那就把 pi 扔进 Docker 容器里跑。否则,就别搞那些虚头巴脑的确认框,直接干活。
拒绝 MCP,拒绝子 Agent
除了安全,pi 还有很多“反骨”的设计。
比如 MCP(Model Context Protocol)。这可是现在 AI 界的热门标准,很多工具都抢着支持。
Mario 直接说:不支持,也不打算支持。
为什么?因为太重了。
一个 Playwright MCP 服务器,上来就往你的上下文里塞 21 个工具定义,占了 1.3 万个 token。这还没开始干活呢,近 10% 的上下文窗口就没了。
他的解决方案简单粗暴:写 CLI 工具,配个 README 文件。
Agent 需要用的时候,自己读 README,自己调用 bash 命令。既省钱,又灵活,还能像管道一样组合使用。这叫“渐进式披露”,用不到的功能别占我的内存。
还有 子 Agent。Claude Code 喜欢在处理复杂任务时偷偷开个黑盒进程,你完全看不到里面在干什么。
Mario 觉得这简直是反人类设计。你需要看它怎么思考,怎么失败,怎么修正。
如果真的需要子 Agent?那就让 pi 通过 bash 命令再启动一个 pi 实例。所有的过程都在你的终端里,一目了然。甚至你可以用 tmux 直接跳进子 Agent 的会话里,跟它面对面 Debug。
这种**“可见性”**,才是极简主义的精髓。
极简的胜利
最后,我们回到开头的那张排行榜。
pi 作为一个个人项目,靠着不到 1000 token 的系统提示词和只有四个工具(read, write, edit, bash)的极简配置,在 Terminal-Bench 2.0 上跟那些商业巨头的原生工具打得有来有回。
更有意思的是,排行榜上的 Terminus 2——另一个极简 Agent,只给模型一个 tmux 会话,让它自己发命令、自己解析终端输出——也表现惊人。
这说明了什么?
也许我们被那些花里胡哨的功能骗了。模型本身已经足够聪明,它不需要你塞给它 1 万 token 的系统提示词,也不需要几十个复杂的工具。
它需要的,仅仅是一个干净、透明、可控的环境。
Mario 说,他造 pi 只是为了让自己用得爽。如果这也能启发到别人,那算是意外之喜。
但我个人觉得,这不仅仅是个工具的故事,更是对当下“功能堆砌”风气的一记响亮耳光。
有时候,少即是多,慢即是快。
在这个所有东西都想变成“宇宙飞船”的时代,你是想要一个看不懂的黑盒,还是一个听你话的螺丝刀?
参考链接:
https://mariozechner.at/posts/2025-11-30-pi-coding-agent/