VeriStruct: AI-assisted Automated Verification of Data-Structure Modules in Verus

本文介绍了 VeriStruct,这是一个将 AI 辅助自动化验证从单一函数扩展至复杂数据结构模块的新框架,它通过规划器协调抽象与规范生成,并利用语法引导和自动修复机制解决 Verus 注解理解难题,在 11 个 Rust 模块的评估中成功验证了 99.2% 的函数。

Chuyue Sun, Yican Sun, Daneshvar Amrollahi, Ethan Zhang, Shuvendu Lahiri, Shan Lu, David Dill, Clark Barrett

发布于 2026-03-04
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇文章介绍了一个名为 VeriStruct 的新工具,它的核心任务是利用人工智能(AI)来自动检查计算机代码中的“数据结构”是否安全、无漏洞

为了让你更容易理解,我们可以把这篇论文的内容想象成**“给一座复杂的乐高城堡请了一位 AI 建筑监理”**。

1. 背景:为什么我们需要这个?

想象一下,现在的程序员(或者 AI 助手)正在用乐高积木搭建各种复杂的城堡(也就是软件中的“数据结构”,比如队列、树、地图等)。

  • 问题:虽然 AI 能很快搭出城堡,但它可能会偷偷把承重墙搭歪,或者把地基打得不稳。一旦城堡建好了再发现这些问题,拆掉重来的代价太大了。
  • 传统方法:以前,我们需要请一位极其专业的“人类建筑监理”(形式化验证专家),他需要逐行检查每一块积木的摆放是否符合物理定律(数学逻辑),并写下厚厚的检查报告(代码注释/规范)。但这非常耗时、昂贵,而且只有少数专家能懂。
  • 新挑战:现在的 AI 虽然聪明,但它不懂“建筑监理”的专用术语(Verus 的语法),经常乱写检查报告,导致真正的监理(验证器)看不懂,直接报错。

2. VeriStruct 是什么?

VeriStruct 就是一个**"AI 建筑监理团队”。它不只是让 AI 随便写写,而是设计了一套系统化的工作流程**,专门用来给复杂的乐高城堡(数据结构模块)做自动检查。

它的工作流程就像是一个**“规划师 + 施工队 + 质检员”**的闭环:

第一步:规划师(Planner)

在开始干活前,VeriStruct 先派出一位**“规划师”**。

  • 作用:它先看看这座城堡长什么样,决定需要哪些检查步骤。
  • 比喻:就像盖房子前,规划师会判断:“这座房子需要画结构图(View),需要定承重规则(类型不变量),还需要写操作手册(规范),最后还要现场演练(证明代码)。”
  • 聪明之处:如果某个小房子不需要复杂的承重规则,规划师就会跳过那一步,避免浪费 AI 的精力。

第二步:施工队(生成模块)

根据规划师的指令,AI 开始生成具体的“检查报告”:

  1. 抽象图(View):把复杂的乐高积木(比如圆环缓冲区)简化成一张简单的逻辑图纸。
    • 比喻:原本圆环缓冲区内部有很多复杂的指针和索引,AI 把它抽象成“一个排队的人流”,这样监理更容易看懂。
  2. 承重规则(Type Invariant):规定积木必须满足的条件(比如“头指针永远不能大于尾指针”)。
  3. 操作手册(Specifications):规定每个动作(如“放入积木”、“取出积木”)前后的状态变化。
  4. 现场演练(Proof Blocks):给验证器提供具体的线索,帮助它通过数学证明。

第三步:质检员与修理工(Repair Stage)

这是 VeriStruct 最厉害的地方。

  • 问题:AI 生成的报告经常有错。比如,它可能用错了术语,或者逻辑不通。真正的“监理”(Verus 验证器)会报错说:“这里不行,因为你在检查报告里用了‘施工动作’而不是‘逻辑描述’。”
  • 解决:VeriStruct 有一个**“修理工”**。
    • 当验证器报错时,修理工会分析错误信息(比如“你混淆了执行函数和逻辑函数”)。
    • 然后,修理工会自动重写那部分 AI 生成的代码,修正错误,再重新提交验证。
    • 这个过程会循环多次,直到所有错误都被修好,或者达到最大尝试次数。

3. 它做得怎么样?(实验结果)

作者找了 11 个 不同的复杂乐高城堡(11 种 Rust 数据结构,如环形缓冲区、树、位图等)进行测试。

  • 成果:VeriStruct 成功帮 10 个 城堡通过了所有检查,总共验证了 129 个功能中的 128 个(成功率高达 99.2%)。
  • 对比
    • 如果只用普通的 AI(没有规划师和修理工),只能搞定 4 个城堡,验证 52 个功能。
    • 即使是目前很厉害的 AI 编程助手(Claude Code),也只能搞定 8 个城堡,验证 102 个功能。
  • 结论:VeriStruct 的“规划 + 生成 + 修复”这套组合拳,比单纯让 AI 瞎猜要有效得多。

4. 核心创新点总结(用大白话讲)

  1. 从“单点”到“整体”:以前的 AI 验证只能检查单个函数(比如“这个加法对不对”),VeriStruct 能检查整个数据结构模块(比如“这个队列在并发操作下会不会乱套”)。
  2. 懂行话:它把 Verus 的专用语法(那些让 AI 头疼的规则)写进了提示词(Prompt)里,教 AI 怎么说话。
  3. 自我纠错:它不指望 AI 一次做对,而是设计了专门的“修理工”模块,像人类调试代码一样,根据报错信息自动修补,直到完美。

5. 未来的展望

作者说,现在还需要人工提供“测试用例”(比如告诉 AI 这座城堡要承受什么样的压力测试)。未来他们希望 AI 能自己生成这些测试用例,甚至用“强化学习”让 AI 在不断的试错中变得更聪明,最终实现全自动的、零人工干预的代码安全验证

一句话总结
VeriStruct 就像是一个懂行、会规划、还能自动修 bug 的 AI 建筑监理,它让原本只有专家才能做的复杂代码安全验证,变得自动化且高效,极大地降低了软件出错的概率。

在收件箱中获取类似论文

根据您的兴趣定制的每日或每周摘要。Gist或技术摘要,使用您的语言。

试用 Digest →