标签

AI代码自验证的可信工程实践

发布时间:2026-06-08 07:35来源:微信阅读:2

作者:Ido Pesok|Cognition AI(Devin 开发团队)

当AI智能体能够独立完成编码、调试、重构甚至完整项目开发后,一个致命问题随之出现:如何让AI可信地验收自己产出的代码?

如果智能体既当“开发者”又当“验收官”,很容易陷入自我验证偏差——写出的bug自己看不见,逻辑漏洞自己合理化,最终导致代码不可靠、工程不可信,也无法在真实生产环境规模化使用。

在Devin的工程实践中,我们构建了一套不依赖特定产品、可直接复用到任何AI Agent开发体系的代码验收机制。这套方法的核心目标只有一个:让AI对自己的代码保持“怀疑”,并通过结构化流程强制完成可信验证。

以下五条实践,你可以直接在团队内部落地。

智能体最容易犯错的场景,就是在同一个思考上下文里一边写代码、一边自我评价。 它会顺着自己的思路不断强化合理性,即便存在明显缺陷也难以察觉。

我们的做法是强制拆分角色:

简单理解:写代码的AI,不许直接审核自己的代码。 只有切断上下文连续性,才能从根源避免“自圆其说”式的错误验收。

AI验收代码最大的障碍是:需求模糊。 自然语言描述充满歧义,“实现用户登录”这种需求无法被机器可信校验。

我们要求所有开发任务必须先转化为可机器验证的规格基线:

验收Agent不理解“看起来正常”“逻辑通顺”,只判断:代码执行结果是否完全符合规格。

当基线足够严格,AI就无法用“差不多”“应该可以”蒙混过关。

可信验收不是“检查是否正确”,而是努力证明代码不正确。

我们让验证Agent以“破坏者”视角工作:

如果AI能轻松找到自己代码的问题,说明验证有效; 如果怎么都找不到问题,反而要提高怀疑等级。

对抗式测试,是让AI从“自我美化”转向“自我批判”的关键。

AI验收必须满足一个铁律:所有验证过程可复现、可审计、可追溯。

为此我们建立了三层保障:

当验证结果可复现,验收才具备可信度; 当过程可审计,人类工程师才能快速定位AI“隐瞒”的问题。

这一点对生产级AI工程尤其重要,也是很多Agent项目直接可用的基础工程实践。

即便AI验证全部通过,我们依然不允许Agent直接批准代码上线。

最终流程必须是:

AI擅长规模化、重复性、规则化校验,但不具备真实世界的业务判断力。AI负责“举证”,人类负责“决策”,这是保证可信的最后一道防线。

规模化使用AI智能体开发,核心不在于让AI更聪明,而在于用工程结构约束AI的不可靠性。

我们总结的五条核心实践:

这套方法不绑定Devin、不绑定Cognition技术栈,任何团队、任何AI Agent框架都可以直接落地。

当AI能够可信地验收自己的代码,智能体开发才能真正从Demo走向生产,从玩具走向工具。

解决AI Agent编码自查不严、自圆其说、漏bug、逻辑虚化、不可复现等问题,建立生产级可信的AI代码自检验收流程。适用于所有AI智能体开发、AI辅助编码、自动化迭代场景,不绑定Devin及任何私有技术栈。

1. 上下文隔离:写代码的Agent,不得自己审核自己的代码;

2. 规格先行:所有任务必须先有可机器执行的标准,禁止模糊自然语言需求;

3. 对抗验证:验收以“找错、破坏、击穿边界”为目标,而非“走流程通过”;

4. 可审计可复现:所有验证过程环境干净、日志完整、结果可复现;

5. 人类最终闭环:AI只输出证据报告,上线/合入最终由人决策。

执行时机:AI开发编码之前

输出物:机器可校验任务规格文档

必填内容项:

明确输入参数、输出格式、返回码、数据结构

全部边界条件:空值、极值、超限、非法格式、并发场景

异常处理规则:报错文案、降级策略、重试策略

性能、超时、兼容性、安全约束

量化通过标准:用例通过率、分支覆盖率、异常覆盖率阈值

禁止行为:禁止直接以“实现xx功能”自然语言需求直接开始编码

准入标准:无规格基线,不允许进入AI编码阶段

角色拆分(强制隔离):

开发Agent:仅负责依据规格实现代码、补全逻辑、修复基础问题

验证Agent:全新空上下文启动,不继承开发过程、无历史思考记录

隔离要求:两者独立会话、独立提示词、独立环境、独立日志,杜绝“自审自”

准入标准:未拆分双角色,禁止执行代码验收

验证Agent不以“功能正常”为标准,以主动击穿代码漏洞为目标,固定执行四类校验:

边界暴力测试:极值、空值、零值、超长、非法入参、特殊字符

异常路径测试:网络中断、超时、重试冲突、资源占用、并发竞争

逻辑穿透测试:尝试绕过校验、伪造状态、截断流程、覆盖分支死角

覆盖率校验:强制分支覆盖、异常分支覆盖,无无效空跑用例

判定逻辑:能发现问题 = 验证有效;零报错但覆盖率不足 = 验收不通过

所有验收必须在全新干净沙箱环境执行,禁止缓存、历史状态、本地残留依赖干扰结果。

必须留存的审计日志:

代码版本、提交快照、环境配置

每一次执行入参、出参、报错堆栈

测试用例明细、覆盖率报告、未覆盖分支清单

风险点、可疑逻辑、兼容隐患记录

硬性要求:任意验收结果,必须支持一键复现、溯源定位

AI输出标准验收报告(固定模板):

规格匹配度评分

测试覆盖率数据

已发现Bug/隐患清单(含复现步骤)

未覆盖风险点

验收结论:通过/条件通过/不通过

人类工程师终审动作:

复核高风险逻辑、边界场景、异常处理

确认AI未遗漏业务隐性约束

最终决定:合入、返工、暂缓

红线规则:AI无权自主判定代码上线/合入

1. 代码行为100%匹配前置规格基线;

2. 所有边界、异常、并发用例全部通过;

3. 分支覆盖率、异常覆盖率达标,无死角逻辑;

4. 无高危、中危隐患,低危隐患完成记录与修复计划;

5. 全流程日志完整、结果可复现、可审计;

6. 人工终审完成签字确认。

❌ 禁止无规格基线直接AI编码、直接自测

❌ 禁止同一上下文Agent自编自审

❌ 禁止仅走正向功能测试、跳过边界与对抗测试

❌ 禁止使用不干净环境、带缓存环境做验收

❌ 禁止AI自动放行代码合入、上线