代码越写越乱? 从 Vibe Coding 到 Spec + Harness

文章参考来源:B 站-AI 林湛星的系列视频 + 网络实践补充 + 个人探索思考。

本文梳理当前 AI coding 的几种实践方案,以及它们各自该用在哪,给你提供AI编程治理的思路,希望对你有所帮助~

为什么AI编程越写越乱?

AI 目前是概率模型,不是因果链模型。它靠概率生成内容,所以一定会出错------不是偶尔出错,是结构性的、不可消除的出错。

这决定了用 AI 写代码的核心矛盾:AI 能快速产出大量代码,但你没法完全信任它。这篇文档梳理的就是怎么解这个矛盾------在不同项目阶段,用不同手段把 AI 的不确定性约束在可控范围内。从 Vibe Coding 的"放手跑",到 Spec 的"写清楚再动手",再到 Harness 的"用流程锁死",本质上都是在回答同一个问题:怎么让 AI 出错时能被发现、被兜住。

AI 编码整体框架:三个阶段

项目从 0 到 100,治理手段跟着变:

  • 0→1(MVP 阶段):Vibe Coding,少约束,让模型自由发挥跑出原型。前期最重要的是速度和验证想法。

  • 1→10(初期运行):引入 Spec,把意图、边界、决策沉淀成文档,让 AI 在有约束的上下文里干活。

  • 10→100(长期稳定运行):引入 Harness,把规范变成 AI 绕不过去的物理锁。

阶段 核心手段 约束强度 适用场景 升级信号
0→1 Vibe Coding 几乎无约束 探索、验证想法 MVP 跑通,要长期运行
1→10 Spec 文档引导,靠 AI 自觉 已稳定、需长期运行 文档管不住,AI 不听话
10→100 Harness 流程强制,绕不过去 复杂项目、关键功能不能错 ---

MVP = Minimum Viable Product,最小可行产品。Spec = 规格说明书。Harness = 治理框架/护栏系统。

判断什么时候升级,标准很直接:当文档的引导型限制已经管不住项目了,就该升级。 项目变复杂了,光靠写文档告诉 AI 该怎么做、不该怎么做,AI 开始不听话或者听了也做不对,这时候就需要更强制的手段。反过来,项目还没跑稳就急着上 Harness,只会拖慢反馈,像早期瀑布------Thoughtworks 特别提醒过这一点。

第一部分:MVP 阶段(0→1)Vibe Coding

Vibe Coding:放手让 AI 跑原型

小项目、项目初期、探索阶段,优先 Vibe Coding。别急着堆规则,提前写太多反而限制聪明模型发挥,模型在没约束时往往能给出更贴合的解法。Karpathy(前 Tesla AI 总监、OpenAI 创始成员)造"vibe coding"这个词时,本意就是放手让 AI 跑原型。

但"放手"不等于"放羊"。MVP 阶段有两件事值得在最开头就做,花不了多少时间,但后面省大量返工。

开局第一步:跟 AI 讨论清楚项目因果链

在写第一行代码之前,先跟 AI 把整个项目的因果链聊清楚:

  • 为什么要有这个项目? 解决什么问题,不解决什么问题。

  • 项目是什么? 大概是个什么东西,核心功能有哪些。

  • 要达到什么效果? 用户用完之后应该是什么体验。

  • 不做什么? 哪些功能明确不在这一版范围内。

这些信息不一定要写成正式文档,但一定要在对话里讲清楚,让 AI 建立起项目的整体认知。后面不管 AI 怎么换会话、怎么重新开始,这套因果链都是它的"入职培训材料"。

一句话:spec 不写百科,写因果链。 你可以不懂代码,但要懂业务和约束。把"是什么、为什么、要什么效果、边界在哪、禁止做什么"讲清楚,比写一堆技术细节有用得多。

定义 AI 协同规范

除了项目本身的信息,还有一件事建议在最前期就定下来:你的 Agent 应该以什么方式辅助你工作。

这不是项目规范,是协同规范------定义的不是"这个项目要怎么做",而是"AI 和人怎么配合做"。比如:

  • 遇到不确定的地方,是直接给一个方案还是先问你?

  • 改代码之前,要不要先说明改了什么、为什么改?

  • 做完一个功能,要不要主动跑一遍测试告诉你结果?

  • 哪些操作需要你确认才能执行?

这些东西写在 AGENTS.md 或项目根目录的协同文档里就行。定义清楚之后,AI 的行为风格就稳定了,不用每次开会话都重新教。

MVP 之后的工程化治理:先重构打地基

前期用 Vibe Coding 快速建出 MVP 功能没问题,但当你判断要进入工程化治理阶段了,别在烂摊子上硬补规范。先对项目做一次重构------理清结构、拆好边界、补上测试骨架------地基打稳了,后面的 Spec 和 Harness 才挂得住。在乱码堆上写规范,AI 照样会被带跑偏。

判断是否要进入工程化治理,还有一个维度:这个项目要不要稳定、长期地运行。 一次性脚本、演示 demo,跑通就行;要长期维护、多人协作、面向用户的生产代码,治理的投入才划得来。BCMS 的说法是,成熟的工程师对原型"氛围编程",对一切要上线的代码"规范驱动"。

第二部分:初期运行(1→10)+ Spec Coding

项目跑起来了,MVP 验证了想法,接下来要让它稳定运行。这个阶段的信号很明确:改 A 错 B、逻辑冲突、改完引发新问题。AI 协作开始拖效率了,就该引入 Spec。Thoughtworks 把 SDD(Spec-Driven Development,规格驱动开发)列为 2025 年最关键工程实践,理由是 AI 让原型太容易,反而让人忽视工程规范,产出一堆不可维护的一次性代码。

上面这张图概括了 Spec 阶段的核心------把意图、上下文、流程三层信息拼成一条清晰路径,让 AI 知道往哪走。

1. 准确表达意图,并把意图文档化

一开始就用语言把意图讲清楚:改了什么、为什么改。意图模糊是 AI 跑偏的根因。行业里把这点推到极致的做法是 "spec 即 prompt" ------写代码前先写规格,代码只是规格的产物(BCMS)。Microsoft 的表述是"先对齐,再让 AI 加速执行",spec 贯穿整个生命周期。

这里要补一层:意图不只是"要做什么",还要包括"明确不做什么"和"为什么这么决策"。

  • 明确要做的点明确不做的点,都写成文字放进项目规范里。不做的边界画不清,AI 就会自作主张往外扩,给你塞一堆你没要的功能。

  • 重大决策及原因也要落成文字。比如你做了一个架构选择,可能会影响后续功能走向,就把这个决策和背后的原因写进文档告诉 AI。否则后续迭代时,AI 不理解当时的取舍,很可能"优化"掉你刻意保留的设计。

这一层行业里叫"项目长记忆"------AGENTS.md、知识图谱、ADR(Architecture Decision Record,架构决策记录)都是载体。经验是:知识必须沉淀成版本控制下的文档或代码注释,AI 才能"看见";口头约定没用(CSDN 实践总结)。

2. 控制上下文

让 AI 能顺着项目结构和框架,快速定位到要改的地方,以及改动可能波及的地方。这对应流程图的第一个判断节点 "位置明确?"

  • 位置明确 → 直接动手改。

  • 位置不明确 → 先定位(排查 bug、分析参数),别让 AI 在错的上下文里一本正经地胡说。

落地手段:

  • 别把整个仓库喂给 AI。@Files 或专门的 docs/ 目录,只给必要的"知识切片",避免长文本导致注意力弥散。

  • 用 MCP(Model Context Protocol,模型上下文协议)消除信息断层。 得物团队 接两个 MCP:一个直连接口文档,一个直读飞书云文档,让 AI 不靠人转述就能拿到真实上下文。

  • AGENTS.md 当目录,不当百科。 它只告诉 AI 去哪找更深层信息------架构文档在哪、设计原则在哪、执行计划在哪。大约一百行就够,不是塞满知识(36氪)。

  • spec 本身就是上下文管理工具,让 AI 在"有约束的上下文"里干活,而不是全局自由发挥。

3. 上下文治理:该换会话就换

AI 对这个项目永远是第一天上班。 每次新会话,它都是从零开始。

当一个对话的上下文已经比较混乱,或者特别长、快要触发自动压缩的时候,别硬撑------切换一个新的对话。在新的干净上下文里,通过 Spec(或其他文档)重新告诉它:

  • 项目是什么 ------ 当前项目的目标和范围。

  • 当前要做什么 ------ 这次的任务是什么。

  • 决策规范 ------ 之前做了哪些关键决策,为什么。

  • 行为边界 ------ 什么该做,什么不该做。

这就是上面那张图说的------Spec 就是 AI 的入职培训。 每次新会话,拿 Spec 给它做一次干净的 onboarding(入职引导),生成质量会比在一个污染过的长对话里硬聊高得多。

4. 建立固定流程

流程稳定且重复执行的,别每次重发 prompt,而是写 skill / 脚本,让 AI 稳定做同一件事,降低不一致和出错概率。

工业化的版本是 SDD 四阶段循环,每个阶段都有人工检查点:

  1. Specify(写什么、为什么)------最慢也最重要,这里花的时间下游 10 倍回报。

  2. Plan (怎么做)------产出 plan.md,架构、数据模型、选型。

  3. Tasks(按什么顺序)------拆成可独立交付的原子任务,清单要做到"初级工程师能照着执行"。

  4. Implement (去做)------agent 逐个任务执行,每个任务结束验收,不达标就在 spec 边界内迭代,不自由跑(BCMS)。

关键在人审每个阶段边界:spec 审过才进 plan,plan 审过才拆任务,任务审过才实现。这就是它"可预测"的来源。GitHub Spec Kit 把这套流程固化成 slash 命令:/constitution/specify/clarify/plan/tasks/implement/checklist,模型无关。

5. 制定规范与验收标准

给 AI 明确编码标准 + 验收标准,别让它自己定义"做完"。

得物团队 落地的是 "约束 + 示范 + 视觉"三层规范体系

载体 作用
约束 CLAUDE.md 硬规则,不可违反
示范 Rules 给样板代码,照着写
视觉 视觉稿 对齐 UI(用户界面),防走样

光说"要规范"没用,得给样板。

验收标准要可执行。BCMS 推荐 EARS 记法 (Easy Approach to Requirements Syntax,需求简易语法),五种句式把模糊需求变成无歧义、可测试的声明,AI 能照着生成代码再生成测试。配合 AI 版 TDD (Test-Driven Development,测试驱动开发):先让 AI 按 spec 写测试用例,再写业务代码。Microsoft 把验收这步叫 Validate------验证产出是否匹配 spec。

6. 做好最终审查,关键功能上回归测试

最后必须有收尾流程:跑测试 + 人审 AI 产出是否符合需求。人在回路不是可选项,是 SDD 的地基(Thoughtworks)。

审查重点防 AI 的失效模式。得物团队 复盘总结了几类:

失效模式 表现 防御手段
意图偏移 代码跑得通但偏离需求 Spec 明确意图 + 人审
API 幻觉 编不存在的接口 MCP 直连真实文档
规模化衰变 项目一大就失控 工程化重构 + Harness

BCMS 也提醒两个坑:别让 agent 自由运行不设边界,别跳过 clarify 阶段------消歧省的时间比返工省得多。

对于项目里核心、关键、稳定不能出错的内容,单独加一道:每次修改相关功能后,让 AI 跑回归测试。 这不是全量测试,是针对关键路径的专项回归------支付、鉴权、核心数据流这类一出事就致命的功能,每次改动都自动验证没被改坏。这比等最后人工审查才发现问题省太多事。

7. 持续迭代,把规范当活文档

规范、文档、工程化体系不是写一次就完了。在持续迭代过程中,不断优化、沉淀、整理、更新它们:

  • 每次发现 AI 反复犯的错,就补一条规则或一个 skill。

  • 每次做完一个重大功能,把踩的坑、做的决策回写到规范和 ADR 里。

  • 工程化体系(测试、CI(持续集成)、lint、hook)随项目演进持续加固。

规范是活文档,跟代码一起进版本控制、一起迭代。写完就扔的规范等于没有。

Spec 阶段工具

工具 核心特点 适合谁
Cursor Plan Mode + AGENTS.md, inline diff 审 PR 快 轻量路线,快速迭代
Claude Code Plan Mode + claude.md 已在 Claude 生态里
GitHub Spec Kit 开源、模型无关、slash 命令全套 想跨工具统一流程、不锁厂商
Superpowers 系列结构化 skill,强制 RED-GREEN-REFACTOR(依靠测试驱动开发 TDD ) 用 Claude Code,要强工程纪律
OpenSpec 轻量、框架无关 独立开发者

Superpowers 是 Jesse Vincent(obra)创建的开源框架,强制"先写失败测试,再写代码,没测试会被框架删掉"。核心一句话------"不让 AI 更聪明,让 AI 更有纪律"(Emelia.ioMarc NuriDatawhale)。

第三部分:长期稳定运行(10→100)+ Harness Engineering

什么时候引入 Harness

项目从 1 到 10 的阶段,Spec 能管住大部分问题。但当项目继续长大,复杂度到了一个临界点------仅仅依靠文档的引导型限制,已经没办法让整个项目好好运行了。

信号是这样的:Spec 写了,AI 也读了,但该犯的错还是犯;文档越来越长,AI 却越来越不听话;有些功能出了问题就是灾难性的,光靠"告诉 AI 别搞砸"已经不够了,你需要的是"AI 搞不砸"。

这时候就该引入 Harness。原则是:项目里有一些功能是必须要保证绝对没问题的,就用强制的规范和流程去做,而不是靠 AI 自觉。

什么是 Harness

Phodal 把 AI coding 的控制面画成四层逐层外扩:

层级 名称 管什么 约束强度
第 1 层 Rule(规则) AI 的默认行为 最弱,靠自觉
第 2 层 Spec(规格) 单次变更的范围和边界 中,文档引导
第 3 层 Loop(循环) 动态执行机制 较强,流程约束
第 4 层 Harness(治理) 组织级治理 最强,物理锁

Harness 是最外层,把前面三层汇总进可执行的治理。一句话定义它:Harness 回答的不是"AI 多强",而是"这次变更为什么足够可信"。

它被叫作 AI 编程的"治理操作系统"和"护栏系统"------通过"规则即代码"和自动化反馈,把 AI 的创造力圈在可信边界内(CSDN)。

核心机制

光有规范是"软约束",Harness 把它变成"硬执行":

Spec(软约束) Harness(硬执行)
约束方式 文档引导,靠 AI 自觉 流程和工具强制,绕不过去
AI 能否忽略 不能
典型手段 AGENTS.md、规范文档、ADR CI、pre-commit hook、agent 职责隔离
适用阶段 1→10 10→100

具体机制有这几条:

  • 生成器-评估器循环。 AI 写代码 → 另一个 AI(或校验器)审查 → 不通过打回重写 → 直到通过。传统 code review 是人审人,Harness 里变成 agent 审 agent(腾讯云菜鸟教程)。

  • CI 作为 Harness。 Carlini 的实战复盘 里,Claude 在项目后期频繁破坏现有功能,解法不是换更强的模型,而是更严格的 CI------"用 harness 层的方案解模型层的问题"。lint、typecheck、tests、pre-commit 这些检查前移到 hook 里,违反就过不了(Phodal)。

  • 职责隔离。 负责调研的 agent 只能读不能写,负责规划的不能碰文件只能出方案,负责编码的只管写,负责验证的只管查。每个角色的工具权限出厂就定死(36氪AI 小圈)。

  • 自动化验证回路。 AI 编写 → 自动测试 → 自动分析日志/监控 → 自动修复,人只在关键决策点介入(CSDN)。

  • 防"虚标完成"。 用 JSON 结构追踪 feature 状态(机器可读,AI 不易乱改),干活 agent 只能标"通过/不通过",必须真测过才能标 passing。Markdown 只当路标,不当严格流程(36氪)。

为什么这层不可省

前面三层(Rule/Spec/Loop)没建起来,Harness 最多在末端捡垃圾;前面三层立住了,Harness 才有组织级治理意义(Phodal)。它不是替换规范,是把规范变成 AI 绕不过去的物理锁。OpenAI 总结 Codex 长任务经验时也点明:长任务更可靠,不靠更长的 prompt,而靠 harness 提供的结构化上下文和清晰的"done when"例程。

Harness 阶段工具

这层工具 2026 年初才成型。"harness engineering" 这个词普遍归因于 Mitchell Hashimoto(HashiCorp 联合创始人、Terraform 创造者)2026 年 2 月的博客,LangChain 随后把它形式化为一个公式:"Agent = Model + Harness"------决定 AI 靠不靠谱的,不是模型多强,是你套在外面的那层壳(Augment Code)。

工具 核心特点 适合谁
Claude Agent SDK Claude Code 背后的 harness,自动压缩长会话;原生 hooks(PreToolUse 拦截危险操作、PostToolUse 跑 lint/test、Stop 防虚标完成)把规则从"靠 AI 自觉"变"绕不过去的强制执行"(官方文档 在产品里嵌 agent
Codex CLI 开源终端 agent,长任务可靠 OpenAI 生态、CLI 工作流
LangGraph + Deep Agents 有状态编排 + 子 agent 委派 多 agent 管线
Composio 250+ SaaS API 封装成 agent action 对接大量外部服务
CI/CD lint/typecheck/tests 前移到 hook 所有项目都该有

CI 是性价比最高的 harness。Carlini 的实战复盘 证明:模型后期频繁搞坏功能,解法不是换更强模型,是把 CI 拧紧。

总结:从哪开始

一句话概括全文:AI 一定会出错,你的工作不是消灭错误,是让错误在发生时能被发现、被兜住。

三个阶段,三套手段,按项目成熟度递进:

  • 0→1 :Vibe Coding,少约束,跑通原型。唯一要提前做的是跟 AI 讲清楚项目因果链------是什么、为什么、要什么效果、不做什么。不用着急挑工具,用你手边最顺手的 IDE,把精力放在跟 AI 讨论清楚项目因果链上。堆工具是在给自己找活干。

  • 1→10 :引入 Spec,把意图、上下文、流程固化成文档,让 AI 在有约束的轨道里干活 。Spec 工具选的是"怎么写清楚"。想跨工具不锁厂商选 GitHub Spec Kit;用 Claude Code 且要强纪律选 Superpowers;独立开发者轻量起步选 OpenSpec;已在某个 IDE 深耕就用原生 Plan Mode + AGENTS.md。先试水的话,挑一个这周要上的小功能,花 30 分钟写成带 EARS 验收标准的 spec,跑一遍对比平时 vibe coding 的结果,差距自己就出来了(BCMS)。

  • 10→100 :叠一层 Harness,**把规范变成 AI 绕不过去的物理锁。**Spec 工具继续用,上面叠一层 Harness。Harness 选的是"怎么锁"------已有 CI 就先把 lint/typecheck/tests/pre-commit 拧紧(零成本第一步);要嵌 agent 选 Claude Agent SDK 或 Codex CLI;多 agent 管线选 LangGraph + Deep Agents;要对接大量外部 API 选 Composio。别一上来搭全套,哪疼治哪(Faros.ai)。

升级信号很简单:当前手段管不住 AI 了,就升级。 别提前堆,也别拖着不升。

总之,先判断,再执行。 面对复杂项目,别让 AI 直接上手写代码,先做任务路由------判断这是简单修改,还是要走 spec + harness 的固定流程。判断对了,后面事半功倍。

参考阅读

本文编写时参考的资料:

  1. B 站-AI林湛星的系列视频

  2. Thoughtworks --- Spec-Driven Development: Unpacking 2025 New Engineering Practices

  3. BCMS --- Spec-Driven Development

  4. Microsoft Developer --- Spec-Driven Development: AI-Native Engineering

  5. Phodal --- AI Coding 控制面:Rule → Spec → Loop → Harness

  6. CSDN --- 项目长记忆与 Harness 治理

  7. 得物团队(知乎)--- AI 编程实践:MCP + 约束体系 + 失效模式复盘

  8. 36氪 --- AGENTS.md:当目录不当百科

  9. Carlini 实战(知乎)--- CI as Harness:用 harness 层方案解模型层问题

  10. 腾讯云 --- 一文讲透 Harness:AI 从"聪明"到"靠谱"的关键跃迁

  11. 菜鸟教程 --- Harness Engineering(驾驭工程)

  12. AI 小圈 --- Agent 职责隔离

  13. Emelia.io --- Superpowers: Claude Code Skills Framework

  14. Marc Nuri Blog --- Superpowers Claude Code Skills Framework

  15. Datawhale --- Easy Vibe: Superpowers

  16. Augment Code --- Harness Engineering for AI Coding Agents

  17. Faros.ai --- Harness Engineering: Making AI Coding Agents Work in 2026

相关推荐
ACP广源盛139246256731 小时前
GSV6155@ACP# 搭配 AI 服务器、AI PC 完整适配方案
大数据·服务器·人工智能·分布式·单片机·嵌入式硬件
阿里云大数据AI技术1 小时前
Agent时代“Token炼金术”,阿里云 PAI 推出 TokenWorks:重塑企业专属的高保障SLO推理服务
人工智能·agent
饼饼学习空间智能1 小时前
2026数字孪生选型避坑指南:如何避免项目沦为3D大屏展示
人工智能·深度学习
乐观的Terry2 小时前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程
SEONIB_Explorer2 小时前
新手冷启动:如何用 SEONIB + VEONIB 搞定独立站图文与短视频基础产能
人工智能·shopify·seonib·veonib·低成本测试·钩子生成·冷启动 30 天执行计划表
码哥字节2 小时前
Anthropic 官方的 7 种 Claude Code 自定义方式,你可能只用对了 1 种
ai编程·claude·mcp
Inhand陈工2 小时前
数据中心UPS无功补偿与智能化监控方案:基于IG502的Modbus RTU转IEC61850实战
运维·人工智能·物联网·信息与通信
程序员老刘2 小时前
Android 17的10个AI功能,国内用户真正能用的有几个?
android·flutter·ai编程
Saniffer_SH2 小时前
NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念
人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·计算机外设·压力测试