FM-Agent: Scaling Formal Methods to Large Systems via LLM-Based Hoare-Style Reasoning

本文提出了 FM-Agent,这是首个利用大语言模型通过自顶向下方式自动生成自然语言规范并执行组合式推理的框架,从而在无需人工编写形式化规范的情况下,成功对大规模系统(最高达 14.3 万行代码)进行自动化验证并发现了 522 个严重缺陷。

原作者: Haoran Ding, Zhaoguo Wang, Haibo Chen

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

这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

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

这篇文章介绍了一个名为 FM-Agent 的新工具,它的任务是给那些由人工智能(AI)自动编写的庞大软件系统“做体检”,找出其中的漏洞。

为了让你更容易理解,我们可以把编写软件想象成建造一座巨大的摩天大楼,而 FM-Agent 就是这位超级智能的建筑监理

1. 背景:AI 造楼,但容易“偷工减料”

现在,AI(比如 Claude Code、GitHub Copilot)已经能像熟练的工人一样,自动写出几十万行代码,甚至能造出编译器、操作系统这样的大楼。

  • 问题:AI 有时候会“幻觉”,写出的代码虽然看起来像那么回事,但里面藏着很多隐蔽的 Bug(就像大楼里藏着没焊好的钢筋或没封好的窗户)。
  • 难点:以前,要检查大楼是否安全,需要人类专家写一份份详细的“施工规范”(形式化规范),告诉检查员每一根柱子应该多粗、每一层楼应该多高。但这太累了,尤其是当大楼是 AI 自己盖的,人类甚至不知道 AI 原本想盖成什么样,根本写不出准确的规范。

2. 核心创新:FM-Agent 的“逆向思维”

传统的检查方法是“自下而上”:先看砖块(代码实现),再猜它应该是什么样子。如果砖块本身是歪的,猜出来的规范也是歪的。

FM-Agent 换了一种**“自上而下”**的聪明做法,它有三个绝招:

绝招一:看“客户”的需求,而不是看“砖块”的瑕疵

  • 比喻:想象你在检查一个房间的门。
    • 传统方法:直接看门做得怎么样。如果门是歪的,你就以为“这扇门本来就是歪的”,从而忽略了它其实应该装直。
    • FM-Agent 方法:它不看门本身,而是看谁在推这扇门(调用者)。如果推门的人(上层代码)以为门是直的,并且按照“门是直的”这个预期去推,但门却卡住了,那就说明门(被调用的函数)有问题。
  • 原理:FM-Agent 利用 AI 分析“调用者”是如何使用某个函数的。通过调用者的意图,它能推断出这个函数应该做什么,而不是它实际做了什么。这样,即使函数本身有 Bug,FM-Agent 也能发现它“辜负了调用者的期望”。

绝招二:用“人话”写规范,而不是“天书”

  • 比喻:以前的检查员只懂一种极其复杂的“数学语言”(形式化逻辑),人类很难写,AI 也很难理解。
  • FM-Agent 方法:它直接让 AI 用自然语言(人话)来写规范。比如:“如果输入是空字符串,就返回错误”。
  • 原理:现在的 AI 既懂代码逻辑,又懂人话。FM-Agent 把霍逻辑(一种经典的程序验证理论)升级了,让 AI 直接用自然语言去推理:“如果 A 发生,B 应该变成什么样”。如果最后的结果和“人话”规范对不上,就报警。

绝招三:不仅报警,还“现场演示”

  • 比喻:以前的检查员发现 Bug 后,只说“这里可能有问题”,但说不清怎么复现。
  • FM-Agent 方法:它发现 Bug 后,会立刻现场造一个“事故现场”(生成测试用例)。
  • 原理:它会生成一个具体的输入程序,跑一遍,如果大楼真的塌了(程序崩溃或结果错误),它就确认这是一个真 Bug,并告诉人类:“看,只要输入这个,大楼就会塌。”这大大减少了误报。

3. 它的威力有多大?

研究人员用 FM-Agent 检查了几个由 AI 自动生成的巨型系统(有的高达 14 万行代码,相当于一个小型操作系统或编译器):

  • 速度:它能在 2 天内完成检查。
  • 战果:这些系统原本已经经过人类和 AI 的多轮测试,但 FM-Agent 还是挖出了 522 个新 Bug
  • 后果:这些 Bug 有的会导致系统崩溃,有的会导致计算结果错误,非常危险。

4. 总结

FM-Agent 就像是一个拥有“读心术”的超级监理。
它不纠结于代码写得有多烂,而是通过观察“谁在用这段代码”以及“用户想要什么”,来推断代码应该是什么样。一旦发现实际表现和预期不符,它就立刻现场演示故障。

这项技术解决了 AI 时代软件开发的痛点:当代码是 AI 写的,人类看不懂时,我们如何保证它不出错? FM-Agent 给出了一种自动化的、可扩展的解决方案,让大型 AI 生成系统变得更安全、更可靠。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →