写了17年开源代码,我为什么认为Coding Agents堆功能是在瞎折腾?
写了17年开源代码,我为什么认为Coding Agents堆功能是在瞎折腾?
演讲者: Mario Zechner(libGDX创始人、17年开源老兵) 编译: 宇琪 | 策划: Tina 来源: InfoQ | 发布时间: 2026-04-27
核心观点
"当你发现AI在背地里偷偷修改你的上下文,而你却对此一无所知时,这种掌控感的丧失是极其危险的。"
- Claude Code已成为功能臃肿的"宇宙飞船" - 用户只用过5%,了解10%,剩下90%是"暗物质"
- 极简agent同样强大 - pi仅用4个工具(read/write/edit/bash),在TerminalBench排行第二
- Coding Agent需要可扩展性 - 必须是可自修改、可塑性极强的,而不是功能堆砌
- LSP应在agent完成工作后检查 - 而非在修改过程中反复打断
Coding Agents演进史
| 阶段 | 工具 | 特点 |
|---|---|---|
| 2025年前 | ChatGPT | 搬运代码片段,只能写简单函数 |
| 2025年 | GitHub Copilot | VS Code集成,tap-tab补全,偶尔"贴心"地默写GPL代码 |
| 2025年 | Aider/AutoGPT | 早期agent框架,铺路但未成熟 |
| 2025年11月 | Claude Code beta | 开创agentic search范式,实时探索codebase,效果惊人 |
| 现在 | Claude Code | 功能过度膨胀,掉进"堆功能"陷阱 |
Claude Code开创的agentic search范式:
- 不强依赖codebase索引和复杂构建
- 通过强化训练模型使用文件工具和bash工具
- 实时探索codebase寻找信息并直接修改
Claude Code的问题
1. 功能过度膨胀
"Claude Code现在就是一架宇宙飞船,功能多到可能只用过5%,了解10%,剩下90%全是AI和agents领域的'暗物质',没人知道它背地里到底在干嘛。"
- 闪烁问题(后来修好了,但源于React滥用)
- 偷偷对context做手脚,每天都在变
- 缺乏可观测性和上下文管理能力
2. 缺乏掌控感
- 模型选择权受限(仅限Anthropic模型)
- 扩展性差,hook系统开销昂贵
- 不是稳定工具,每天都在实验新功能
其他框架对比
| 框架 | 优点 | 缺点 |
|---|---|---|
| Claude Code | 开创品类,效果惊艳 | 功能臃肿,缺乏掌控 |
| Codex CLI | 模型表现惊艳 | 刚开始界面不友好 |
| AMP | 砍功能而非堆功能,设计逻辑清晰 | 商业产品,缺乏掌控权 |
| Factory | 扎实稳健 | 不够激进和实验性 |
| OpenCode | 开源,团队务实 | 上下文管理糟糕,存在RCE漏洞 |
| Terminus | 极简(仅tmux+按键),TerminalBench表现顶级 | 用户体验非最优 |
TerminalBench发现: Terminus仅用tmux session(发送按键+读取VT序列码)就在排行榜上表现顶级,证明不需要花里胡哨的功能。
pi:极简主义的"反叛之作"
核心理念
"让你的Coding Agent去适应你的需求,而不是反过来。"
系统架构(仅4个package)
┌─────────────────────────────────────────┐
│ pi 系统架构 │
├─────────────────────────────────────────┤
│ AI package → 多provider轻量抽象层 │
│ Agent core → 通用agent loop │
│ TUI (600行) → 终端交互界面 │
│ Coding Agent → SDK / 终端交互双模式 │
└─────────────────────────────────────────┘
仅4个工具
| 工具 | 用途 |
|---|---|
read | 读取文件 |
write | 写入文件 |
edit | 编辑文件 |
bash | 执行命令 |
没有的功能: MCP、sub-agents、plan mode、background bash、内置to-do系统。
为什么极简反而更好?
1. 系统Prompt极短
frontier models已通过大量RL训练"知道"什么是Coding Agent,不需要反复告诉它"你是一个Coding Agent"。
2. 默认YOLO模式
"大多数Coding Agent分两种模式:要么agent想干嘛就干嘛,要么每一步都要问你。这种机制只会带来疲劳,用户要么直接关掉开启YOLO模式,要么就无脑按回车。"
3. 用简单方式实现复杂功能
| 功能 | pi的实现方式 |
|---|---|
| 没有MCP | CLI tools + skills,或写extension一天搞定 |
| 没有sub-agents | 用tmux spawn agent,输入输出清晰可见 |
| 没有plan mode | 写plan.md文件,持久化且可跨session复用 |
| 没有background bash | tmux已经解决 |
| 没有内置to-dos | 写todo.md就行 |
4. 极致可扩展性
- 扩展工具:写TypeScript文件自动加载
- 自定义UI:完整TUI访问能力
- skills/prompt templates/themes:打包发布到npm/git
- hot reload:修改后即时生效
- 重写内置工具:可改变read/edit/bash行为(如通过SSH在远程执行)
社区创新案例
| Extension | 功能 | 开发时间 |
|---|---|---|
| pi-claude-code-ships | 复刻Claude Code ships功能,且功能更多 | 5分钟 |
| pi-messenger | 多个pi agent聊天室,可互相通信 | - |
| pi-nes | agent运行时顺便打游戏 | - |
| pi-annotate | 打开网站在前端界面标注,反馈给agent修改 | - |
| pi-files-widget | 快速查看刚刚被修改的文件 | - |
session树结构 vs 线性聊天记录
传统:线性记录,不可控的sub-agent
A → B → C → D
pi:树结构分支
A
/ \
B C
/ \
D E
\
F(带总结回到主分支)
- 分支内让agent读取目录、总结内容
- 回到主对话,把总结带回来继续工作
- 更可控的sub-agent
- 透明可追踪:agent、skills、调用成本全部可见
TerminalBench实测结果
| 排名 | Framework | 模型 | 说明 |
|---|---|---|---|
| 1 | Terminus 2 | - | 极简(仅tmux+按键) |
| 2 | pi | Claude Opus 4.5 | 尚未实现compaction时已达此成绩 |
| ... | 其他框架 | - | 功能复杂但排名靠后 |
防御性开源策略
由于OpenClaw用户可能用clanker批量提交issue/PR,pi采取了:
- OSS Vacation:关闭issue和PR几周,专心开发,重要问题总会有人重新提出
- 访问控制:PR提交者需在markdown名单中,否则自动关闭
- human验证:先用"人类的声音"写issue自我介绍(不超过一屏),通过后加入名单
Ghostty的Mitchell基于此思路做了vouch项目,方便应用到其他开源仓库。
结论
- 行业现状:处于"一边瞎折腾一边看结果"阶段,没人知道完美的编程agent长什么样
- 极简有效:Terminus和pi证明不需要复杂功能堆叠也能获得顶级结果
- 可扩展性是关键:agent必须是可自修改的,让开发者能快速实验新想法
- 掌控感重要:开发者需要知道agent在做什么,而不是被"暗物质"包围
演讲原链接: https://www.youtube.com/watch?v=Dli5slNaJu0
项目地址: https://github.com/pi
本文为InfoQ翻译整理,不代表平台观点