什么是 vericoding?AI 生成代码时代的验证新范式
vericoding(AI 引导的认证程序精化)是一种以规范而非实现为核心的软件工程方法,由定理证明器(如 Rocq、Lean)充当认证器、AI 负责猜测实现,机器负责验证代码是否符合规范。它按梯度推进:从 Gherkin 场景的 BDD,到 specsaver 的可执行运行时契约,再到 axiomander 的机械化证明。Scidonia 用该方法证明程序行为并优化慢路径。
vericoding(AI 引导的认证程序精化)是一种以规范而非实现为核心的软件工程方法,由定理证明器(如 Rocq、Lean)充当认证器、AI 负责猜测实现,机器负责验证代码是否符合规范。它按梯度推进:从 Gherkin 场景的 BDD,到 specsaver 的可执行运行时契约,再到 axiomander 的机械化证明。Scidonia 用该方法证明程序行为并优化慢路径。
Rust 开发者 Nikita 认为 AI 只加速了写代码这一段,上下文准备、审查、测试和修复仍要人来做,因此该按“到可上线改动”的时间算收益,而不是按模型首次响应算。
Anthropic 的 Boris Cherny 表示,Claude 编写的生产代码应比人类编写的代码有更高门槛。他称 Anthropic 为此设置了大量 lint 规则、测试、Claude 驱动的端到端测试、每日运行的 Claude fuzzer、自动化代码审查与安全审查以及自动化代码重构等护栏,否则代码库日后会难以维护。
SWE-bench 的百分比是智能体编程领域被引用最多的数字,但它比通常被引用的方式要窄得多。文章拆解了一次评测如何产出这个数字:提交是 JSONL 格式的补丁,在 Docker 容器中应用到 base_commit 并运行仓库测试,FAIL_TO_PASS 全部通过且 PASS_TO_PASS 不回归才算 resolved,默认是 pass@1。
博主用 Qwen3-30B-A3B-Instruct-2507 在租用的 H200 上生成 30 条回答,其中部分用 SynthID-Text 加水印,让读者分辨哪条被水印。首轮 278 人平均得分 3.92/10,重排题目后 73 人平均 3.4/10,接近纯随机猜测的 3.33,说明读者无法识别水印。目前测验累计约 4700 份回答,均值 3.44/10。
有开发者指出,AI 只提升了写代码的速度,但正经公司里 90% 的时间花在跨部门协调、审批和排期上,效率提升非常有限。他举例称一个涉及三个部门、5 个系统的紧急需求,光沟通协调就耗掉三天,最后自己只加了三行配置。另有开发者称,20-30 人的团队如今 3 人加 5 个 Claude 200 刀账号就能同时接 20 个项目。
Martin Fowler 用 Sonnet 4.6 生成、Opus 4.8 盲评的方式,对小型、中型和较大型三类业务逻辑任务分别跑 TDD 与非 TDD 方案,结论是两者质量没有明显差异,非 TDD 方案在设计和测试质量上还多次略高,变异分数也没有实质差别。
推荐理由:作者用同一批任务对比 TDD 与非 TDD 智能体实现,给出 token 成本与设计质量差异,并反思哪些 TDD 收益在智能体循环里失效。
作者在评审数千个编码 Agent 的改动后发现,过早加入 rescue 块、兜底逻辑和日志,往往说明功能构建顺序错了。Agent 倾向横向铺开数据库、服务、API、校验和 UI,提前设想完整系统,这与 SWE-bench 只衡量补丁能否解决限定问题并通过测试的评估方式相符。
Addy Osmani 认为,Agent 每天产生数十万甚至上百万次改动,逐行人工评审已不可行,代码质量要靠在 Agent 周围设置质量门禁来保证。这些约束包括单元测试、属性测试、验收测试、变异测试,以及圈复杂度和行长等代码质量指标,并分布在改动开始前、Agent 工作过程中和能否进入生产三个环节。
Geoffrey Huntley 宣布加入 Antithesis,主张用形式化验证和确定性系统测试应对 AI 时代代码量激增带来的审查危机。他认为软件编写已被商品化,但验证与理解仍非免费,Antithesis 结合 LLM 对抗式代码审查与 pre-commit hook 驱动的语言分析器,可让人类和智能体交付可靠软件而无需掌握专门知识。
Augment Code 提出循环工程,即设计从触发、执行、验证到完成结果的智能体循环,让智能体承担中间环节、人类只在需要判断的检查点介入。文章把循环工程与提示词工程、上下文工程分层对比,并给出触发、执行、验证、结果、改进五个阶段,以及代码评审、工单转 PR、漏洞修复、事故响应四种已在生产运行的团队级循环。
推荐理由:Augment Code 把循环工程拆成触发、执行、验证、结果、改进五阶段,并给出四种已在生产运行的团队级循环形态。
AI 编程基准只衡量模型能否在限定条件下完成改动,却测不出它留下的代码库是否更难维护——重复逻辑、耦合收紧、多余抽象都不会让当前测试失败,代价在后续扩展或排查线上问题时才显现。作者主张把可维护性放进交付流程:仓库级规范、清晰的架构边界、有意义的测试与静态分析,并审查重复、复杂度、架构漂移和模式不一致。
Addy Osmani 提出软件工厂由 loop、harness、factory 三层构成,工厂不是更聪明的智能体,而是多个带 harness 的 loop 汇入一个评审门禁、由人掌控外层循环。
推荐理由:作者把软件工厂拆成 loop、harness、factory 三层,并指出验证而非生成才是真正的瓶颈。
当前 AI 智能体演示普遍在无限 token 预算、全新或精选代码库、无合规与运维压力的条件下运行,展示的是能力上限而非真实交付环境。AWS 副总裁 Marc Brooker 指出,智能体的机会受限于缺陷率,开发者调研中已有团队称其 AI 工具预算不可持续。作者建议只给智能体与验证能力和预算相匹配的自主权,用标准、检查项和可追踪的支出逐步放宽。
作者评审了一个 Agent 提交的 Pull Request,认为它又快又好,原因不在模型有多聪明,而在于质量门槛被写进了循环内部。这个 PR 在请求人工介入前就说明了改动了什么、刻意没动什么、该重点审查哪里、遵循了哪些规范,并附上了已运行的验证证据。作者由此提出,给 Agent 一个明确的完成定义和必须自证的标准,它就会为通过标准而优化,速度不是靠降低门槛换来的。
Addy Osmani 在 AI Engineer World's Fair 2026 闭幕演讲中提出,智能体负责内循环(调查、实现、验证、重复),工程师要负责外循环,即对系统结果的可问责性。
一些团队开始让 AI 智能体在 CI 全绿后自动合并自己提交的 PR,不再有人工介入。但绿色检查之所以能作为合并信号,靠的是检查运行前人类对意图、测试保护范围和系统风险点的判断,CI 只是确认而非替代这一判断。作者认为自动合并只适合低风险、边界清晰且有历史记录的改动,信任需要靠一次次带证据的改动积累,而不是打开一个开关。
一份面向 AI 工程岗位的面试题追问清单,覆盖代理网关(如 OpenRouter/LiteLLM)、MCP/CLI、从零手写 Agent、多智能体编码流程、自定义 benchmark 以及本地部署约 27B-Q3_K_M.gguf 模型等方向。作者认为,这些题目的通用版本如今谁都能靠 vibe coding 一晚做出来,已失去简历价值,真正稀缺的是把任务打磨到"理想"状态的能力。
针对 AI 编程智能体指令文件中常见的“写整洁代码”“用 TDD”“遵循 SOLID”等表述,作者指出这些说法本身没错,但都不是可自我执行的指令。智能体主要复用代码库中已有的模式,在好坏混杂的真实代码库里,这类指令只是表达愿望。作者主张改为展示好与坏的具体样例,并让智能体证明自己实际遵循了哪些模式、在哪里应用、如何验证结果。
Drew Breunig 提出提示词债概念,认为用自然语言手写提示词来定义系统行为会带来三重后果:迭代变慢、团队难以读懂、应用被锁死在单一模型上。他引用 Datadog 报告称其观测到的流量中最常用的模型是 GPT-4o,并举例 Fable 的系统提示词把同一条版权规则重复了六次、Claude Code 让 Opus 七次要求在一次响应中返回多个工具调用。
作者结合 18 个月构建智能体系统的经历提出,AI 原生设计应先问“这块能不能删掉”,而不是“能不能加上 AI”,并称自己的技术栈随模型变强缩减了 60-70%。
面对 AI 编程智能体带来的提速压力,作者认为更快的代码生成不等于更快的软件交付,意图、验收标准、风险边界、验证、证据与评审等交付纪律不可让步。智能体只有在既有工作流内运作才能参与其中,工作越交给智能体,可评审性就越重要。这是 Software Dark Factory 背后的核心理念:智能体应强化而非取代经过验证的交付实践。
越来越多工程团队在讨论让 AI 智能体自动合并 PR,但真正的信任问题不在模型本身,而在于变更意图是否明确可审、验收标准是否事先定义、风险边界是否划定、验证是否真正执行、智能体权限是否受限,以及是否有可审查的决策记录。缺少这些,自动合并只是让决策变快,而非交付变快。Software Dark Factory 正尝试把意图、标准、约束、验证和权限边界内建到工作流中,让治理先于速度。
作者认为编码智能体的 harness 是模型外的软件层,负责组装上下文、暴露工具、控制运行循环、执行权限并评估结果,因此同一模型在不同 harness 下表现会完全不同。
作者指出用 stripe_subscription_id.present? 判断用户能否访问,是把支付状态和访问权限当成同一件事,随着免费试用、宽限期、合作方访问、管理员授权等场景出现,can_access?
作者 Aldrin 认为 vibe coding 适合用自然语言做低成本探索,比如脚手架、陌生 API、UI 变体和测试思路,但快速可见的草稿不等于功能可以被团队接手。
宝玉点评《Why Your "AI-First" Strategy Is Probably Wrong》一文,认为这套打法本质是软件工程问题,AI 时代人成了瓶颈。
UC San Diego 研究团队通过 13 场实地观察和 99 名资深开发者的问卷(共 112 人,中位经验 10 年,使用 Claude Code、Cursor、GitHub Copilot、Windsurf)发现,专业开发者并不 vibe coding,而是通过规划和监督严格控制智能体。
Terminal-Bench 发布任务设计指南,提出好的基准任务应具备对抗性、难度和可读性:指令像给资深工程师那样清晰直接,测试只验证结果而非实现细节,允许替代解法并防止 reward hacking。难度应来自问题本身,而非苛刻的输出格式或隐藏假设。作者建议亲自运行任务、检查容器、执行 oracle 并观察真实智能体轨迹,失败运行尤其能揭示任务是否真正困难。
作者认为,软件组织一直把人的实现时间当作稀缺投入,智能体打破了这个假设,因此策略必须可执行、验证必须随实现规模扩展。他以在大型 TypeScript 代码库开启 ESLint 的 no-await-in-loop 规则为例,发现 600 处违规,过去这需要昂贵的迁移,现在一个 PR 就能完成修复并补齐测试覆盖。
推荐理由:作者以开启 ESLint 规则、迁移 600 处违规的亲身实践,说明智能体时代实现成本下降后,约束与验证为何成为新的稀缺环节。
Drew Breunig 在 MLOps Community 的 Coding Agents 会议上分享了他构建无代码库 whenwords 的经验,并提出规范驱动开发不是单向方程而是三角反馈循环:写代码会反过来改进规范和测试。
Martin Fowler 提出人类在 AI 辅助软件开发中应处于 on the loop 而非 in the loop,即构建和管理工作循环,而不是逐行检查智能体产出的代码。
Martin Fowler 就 OpenAI 的 Harness engineering 实践发表初步思考,该团队以“完全不手写代码”为约束,用 AI 智能体维护一个超过 100 万行代码的产品,历时 5 个月。
Geoffrey Huntley 推荐 Moss 撰写的一篇关于智能体反向压力的文章,认为它值得关注 AI 上下文工程的人细读。文章的核心观点是,过去一年里表现最好的智能体应用,都在智能体周围搭建了结构,为它提供关于质量和正确性的自动化反馈,从而让它能承担更长周期的任务。
Harper Reed 认为 AI 代码生成正把开发推向"15 分钟瀑布":先写清规格、让模型生成、再审查,并可同时跑多个智能体分别写功能、文档和测试。他建议团队先用低风险内部项目做小范围试点、轮换成员参与,并把规格和架构文档沉淀到共享仓库。他还提醒 AI 容易过度测试基础逻辑,需频繁提交以便回滚。
Martin Fowler 针对编码助手不可靠带来的代码质量下降和浪费时间两类风险,提出一套评估建议可信度的自问清单:反馈回路是否够快、是否可靠、出错的影响范围有多大、是否需要很新的信息。
Martin Fowler 结合 Thoughtworks 内部使用 GitHub Copilot 的经验,分析行内代码生成在什么情况下更有用。他给出的有利条件包括技术栈更主流、问题更常见、生成片段更小、开发者更有经验、出错代价更低,并指出经验不足的开发者使用这类工具时任务耗时可能反而增加 7% 到 10%。他建议开发者花一段时间在安全区内外实验,逐步建立对工具适用边界的判断。
Martin Fowler 用 GitHub Copilot 生成 TypeScript 的 median 函数,Copilot 给出三个实现:第一个会修改输入数组,第二个用 slice() 复制后正确,第三个因忽略偶数长度而错误。他还让 Copilot Chat 先生成测试,测试覆盖了奇偶长度、负数与重复值,并让 ChatGPT 指出第三个实现的问题。