中文精炼导读

核心观点

  • Addy Osmani 借 Dex Horthy(HumanLayer 联合创始人)在 AI Engineer World's Fair 的演讲"Harness Engineering is not Enough: Why Software Factories Fail",探讨"软件工厂"这个概念在 agent 时代的复活:软件工厂就是"大规模运行的循环",可以用带人的"亮工厂"(用判断力与专注换取速度,代价是可能的破坏),也可以忽略人、让 agent 自己定范围、构建并发布代码的"暗工厂"。
  • 三层概念:"循环"(loop)是一个 agent 反复做单一工作(收集上下文 → 行动 → 检查结果 → 再来,直到满足条件),是 agentic 工作最小的单元;"harness"是循环四周的墙(运行的沙箱、可及的工具、跨运行存活的记忆、判定"完成"的门);"工厂"是许多受 harness 约束的循环同时运行、由一个队列供料、经评审门排入生产、人在上面拥有整个系统——它不是一个更大的 agent,而是一张由循环组成的"组织架构图"。
  • 工厂的每个环节几乎零成本(生成、测试、扫描都在规模上廉价运行),只有一个昂贵的盒子顽固地拒绝缩放——评审门,那个"琥珀色盒子"就是"判断力",也是"能否让开发更快更频繁"这一争论的核心。
  • 暗工厂的诱惑与陷阱:移除了"阅读"这一步会让团队的纵向吞吐量感知突然大幅提升,像突破了音障;但纯模型自动编码在面对"理解债务"(comprehension debt——已有代码量与仍有人理解的代码量之间不断扩大的差距)时会失败——Dex 亲自跑了约四个月的完全自动化代码工厂、期间没有任何人看过代码,最终需要痛苦的手动调试来定位问题。
  • 真正的约束从来不是生成,而是验证:背压法则(back pressure)是"你只能给循环与其廉价可靠验证能力相当的自洽度,不能多一英寸";瓶颈不是我们能产出多少代码,而是我们能多快验证它——我们真正承受的是"坏 PR 的盈余"。
循环 → harness → 工厂
循环 → harness → 工厂

内容精讲

文章开篇点出"软件工厂"一词的历史:它可追溯到 Bob Bemer 1968 年的论文《The economics of program production》。半个世纪以来,许多人梦想软件成为可重复、可仪器化的生产过程(类比在工厂里冲压汽车零件),而不是个体的孤立手艺;这个梦想历史上大体(虽不绝对)落空,部分原因是"冲压出想法"很难。但过去两年情况变化巨大,值得重新审视这个老梦——同时也要精确指出"什么才是真正新的、不同的",以及"什么是伪装成新机会的反复出现的陷阱"。

作者随后给出核心概念框架:循环是原子,工厂是规模化运行的循环,结构就是一切,一切从小的单元开始。整个技术栈就是三个概念叠加:循环、harness、工厂。循环是一个 agent 重复做一件工作——收集上下文、采取行动、检查结果、再来一次直到满足某条件;它是 agentic 工作的最小单元,其上的一切都是"循环叠循环"。循环工程的要点是:你不再逐轮提示 agent,而是设计那个替你做提示的小系统。harness 是循环四周的墙:运行的沙箱、能触达的工具、跨运行存活的记忆、判定"完成"是什么的门;循环是行为,harness 是行为运行其中的环境——裸模型没有 harness 会永远空转。软件工厂则是许多受 harness 约束的循环同时运行,由一个工作队列供料、经评审门排入生产,人类从上方拥有整个系统;它不是更大的 agent,而是由循环组成的组织架构图。最终的范式转变是从"写代码"转向"构建并运行写代码的工厂"——工作单元上移到循环、harness 与它们之间的流动,而非单个代码 diff。

工厂被画成一张清晰的接线图:意图(来自工程领导层的愿景、直接来自工程师)与生产信号(事件、用户请求)喂进队列;harness 只是从队列取一项、为它构建一个变更;harness 之外是所有让变更足够安全进入生产所需的自动检查(CI、测试、静态分析、各类扫描——它们同时运行、无需工程师有意识地参与,几乎零成本);唯一的关键决策点是评审门;批准后变更被部署、在生产中监控,监控数据又反馈成启动循环的信号。图里每个盒子几乎零成本,只有一个昂贵的盒子顽固地拒绝缩放——评审门,那个"琥珀色的盒子"就是"判断力",是"能否让开发更快更频繁"这一争论的症结。

"为什么叫暗工厂":暗工厂物理上关着灯运行,因为地板上只有机器、机器不需要光。软件暗工厂是同样的动作——发布的代码没有人读过,只由其他机器验证。这个概念借自制造业:FANUC 自 2001 年起在日本运行熄灯工厂,小米 2024 年开了重度自动化的暗工厂;它们的共同点是产品组装并发布而没有任何人读过它。"暗"来自"阅读这个动作被移出流程"。在软件里,地板就是 diff——写 diff 的人、审 diff 的人、发布 diff 的人都消失了,剩下的只是由构建它的机器验证的 diff。这出奇地容易做到(至少起初如此),因为缺失的评审步骤挡住了其他一切;它的缺失让团队垂直吞吐量的感知突然大幅提升,像突破了音障。但要在这些黑暗工作流中存活下来(连同其隐藏成本)比表面看起来难得多。

"Harness 工程还不够":编排、沙箱化原型与工具调用会越来越强大有效,但模型"在长期与增量变更中跟上代码库质量"存在内在的模型内失败——作者有充分理由相信纯模型最终会输给理解债务的战争。理解债务是"已有代码量与仍有人理解的代码量之间不断扩大的差距"。暗工厂不偿还它,反而尽快地背上它、全程测试还是绿的。这个区别很重要:模型在某些任务上表现好,但对任何"不是对代码库小部分的即时修改"的任务——尤其复杂棕地(brownfield)系统——纯模型自动编码面临不可逾越的障碍。周末玩具与副业项目几个月就能弄到能工作,但开发了十年以上的企业系统是另一种野兽,必须以专业节奏在专业环境中维护;项目进行到三到六个月时你已经在大量未读代码里挣扎。Dex 的经验证实这是重大失败,严重到需要痛苦的手动调试才能定位——来自他运行约四个月的完全自动化代码工厂(期间没有人看过写的代码)。其底层是两个冲突指标的权衡:一个是我们当前视为进步的"最大化 token 利用率",另一个是它悄悄最小化的"任何人类参与者当下仍理解系统多少"。暗工厂真正擅长的是在测试保持绿色的同时烧穿大量"原始"代码;最终的清算不会戏剧性地"全面崩盘",而是安静地迟到。

"暗与亮"是"灯放在不同位置的同一条流水线":亮版本不只是把评审加回末尾,而是把人类判断力前移到设计与架构。作者指出,真正的瓶颈从来不是生成——工厂的根本约束不是我们能产出多少代码,而是我们多快能验证它。背压法则:你只能给循环与"廉价可靠验证能力"相当的自洽度,不能多一英寸。验证(而非生成)才是工厂的真正约束,因为无界的生成能力与有限、不可缩放的人类注意力永远处于张力中;看漏斗就明白——只要代表验证的瓶颈不拓宽,就会积压。Dex 的直言"多数所谓的 agent 并不那么有 agent 性——大多是确定性代码、在恰到好处的地方撒上 LLM 步骤",指向同一个结论:真正的新动作是扔掉流程图、靠循环让模型一个工具调用接一个工具调用地选路径直到自认完成;这在遇到十年老代码库时崩盘,于是所有人重新发现的纪律——"拥有你的控制流"——其实只是沿着图把循环走回来。把 bug 修复从"纯循环"(边走边决定一切)改为"图"(先映射出应该发生什么:复现 bug 或询问、找原因、试修复、跑测试,失败的回路由回到修复、通过的走向评审、只有批准到达完成),就得到了"以图表示的背压"——放弃 agent 部分自由、换回强制检查与可读的失败点,运行死了能指出是哪个节点杀的。作者澄清此处的"图"不是知识图谱,而是"预定义的工作应如何流动的有向图,含条件边",给循环一个可信任的形状;这个模式在 LangGraph、LlamaIndex Workflows、Jerry Liu 的"workflow-graph-over-agents 混合 + 运行中生长图的外层循环"、以及 David Khourshid 提醒的"这不过是换新衣的状态机与 actor 模型"中都能看到。

关于人去了哪里:人从未离开工厂,只是移动了位置。工程师需要越来越多地"拥有外层循环"——agent 可以调查 bug、写出诊断、实现修复、跑测试、写报告,那是内层循环的执行,它们做得和任何人一样高效;但那从来不是工作。你拥有的是外层循环:决定这是不是处理问题的正确方式、验证诊断与实现是否可靠、批准变更、并为判断错误的后果负责。两层的边界是证据——diff、测试、日志、以及连接它们的简短解释。类型、接缝与 rubric 让你不用为每次变更做大量工作就能监督这一切。作者的观点总结为:你不再在生产线上写变更,而是在生产线末端设计它并守门。让模型更好、让 harness 更强的办法有很多,但"识别长期昂贵的错误"通常无法自动化掉;核心工作仍是"比任何纸张与算力的流动更好地行使人类判断力"。机器在黑暗中运行没问题,但人类需要看见自己在做什么——如果工厂地板上全是黑暗、你看不见任何东西、甚至找不到灯开关,那就是危险所在。

阅读价值

适合工程管理者、平台负责人与所有正在把 agent 投入生产流水线的人:这篇文章把"循环/harness/工厂"三层框架讲得很清晰,并用"亮 vs 暗工厂""评审门是唯一昂贵的盒子""背压法则""理解债务"四个概念点破了"为什么全自动 coding 会失败、人该守在哪";对设计 agent 化的软件交付流程与决定"该给 agent 多少自主权"极具参考价值。

阅读英文原文 → 返回 AI 技术文档

本文为中文精炼导读,由 AI 基于原文整理,内容与图片版权归原作者所有。原文: https://addyosmani.com/blog/software-factories/