原文:Building pi in a World of Slop — Mario Zechner
日期:2026-04-13
📖 开场白与背景介绍
- 自我介绍:Mario,PI 工具的开发者,在"混乱的世界"中构建了 PI
- 慈善关联:通过在身体上展示广告获得的资金全部捐赠给慈善机构
- 核心主题:本次分享是关于编码代理工具的策略与反思,以三幕剧形式呈现
🎭 第一幕:构建 PI(从云代码到自主开发)
(一) 云代码的使用与局限
- 初始体验(2025年4月):受 Peter 推荐开始使用云代码,初期简单可预测,符合工作流程
- 核心问题:
- 上下文控制权丧失:系统提示随版本变更,工具定义被移除或修改;在上下文插入"可能相关"的系统提醒,导致模型混淆
- 缺乏可观测性:无法了解代理的具体操作
- 模型选择受限:仅支持原生的 Anthropic harness
- 可扩展性不足:钩子机制深度有限,触发时会生成新进程,效率低下
- 功能膨胀:团队快速开发大量非必要功能,导致工具稳定性下降(类比"锤子每天损坏")
(二) 替代方案评估
| 工具 |
评价 |
关键问题 |
| AMP |
编码代理工具中的"保时捷" |
未提及(推测价格昂贵) |
| Factory Droid |
编码代理工具中的"兰博基尼" |
未提及(推测价格昂贵) |
| Open Code |
优秀团队,高执行速度,注重实用工具 |
1. 特定条件下会修剪工具输出(限制模型能力) 2. LSP 服务器支持导致实时错误注入,干扰模型编辑流程 3. 会话消息存储为 JSON 文件 4. 默认服务器配置存在安全隐患(允许任何网站访问) |
(三) Terminal Bench 的启示
- 基准特点:极简设计,仅提供向 T-Max 会话发送按键和读取输出的工具,无文件工具或子代理
- 性能表现:2025年12月排行榜显示,无论模型系列如何,Terminal 在大多数情况下得分高于模型原生 harness
- 核心结论:当前编码代理处于"尝试与探索"阶段,其最终形态尚未确定;需要更好的"探索方式",即自修改、可塑的代理
(四) PI 的设计与实现
- 核心理念:代理适应工作流,而非相反
- 组成部分:
- AI 包:跨提供商抽象及上下文切换
- 代理核心:循环与工具调用
- 定制 UI 框架:源自游戏开发经验,减少闪烁
- 编码代理本身
- 系统提示:极简设计,后因行业"技能"标准(Markdown 文件)增加少量内容
- 自修改能力:通过提供手工编写的文档和扩展代码示例,使代理能自我修改
- 工具集:仅包含 Retrate、Edit、Mesh 等 4 个工具,工具定义简洁
- 安全理念:默认"YOLO"(You Only Live Once),提供灵活性以适应不同安全需求,而非弹窗确认机制
- 扩展性:
- 扩展为 TypeScript 模块,可热重载
- 扩展 API 支持工具定义、事件监听、状态管理、自定义压缩等
- 利用现有包管理器(如 npm)分发,无需新市场
(五) PI 扩展示例
- Slash By The Way:5 分钟内基于 Twitter 提示构建,功能更丰富
- Nico 的多代理聊天室:自定义 UI,实现代理间通信
- 游戏运行:支持运行 NES 游戏或 Doom
- 扩展开发方式:用户无需手动编写,可指示 PI 根据需求生成并迭代
🎭 第二幕:开源软件在 Clankers 时代(OSS 困境)
- Clankers 定义:Mario 对自动生成的低质量 PR/Issue 的称呼,正在破坏开源生态
- 问题表现:
- OpenClaw 等项目的跟踪器充斥垃圾内容
- Mario 的仓库中,半数问题来自开源实例生成的无意义内容
- 应对措施:
- PR 自动关闭机制:要求提交者用"人类声音"撰写不超过一屏的 issue,通过后加入白名单
- Vouch 系统:Mitchell 将上述机制转化为正式功能
- 标签与优先级:与 OpenClaw 交互过的用户问题优先级降低
- 3D 空间嵌入分析:将 issue 和 PR 文本嵌入 3D 空间,识别问题集群
- OSS 假期:随时关闭跟踪器,恢复个人生活
- 意外发展:Peter 将 PI 作为 OpenClaw 的核心,导致 Mario 的开源项目成为众多 OpenClaw 实例的目标,用户对此并不知情
🎭 第三幕:慢下来(对代理使用的反思)
(一) 行业乱象与"Boos"概念
- 虚假宣传:"产品 100% 由代理构建",实则质量低下
- "Boos"定义:Mario 创造的术语,指通过串行学习产生的累积错误,具有无瓶颈和延迟痛苦的特点
- 代理代码问题:
- 代码量庞大,人类无法充分审查
- 错误率随代理数量增加而上升
- 审查代理(如 Oro)效果有限
(二) 代理的复杂性来源
- 学习源问题:互联网上 90% 的代码是"旧垃圾",模型从中学习复杂性
- 决策局限性:代理决策具有局部性,尤其在代码库超出上下文范围时
- 过度抽象与冗余:导致"两周内获得企业级复杂度",伴随兼容性问题
- 规范缺陷:"足够详细的规范"本质上是程序,规范中的空白会被模型用"垃圾代码"填充
(三) 人类与代理的对比
| 维度 |
人类 |
代理 |
| 错误控制 |
有瓶颈,每日错误量有限 |
无瓶颈,持续产生错误 |
| 疼痛感知 |
会感到痛苦,从而触发重构或调整 |
无痛苦感知,持续生成低质量代码 |
| 学习能力 |
可通过经验改进 |
无法像人类一样学习 |
| 代码库理解 |
随痛苦增加而深化 |
上下文有限,难以理解庞大代码库 |
(四) 合理使用代理的原则
- 任务选择标准:
- 范围明确,确保代理能获取所有必要信息
- 模块化代码库
- 可评估任务完成质量
- 非关键任务、重复性工作、用户问题复现、"橡皮鸭"调试
- 工作流程:评估 → 筛选合理部分 → 人工最终确定
(五) 核心建议
- 慢下来:思考构建内容与原因,避免仅因代理能实现就盲目开发
- 学会拒绝:不做无意义的项目
💡 关键洞察
- 极简工具胜出:Terminal Bench 证明,简单工具往往比复杂工具更有效
- 代理适应人,而非人适应代理:PI 的核心理念
- Boos 陷阱:串行累积错误是代理应用的潜在风险
- 人类独特优势:痛苦驱动的学习与重构,是代理无法替代的能力
- 开源危机:Clankers 正在系统性破坏开源生态的信任基础