原文: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% 的代码是"旧垃圾",模型从中学习复杂性
  • 决策局限性:代理决策具有局部性,尤其在代码库超出上下文范围时
  • 过度抽象与冗余:导致"两周内获得企业级复杂度",伴随兼容性问题
  • 规范缺陷:"足够详细的规范"本质上是程序,规范中的空白会被模型用"垃圾代码"填充

(三) 人类与代理的对比

维度 人类 代理
错误控制 有瓶颈,每日错误量有限 无瓶颈,持续产生错误
疼痛感知 会感到痛苦,从而触发重构或调整 无痛苦感知,持续生成低质量代码
学习能力 可通过经验改进 无法像人类一样学习
代码库理解 随痛苦增加而深化 上下文有限,难以理解庞大代码库

(四) 合理使用代理的原则

  • 任务选择标准
    • 范围明确,确保代理能获取所有必要信息
    • 模块化代码库
    • 可评估任务完成质量
    • 非关键任务、重复性工作、用户问题复现、"橡皮鸭"调试
  • 工作流程:评估 → 筛选合理部分 → 人工最终确定

(五) 核心建议

  • 慢下来:思考构建内容与原因,避免仅因代理能实现就盲目开发
  • 学会拒绝:不做无意义的项目

💡 关键洞察

  1. 极简工具胜出:Terminal Bench 证明,简单工具往往比复杂工具更有效
  2. 代理适应人,而非人适应代理:PI 的核心理念
  3. Boos 陷阱:串行累积错误是代理应用的潜在风险
  4. 人类独特优势:痛苦驱动的学习与重构,是代理无法替代的能力
  5. 开源危机:Clankers 正在系统性破坏开源生态的信任基础