微软发布PDD Kit:用数学证明检验AI编写的代码

微软研究院于 11 月 5 日推出了 PDD Kit(Proof-Driven Development Kit,证明驱动开发工具包),它使用数学证明来检验人工智能智能体编写的代码是否真正实现了开发者的要求。该方案由研究员 Alex Lavaee 与 Matthai Philipose 在微软研究院官方博客中介绍,它改变了代码审查的重点:团队不再逐行阅读 AI 生成的代码,而是审查意图本身——由机器证明代码履行了这一意图。

PDD Kit 试图解决的是规模问题。编程智能体如今一次就能交付完整功能,动辄数万甚至数十万行代码,逐行审阅拉取请求已不再可行。用自然语言写成的计划本应成为开发者与智能体之间的契约,但没有任何机制强制智能体遵守它——而它自己编写的测试往往验证的是它实际构建的东西,而非当初的要求。

工作原理

PDD Kit 将用日常语言表达的意图转化为 Verus 形式化规范。Verus 是一种面向 Rust 的证明语言,由微软研究院、卡内基梅隆大学、苏黎世联邦理工学院等机构共同开发。随后,验证器证明智能体的代码对所有可能输入都满足该规范,证明无法覆盖的部分则以测试补充。该工具包运行在 GitHub Next 的实时多人规划环境 Chopin 中。

整个流程分为两半:首先,团队用日常语言审查意图,PDD Kit 会提出一位细心审查者会问的问题,并把答案记录在意图文档中;随后,工具包生成证明,证明代码满足形式化规范,并为其余部分生成高质量测试。使用这一流程不需要形式化方法背景。

试验:一家 Rust 商店的登录逻辑

为了演示该工具包,团队构建了 Pet Store——一个完全用 Rust 编写的全栈网络应用,约 5000 行代码:后端使用 Axum 与 SQLite,负责库存、促销、订单和结账;店面则是编译为 WebAssembly 的 Leptos 应用。演示聚焦登录逻辑,出发点只有两句话:只有密码正确才发放令牌,且只有管理员账户才能获得管理员令牌。

Verus 形式化验证了五个函数——login_flow、login_core、lookup_target、decide_login 和 issue_token。据研究人员介绍,Verus 强化了代码并发现了既有的缺陷,证明了登录逻辑在规范范围内不存在缺陷。开发者只审查了意图,从未逐行阅读生成的代码。

证明覆盖什么——又不覆盖什么

微软明确划定了保证的边界。六个组件位于证明之外,依赖开发者逐一接受的假设契约:两次数据库查询、基于 bcrypt 的密码校验、时钟、令牌签名、数据库错误处理以及请求解析。每一项都由测试覆盖。

证明也不涉及规范之外的内容:登录是否会响应、响应多快、尝试次数上限是多少、错误信息是否清晰。而且 PDD Kit 目前只验证 Rust——即 Verus 支持的语言。其他语言的项目可以移植到 Rust,或通过绑定调用已验证的 Rust 代码。

对抗“氛围验证”

该工具包的一项功能是变异检查:pdd-prove 会在代码副本中为每个规范子句植入一个缺陷,Verus 必须拒绝每一个变异体。如果某个变异体通过了,说明相应子句几乎没有约束力——它会被作为缺口返回。这是针对研究人员所称“氛围验证”(vibe verification)的防御:那些能被证明却几乎不保证任何内容的弱不变量。

任务通过后,工具包会提交包含已验证代码的拉取请求,并将每项需求标记为已形式化验证或已实证检验。pdd-ship 流程将 Verus 检查加入持续集成,此后对登录逻辑的任何改动都必须继续对照同一规范完成证明。

PDD Kit 目前仍是研究原型,访问被描述为有限的研究预览。但它为一个真实问题指出了具体方向:随着智能体编写的代码越来越多,审查意图——并证明意图得到了履行——可能是审查跟上节奏的唯一办法。

来源

微软研究院官方账号 @MSFTResearch 也于 2026 年 11 月 5 日在 X 上分享了这项工作。

图片来源:Microsoft Research——PDD Kit 决策流程图,来自 Microsoft Research 官方博客文章的题图。

透明声明:本文在人工智能的协助下完成,并对照了 X 上的公开帖文与互联网来源。请查阅原始来源以确认相关信息。

作者:Muse