Vibe Coding VS Spec Driven
Vibe Coding VS Spec Driven
Vibe Coding(氛围编程)和 Spec Driven(规格驱动开发)是当前两种非常流行的开发方式。我用一张表来展示它们之间的差异:
|
项目 |
Vibe Coding |
Spec Driven |
|---|---|---|
|
核心思想 |
边想边写,对话式快速迭代,想到哪写到哪 |
文档优先,标准先行,先定义所有规则,再交给 AI 执行 |
|
主要优势 |
灵活度高,上手门槛低,适合探索性开发 |
全程可控可追溯,代码规范度高,Bug 率低,长期维护成本极低 |
|
主要缺点 |
极易跑偏,代码质量不可控,多次迭代后逻辑容易混乱,长期维护成本极高 |
前期需要投入时间编写规范文档,灵活度相对较低,不适合频繁变更的探索性项目 |
|
适用场景 |
小型个人项目、快速原型验证、临时 Bug 修复、简单脚本编写 |
企业级项目、团队协作、长期维护的生产级项目、核心业务功能开发 |
目前绝大多数开发者用的都是 Vibe Coding,上来就一两句话的需求丢给 AI,让它直接写代码,边写边改,最终很容易陷入“AI 写的代码完全不符合业务逻辑,改的时间比自己写还长”的困境。
对于企业级的长期项目、团队协作场景,我强烈推荐使用 Spec Driven 开发范式,这是目前解决 AI 代码失控、保证交付质量的最优解。市面上也有不少 Spec Driven 的工具,比如 OpenSpec 和 Speckit。至于怎么做好 Spec Driven,这是一个非常复杂的话题,下次可以单独来讲,这里先略过了。

管理上下文
我们都知道模型的上下文是有限的,目前主流模型一般在 200k 左右。看起来很长,但项目的长期记忆、各种工具调用的结果、对话记录都要塞进去,其实很容易占满。而且上下文超过一定程度后,一是 AI 处理速度明显下降,二是因为 LLM 的注意力机制,部分关键信息可能被遗忘,导致任务成功率下降。
所以我们需要主动控制上下文大小,尽可能精简上下文,比如控制 AGENTS.md 的大小等,这些前面已经提到过。
另外,很多同学习惯在一个对话上下文里不断下达任务,让 AI 持续工作,这个习惯不太好。如果任务之间没有太多关联性,最好新开一个会话来完成新任务,而不是在旧会话里继续往下聊,否则旧任务的信息和数据反而会干扰 LLM 的判断。即使任务之间有关联,在完成关键节点后,也应该用编程工具自带的压缩指令,主动总结、压缩上下文,清除冗余的工具调用等无效信息,让大模型始终保持在高效工作的状态。
出错了怎么办
人都会犯错,AI助手犯错也是非常正常的事情,如果AI 没有按需求完成任务,先别急着骂模型傻,可以按照下面的步骤来排查:
1. 判断问题的根源
究竟是模型的智能不足,还是我们给出的信息不足以完成这个任务。
比如让 AI 写一个排序算法的代码,这个任务一般不需要外部信息,靠模型内部的“常识”就能解决,如果还是失败,那很可能是模型自身的问题。反之,如果让 AI 对接一个外部系统,但连外部系统的 API 都没提供,那也别指望它能正确完成——这属于上下文信息量不足。
2. 如果是模型智能问题
最直接的方式当然是换模型,用更强、更大的上位模型来替代。但有时客观条件限制,可能没得选,那就只能人工帮它拆解任务,将一个复杂目标拆成多个相对简单的子任务,并给出明确的路径指引。这样能明显提升 AI 的成功率,有点像你刚进公司时,组长带你完成困难任务的过程。
3. 如果是上下文信息缺失
补充关键信息就行,比如 API 文档在哪里、怎么查。这里有个小技巧:交代完任务后,先让 AI 确认一下,当前信息是否足够完成任务,还有什么需要补充的,而不是布置完任务就立刻让它开始干。
4. 如果一个错误重复出现好几次
说明我们的 AGENTS.md 可能存在问题,缺少一些关键的约束或指引。需要把当前犯错的场景补充进去。如果已经有了明确说明,AI 还是会犯错,可以尝试调整说明文本的格式、位置等,这属于提示词工程的范畴了,不同模型对提示词的敏感程度不一样,只能多试几次。
5. 总结复杂问题
如果你和 AI 配合完成了一个复杂问题的排查,中途你给了大量指导和纠正,那么任务完成后,最好让 AI 把排查过程整理成文档。下次遇到类似问题,就可以直接参考之前的排查过程,不必每次都重复一遍痛苦的指导流程。这和我们解决完难题后通常写文章总结的道理是一样的。
总的来说,遇到问题是难免的,但要尽可能坚持让 AI 自己处理、解决问题,我们只需要从中给一些提示和指导就行,而不是遇到一点问题就觉得 AI 不行、浪费时间,直接人类接管。
和 AI 结对写代码是需要磨合的,你也要多练习,才能知道 AI 的能力边界在哪里,怎么跟 AI 沟通、交代任务的成功率更高——我们也要学会成为一个 Leader,而不是手下人一出错就亲力亲为。
当然,最终的代码质量底线还是需要人类来把控。这一步主要是在代码提交时,用 Git 工具检查 AI 修改的代码范围和内容是否符合要求。我通常会先让 AI 自己审查一遍(很多开发工具都有内置命令支持,比如 OpenCode 的 /review,也可以根据自己的情况写提示词封装一个命令),然后再自己审核和测试,这样出错的概率会更小。
总结
回过头来看,AI Coding 带给我们的,其实不是“程序员被替代”的焦虑,而是一次角色升级的机会。
你不再需要把大量精力消耗在机械的编码和调试上,而是可以把更多时间放在真正有创造性的工作里:架构设计、需求拆解、规范制定、质量把控。这些才是技术工作中更有价值的部分。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)