Vibe Coding 的工程化约束

0xnycth 2026-10-26 09:53 1


背景:自年初以来,我在工作中较为深入地使用 AI 辅助日常开发,所涉项目均为公司的实际上线项目。期间与同事交流了不少思路,也取得了可观察的改进。因此我认为可以就这几个月的实践做一次阶段性总结。



本文讨论的对象不是具体工具,而是开发流程中的约束手段。


一、核心矛盾


当前的主要矛盾在于:AI 快速推进开发的过程中,代码的不可控性与线上项目稳定性之间的矛盾。


对一线开发者而言,线上项目的稳定性无疑最为重要,而稳定性受到开发过程中多个环节的影响。这些环节可以划分为开发、审核、测试与上线后的救火四个阶段。


另一个维度是开发速度。在 AI 辅助下,当前的开发速度与去年已不可同日而语,论坛中也不乏“不再阅读代码、直接交由 AI 完成全部实现”之类的说法。


但线上一旦出问题,开发者不仅要在家中紧急处理,还需要快速定位问题,并及时反馈给其他部门。若问题频繁出现,不仅 KPI 会受到影响,甚至可能因此失去工作。


这里需要说明一个例外:目前在中美两国,都已出现仅由一人把控方向与决策、由 AI 组成的开发集群协同推进的做法,且这类集群正在快速发展;前段时间在国内受到关注的“一人公司”也基于类似思路。该情形不在本文讨论范围内,尚待进一步观察。


因此在 AI 辅助之外,人类工程师如何把控开发质量、管理开发流程,是一个至关重要的工程问题。


二、工程化应对


1. 维护 AGENTS.md


该文件是各家 Agent 与开发者开始对话时的默认基础,用于指导 AI 快速理解项目结构,而不必重新通读代码。若其中关于项目结构的内容写得足够好,可以规避很多问题。


例如我在维护多年的项目中多次遇到的情况:某个模块已有标准化的调用方式,但在某次会话的修改过程中,AI 会漏掉这些既有规范,自行构造一套新代码来实现同样的功能。


我的实践经验是:当此类问题反复出现时,在 AGENTS.md 中明确该规范,往往是最简单有效的手段。


此外,我在开发过程中参考了 DeepSeek Harness 的 AGENTS.md,借鉴了其中不少实践经验,感谢其开源。


2. 开发者需要理解代码


这一部分可能存在争议,但我仍认为有必要写出来,因为其中涉及的并不只是技术问题。


很多人在工作中都会经历一个类似的考验,即对自己开发的模块了解到什么程度。无论是同事询问具体的实现细节,还是开会解决问题时需要快速给出大致结论,都取决于对模块的熟悉程度。


在我较为激进地使用 AI 推进项目的阶段,很多时候我对代码细节并不清楚,只能回答:“我去看一下代码,稍后答复。”


这在某些时候会显得不够专业,尤其是在线上出现问题、上级在工作群中询问情况、需要快速解答时——回答的快慢是一个明确的信号。若电脑就在手边,确实可以在几分钟内通过 AI 得到结果;但若身处会议室或没有电脑的场景,这件事就难以做到。


上面这些说法难免带有职场色彩,其核心观点是:如何从需求中筛选出可能出问题的核心逻辑,将其记在脑中,再交给 AI 实现。


我曾与芬兰工程师共同工作两年,他们对分段提交与模块开发的极致要求,确实影响了我对架构的思考。


分段提交在 AI 时代的价值在于:它能帮助我更快地熟悉代码。


具体而言,需要把自己当作审核员:先自行思考,再理解 AI 的实现,检查其中的问题或者学习其思路,最终决定修改还是同意这次提交。


这与我年初关于 AI 对程序员工作影响的判断是一致的。围棋领域已经完整经历了这一过程:AI 完全重塑了围棋的学习与训练方式。不过这属于题外话。


3. 流程化


接下来讨论一些更具体的问题,也是我在开发中实际遇到的。


首先是注释。我的注释均使用中文,因此无论是 GPT 还是 Opus ,都经常出现用混乱的中文撰写含义不明注释的情况;即使是 DeepSeek 也时常如此。


其次是规范失效:即使我在 AGENTS.md 中写明了针对某个问题的具体要求,AI 的实现仍然会偏离正轨。


第三是修改范围外溢:我只希望 AI 修改 A 模块,它却扩大了范围,一并改动了 B 模块,我检查后不得不还原这部分实现。


如果先把整个开发阶段拆分为若干节点,那么现在需要做的就是在每个节点内部再做细分。希望达到的目标是:在人工介入审核之前尽可能减少出错,避免浪费不必要的精力。


这一思路与前段时间某 AI 团队开发者提出的 Loop 思路一致,即在一个大任务中进行多轮循环检查。现实约束在于 token 消耗带来的成本。


排除成本因素,这套流程在我的实际开发中确实解决了上述几类问题。而且可以针对每一项必要的检查单独编写一套清晰规范,从而避免把全部内容都塞进 AGENTS.md 。


4. 单元测试


在 AI 时代之前,对中小公司的开发者而言,编写单元测试近乎奢侈;而在当前阶段,我认为它已经成为标配。


需要先承认一个现实:单元测试的代码我基本不看,但我认为其价值在于约束 AI 产出正确的代码。


这部分并无太多可写之处,但需要明确一个现实:即使单元测试全部通过,AI 的代码仍可能出问题。业务的变化快速而复杂,总会给项目带来新的挑战。


5. 多模型互审


由多个模型互相审核代码,无疑是更稳妥的方案,但同样涉及成本问题。而最奢侈的做法,当然是多个模型进行多轮审核与修改。


实际开发中我也是这样做的。由于各家模型往往只在自家的 Agent 软件中才能发挥更好的效果,开发者就需要扮演传话员的角色,每天在 Codex 与 Claude Code 之间复制结论,交由另一方评估与修改。


之所以没有自动化,主要原因在于成本;其次,在阅读它们发现的问题时,对个人而言也是学习的机会。对于竞态、线程安全这类不易发现的问题,AI 审核确实具有独特优势。


三、小结


以上内容都指向同一个核心矛盾:


AI 快速推进开发的过程中,代码的不可控性与线上项目稳定性之间的矛盾。


这些问题的共同根源在于:当前大模型的内部运行对人类而言是一个彻底的黑盒。我们无法对过程进行干预,只能从输入端与流程上进行工程化控制。


如何把一件不可控的事情尽可能做到可控,我认为是当前 AI 使用过程中需要逐步解决的问题。


这不仅对程序员构成挑战,对当前各行各业接触和使用 AI 的人群同样如此。


这或许是未来一段时间内的趋势。

最新回复 (17)
  • summertimesad 10-26 10:01
    1楼
    “开发者就需要扮演传话员的角色,每天在 Codex 与 Claude Code 之间复制结论,交由另一方评估与修改”

    多 Agent 之间的通信 使用文件(比如 xx 审核意见.md )作为载体,就不用来回复制粘贴了
  • 0xnycth 楼主 10-26 10:04
    2楼
    @summertimesad 后面就在这样搞了,写的时候忘记写进去了哈哈哈。

    我一般碰到很大的开发任务,才用文档传递信息,小任务确实都是复制黏贴就完事了。
  • iflyapi 10-26 10:31
    3楼
    哈哈,我之前也是 “每天在 Codex 与 Claude Code 之间复制结论”,后来干脆自己写了一个多 Agent 可移交、可相互 review 的工作台,后来发现挺多类似的:
    https://github.com/flyhero/antumi
  • qaq13037 10-26 10:37
    4楼
    十分认同,我最近才意识到你说的第二点,由于和 ai 搭配开发效率大幅提高,不能更深入的理解代码,所以导致我对项目的把控不足,就算前期设计阶段都由我来决定,但是编码阶段的变更,以及项目周期的拉长仍然会导致项目的知识混乱,无法随时随地准确的描述项目的细节,这在手工编码阶段,这个现象是绝不会存在的。目前我的做法是每阶段让 ai 总结一个包含功能、流程、原理的阶段性文档,我强行理解并记住,并结合 ai 的抽查。方法有些丑陋,我打算试试你说的方式。
  • kimhooo 10-26 11:19
    5楼
    我甚至觉得 ai 时代下的单元测试也没有必要了,我之前看过很多 ai 写的单元测试,很少能抽象出合适的测试范围的,有点既做裁判也当运动员的味道。后面想了下,既然我们不再 review 代码,那其实代码就是好的文档,任何人为添加的文档都是拖油瓶,单元测试同理
  • theohateonion 10-26 11:20
    6楼
    所有的目标偏离都是上下文管理的问题,https://www.dbreunig.com/2026/10/24/the-state-of-context-engineering.html 推荐一读
  • Kaly33 10-26 11:25
    7楼
    对 “开发者需要理解代码” 极度赞同。只能回答:“我去看一下代码,稍后答复。” 可能也只是将 问题再次转发给 AI ,人就变成了现实世界的 MCP 而已。
  • 0xnycth 楼主 10-26 11:32
    8楼
    @qaq13037 感谢认同
  • 0xnycth 楼主 10-26 11:33
    9楼
    @iflyapi 您这个工具真的非常好,因为 AI 经常会用一些我不了解的知识点,我也会经常询问其中某个概念或者代码是什么意思,这是一个很好的学习过程。
  • 0xnycth 楼主 10-26 11:39
    10楼
    @qaq13037 我说的这个方法,其实还是受限于当前我自己的理解速度和能力,但是因为碰到不懂的问题可以让 AI 更详细的讲解,其实也是一个很开心的学习过程。
  • v00O 10-26 13:18
    11楼
    你的思维还在现在开发者的思维上来思考这些,以后可能会发展成完全替代这个群体,只需要有更完善的机制去验证 AI 写好的服务(代码也不看)达到标准即可上线,只为结果负责,不看内部实现逻辑。
  • jjwjiang 10-26 13:23
    12楼
    @kimhooo 实践下来非常重要。甚至我觉得是 agent coding 里最重要的一环。对于一轮修改,UT 确实冗余,但是超出一轮以上的修改,UT 极大的约束了 AI 的稳定性,起到了锚点的作用。
  • zuokanyunqishi 10-26 13:33
    13楼
    @iflyapi 这个不错,可以的.要警惕的是过度设计和偏离范围...
  • kimhooo 10-26 14:25
    14楼
    @jjwjiang 在你的实践里,你会看单元测试的实现吗?还是就让 ai 自主发挥,因为我体感作用不大,想看下你的实践方式
  • 0xnycth 楼主 10-26 14:33
    15楼
    @kimhooo 我是不看的,作用是偏心理按摩的,因为可以上交一个报告,写上:进行了 XX 项单元测试,全部通过,覆盖了 XXXX 场景。

    如果要具体测试某个模型,写单元测试和不写单元测,进行多轮的开发的情况下,对最终结果影响几何。

    这个问题我认为都可以拓展成一个论文了,而且这其中影响因素也非常多,上面有朋友贴的那个对于上下文管理的文章,也算是很好的参考。
  • skyfore 10-26 16:55
    16楼
    在我的场景中已经慢慢降低 coding 的约束了,更多的是需求理解和上下文管理。
  • 0xnycth 楼主 10-26 17:16
    17楼
    @skyfore 其实我想也更激进一点,但是这事情吧,会受限于领导认知和业务场景。

    主要问题还是人要背锅,背锅的时候就要额外注意一些事情。
* 帖子来源V2EX
返回