Agent 功能越堆越重,开发者反而越来越想要自由。
拿 Claude Code、Codex 这些明星 Agent 来说,它们像精装房:子 Agent、MCP、计划模式、记忆、搜索一应俱全,拎包入住。但对不少开发者而言,功能越多,往往意味着臃肿,以及更少的自由。用游戏框架 libGDX 作者 Mario Zechner 的话说:“Claude Code 变成了一个 80% 功能都用不上的宇宙飞船。”
于是 Mario 干脆自己动手,写了一个极简 Agent——Pi。
Pi(https://github.com/earendil-works/pi)是一个 minimal agent harness:默认没有 MCP、子 Agent、Plan 模式、内置 Todo、后台 Bash 等,先直接开工,再随着项目推进,把最顺手的工具、模型和工作流一点点装上去。它是一个干净的内核,让 Agent 反过来适应你的工作流,上面长成什么样,由你决定。内核足够轻巧,让它在多轮任务中更省 Token 埋下伏笔。
这种理念在开发者群体里攒下了不少口碑:GitHub 上获得 10 万+ Star,OpenClaw 把它当作底层框架,Databricks CTO Matei Zaharia 也公开点赞过它在 Terminal-Bench 2.0 上的表现。
现在,我们就来拆解 Pi 区别于其他 Agent 的地方,以及怎么让它接入硅基流动 API 跑起来。
从“用 Agent 产品”到“拥有 Agent 外壳”
很多 Coding Agent 的逻辑是:给你一套已经设计好的工作流,你来适应它。Pi 的逻辑反了过来。
它的核心只有四个工具:read、write、edit、bash,系统提示词加工具定义加起来不到 1000 Token,在所有主流 Agent 里是最短的。Pi 作者的判断很直接:前沿模型已经被大量 RL 训练过,天然就懂 Coding Agent 的基本套路,用不着上万 Token 的提示词教它怎么做事。
极简不等于简陋,Pi 只是把控制权交还给你:
•不绑定模型:支持硅基流动等任意第三方 API 提供商,对话中途按Ctrl+L就能切换模型。
•对话可“分叉”:每次对话存为本地的树形文件,你可以在任意历史节点重试,像用 Git 管理代码一样管理对话(/tree看全貌,/export导出 HTML,/share一键分享)。
•按需扩展:Extensions、Skills、Packages 三层机制,MCP、权限弹窗等“缺失”能力都可以后补(官方给出 50+ 示例),而不是默认塞给你。
•四种运行模式:支持交互式终端、print/JSON 脚本输出、RPC 进程通信、SDK 嵌入。
也就是说,你先拿到的是一个“毛坯房”,项目规范、编码习惯、常用命令可以全部写进全局AGENTS.md,Pi 每次启动自动加载。
我们试着让它实现一个pr-review-lite项目,你可以在项目根目录放一个AGENTS.md,规定模块分层、测试要求等局部规则。这些都不是产品预设的,而是你自己添加的。
你也可以在settings.json里自行写全局配置,用 Extensions 注册自定义工具,深度改造 TUI 来定义自己的终端体验。
需要新能力时,装一个 Extension 然后执行/reload,立刻生效。
Pi 的产品理念有点像 Vim:一开始什么都不配,用着可能有点别扭;可一旦配置好了,它或许比任何开箱即用的 IDE 都更贴合你的习惯。
上下文工程:Pi 更省 Token
模型价格当然重要,但 Agent 到底烧多少 Token,还取决于另一件事:每次调用模型时,到底带了多少无关上下文。
Pi 的提示词和工具定义几乎固定不变,四个工具、不到 1000 Token 的系统提示词。这意味着,Prompt Caching 的命中率可以拉得很高,实际跑起来既省钱又快。
更关键的是,Pi 把上下文管理的控制权交还给了开发者:AGENTS.md放在项目根目录,启动时自动读取,项目级SYSTEM.md可以替换或追加默认系统提示,还能在局部目录放AGENTS.md按需加载;Skills 在模型用到时才加载进上下文,不用就不占空间;长会话则有 Context Compaction 自动压缩旧消息,保留关键信息、丢掉中间过程的冗余。
于是模型拿到的上下文,能更集中地服务于当前项目和当前任务。
这里拿pr-review-lite项目做了一组小对照:让 Pi 和 WorkBuddy 在同一模型、同一项目规则下,连续完成创建、优化、验收三轮开发任务。在这轮连续开发里,Pi 的上下文与工作流设计,确实让总 Token 消耗更低。
当然,这并不是严格 Benchmark:工具调用轨迹、输出长度和交付物规模都会影响结果。更准确的说法是:Pi 提供了控制上下文与工作流的能力,而在这轮测试里,这种控制与更低的总 Token 消耗同时出现。
因此,Pi 的优势在于“在多轮开发任务中减少上下文消耗的潜力更明显”,你不必替无关信息买单。
快速上手:在 Pi 中接入硅基流动 API
第 1 步:安装 Pi
npm install -g --ignore-scripts @earendil-works/pi-coding-agent装好之后进入你的工作空间,终端输入pi就能启动。
第 2 步:获取硅基流动 API Key
打开硅基流动官网:
https://www.siliconflow.cn/models
注册/登录后进「API 密钥」页面,新建一个 Key,复制保存。
第 3 步:配置 models.json
这是关键一步。
创建配置目录:
mkdir -p ~/.pi/agent编辑:
nano ~/.pi/agent/models.json写入:
{ "providers": { "siliconflow": { "name": "SiliconFlow Key", "baseUrl": "https://api.siliconflow.cn/v1", "api": "openai-completions", "apiKey": "$SILICONFLOW_NEW_API_KEY", "models": [ { "id": "deepseek-ai/deepseek-ai/DeepSeek-V4-Flash" }, { "id": "moonshotai/Kimi-K2.7-Code" } ] } } }保存 nano 文件:
1. Ctrl+O 2. 回车 3. Ctrl+X第 4 步:启动验证
重新启动 Pi,进入后执行/model或者按Ctrl+L,就能看到你刚配置的硅基流动模型。选一个,发条消息试试是否能正常运行。
不止是极简底座,还能开箱即用
Pi 的生态比你想的要成熟一些。
如果说 Pi 是极简主义底座,Oh-My-Pi(omp)就是其开箱即用版本。它内置了 LSP、DAP 调试器、MCP 支持、AST 工具,定位类似 LazyVim 之于 Neovim。如果你觉得裸 Pi 太折腾,omp 是一个折中选择。
地址:
https://github.com/can1357/oh-my-pi
还有人专门夸 Pi 的 Harness SDK 是“目前用过最好的 AI SDK”,事件驱动的设计让搭建复杂的 UI 或自定义流程特别舒服,如果你想做二次开发,也许用起来会很顺手。
总体来说,Pi 从不急着定义你应该怎样写代码、怎样规划任务、怎样调用工具,它把定义工作方式的权力交还给你。如果你觉得现在手头的 Agent 太“重”了,这是一个很值得尝试的选择。
一个彩蛋:在终端里玩 DOOM
Yes, Doom runs.
没错,等 Pi 响应的时候,你可以直接在终端里玩《毁灭战士》。官网用 DOOM Extension 展示它可扩展的 TUI 能力:一个能渲染《毁灭战士》的 TUI,渲染加载动画、进度条这些自定义组件自然也不在话下。