乐于分享
好东西不私藏

智能体时代的软件工程:把隐性经验变成显性制度

智能体时代的软件工程:把隐性经验变成显性制度

过去我们评价一个工程师,往往容易把注意力放在那些看得见的产出上:提交了多少代码,完成了多少需求,修了多少 bug ,交付速度有多快。可真正支撑大型软件系统长期可靠演化的,恰恰不是这些显性的产物,而是大量“不出现在 diff 里”的工作:厘清需求边界,暴露假设,切分任务,约束范围,设计可验证的方案,留下证据,控制变更规模,让审查真正发生,而不是形式化通过。

这类工作之所以重要,不是因为它们更“高级”,而是因为它们承担了工程活动中最关键的一层功能:它们把创造性产出转化为可控产出,把局部正确转化为系统可靠,把一次成功转化为可重复成功。

而当 AI 开始承担编码工作时,一个非常尖锐的问题浮现出来:模型往往天然倾向于“尽快完成任务”,却不会天然重视这些隐性工作。它会直接写功能,却不一定先澄清需求;会给出实现,却不一定提供验证证据;会产出看似合理的代码,却不一定主动限制改动范围,更不一定在不确定时停下来提问。换句话说,模型擅长把“可见工作”做得很快,却容易跳过那些真正定义专业性的“不可见工作”。

这暴露出一个重要事实:在 AI 时代,软件工程的核心问题不再只是“如何生成代码”,而是“如何把资深工程师的工作方式制度化,并让智能体无法轻易绕过”。

一、真正需要被传递的,不是知识,而是工作流

很多人面对这个问题的第一反应,是给模型更多“最佳实践”、更多“原则”、更多“注意事项”。这听起来合理,实际上往往效果有限。因为原则本身并不自动转化为行为。

一篇两千字的“测试最佳实践”文档,和一个明确规定“先写失败测试,再运行,再实现最小通过代码,再回归验证”的流程,对模型的作用完全不同。前者提供的是知识性描述,后者提供的是可执行结构。前者帮助模型“说得更像懂测试”,后者迫使模型“真的去完成测试流程”。

这一区别非常关键。对智能体而言,最有价值的不是抽象理论,而是带有步骤、检查点和退出条件的工作流。因为模型最大的风险之一,不是“完全不知道”,而是“知道概念,却不真正执行”。它可以流畅地谈论规范,却跳过规范;可以熟练复述测试哲学,却不运行测试;可以总结架构原则,却直接写出一个无法审查的大改动。

因此,面向智能体的工程方法,核心不应该是“给它更多知识”,而应该是“把知识压缩为可操作流程”。这其实也是对人类组织同样成立的原则。一个高压环境中的团队,不会在关键时刻翻阅长篇手册;真正起作用的,永远是短小、明确、能执行、能验证的流程卡片。

从这个意义上说, AI 时代逼我们重新承认一个老事实:组织的竞争力,很大程度上并不来自它拥有什么理念,而来自它能否把理念固化为流程,把流程固化为习惯,把习惯固化为默认行为。

二、工程问题的本质,是对“合理化冲动”的治理

智能体之所以危险,并不在于它总是胡说八道,而在于它非常善于给错误行为提供看似合理的解释。

“这个需求很简单,不用写规格。”

“先把代码写完,测试之后补。”

“测试都过了,应该没问题。”

“顺手把旁边这块也重构一下,整体更一致。”

“这个地方虽然不完全理解,但改了看起来更现代。”

这些话并不陌生。它们既像模型会说的话,也像人类在疲惫、赶时间、缺乏约束时会说的话。问题不在于这些句子语气是否自信,而在于它们构成了一种工程活动中最常见的腐蚀机制:合理化。

合理化的可怕之处,在于它不是赤裸裸地否定质量,而是以局部效率、短期便利、表面顺畅为名,一点一点侵蚀那些原本保护系统的约束。很多事故不是因为团队故意做坏事,而是因为团队逐步接受了越来越多“这次应该没关系”的理由。

所以,一个成熟的工程体系,必须不仅定义正确流程,还要预先定义对“逃避流程的借口”的反驳机制。也就是说,我们不只是需要规则,还需要一套针对常见自我开脱的预制回应。

这背后其实是一种更深的组织哲学:优秀的制度,不是建立在“参与者始终理性、自律、清醒”的假设之上,而是建立在“参与者会疲惫、会取巧、会自我说服”的现实之上。真正强韧的系统,不依赖个体时刻保持高尚,而是通过流程设计,让低质量捷径更难发生。

如果说传统软件工程主要治理的是代码复杂度,那么 AI 时代的软件工程,将越来越多地治理“决策复杂度”和“借口复杂度”。我们需要管理的,不再只是程序如何运行,还包括执行者如何为偏离流程寻找理由。

三、验证不是收尾动作,而是完成定义的一部分

很多团队把验证理解为开发之后的附属阶段:先做,再测;先写,再看;先交付,再观察。这种习惯在 AI 加速产出的背景下会被进一步放大,因为模型极其擅长在“看起来已经完成”的时刻停止。

但工程上真正可靠的做法恰恰相反。验证不是工作末尾补上的动作,而是“任务完成”这件事本身的组成部分。没有证据,就没有完成;只有感觉,没有结论。

所谓证据,可以是通过的测试,可以是失败后再修复的记录,可以是运行截图,可以是日志,可以是基准对比,可以是人工审查结论。证据的形式可以因任务而异,但原则不能变化:每一项工作都必须以某种可外部检查的方式证明自己。

这背后是一种非常朴素却常被忽略的认识论立场:生成结果不等于知道结果是对的。模型能生成代码,人类能生成判断,但“生成”与“证明”属于两种不同的活动。前者依赖构造能力,后者依赖约束机制。没有后者,前者越强,风险越大。

从更大的视角看,现代工程文明之所以能扩展,不是因为个体越来越聪明,而是因为系统越来越依赖证据而不是直觉。单元测试、代码审查、灰度发布、监控告警、回滚机制,这些东西的共同本质,就是把“我觉得可以”替换成“我能证明到什么程度”。

AI 的到来没有改变这一点,反而把这一点推到了更中心的位置。因为当产出速度远超人类逐行思考速度时,验证就不再是优化项,而是生存条件。

四、上下文应当按需暴露,而不是一次性灌满

另一个常见误区,是试图把所有规范、所有经验、所有规则一次性塞给模型,仿佛给得越多就越安全。事实往往相反。上下文越臃肿,重点越稀释;规则越繁杂,执行越松散。信息不是越多越好,尤其对需要在局部任务中做判断的智能体而言,过多无关规则反而会削弱决策清晰度。

因此,真正有效的做法不是“把全部智慧预加载”,而是“在合适阶段暴露合适规则”。定义需求时加载定义规则,规划任务时加载规划规则,实现时加载实现约束,验证时加载验证清单,审查时加载审查标准,发布时加载发布要求。规则按生命周期逐步展开,而不是同时压在当前任务上。

这其实不仅是上下文管理技巧,更是一种制度设计思维。任何会在高压、快速决策环境里被使用的知识系统,都不应以“百科全书”形态存在,而应以“路由器 + 小模块”的形态存在。路由器负责判断当前处于什么阶段,模块负责提供阶段性约束。

换句话说,复杂性不该消失,但复杂性应该被分配。组织不是通过删除规范来保持敏捷,而是通过恰当分发规范来避免僵化。

五、范围纪律,是智能体可协作性的底线

如果说验证决定一个结果是否可信,那么范围纪律决定一个结果是否可合并。

智能体常见的问题并不是“什么都做不了”,而是“做得太多”。修一个 bug ,顺便重构三处邻近逻辑;加一个功能,连带替换一套抽象层;看到旧代码不顺眼,就扩张任务边界。对单次生成而言,这似乎展示了主动性;对协作系统而言,这往往意味着灾难。因为可审查性、可回滚性、可归因性,都会随着范围膨胀迅速下降。

范围纪律因此不是保守主义,而是协作理性。它承认一项工程任务不是孤立存在的,而是嵌入在多人协作、版本控制、风险控制和认知负荷分配之中。一个改动越聚焦,团队越容易理解它、验证它、讨论它、否决它、回滚它。一个改动越扩散,即使其中大多数内容“方向正确”,整体也更可能失去信任。

这说明了一个常被低估的工程真相:好的改动,不只是逻辑上正确,还必须社会上可接受。所谓“社会上可接受”,不是迎合人情,而是尊重协作系统的处理能力。能够被别人读懂、审查、维护、接手,本身就是工程质量的一部分。

在 AI 时代,这一点尤其重要。因为模型天然没有“给别人添麻烦”的羞耻感,它不会本能意识到审查者的负担,也不会天然珍惜团队在复杂代码库中积累出来的局部稳定性。所以,范围约束必须成为外加纪律,而不能依赖模型自觉。

六、 AI 迫使我们重新认识资深工程师的真正价值

长久以来,很多人对资深工程师的理解存在偏差,仿佛“资深”只是写更复杂代码、更快解决难题、更懂架构选型。实际上,资深性的真正核心,往往不是把复杂事做成,而是避免把本来可以简单解决的事做复杂;不是永远给出答案,而是先识别问题被定义错了;不是输出更多,而是控制输出的边界、节奏与证据。

AI 的出现反而让这种价值变得更清晰。因为一旦“写代码”本身被大幅加速,那些过去容易被忽略的隐性能力就突然成为瓶颈:谁来定义任务?谁来识别冲突需求?谁来判断哪里必须停下来提问?谁来约束范围?谁来要求证据?谁来拒绝一个虽然华丽却不可验证的方案?

答案恰恰是:这些一直都是资深工程师的核心工作,只是过去它们被“写代码”这件更显眼的事情掩盖了。如今,当模型接管了部分显性产出,人们才开始看到,真正昂贵、真正稀缺、真正不可替代的,是那些长期存在却不总被明确命名的工程判断结构。

因此,一个成熟团队面对 AI ,不应只想着“如何让模型更能干”,更要思考“如何把资深工程师的判断框架编码为组织资产”。这包括规则、流程、检查点、例外条件、停止信号、证据要求,也包括对借口的预判,对过度扩张的限制,对不确定性的暴露要求。

技术工具可以替换,模型能力会迭代,具体平台会更迭,但这些深层结构会越来越重要。因为未来竞争的关键,不只是哪个团队拥有更强的模型,而是哪个团队更早把自己的工程文明沉淀成可移植、可执行、可检查的制度。

真正需要被自动化的,不只是产出,还有克制

如果把这件事再概括一点,可以说: AI 时代的软件工程,不是让 AI 模仿人类写代码,而是让组织学会把“好的工程行为”从个体修养转化为外部结构。

我们过去太习惯把优秀工程归因为个人能力,于是很多关键实践以经验、默契、口头提醒和少数骨干的习惯存在。 AI 让这种模糊状态难以持续,因为模型会系统性放大一切没有被明确要求的环节。凡是只靠“默认会做”的东西,最后都可能被默认跳过。

所以,真正值得建立的,不只是更强的编码助手,而是一套让“澄清假设、控制范围、要求证据、按阶段推进、拒绝借口、偏好朴素方案”成为默认行为的工程机制。

从这个角度看,所谓“给智能体加技能”,本质上不是给它增加功能,而是给它增加约束;不是让它更自由,而是让它更可靠;不是让它更像一个会写代码的工具,而是让它更接近一个能够在制度中工作的工程参与者。

而这也许正是 AI 带给软件工程最重要的提醒:真正支撑复杂系统的,从来不是天赋式的聪明,而是被反复验证过的纪律。

参考 Skill :Production-grade engineering skills for AI coding agents[1]


参考链接

[1] Production-grade engineering skills for AI coding agents: https://github.com/addyosmani/agent-skills