AI 编程新范式:Agentic、Vibe 与 Spec 实战指南

Agentic Coding · Vibe Coding · Spec Coding:三种 AI 编程范式的比较、演进与落地路径

版本 2026.09 | 面向工程团队负责人与一线开发者 | 文中标注「待核实」的数字请以发布方官方口径为准

从 2021 年的代码补全,到 2026 年的规格驱动智能体工程------一次完整的范式迁移复盘。


目录

  1. 一页速览:三句话结论
  2. 概念定义与本质边界
  3. 关键辨析:它们不在同一维度
  4. 演进史:2021 → 2026
  5. 全维度对比总表
  6. Agentic Coding 深度拆解
  7. Vibe Coding 深度拆解
  8. Spec Coding 深度拆解
  9. 融合实践:分层策略与决策树
  10. 风险清单与治理框架
  11. 2026 现状数据与展望
  12. 术语表与参考来源

一、一页速览:三句话结论

  • Vibe Coding(氛围编程) :凭感觉下指令,不看代码,只看结果。由 Karpathy 于 2025 年 2 月命名。核心是「忘记代码的存在」,用自然语言反复描述现象来逼近可用结果。它是探索工具,不是交付方式。
  • Agentic Coding(智能体编程) :把执行权交给智能体,人类转做监督者。AI 能自己规划、读写文件、跑命令与测试、根据报错自我修正,并长时间连续工作。它描述的是执行方式,不规定意图怎么写。
  • Spec Coding(规范驱动编程) :先写结构化规格,再让智能体照着做。规格(而非代码)是真相源与契约。它解决的是 Agent 变强之后暴露的新瓶颈:AI 不知道该写什么。

一句话演进逻辑

补全时代的问题是「AI 写得慢」→ Agentic Coding 解决了速度与自主度 → 于是新问题变成「AI 写错方向且没人发现」→ Spec Coding 用显式契约把意图钉死。

Vibe Coding 回答的是「AI 能不能写」,Spec Coding 回答的是「AI 写的东西能不能信」。
⚠️ 最容易被误读的一点

三者不是同一维度的三个并列选项。Agentic 是执行层,Vibe 与 Spec 是契约层。现实中的主流组合是「Spec 定契约 + Agent 执行 + Vibe 探索」的三层结构,而不是三选一。

给不同角色的最短行动建议

你的处境 推荐做法 理由
个人项目 / 0 到 1 原型 / 一次性脚本 Vibe 为主 爆炸半径小,代码活不过一周,规格的收益覆盖不了成本
日常生产开发、单人负责的模块 Agentic + 轻量 Spec 先写验收标准再让 Agent 跑,成本增加不到 10%,返工率下降显著
多人协作 / 核心系统 / 受监管行业 完整 SDD + Agent 执行 需要可追溯、可审计、跨人共享的单一真相源
维护十年以上的存量系统 Spec-anchored 以「变更」为单位积累规格,逐步把隐性知识显式化

二、概念定义与本质边界

2.1 Vibe Coding(氛围编程)

2025 年 2 月,Andrej Karpathy 在社交平台提出这个词,原意是:完全投入到「感觉」里,忘记代码的存在------用语音或自然语言描述需求,AI 生成代码,出问题就把报错原样贴回去,不看 diff、不读代码、能跑就行。

维度 内容
真相源 没有持久真相源。对话历史即上下文,关掉窗口就没了
人类角色 需求提出者 + 结果验收者("跑起来了吗?")
验证方式 手动点一点,主观判断"看起来对"
典型工具 Cursor Composer、Replit Agent、Bolt.new、Lovable、v0 等对话式生成类产品
最大价值 把「想法 → 可交互实物」的时间从天级压到分钟级;让非程序员也能做出能跑的东西
失效边界 一旦涉及跨文件、跨会话、跨人协作,或者需要半年后还维护,立刻失效

❌ 三类典型失败

  • 意图漂移:模型选了"合理的默认值",但和团队真正想要的不一样;因为代码看起来是对的,没人发现。
  • 幻觉接口:Agent 编造了一个不存在的 API 方法、配置键或数据库字段------编译通过,运行时炸。
  • 上下文坍塌:任务跨多个会话或文件时,Agent 忘了之前的决策,开始自相矛盾。项目越长越严重。

2.2 Agentic Coding(智能体编程)

指 AI 以智能体形态参与工程:给定一个目标后,它能自主完成「规划 → 检索上下文 → 读写文件 → 执行命令 → 跑测试 → 读取报错 → 修正 → 再验证」的完整闭环,并在无人值守状态下连续工作数十分钟到数小时。
#mermaid-svg-OYEldD6DfD8NF8F9{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-OYEldD6DfD8NF8F9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-OYEldD6DfD8NF8F9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-OYEldD6DfD8NF8F9 .error-icon{fill:#552222;}#mermaid-svg-OYEldD6DfD8NF8F9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-OYEldD6DfD8NF8F9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-OYEldD6DfD8NF8F9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-OYEldD6DfD8NF8F9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-OYEldD6DfD8NF8F9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-OYEldD6DfD8NF8F9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-OYEldD6DfD8NF8F9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-OYEldD6DfD8NF8F9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-OYEldD6DfD8NF8F9 .marker.cross{stroke:#333333;}#mermaid-svg-OYEldD6DfD8NF8F9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-OYEldD6DfD8NF8F9 p{margin:0;}#mermaid-svg-OYEldD6DfD8NF8F9 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-OYEldD6DfD8NF8F9 .cluster-label text{fill:#333;}#mermaid-svg-OYEldD6DfD8NF8F9 .cluster-label span{color:#333;}#mermaid-svg-OYEldD6DfD8NF8F9 .cluster-label span p{background-color:transparent;}#mermaid-svg-OYEldD6DfD8NF8F9 .label text,#mermaid-svg-OYEldD6DfD8NF8F9 span{fill:#333;color:#333;}#mermaid-svg-OYEldD6DfD8NF8F9 .node rect,#mermaid-svg-OYEldD6DfD8NF8F9 .node circle,#mermaid-svg-OYEldD6DfD8NF8F9 .node ellipse,#mermaid-svg-OYEldD6DfD8NF8F9 .node polygon,#mermaid-svg-OYEldD6DfD8NF8F9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-OYEldD6DfD8NF8F9 .rough-node .label text,#mermaid-svg-OYEldD6DfD8NF8F9 .node .label text,#mermaid-svg-OYEldD6DfD8NF8F9 .image-shape .label,#mermaid-svg-OYEldD6DfD8NF8F9 .icon-shape .label{text-anchor:middle;}#mermaid-svg-OYEldD6DfD8NF8F9 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-OYEldD6DfD8NF8F9 .rough-node .label,#mermaid-svg-OYEldD6DfD8NF8F9 .node .label,#mermaid-svg-OYEldD6DfD8NF8F9 .image-shape .label,#mermaid-svg-OYEldD6DfD8NF8F9 .icon-shape .label{text-align:center;}#mermaid-svg-OYEldD6DfD8NF8F9 .node.clickable{cursor:pointer;}#mermaid-svg-OYEldD6DfD8NF8F9 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-OYEldD6DfD8NF8F9 .arrowheadPath{fill:#333333;}#mermaid-svg-OYEldD6DfD8NF8F9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-OYEldD6DfD8NF8F9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-OYEldD6DfD8NF8F9 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OYEldD6DfD8NF8F9 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-OYEldD6DfD8NF8F9 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OYEldD6DfD8NF8F9 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-OYEldD6DfD8NF8F9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-OYEldD6DfD8NF8F9 .cluster text{fill:#333;}#mermaid-svg-OYEldD6DfD8NF8F9 .cluster span{color:#333;}#mermaid-svg-OYEldD6DfD8NF8F9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-OYEldD6DfD8NF8F9 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-OYEldD6DfD8NF8F9 rect.text{fill:none;stroke-width:0;}#mermaid-svg-OYEldD6DfD8NF8F9 .icon-shape,#mermaid-svg-OYEldD6DfD8NF8F9 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OYEldD6DfD8NF8F9 .icon-shape p,#mermaid-svg-OYEldD6DfD8NF8F9 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-OYEldD6DfD8NF8F9 .icon-shape .label rect,#mermaid-svg-OYEldD6DfD8NF8F9 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OYEldD6DfD8NF8F9 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-OYEldD6DfD8NF8F9 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-OYEldD6DfD8NF8F9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 通过
不通过
目标与约束

人给出意图与边界
规划与分解

拆成可执行子任务
工具调用

读写文件 / 执行命令
验证闭环

编译 / 测试 / lint
结果交付

diff / PR 供人评审
自我修正

读报错、改实现

Agentic 与传统 AI 辅助的分水岭,在于是否存在可自动判定的验证信号。编译器报错、测试失败、lint 提示、类型检查------这些机器可判定的反馈,让 Agent 能够脱离人类"自己试错"。这也是为什么测试覆盖率高的项目,AI 编程收益呈数量级放大。

Agentic 的能力栈(从下往上缺一不可)
层级 能力 2026 年的现状
模型层 长上下文、长程推理、代码能力 上下文已扩展到百万 token 量级,长程编程(连续自主运行数十小时)成为新的竞争焦点
上下文层 代码库检索、依赖图、向量索引、规则文件 从「把代码粘进 prompt」进化到「上下文工程」;CLAUDE.md / AGENTS.md 成为事实标准的契约文件
工具层 文件读写、终端、浏览器、MCP 外部系统 MCP 成为事实标准接口,被类比为「软件工程的 USB-C」;工具调用衔接的稳定性成为核心卖点
验证层 编译、单测、集成测试、静态分析、E2E 决定 Agent 上限的关键层;没有自动验证就没有真正的自主
编排层 任务分解、多 Agent 协作、并行会话 Maker / Critic / Tester 多角色分工开始流行,A2A 等协议在形成中
治理层 权限边界、审计留痕、人在回路审批 2026 年最薄弱也最受关注的一层;「有界自主」(bounded autonomy)成为共识方向

2.3 Spec Coding(规范驱动编程 / SDD)

又称 Spec-Driven Development(SDD)。核心主张:在「人的意图」和「AI 的实现」之间插入一层显式规格。它写清楚系统要做什么、边界在哪、什么不能做、怎样算完成。Agent 先读规格,有歧义就问,再动手生成。

一份合格的规格通常拆成四份文档
文档 内容
constitution.md 项目宪法:不可变的全局原则------测试标准、架构约束、命名规范、安全红线。跨会话长期有效(Spec Kit 独有)
requirements.md 要做什么:用户故事 + 验收标准。Kiro 采用 EARS 句式「WHEN 条件 THE SYSTEM SHALL 行为」,源自劳斯莱斯的安全关键系统实践
design.md 怎么做:架构、数据模型、API 契约、时序
tasks.md 执行步骤:离散、可追踪、可逐个验证的实现任务

一个坏 prompt 与一份真规格的对比

坏:「加一个把用户数据导出成 CSV 的功能,做得好看点。」

好:明确写出触发入口、字段清单与顺序、时间范围上限、超过 N 行时改异步生成并用邮件发送附件、UTF-8 BOM 兼容 Excel、导出需通过权限校验并记录审计日志、失败时的错误码与重试策略、以及「不做什么」(不导出已删除用户的历史快照)。

差别不在于字多,而在于把 Agent 必然会自行猜测的每一个决策点都显式写死。


三、关键辨析:它们不在同一维度

把三个词平铺对比会造成严重误解。正确的坐标系是两个正交的轴:

  • 轴一:AI 自主度(执行方式) ------单步补全 → 多步自主执行。Agentic 描述的是这一轴的高端位置。 它不关心你的意图是写在脑子里、聊天框里还是 markdown 里。
  • 轴二:意图的形式化与持久化(契约方式) ------即兴 prompt → 持久化规格。Vibe 与 Spec 是这一轴的两端。 它们不关心谁来执行代码。

由此得到四种组合,也解释了为什么行业讨论常常鸡同鸭讲:

低形式化(即兴 prompt) 高形式化(持久化规格)
低自主(AI 只补几行) AI 自动补全时代(2021--22):Copilot 补行补函数,人是唯一作者,意图即写即弃 传统文档驱动开发:人按详细设计文档手写代码。重规格、零自主------也就是瀑布模式
高自主(AI 自主多步) Vibe Coding:AI 大包大揽,但意图只存在于一次性对话中 Spec Coding / Agentic Engineering:规格是契约与真相源,Agent 按其执行,产出可追溯

✅ 这个框架的解释力

它解释了为什么 Karpathy 在 2025 年提出 Vibe Coding、不到一年又改口说"vibe coding 时代正在结束,我们进入的是 agentic engineering" ------他不是在推翻自己,而是从"右上象限"这个视角指出:光有高自主不够,还得有高形式化。

它也解释了为什么 Claude Code 和 Cursor 的 Plan 模式算「最轻量的 spec-first」:意图先对齐再执行,但方案通常单次会话、用毕即弃,没有 constitution、没有结构化需求格式、没有归档更新回路。它是 SDD 的入门坡道,不是替代品。


四、演进史:2021 → 2026

时间 阶段 发生了什么 暴露的问题
2021--2022 自动补全时代 GitHub Copilot 发布并普及。AI 补行、补函数、补样板代码,人类始终是代码的唯一作者 省了打字时间,没有改变工程流程
2023 对话式辅助 ChatGPT、Copilot Chat 进入日常。开发者在聊天窗口与 IDE 之间复制粘贴,AI 扮演顾问 上下文要手工搬运;AI 看不到完整代码库
2024 Agent 雏形 Cursor Composer、Devin 等产品出现。AI 开始能跨多文件编辑、执行终端命令、提交 PR 可靠性不足;长任务容易跑偏;缺少验证闭环
2025.02 Vibe Coding 出圈 Karpathy 命名并普及了"忘记代码存在"的做法。非程序员第一次能独立做出能跑的应用 安全漏洞、不可维护、无法调试;"氛围债"成为流行词
2025 H2 Agentic Coding 主流化 Claude Code、Codex CLI、Copilot coding agent 等 CLI 与后台 Agent 成为专业开发者默认工具;MCP 生态爆发;长任务、并行会话、无人值守成为卖点 瓶颈转移:AI 足够能写了,但"不知道该写什么"
2025 Q4--2026 H1 Spec-Driven 上位 GitHub Spec Kit 于 2026 年 8 月发布 1.0;AWS Kiro GA 并把 SDD 做成 IDE 原生工作流;OpenSpec、BMAD-METHOD、Tessl 等工具形成生态;Thoughtworks 把 SDD 列入技术雷达 Trial 环 流程偏重;"瀑布回魂"的质疑;评审负担可能不降反升
2026 起 融合分层 探索用 Vibe、交付用 Spec、执行用 Agent;规格与测试双驱动、有界自主、审计留痕成为团队标配 治理与评测体系仍在成形中

演进的底层驱动力

每一轮的转折,都源于前一阶段瓶颈的转移:

  • 补全时代瓶颈 = 生成速度 → 被模型能力解决;
  • Agent 时代瓶颈 = 能否端到端跑完 → 被工具调用与长上下文解决;
  • 于是 2026 年的瓶颈 = 意图的保真度。「歧义是昂贵的」------在 Vibe Coding 里 prompt 是短暂的、生成的代码成了事实上的真相源,而代码最不擅长解释自己为什么存在。

五、全维度对比总表

维度 Vibe Coding Agentic Coding Spec Coding
本质定位 一种低摩擦的探索方式 一种 AI 自主执行的工程能力 一种以规格为契约的研发方法论
真相源 对话历史(易失) 代码 + 规则文件 规格文档(可版本控制)
人类角色 提需求、看效果 定目标、设边界、审结果 立宪法、写规格、把质量关
验证方式 主观:"跑起来就行" 自动化:编译 / 测试 / lint 规格对齐 + 验收标准 + 测试
上下文载体 对话窗口 代码库索引 + AGENTS.md constitution / spec / plan / tasks
适用规模 单文件、单次会话、原型 多文件、跨模块、长任务 跨人、跨会话、长期维护的系统
可追溯性 几乎为零 有 diff 与会话记录 需求→设计→任务→代码全链可查
上手成本 极低 中:需要会写规则文件与测试 较高:需要规格写作与流程纪律
边际成本 随项目变长急剧上升 随验证完善而下降 前期高、后期摊薄
典型失败模式 意图漂移、幻觉接口、上下文坍塌 范围蔓延、级联错误、工具误用 过度设计、评审过载、流程僵化
核心技能要求 会描述问题 任务分解、验证设计、上下文工程 结构化沟通、领域建模、契约设计
团队协作 基本无法协作 可协作但缺共享契约 规格即协作界面

⚠️ 读表提醒

Agentic 那一列严格来说不是与另外两者互斥的第三选项。真实世界里 Spec Coding 通常就跑在 Agentic 的执行引擎之上。此表把它单列,是为了对比"只做 Agentic 而不引入规格"时的典型状态。


六、Agentic Coding 深度拆解

6.1 五个能力等级(社区通行的分层)

级别 名称 特征
L1 自动补全 AI 补几行,人写全部逻辑
L2 对话式辅助 人复制粘贴,AI 在窗口里出方案
L3 Agentic Coding AI 在 IDE/CLI 内自主多步执行,人审 diff、跑测试套件验证
L4 Agentic Engineering 执行前先写规格;多 Agent 按契约分工;每个阶段都有系统化验证;人是工程总监
L5 AI 原生架构 系统本身就是智能体的(生产环境跑业务逻辑的 Agent),人是人机混合系统的架构师

多数自称在用 AI 编程的人实际处于 L2--L3;Karpathy 所说的 agentic engineering 对应 L4。这不是"多加了几个步骤",而是任务结构变了:传统软件工程假设每一步由人执行,Agentic Engineering 假设大部分步骤由 Agent 执行------因此任务要拆得更小更离散、规格要机器可执行、验证要自动化而非靠人读代码。

6.2 上下文工程:Agentic 的真正护城河

模型能力之外,决定 Agent 表现差异的主要是喂给它的上下文质量。2026 年的实践共识是几个固定的抓手:

  • 规则文件即契约 :CLAUDE.md / AGENTS.md 不应写成偏好清单,而要写成能约束行为的契约 ------命名规范、架构分层、测试要求、禁止触碰的路径。判据很简单:Agent 在你不在场时,能否仅凭这份文件做对事。
  • 分层加载:全局规则(组织级)→ 项目规则(仓库级)→ 目录规则(模块级),按需注入而非全量塞入。
  • 依赖知识显式化:开源库的使用规格(版本、API 签名、惯用法)单独供给,避免 Agent 凭训练记忆混用版本。Tessl 的 Spec Registry 就切这个点,官方称可减少约 35% 的集成错误、提升最多 90% 的准确率*(厂商口径,待独立验证)*。
  • 检索优于投喂:让 Agent 自己 grep / 语义检索代码库,比预先把整包代码塞进上下文更稳,也更省 token。
  • 会话卫生:一个会话只做一件事;上下文污染时果断开新会话并让 Agent 读回规格,而不是在同一窗口里硬撑。

6.3 验证闭环:没有它就没有自主

✅ Kent Beck 的判断

规格给出"做什么",但仍需要 TDD 来证明"确实可运行"。他把 TDD 称为与 AI Agent 协作时的 superpower ------因为 Agent 极易引入回归,而单元测试提供了一道自动的回归防线。

换句话说:测试是 Agent 的方向盘与刹车。 没有测试的 Agentic Coding,等于让 AI 蒙眼高速驾驶。

验证手段 机器可判定 说明
类型检查 / 编译 是 最便宜的第一道闸,静态类型语言在 AI 时代反而更吃香
单元测试 是 回归防护主力,也是 Agent 自我修正的信号源
Lint / 静态分析 是 守住风格与安全基线,能被 Agent 自动修复
契约 / 集成测试 是 防止 Agent 编造不存在的接口(幻觉接口的主要防线)
E2E / 视觉回归 部分 UI 类任务必要,但结果判定仍有主观成分
人工代码评审 否 不可替代但不可扩展,应聚焦架构与安全而非逐行语法

6.4 典型失败模式与对策

失败模式 表现 对策
范围蔓延 做着做着顺手重构了无关模块,diff 失控 在规则文件里明确"不做什么";任务切成 30--90 分钟粒度;超出范围直接拒收
级联错误 修一个 bug 引入三个新 bug 先补测试再现问题,再让 Agent 修;每步跑全量测试而非只跑相关用例
上下文丢失 长任务后半段忘了前面的决策,自相矛盾 把关键决策写进规格/计划文件,让 Agent 每步回读;过长任务主动分段
工具误用 用错命令、改错文件、误删内容 权限白名单;危险命令需人工确认;用 git 做可回滚的 checkpoint
覆盖真空 生成的测试"看起来很全"但没测到关键分支 先写测试再让 Agent 实现;用变异测试检验测试有效性
静默偏离 偏离了设计但没告诉你 要求 Agent 输出"偏离说明";规格与实现的一致性做自动检查

七、Vibe Coding 深度拆解

先说结论:Vibe Coding 没有错,错的是把它用在错误的场景

它解决的是一个真实且重要的问题------把想法变成可交互实物时的摩擦力太大。在这个目标上它无可替代。真正的问题在于,很多团队把一个探索工具当成了交付流程。

7.1 适用场景与禁用场景

放心用 Vibe 的场景:

  • 0 到 1 原型验证:想看看这个想法长什么样
  • 一次性脚本:数据清洗、批量改名、临时报表
  • 学习与探索:摸清一个新框架/新 API 的行为
  • UI 与视觉迭代:需要快速看到效果、反复微调
  • 个人小工具:用户只有你自己,坏了大不了重写
  • 非程序员做内部工具:这是 Vibe 最大的社会价值

不要用 Vibe 的场景:

  • 生产系统、会长期维护的代码
  • 涉及权限、认证、支付、数据删除的逻辑
  • 多人协作的同一代码库
  • 跨多个会话才能完成的中大型特性
  • 受监管行业(金融、医疗、工业控制)的核心链路
  • 任何"半年后还要改"的东西

7.2 三条自保规则(想 Vibe 又不翻车)

  1. 先定验收,再开聊。哪怕只是一句话:"做完后,我要能在 X 页面点 Y,看到 Z。"这一个习惯对结果质量的提升,超过换任何工具。
  2. 小步提交 。每得到一个能跑的状态就 git commit。Vibe 的致命伤是"改着改着回不去了",频繁提交是唯一的解药。
  3. 设置转正门槛。原型一旦决定要长期维护,必须补三样东西:类型/测试、一份简短规格、一次人工代码走查。这一步叫"从 vibe 到工程的转股",跳过它,原型就会变成技术债的发源地。

⚠️ 行业数据的一面之词

有研究指出 AI 生成代码已造成大量已知生产问题,不同基准下漏洞率从 9.8% 到 42.1% 不等*(差异极大,需按发布方口径理解)*。这些数字主要针对的是"只让 AI 写、不立规格、不验质量"的工作方式,不应被解读为"AI 写的代码普遍更差"------同样的研究也显示,结构化工作流下成功构建率、合并率均有明显提升。


八、Spec Coding 深度拆解

8.1 标准工作流(以 GitHub Spec Kit 为主线)

#mermaid-svg-mTe418ygpk9MApEc{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-mTe418ygpk9MApEc .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-mTe418ygpk9MApEc .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-mTe418ygpk9MApEc .error-icon{fill:#552222;}#mermaid-svg-mTe418ygpk9MApEc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-mTe418ygpk9MApEc .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-mTe418ygpk9MApEc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-mTe418ygpk9MApEc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-mTe418ygpk9MApEc .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-mTe418ygpk9MApEc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-mTe418ygpk9MApEc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-mTe418ygpk9MApEc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-mTe418ygpk9MApEc .marker.cross{stroke:#333333;}#mermaid-svg-mTe418ygpk9MApEc svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-mTe418ygpk9MApEc p{margin:0;}#mermaid-svg-mTe418ygpk9MApEc .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-mTe418ygpk9MApEc .cluster-label text{fill:#333;}#mermaid-svg-mTe418ygpk9MApEc .cluster-label span{color:#333;}#mermaid-svg-mTe418ygpk9MApEc .cluster-label span p{background-color:transparent;}#mermaid-svg-mTe418ygpk9MApEc .label text,#mermaid-svg-mTe418ygpk9MApEc span{fill:#333;color:#333;}#mermaid-svg-mTe418ygpk9MApEc .node rect,#mermaid-svg-mTe418ygpk9MApEc .node circle,#mermaid-svg-mTe418ygpk9MApEc .node ellipse,#mermaid-svg-mTe418ygpk9MApEc .node polygon,#mermaid-svg-mTe418ygpk9MApEc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-mTe418ygpk9MApEc .rough-node .label text,#mermaid-svg-mTe418ygpk9MApEc .node .label text,#mermaid-svg-mTe418ygpk9MApEc .image-shape .label,#mermaid-svg-mTe418ygpk9MApEc .icon-shape .label{text-anchor:middle;}#mermaid-svg-mTe418ygpk9MApEc .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-mTe418ygpk9MApEc .rough-node .label,#mermaid-svg-mTe418ygpk9MApEc .node .label,#mermaid-svg-mTe418ygpk9MApEc .image-shape .label,#mermaid-svg-mTe418ygpk9MApEc .icon-shape .label{text-align:center;}#mermaid-svg-mTe418ygpk9MApEc .node.clickable{cursor:pointer;}#mermaid-svg-mTe418ygpk9MApEc .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-mTe418ygpk9MApEc .arrowheadPath{fill:#333333;}#mermaid-svg-mTe418ygpk9MApEc .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-mTe418ygpk9MApEc .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-mTe418ygpk9MApEc .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mTe418ygpk9MApEc .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-mTe418ygpk9MApEc .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mTe418ygpk9MApEc .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-mTe418ygpk9MApEc .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-mTe418ygpk9MApEc .cluster text{fill:#333;}#mermaid-svg-mTe418ygpk9MApEc .cluster span{color:#333;}#mermaid-svg-mTe418ygpk9MApEc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-mTe418ygpk9MApEc .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-mTe418ygpk9MApEc rect.text{fill:none;stroke-width:0;}#mermaid-svg-mTe418ygpk9MApEc .icon-shape,#mermaid-svg-mTe418ygpk9MApEc .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mTe418ygpk9MApEc .icon-shape p,#mermaid-svg-mTe418ygpk9MApEc .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-mTe418ygpk9MApEc .icon-shape .label rect,#mermaid-svg-mTe418ygpk9MApEc .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mTe418ygpk9MApEc .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-mTe418ygpk9MApEc .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-mTe418ygpk9MApEc :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} constitution

立项目原则
specify

写功能规格
clarify

消歧提问
plan

技术方案
tasks

拆任务
analyze

一致性检查
implement

Agent 按任务逐个实现

规格始终是真相源

每个阶段产出一份文档,全部提交进版本库,形成可追溯链条。

8.2 规格到底该写什么

判断规格质量的标准只有一条:把 Agent 必然会自行猜测的决策点全部显式写死。实践中一张最小检查表:

要素 要回答的问题
问题与动机 为什么要做?不做的代价是什么?一两句说清
范围边界 做什么,以及明确不做什么。后者常被省略,却是范围蔓延的根源
功能需求 用户故事 + 验收标准。推荐 EARS 句式:WHEN 条件 THE SYSTEM SHALL 行为
数据模型 表结构、字段类型、约束、迁移策略。别让 Agent 猜列名
接口契约 API 路径、请求/响应结构、错误码。这是防"幻觉接口"的关键
非功能需求 性能、并发、安全、合规、可观测性
失败路径 超时、重试、降级、幂等、部分失败怎么处理
验收方式 怎样算完成?哪些测试必须通过?
禁区 哪些文件/模块不许碰,哪些依赖不许引入

8.3 主流工具横向对比

工具 出品方 工作流 规格形态 开源/价格 定位与取舍
Spec Kit GitHub constitution → specify → clarify → plan → tasks → analyze → implement(七阶段关卡) Markdown,由 Agent 解读 MIT 开源,免费 社区最活跃(2026 年 8 月发布 1.0),支持 30 余种 Agent。独有 constitution 机制。缺点是七阶段对小型改动偏重,个人开发者收益有限
Kiro AWS requirements → design → tasks(三步) 三份 md,需求用 EARS 受限句式 闭源,已 GA,按月分档付费 开箱即用的独立 IDE,体验最完整、可追踪性最好。缺点是绑定它的 IDE 与模型,且存在 Vibe/Spec 两种模式的割裂感
OpenSpec Fission-AI propose → apply → archive(每个变更一个文件夹) proposal / specs / design / tasks 四份 MIT 开源,免费 最轻量,npm 一条命令装好,不绑定 IDE,支持 25 余种工具。因归档时会更新规格,最接近 spec-anchored,适合存量系统渐进式引入
BMAD-METHOD 社区 模拟完整敏捷团队,12 个以上专职 Agent 角色接力 各角色产出的文档链 MIT 开源 PM、架构师、UX、开发、QA、Scrum Master 各司其职,形成需求到代码的追溯链。适合想让 Agent 扮演完整团队的场景,但复杂度高
Tessl Guy Podjarny(Snyk 创始人) 规格为唯一维护物,Agent 据此生成代码 结构化、可测试的 spec,生成代码标注 DO NOT EDIT Spec Registry 开放,Framework 闭源 beta 理念最激进(spec-as-source)。核心难题是非确定性编译器:同一份规格多次运行会产出不同实现。2026 年初已向"Agent 使能平台"方向调整
Plan Mode(Claude Code / Cursor) Anthropic / Cursor 只读研究 → 输出方案 → 人工批准 → 执行 单次会话的 markdown 方案 内置,零配置 最轻的 spec-first,SDD 的入门坡道。没有 constitution、没有结构化需求格式、没有归档回路,方案通常不沉淀。个人小改动够用,跨人共享不够

8.4 支持方的论据

  • OpenAI 的 Sean Grove :写代码只占程序员价值的 10--20%,其余 80--90% 是"结构化沟通"------理解用户、提炼需求、规划与验证。由此推论,写规格将取代写代码成为最关键的开发技能。(该比例为修辞表达,非实测数据)
  • Karpathy 的 agentic engineering:承认 AI 写代码已是默认工作流,但强调需要"更多监督",与 SDD 的纪律取向一致。
  • Kent Beck:规格给出"做什么",TDD 证明"确实可运行",两者是互补而非替代------这也催生了"规格 + 测试双驱动"的做法。

8.5 反方质疑(这部分必须读)

❌ Birgitta Böckeler(Thoughtworks)的批评最为扎实

  • 小题大做:Kiro 把一个很小的缺陷扩展成 4 个用户故事、16 条验收标准
  • 评审负担可能更重:她直言"我宁愿审阅代码,也不愿审阅一堆 markdown 文件"
  • 可能放大既有问题:SDD 或许放大了评审过载与幻觉,而非解决它们
  • 术语涣散:已有人把 "spec" 等同于"详细 prompt",概念被稀释
  • 历史教训:她以模型驱动开发(MDD)作类比------MDD 在业务系统中"从未真正成功",并警告 spec-as-source 可能"同时继承 MDD 与 LLM 的缺点:既不灵活,又不确定"

更直接的批评则给它贴上了「瀑布回魂」的标签,担忧它重新带回"先确定全部需求、再行实现"的旧弊病。

⚠️ 怎么回应这些质疑

SDD 与瀑布的关键区别在于迭代单位 :瀑布是"整个项目先 freeze 需求再开工",SDD 是"每个变更先写清再动手",变更本身仍然小步、频繁、可回退。

但它确实不是免费的:对单个空值检查级别的小改动,走完整七阶段是纯粹浪费。务实的做法是分档------按变更的爆炸半径选择规格的深度。


九、融合实践:分层策略与决策树

2026 年真正跑得顺的团队,几乎都不是"三选一",而是按变更的爆炸半径分层:
#mermaid-svg-m8Sy3FGYRnmakgC6{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-m8Sy3FGYRnmakgC6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-m8Sy3FGYRnmakgC6 .error-icon{fill:#552222;}#mermaid-svg-m8Sy3FGYRnmakgC6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-m8Sy3FGYRnmakgC6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-m8Sy3FGYRnmakgC6 .marker.cross{stroke:#333333;}#mermaid-svg-m8Sy3FGYRnmakgC6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-m8Sy3FGYRnmakgC6 p{margin:0;}#mermaid-svg-m8Sy3FGYRnmakgC6 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-m8Sy3FGYRnmakgC6 .cluster-label text{fill:#333;}#mermaid-svg-m8Sy3FGYRnmakgC6 .cluster-label span{color:#333;}#mermaid-svg-m8Sy3FGYRnmakgC6 .cluster-label span p{background-color:transparent;}#mermaid-svg-m8Sy3FGYRnmakgC6 .label text,#mermaid-svg-m8Sy3FGYRnmakgC6 span{fill:#333;color:#333;}#mermaid-svg-m8Sy3FGYRnmakgC6 .node rect,#mermaid-svg-m8Sy3FGYRnmakgC6 .node circle,#mermaid-svg-m8Sy3FGYRnmakgC6 .node ellipse,#mermaid-svg-m8Sy3FGYRnmakgC6 .node polygon,#mermaid-svg-m8Sy3FGYRnmakgC6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-m8Sy3FGYRnmakgC6 .rough-node .label text,#mermaid-svg-m8Sy3FGYRnmakgC6 .node .label text,#mermaid-svg-m8Sy3FGYRnmakgC6 .image-shape .label,#mermaid-svg-m8Sy3FGYRnmakgC6 .icon-shape .label{text-anchor:middle;}#mermaid-svg-m8Sy3FGYRnmakgC6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-m8Sy3FGYRnmakgC6 .rough-node .label,#mermaid-svg-m8Sy3FGYRnmakgC6 .node .label,#mermaid-svg-m8Sy3FGYRnmakgC6 .image-shape .label,#mermaid-svg-m8Sy3FGYRnmakgC6 .icon-shape .label{text-align:center;}#mermaid-svg-m8Sy3FGYRnmakgC6 .node.clickable{cursor:pointer;}#mermaid-svg-m8Sy3FGYRnmakgC6 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-m8Sy3FGYRnmakgC6 .arrowheadPath{fill:#333333;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-m8Sy3FGYRnmakgC6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-m8Sy3FGYRnmakgC6 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-m8Sy3FGYRnmakgC6 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-m8Sy3FGYRnmakgC6 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-m8Sy3FGYRnmakgC6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-m8Sy3FGYRnmakgC6 .cluster text{fill:#333;}#mermaid-svg-m8Sy3FGYRnmakgC6 .cluster span{color:#333;}#mermaid-svg-m8Sy3FGYRnmakgC6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-m8Sy3FGYRnmakgC6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-m8Sy3FGYRnmakgC6 rect.text{fill:none;stroke-width:0;}#mermaid-svg-m8Sy3FGYRnmakgC6 .icon-shape,#mermaid-svg-m8Sy3FGYRnmakgC6 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-m8Sy3FGYRnmakgC6 .icon-shape p,#mermaid-svg-m8Sy3FGYRnmakgC6 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-m8Sy3FGYRnmakgC6 .icon-shape .label rect,#mermaid-svg-m8Sy3FGYRnmakgC6 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-m8Sy3FGYRnmakgC6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-m8Sy3FGYRnmakgC6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-m8Sy3FGYRnmakgC6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 第1层 探索层

原型/脚本/UI微调 → 用 Vibe:不写规格,但要小步提交
第2层 日常交付层

单模块特性/Bug修复 → Agentic+轻量规格
第3层 系统层

跨模块/跨人/长期维护 → 完整 SDD
贯穿三层: 版本控制 · 自动化验证 · 权限边界 · 审计留痕 · 人在回路

9.1 决策树:这次改动该走哪一档

判断问题 命中 走哪一档
这段代码三个月后还需要改吗? 不需要,用完就扔 Vibe 直接开干,记得频繁 commit
改动是否局限于单个文件、且你能一眼看懂整个 diff? 是 Agentic + 一句验收标准即可
是否涉及数据模型、接口契约、权限或资金? 是 完整规格:至少写清数据模型与契约
是否有第二个人(或第二个 Agent)会碰同一块代码? 是 规格必须是共享契约,进版本库
是否有现成的自动化测试能判定对错? 否 先补测试再动手,否则 Agent 只能帮你"看起来对"
失败后是否需要向他人解释"为什么这么设计"? 是 规格即解释材料,也是审计证据

9.2 一份可直接照抄的日常配方

text 复制代码
# 1. 仓库根目录维护一份规则契约(全局)
AGENTS.md        # 架构分层、命名规范、测试要求、禁区

# 2. 每个非平凡改动起手式(轻量 spec-first)
- 一段话:解决什么问题、做完的样子、验收标准
- 明确「不做什么」
- 让 Agent 复述理解,有偏差就地修正

# 3. 执行(Agentic)
- 任务切成 30--90 分钟粒度,一次一个
- 先写失败测试,再让 Agent 实现(红 → 绿 → 重构)
- 每完成一个任务跑全量测试并 commit

# 4. 收口
- 让 Agent 输出「偏离说明」:哪里没按方案做、为什么
- 人工评审聚焦架构与安全,不做逐行语法检查
- 把最终规格归档,作为下次变更的基线

✅ 成本提示

第 2 步那"一段话 + 不做什么"通常只要 3--5 分钟。这是投入产出比最高的一个动作:它把 Agent 从"猜你想要什么"变成"按你写下的做",返工率的下降远超这几分钟的投入。


十、风险清单与治理框架

10.1 六类风险与对应控制

风险 典型表现 控制手段
质量与回归 Agent 引入静默回归;测试"看起来全"但没测关键分支 强制测试先行;变异测试抽检;覆盖率只作参考不作目标
安全 注入漏洞、硬编码密钥、不安全的默认值、依赖投毒 密钥扫描与 secret 管理;依赖锁定与 SBOM;安全扫描进 CI;Agent 不得访问生产凭据
合规与审计 无法解释某段代码为何存在;监管问询时拿不出依据 规格与代码双向可追溯;变更留痕;关键节点人工签核(human-in-the-loop)
知识产权与许可 生成代码与开源代码高度相似,带入不兼容许可证 许可证扫描;对高风险模块要求人工重写;留存生成记录
知识空心化 团队没人真正理解系统,只会"再问一次 AI" 规格作为知识载体强制维护;关键模块轮值 owner;定期架构走查
成本失控 长任务 token 消耗失控;反复重试烧钱 上下文分层与检索优先;任务粒度控制;按任务类型路由模型

10.2 「有界自主」的四条硬边界

2026 年的共识方向不是限制 AI 写代码,而是限制它能 autonomously 触碰什么。建议把以下四条写进团队规则,并用工具强制而非靠自觉:

  1. 文件系统边界:Agent 只能在指定目录内写入;配置、迁移脚本、基础设施代码默认只读。
  2. 命令白名单:允许跑测试、构建、lint;任何删除、强制推送、数据库写操作必须人工确认。
  3. 网络与凭据边界:不给生产环境凭据;外部访问走代理与审计;禁止自动安装未审查的依赖。
  4. 合并闸门:Agent 可以提 PR,但合并需要测试全绿 + 至少一人审阅;受监管链路需额外签核。

⚠️ 一个正在成形的趋势

行业在讨论「代码数字孪生」(Code Digital Twin)的思路:在代码之上叠一层活的知识基础设施,把物理代码与概念意图、历史设计决策、业务约束映射起来。Agent 不再只读 PaymentValidator.java,而是能查到"这里不能改成异步,会打挂 2014 年那个遗留主机系统"。

长期知识工程 与任务时上下文工程的分离,被认为是复杂存量系统中安全部署 Agent 的唯一可行路径。


十一、2026 现状数据与展望

11.1 值得留意的数字(含口径说明)

数据 来源 口径说明
Spec Kit 2026 年 6 月超 11 万星,8 月 21 日发布 1.0,后续突破 13 万星,支持 30 余种 Agent GitHub / 媒体报道 星数增长快但属流行度指标,不等于生产采用率
AWS Kiro 于 2026 年 5 月国际发布并 GA AWS 官方 官方口径可信;付费分档约 20--200 美元/月
采用结构化 AI 工作流后:合并请求 +8.69%、合并率 +15%、成功构建 +84% Accenture 450 人随机对照试验 有对照组,可信度较高
头部团队交付速度快 5--6 倍 McKinsey 观测性结论,样本与口径未完全公开
AI 生成代码漏洞率 9.8% -- 42.1% 多项基准 区间极宽,说明测量方法差异巨大,不宜单独引用
Tessl 称可减少 35% 集成错误、提升最多 90% 准确率 Tessl 官方 厂商自述,缺独立验证
规格驱动工作流首次通过率提升 3--10 倍 早期采用者报告 自我报告,存在选择偏差

11.2 接下来两三年的五个方向

  1. 多智能体编排(VibeOps):不再是"一个全能聊天机器人",而是 Maker 写码、Critic 审安全、Tester 生成测试、Release 管流水线。MCP 与 A2A 等协议正在成为 Agent 间通信的事实标准。
  2. 规格的版本化与回归:规格会像代码一样进版本库、做 diff、写测试。"规格回归测试"------检查实现是否仍与规格一致------会成为 CI 的常规环节。
  3. 有界自主与强制签核:受监管压力(如欧盟 AI 法案)与数据泄露责任的双重驱动,Agent 将运行在严格的护栏内,生产变更需要可 cryptographic 追溯的人工签核。
  4. 评测与审计职业化:写代码本身在贬值,**代码审计、威胁建模、AI 评测(Eval)**在升值。掌握这三样的人,会取代"写得最快的人"成为新的核心。
  5. 开发者身份重构:从"手工雕刻逻辑的匠人"转向"系统架构师 + 意图管理者"。初级工程师不再靠写 CRUD 练手,这对培养体系提出了全新问题------目前行业还没有好答案。
  6. 长程编程的可靠性 :模型厂商已把"连续自主运行数十小时完成复杂工程"作为竞争焦点。真正的瓶颈不在时长,而在长程任务中的目标保真与错误累积。

回到本质

这场迁移的主线不是"AI 越来越会写代码",而是人类的抽象层级在不断上移 :从写语法 → 写逻辑 → 写意图 → 写契约。

每一次上移都释放了巨大的生产力,也把"把事情说清楚"这件事的成本提高了。歧义从未像今天这样昂贵。


十二、术语表与参考来源

12.1 术语表

术语 含义
Vibe Coding 凭自然语言感觉驱动 AI 生成代码、不审阅代码本身的工作方式。Karpathy,2025.02
Agentic Coding AI 以智能体形态自主完成规划、工具调用、验证与修正的闭环
Agentic Engineering Karpathy 提出,指在详细规格之下编排多个智能体、每阶段系统化验证的更纪律化做法
Spec-Driven Development (SDD) 规格驱动开发,口语称 Spec Coding。规格而非代码作为真相源
spec-first 先写规格驱动本次生成,规格未必长期维护
spec-anchored 规格留存并与代码共同持续演进
spec-as-source 规格是唯一主产物,代码完全由规格生成、人工不改代码
Constitution 项目宪法:测试标准、架构约束、安全红线等不可变全局原则(Spec Kit 独有)
EARS Easy Approach to Requirements Syntax,"WHEN 条件 THE SYSTEM SHALL 行为"的受限句式,源自劳斯莱斯安全关键系统实践
Context Engineering 上下文工程:为 Agent 组织、检索、注入高质量上下文的系统性工作
MCP Model Context Protocol,Agent 接入外部工具与数据源的接口标准
Bounded Autonomy 有界自主:在严格权限与审计护栏内运行 Agent

12.2 主要参考来源

  • Karpathy 关于 vibe coding 与 agentic engineering 的公开表述(2025--2026)
  • GitHub Spec Kit 官方仓库与 README(MIT 开源,2026 年 8 月发布 1.0)
  • AWS Kiro 官方文档与发布公告(2026 年 5 月国际发布)
  • Thoughtworks 技术雷达(SDD 列入 Trial 环)与 Birgitta Böckeler 关于 SDD 三级成熟度的分析
  • Martin Fowler 团队关于 spec-first / spec-anchored / spec-as-source 的论述
  • OpenAI Sean Grove,"The New Code" 演讲
  • Kent Beck 关于 TDD 与 AI Agent 协作的观点(Pragmatic Engineer 播客)
  • Accenture 450 人随机对照试验;McKinsey 关于交付速度的观测报告
  • Tessl 官方关于 Spec Registry 的定位与数据
  • OpenSpec、BMAD-METHOD 开源项目文档
  • 2026 年多篇关于 spec-driven development 的行业分析与框架对比文章

⚠️ 使用提醒

本报告中的量化数据均标注了来源与口径。涉及厂商自述的指标(准确率提升、漏洞率等)缺少独立第三方验证,建议在正式决策材料中以官方口径复核后再引用。


相关推荐
互联网叫兽1 小时前
RAG 知识库-基于元数据的细粒度权限控制
ai·llm·rag
却尘2 小时前
到底是选Workflow还是Agent?你真的搞明白你要什么了?别再盲目大力Agentic
ai编程
挖掘狂人3 小时前
从 "调模型" 到 "搭系统":Harness Engineering 凭什么成为 2026 年 AI 圈最热的新词
人工智能·agent·ai编程
Flynt3 小时前
这个日增 1400 星的 E2E 框架说"第二次跑不调模型",我改了按钮文案试了试
agent·ai编程·测试
一切皆是因缘际会3 小时前
掌控信息论:同源星际通信基础理论
人工智能·算法·ai
镜舟科技3 小时前
从 StarRocks 到 MIP:数据平台的下一步是“理解”
starrocks·sql·ai·prompt·agent·context·mip
飞哥数智坊4 小时前
AI 帮我把 Mac 下的 3D 鱼缸搬到了 Windows
人工智能·ai编程
周永恒4 小时前
AI制作配图
ai·markdown·绘图·工作流·博客园
yun123456789905 小时前
如何让 AI 事半功倍
ai