我们团队今年上半年做过一次内部技术分享,标题就叫“当AI开始写代码,工程师到底在做什么”。那次分享之后,好几个组的同事来找我聊同一个困惑:AI辅助开发工具已经这么好用了,为什么团队的交付效率没有肉眼可见地提升?反而代码评审压力变大了,线上问题好像更“隐蔽”了。我当时给了一个有点反直觉的回答:问题不是出在AI不够强,而是我们还在用“没有AI时的工程方法”去驾驭“有AI的研发流程”。
这个思路,后来被我们总结成一句话:AI 时代的工程最佳实践,不是去买最贵的模型,也不是禁止团队用 AI,而是把“AI 能力”作为一条新的工程变量,重新设计需求、编码、测试、评审、发布和运维的整套流程。我习惯叫它 Harness Engineering——驾驭工程。这个“驾驭”非常关键:AI像是引擎,工程实践是方向盘和悬挂系统,引擎马力再大,方向盘没调好,车只会更快地冲进沟里。
这篇文章我会结合我们团队的实际落地经验,把 Harness Engineering 的核心思路、具体实践、踩坑记录和推进方法完整拆开讲。适合正在带团队的技术负责人、在一线写代码的工程师,以及所有想把 AI 真正“用起来”而不是“用个热闹”的从业者。
1. 什么是 Harness Engineering——AI 时代的工程方法
1.1 名字背后的真实含义
很多人第一次听到 Harness Engineering,会以为它是一门关于“线束”的硬件工程,或者某个CI/CD平台的专属名词。在 AI 语境下,“Harness”在这里更接近“驾驭、利用、约束”三重含义的综合体。
我见过很多团队对 AI 的态度分裂成两种极端:一种是把 AI 当成“银弹”,觉得买了工具就能解决所有工程问题;另一种是把 AI 当成“洪水猛兽”,担心代码质量下降、安全风险上升、团队能力退化。这两种态度本质上是同一个错误——把 AI 当成了一个孤立的“工具”,而不是把它当作一种需要被“设计进”工程系统的变量。
Harness Engineering 想解决的问题,就是这种割裂。它不是某一种具体的工具,也不是某一条具体的规则,而是一套完整的工程方法论。这套方法论的核心命题是:在 AI 深度参与软件研发全流程的前提下,如何通过流程设计、约束机制和反馈闭环,让 AI 的生产力增益最大化,同时把质量风险、安全风险和维护成本控制在可接受的范围内。
拿开车来类比。发动机(AI模型)负责提供动力,但一辆车能不能安全、舒适地到达目的地,取决于方向盘(需求拆解)、刹车(质量门禁)、悬挂(上下文管理)和仪表盘(可观测性)之间的协同。Harness Engineering 研究的就是如何调校这套系统,而不是研究发动机本身。
1.2 为什么传统最佳实践在 AI 时代开始失效
过去十年,软件工程领域沉淀了大量最佳实践:代码评审、单元测试覆盖率、CI/CD 流水线、敏捷迭代、领域驱动设计。这些实践本身没有问题,但它们的隐含假设在 AI 时代被打破了。
传统工程实践假设“代码是人类写的”,因此代码评审的核心是“看人有没有写错”;测试设计的核心是“人可能会在哪里犯粗心错误”;需求分析的验证点是“人是否理解了业务”。当 AI 开始生成大量代码时,这些假设全部失效。AI 不会像人一样犯“拼写错误”或“忘记边界条件”,但它会犯另一种更隐蔽的错误——“自信地胡说”。它会生成语法完全正确、逻辑基本通顺、但业务语义完全跑偏的代码。传统评审流程里,评审者默认代码背后有一个“会承认自己不确定”的人类作者,而 AI 不会承认不确定性。这就是为什么很多团队在引入 AI 后,代码评审时长反而翻倍——因为评审者的信任模型崩塌了。
同时,AI 改变了问题的分布。传统工程里,大部分 bug 来自“实现偏差”——需求明确但写错了。AI 时代的新增风险变成了“需求本身是否正确”“上下文是否被正确传递”“AI 输出的约束是否足够”。这些风险在传统实践里根本不在考虑范围内。
1.3 Harness Engineering 的三大支柱
我们团队在实践中,把 Harness Engineering 归纳成三个支柱,后续的所有落地动作都围绕这三个支柱展开。
第一个支柱是约束。AI 需要被约束在明确的问题边界里。开放式提问会得到开放式回答,而开放式回答在工程里是不可控的。需求规格、接口定义、编码规范、测试条件,都需要成为 AI 的“护栏”。这听起来简单,但实际落地时绝大多数团队没有做这件事,因为约束意味着要额外投入时间写清楚上下文。
第二个支柱是验证。AI 输出的东西必须经过比人类输出更严格的验证体系。人类写代码,评审者可以基于“作者的意图”来理解;AI 写代码,我们唯一能信任的就是验证结果本身——编译、测试、静态分析、灰度观测。验证体系越完善,AI 的产出效率才能真正转化为交付效率。
第三个支柱是闭环。AI 的使用效果必须被度量、被反馈、被迭代。哪些环节用 AI 提效明显、哪些环节是虚假繁荣、哪些场景的 prompt 需要重新设计,这些都需要数据支撑。没有闭环的 AI 应用,本质上是在赌运气。
这三个支柱少任何一个,AI 工程化都会变形。只有约束没有验证,代码质量会失控;只有验证没有约束,AI 发挥不出效率;约束和验证都有了但没有闭环,团队只能在同一个水平上重复踩坑。
2. AI 时代工程实践的变化:从工具人到人机协同
2.1 工作方式的根本转变
我刚开始做软件开发时,工程师的核心竞争力在于“写代码的能力”——数据结构的熟练度、语言特性的掌握程度、框架使用的经验。那个时代,写代码是一个从零到一的生产过程,工程师本身就是“编译器”,把需求编译成实现。
AI 出现之后,这个过程发生了根本性的转变。现在,大量基础代码可以由模型直接生成,工程师的角色从“生产者”变成了“导演”和“评审者”。你需要告诉 AI 你要什么(需求拆解),判断 AI 给的东西对不对(方案评估),再把对的部分组合成完整系统(集成与治理)。
这种转变对资深工程师来说其实是好消息,因为经验的价值被放大了——只有真正理解系统的人,才能给出高质量的指令和判断。但对团队管理来说,挑战变大了:你不能再用“代码行数”或“提交频率”来衡量生产力,因为这些指标在 AI 时代已经完全失真。
我们团队做过一个内部统计:在引入 AI 编码辅助工具后,一些常规 CRUD 接口的编写时间缩短了 60%,但 Code Review 的讨论深度显著增加了——因为 AI 生成的代码虽然看起来“很标准”,但经常会在多线程、事务边界、数据一致性这些“非标准”的地方出现问题。写代码变快没有意义,系统上线后不出问题才有意义。
2.2 研发全流程被重塑的四个维度
需求环节,AI 开始参与用户故事的拆解和验收标准的生成。以前的需求文档经常是“几句话需求”,细节全靠开发自己去问。现在 AI 可以根据历史需求和系统架构,自动生成更细的验收条件,帮助开发和产品在同一个语境下对齐。但这里有一个隐蔽的风险:AI 生成的验收标准往往是“逻辑完备”的,却不一定“业务正确”。它会把一个本来含糊的需求“填补”得看起来非常具体,让所有人误以为已经理解了业务,实际上可能偏离了用户的真实意图。
编码环节,AI 补全和代码生成已经从“偶尔用用”变成了“默认使用”。但真正高效的使用方式不是完全放任,而是“小步生成、持续验证”。让 AI 一次写一个函数然后立刻编译测试,比让 AI 一次写整个模块然后期待一次性通过要高效得多。这和人类写代码的节奏应该是一样的:越小的提交越容易定位问题,AI 也不例外。
测试环节,AI 生成单元测试是 AI 工程化最容易出成果的地方。模型阅读代码的能力远比人类逐行阅读快,可以快速生成覆盖正常路径和异常路径的测试用例。但 AI 生成的测试有一个致命弱点:容易“自我验证”——即测试逻辑和实现逻辑犯了同一个理解错误,测试全绿但功能全错。所以我们建立了“AI 生成测试必须有人类补充业务断言”的规则。
运维环节,AI 正在改变告警处理和故障诊断的方式。传统的监控系统只能告诉你“哪里出问题了”,AI 可以帮你在海量日志中搜索关联线索、推荐排查路径、甚至直接生成修复补丁。但 AI 运维的一个前提条件是:你的监控数据和日志质量必须足够好。日志质量差,AI 分析得再快,也是垃圾进垃圾出。
2.3 一个具体案例:AI 辅助开发的提效实验
我们团队有三条业务线,去年底做了个对照实验。A 组完全用传统方式开发,B 组允许使用 AI 辅助编码但没有任何流程约束,C 组使用 AI 并套用了一套简易的 Harness 流程(需求拆解模板、AI 输出约束、强制测试生成、代码评审 AI 预检)。
三个月后结果很有意思:B 组的代码提交速度最快,但缺陷率上升了约 40%,而且很多缺陷在测试阶段没被发现,直接漏到了生产环境。A 组效率最低但最稳定。C 组的开发速度约为 B 组的八成,但缺陷率反而比 A 组还低了大约 15%。更重要的是,C 组的 Code Review 压力并没有显著增加,因为 AI 生成的代码已经提前被机器预检过一遍,人类评审者可以把注意力放在业务逻辑和架构合理性上。
这个实验让我确信了一件事:AI 本身不是风险,无约束的 AI 使用才是风险。Harness Engineering 的价值不是“限制 AI”,而是“让 AI 的上限可以稳定兑现”。
3. AI 时代工程最佳实践的落地拆解
3.1 编码环节的正确姿势:小步生成与上下文约束
很多工程师用 AI 编码助手的方式是“把整个需求贴进去,让它生成整个文件”,然后编译报错就在那里反复问“请修复”,再报错再问,来回拉锯十分钟,最后索性自己重写。这个场景太常见了,本质上是把 AI 当成了“外包程序员”,但 AI 没有你脑子里的全局上下文。
更高效的姿势,是把一个大任务拆成一组有序的小任务,每个小任务对应一个明确的输入输出。举个例子,你要开发一个订单状态机。与其让 AI 直接生成整个状态机代码,不如按这个顺序来:
第一步,让 AI 根据接口定义生成状态枚举和转换表,并明确告知“只生成领域对象,不生成数据库操作”。第二步,把状态转换表交给 AI,让它生成纯函数式的状态流转逻辑。第三步,针对这段流转逻辑,让 AI 生成单元测试,测试条件里明确包含“非法流转必须抛异常”。每一步的产出都很小,可以立刻检查。
这里有个经验:给 AI 的上下文不是越多越好,而是越“结构化”越好。把整个项目代码库一次性丢给 AI,它会“学到”大量无关的代码风格和过期逻辑,反而影响输出质量。我们团队的实践是,维护一份精简的“项目上下文文档”,里面包含当前模块的架构定位、核心接口签名、编码规范、已知约束。每个 AI 任务开始之前,先把这份文档的关键部分贴给 AI。
还有一个小技巧,写代码时把注释先写好,然后再让 AI 补全实现。人类写注释的过程,实际上是在帮助自己理清边界条件。注释越精确,AI 生成的代码越接近预期。我试过几次后发现,让 AI“按注释实现函数”,比让 AI“实现某功能”的输出质量高一个档次。
3.2 代码评审环节:AI 预检与人类终审
AI 时代的代码评审,必须分层。第一层是机器评审,第二层才是人类评审。
机器评审做的事情,是把所有可模板化的检查项从人肉评审里剥离出来。代码风格、命名规范、明显的空指针风险、接口签名一致性、依赖版本安全、超长函数拆分建议,这些工作 AI 做得又快又稳定。我们团队现在所有提交都会先过一道 AI 预检,负责人工评审时看到的不再是原始代码,而是“AI 已经处理过的版本+AI 发现的潜在问题列表”。
人类评审的焦点,因此可以被完全放在 AI 无法判断的维度上:业务语义是否正确、架构方向是否合理、长期维护成本是否可接受、与现有系统的交互是否存在盲区、非功能性需求是否被满足。
这里有一个需要注意的坑:AI 预检的结论不能直接信任。它的“信心指数”和它的“准确率”不是一回事。我们遇到过 AI 用非常肯定的语气标注某段代码有安全漏洞,但实际上那段代码走了另一条逻辑路径,并没有问题——如果评审者盲目采纳 AI 的意见,反而会引入不必要的问题和浪费时间。
我们在流程里加了一条硬性要求:AI 预检的所有结论必须附上判断依据。如果 AI 给不出依据,它的意见只能作为“建议”,不能作为“门禁”。这个细节非常重要,建议大家一定做上。
3.3 测试环节:AI 生成测试用例的正确与错误用法
AI 生成单测是提效最明显的环节,也确实是最容易出“虚假安全感”的环节。
正确的用法,是把“业务规则”作为断言来源,而不是把“实现逻辑”作为断言来源。让 AI 根据需求描述生成测试用例,然后人类补充业务断言。例如,需求是“当用户余额不足时,下单必须失败,返回错误码 INSUFFICIENT_BALANCE”。AI 生成测试后,人类检查的要点是断言里是否真的检查了这个错误码,而不是检查有没有覆盖所有分支。
错误的用法,是直接把代码贴给 AI,让它“把每个函数都测一下”。AI 生成的测试会很有技巧地避开它自己的实现缺陷——因为它知道自己的代码里哪些逻辑是“设计如此”,哪些分支其实是漏写的。这个问题的本质,涉及到一个破坏性测试原则:测试和实现不应该有“共同的作者”。人类写测试时会站在使用者角度提出不同理解,AI 写测试则倾向于站在作者角度自我辩护。
所以我们的规范是:AI 辅助生成测试的前提,是人先写明白“此函数对外承诺的行为”,AI 再基于这个承诺编写测试代码。“承诺”写得越机械、越不可歧义,AI 生成的测试就越可靠。如果“承诺”本身是模糊的,那不如让人来写测试。
3.4 运维环节:智能告警与根因分析
AI 在运维环节的最佳切入点,不是“自动修复”,而是“缩小排查范围”。
传统的告警通知只是告诉你“服务响应时间超过阈值”,然后运维老哥开始登录服务器看日志、追链路、猜原因。AI 介入后,告警通知可以直接附带初步分析结果:从最近一段时间的日志中提取异常模式,从调用链数据中找出可疑的慢调用,甚至结合代码变更记录给出“最近一次发布涉及的相关模块”这类线索。
我们团队落地过一个场景:线上偶发出现订单状态不一致的问题,人工排查可能需要两三个小时,而且每次查完还不一定能复现。后来我们把告警接入了一个 AI 分析流程,让它自动关联同时间窗口的日志、消息队列消费记录和数据库事务日志,输出一份标记了异常时间线、报错签名和相关代码文件的“事故简报”。有两次线上问题,AI 给出的“可疑点”虽然不是最终根因,但大大缩小了排查范围,把 MTTR 从小时级降到了分钟级。
不过要强调一个前提:AI 运维的价值高度依赖数据质量。可观测性系统里如果本身就没有采集调用链数据,或者日志打印得毫无结构,AI 的分析结果就是“认真地瞎猜”。所以 AI 运维的第一步永远是打好可观测性基础设施,而不是先上 AI。
3.5 流程自动化:把 AI 嵌入 CI/CD 流水线
把 AI 作为独立工具让工程师自己决定什么时候用,和把它嵌入 CI/CD 流水线作为强制环节,效果是完全不一样的。后者才叫“工程实践”,前者只能叫“个人习惯”。
我们团队在 CI 流水线里加了三个阶段。第一个阶段是“提交预检”:代码提交后,先由轻量级 AI 模型做一次快速的静态检查和规范校验,不合格直接打回,避免把大量低质量代码送入后续阶段。这个阶段不追求深度,追求速度和覆盖面。
第二个阶段是“测试补全”:在单元测试覆盖率低于预设阈值的情况下,CI 会自动调用 AI 模型根据变更代码生成补充测试建议,并提交给开发者确认。注意,这里是“建议”而不是“自动提交测试代码”,因为 AI 生成的测试可能存在自证问题,需要人确认后才合并。
第三个阶段是“变更影响面分析”:发布前,AI 自动对比本次变更涉及的代码,结合历史问题库和依赖关系,输出一份变更影响列表,标注哪些模块存在较高回归风险,提示测试团队重点验证。这个流程看起来简单,但实际价值非常显著,因为它把 AI 的分析能力和人的决策责任分开了——AI 负责“提醒”,人负责“决策”。
CI/CD 里的 AI 环节一定要设计成“可跳过但有留痕”的机制。允许工程师在特殊情况下跳过 AI 检查,但必须填写原因。这样既不会因为 AI 误报拖慢紧急修复,又可以通过复盘分析跳过原因来持续优化 AI 检查规则。
4. 常见问题与排查技巧实录:那些课本上不会写的坑
4.1 AI 生成代码的质量问题:不报错不代表正确
AI 生成代码最常见的一类问题是:所有编译检查都通过,代码风格完美,但业务逻辑跑偏。它“很正确地实现了错误的需求理解”。
举一个真实发生的例子:某团队让 AI 实现一个“用户积分过期清理”功能,prompt 里写“清理所有过期积分”。AI 生成的代码正确地删除了所有过期记录,但没考虑到用户在过期前一天有积分变动、需要保留操作日志的合规要求。代码本身完全正确,但放在真实业务里就是事故。这不是 AI 的问题,是输入信息的缺失。所以要解决的不是“检查 AI 有没有写对”,而是“确认自己有没有说全”。
我们实践下来最有效的手段,是在任务描述里加一段“约束与例外”模板:这个功能的必须行为是什么、禁止行为是什么、历史上踩过哪些雷。把约束写清楚,AI 的准确率会大幅上升。
4.2 上下文丢失导致的连环错误
用 AI 做过大型需求的人大多遇到过这个现象:最开始对话时 AI 的表现很准确,但随着对话轮次增加,它开始“忘记”早期讨论中明确过的决定,甚至开始自相矛盾——前面确认过某个字段用整数类型,后面却生成了字符串类型,而且完全不觉得有什么问题。
这个问题的根源是模型的上下文窗口限制和注意力分布机制。上下文太长,早期信息会被“挤出”模型的有效注意力范围。这不是某个模型特有的缺陷,而是当前所有长对话 AI 工具的通病。
应对手段有两种。一种是人工的:每完成一个子任务,就把关键决定提炼成一句“决策摘要”,在下一次提问时重新粘贴给 AI。另一种是工程化的:通过外部工具把对话历史结构化,比如把关键决定写入一个独立的上下文文件,每次任务开始时自动加载。我们团队选的是第二种,因为靠人记忆不可靠。还有一种取巧的方式:给关键信息“加权重”,比如在 prompt 中把重要约束写在最前面并重复两遍,实测对稳定性有帮助。
4.3 安全与合规风险:AI 不会替你承担后果
AI 生成代码带来的安全风险,比很多人想象中更隐蔽。它不是“AI 会不会生成恶意代码”的问题,因为公开模型基本不会直接给出攻击性代码。真正的风险是“AI 会在无意识中生成有缺陷的逻辑”,比如缺少权限校验的接口、没有做 SQL 参数化处理的查询、不合理的加密算法选择。这些缺陷看起来都“很正常”,但恰恰是安全问题的温床。
我们团队的安全评审流程里,把“AI 生成代码”作为一个独立的标签。凡是被标记为 AI 生成的代码,Review 时会额外过一遍安全 checklist:身份校验是否在正确的位置、输入校验是否完整、敏感数据是否被日志记录、错误信息是否泄露了内部结构。实操中发现 AI 最容易在错误处理分支上遗漏安全控制:主流程写得很规范,一到异常分支就随便返回一个包含堆栈信息的错误对象。
合规层面要特别关注“代码来源”问题。直接使用 AI 生成的代码片段,如果模型训练自开源项目,可能引入许可证纠纷或者复制了受版权保护的代码段。团队落地 AI 工程初期不需要过度恐慌,但一定要建立“代码溯源”意识,对关键模块的 AI 生成代码做额外审查。
4.4 成本失控:AI 的隐形成本
很多团队引入 AI 辅助开发后,发现模型 API 账单涨了,但交付效率没有等比例提升。原因往往是使用方式出了偏差:工程师把大量简单问题也丢给 AI,比如“这段代码里的变量名是什么意思”“这个报错应该怎么处理”,这些问题的答案通过搜索引擎或文档可以在两分钟内找到,但工程师选择花五分钟组织 prompt、等待生成、再理解回复。
更隐蔽的隐形成本,是“返工成本”。AI 生成的代码看起来合理,但可能不符合团队现有的抽象层次和编码习惯,工程师看完之后往往不是“改几行”,而是“重新写一遍”——因为他要把 AI 的理解,翻译成团队内部约定俗成的风格。
控制成本的手段,一是给不同问题分派不同的工具,简单问题用轻量模型,复杂架构设计才用最高成本的模型;二是给团队设一条使用准则:AI 生成结果后,如果发现需要修改的内容超过三成,就直接自己写,不要继续“修 prompt 让它重写”——后续带来的沟通成本远超重写成本。
4.5 团队拒绝使用 AI 的心理障碍
这可能是被最少讨论、但影响最大的一类问题。很多团队的 AI 落地失败不是因为工具不好,而是因为资深工程师抵触。他们的典型心理是:“AI 写的代码我看不上”“我用这工具省下来的时间还不够我改它的问题”“引入 AI 之后我们团队的技术水平会下降”。
这些声音背后有合理的部分,但更多时候是对“被替代”的焦虑。我们团队处理这个问题的方式是:不强制、只引导。先从提效最明显的环节(写测试、写文档、生成重复代码)切入,让大家在低风险场景里尝到甜头。然后再逐步扩展到代码生成和架构建议。等到有人开始主动分享“AI 帮我快速验证了一个方案”的时候,这个团队的文化转变就基本成功了。
切忌在团队没有准备好时盲目设定一个“AI 使用率”KPI,那样只会催生大量无效的 AI 使用行为。真正有效的指标只有一个:在保证质量和稳定性的前提下,单位需求交付周期有没有缩短。
5. 如何把 Harness Engineering 落地到团队
5.1 先诊断,再开药:找到真正值得 AI 介入的环节
每个团队的工程现状差异极大,抄别人的 AI 实践方案是没有意义的。有的团队卡在需求反复变更上,有的团队卡在测试覆盖不足上,有的团队卡在生产环境故障频发上。AI 能帮助解决的方向截然不同。
落地的第一步是诊断。把研发流程从需求到上线拆成 8 到 10 个环节,统计每个环节当前的耗时、质量缺陷率、人员投入和瓶颈原因。然后重点盯那个“缺陷率最高”或“耗时最长”的环节,优先考虑 AI 介入。与其全面铺开,不如单点突破。
我们团队当初诊断后发现,真正的瓶颈是“线上问题原因排查”——修代码只要半小时,但找原因要两三天。所以我们最先落地的是 AI 辅助日志分析和告警关联,而不是 AI 编码助手。这个顺序帮助团队建立了对 AI 的信任感。
5.2 小步试点:什么场景适合当第一个吃螃蟹的项目
第一个 AI 试点场景的选择,直接影响团队的信心。应满足三个条件:高频(团队经常遇到)、低风险(出错不会造成重大事故)、可量化(能清晰对比引入 AI 前后的差异)。
具体来说,单元测试生成是很好的第一个试点。它高频、出错影响范围小、且有覆盖率数值可以度量。代码补全也是好选择,但它更偏个人习惯,不容易形成团队层面的方法论。
不太建议第一个试点选在核心交易链路或资金相关的模块。不是说 AI 一定做不好,而是这些场景的信任成本太高,一旦出问题,反对声会立刻淹没尝试的勇气。
选好试点后,建立一个持续运行的对比组:同样的需求类型,一组用 AI 辅助,一组用传统方式,对比产出周期、缺陷密度和返工成本。数据跑两个迭代后,再做下一步决策。
5.3 不度量就失控:哪些指标值得看,哪些指标是陷阱
Harness Engineering 的闭环价值,取决于你有没有一套能真实反映 AI 效果的度量体系。但 AI 时代的度量很容易落入陷阱。
传统指标如“代码行数”“提交次数”在 AI 时代已经完全失真,因为 AI 一次能生成大量代码,但这些代码可能不是从实际需求出发的。最误导性的指标是“AI 采纳率”——它只说明工程师点了多少次“接受建议”,却完全没反映质量。
我们团队实际关注的是四个指标:单位需求的交付周期(从需求澄清到上线的总时间)、线上缺陷率(按严重级别分开统计)、单次评审的平均耗时(衡量评审压力)、以及 AI 介入环节的“返工率”(AI 产出后需要人类重写的比例)。没有 AI 参与之前的历史数据做基线,这些指标都没有意义。
另外,建议每两个迭代做一次“AI 使用复盘”,专门讨论哪些环节的 AI 使用带来了真实提效,哪些是虚假繁荣,为下一个迭代的流程调整提供依据。
5.4 文化与机制:让 AI 实践自运转而不是靠推动
任何工程实践的成功落地,最终都靠两个东西:机制和文化。机制是硬性的流程保障,文化是软性的认知共识。
机制层面,要把 AI 相关的环节“写进流程”而不是“挂在嘴上”。代码评审规范里写清楚“AI 预检必须通过”,需求模板里加入“AI 上下文结构化”字段,发布 checklist 里包含“AI 变更影响分析已完成”一栏。只有写进流程,才有可持续性。
文化层面,要明确鼓励“分享 AI 使用心得”和“公开 AI 踩坑经历”。我们团队每两周有一次内部分享,专门有人讲“我用 AI 写了什么”“这个 prompt 哪里出了问题”“AI 生成的测试漏了什么场景”。这种分享的文化价值在于,它把 AI 使用从“个人摸索”变成了“集体经验池”。
有一个特别有效的小机制:团队成员在提交代码时,如果用了 AI 辅助,可以顺手在 PR 描述里写一句“AI 辅助了哪些部分、人类调整了哪些部分”。这句话积累下来,就是团队内部最真实、最有价值的 Harness Engineering 落地手册。
6. 最后再分享一点个人体会
我自己这一年多最大的感受是:AI 工程实践的落地难题,不在于模型能力,也不在于工具成熟度,而在于“工程思维”的迁移。过去我们训练自己“怎么写代码”,现在我们更需要训练的是“怎么给 AI 定义问题、怎么验证 AI 的输出、怎么把 AI 放进一个可信任的流程框架”。
有很多老工程师担心长期用 AI 写代码会让自己失去写代码的手感。我个人觉得这个担心是多余的。就像当年从汇编语言到高级语言,从手动部署到容器编排,工程师的核心能力从来不是“某些具体的操作技能”,而是“把问题抽象成可解决模型”的能力。AI 会把“写代码”这项技能变得便宜,但“知道该写什么、为什么这样写、这个系统五年后还能不能维护”的能力,会越来越值钱。
如果这篇文章只能留下一句话,我希望是:不要拒绝 AI,也不要盲从 AI,把它当成工程系统中的一个普通组件,定义好它的输入输出,约束好它的行为边界,验证好它的每一个产出。这件事本身,就是我们这个时代工程师最重要的基本功。