三思而后行:LLM智能体的预行动验证
摘要
本文介绍了一种用于LLM智能体的确定性验证框架,以防止shell命令和代码编辑中的静默故障,展示了高捕获率,并发布了基准测试和验证器。
arXiv:2609.11957v1 Announce Type: new
摘要:LLM智能体通过发出动作来作用于世界:运行shell命令、应用编辑。错误的动作并不总是大声失败;它可能静默地失败,产生看似合理但不正确的效果,且不引发错误。我们认为,一种低成本的确定性检查,在动作生效前运行,是一种有效且未充分利用的智能体监督形式,并且我们在一个框架中研究了它在两种动作模式下的应用。其思想是在任何执行器运行之前,通过构造来固定动作的正确效果,以便直接测量静默故障,验证器可以放弃而非猜测。对于shell命令,一个针对9930条命令和482个工具的静态验证器以10.0%的假阳性率捕获了95.8%的无效命令。其语法和二进制检查是预言精确的,在捕获一半所有错误的同时假阳性为零;标志检查仅受限于帮助文本覆盖范围,并且解释了所有假阳性。对于代码编辑,一个针对224个文件中640次编辑、隔离应用步骤的基准测试揭示了一个显著的分歧。以内容为锚的格式,如search/replace和diff,能干净地失败,而以位置为锚的格式则静默失败:行号在单行偏移下损坏了99.1%的文件,函数名编辑有12.7%的时间击中错误函数。在两种设置中,一种在不确定时拒绝的政策将静默故障转化为可恢复的故障,以可调的成本影响适用性:选择性接地以7.0%的假阳性率达到0.958的召回率,而一个锚定并验证的应用器在8320次试验中记录了一次静默误应用(0.01%)。我们发布了这两个基准测试、验证器和保护器。
查看缓存全文
缓存时间: 2026/09/14 08:28
# LLM智能体的动作前验证 来源:https://arxiv.org/html/2609.11957 ## 先看再做:LLM智能体的动作前验证 ###### 摘要 LLM智能体通过发出动作与世界交互:运行的shell命令、应用的编辑。错误的动作并不总是明显失败;它可能静默失败,产生看似合理但错误的效果而不引发任何错误。我们认为,在动作生效前运行一个廉价的确定性检查,是一种有效且未被充分利用的智能体监督形式,并在单一框架内研究了两种动作模态。核心思想是:在任何执行器运行之前,通过构造固定动作的正确效果,从而直接度量静默失败,并允许验证器弃权而非猜测。对于shell命令,针对9,930条命令和482个工具的静态验证器在10.0%的误报率下捕获了95.8%的无效命令。其语法和二进制检查是预言机精确的,在捕获一半错误的同时实现了零误报;标志检查仅受限于帮助文本的覆盖范围,并且是所有误报的来源。对于代码编辑,一个针对224个文件中640次编辑的基准测试隔离了应用步骤,揭示了显著的差异。基于内容的格式(如搜索/替换和diff)会干净地失败,而基于位置的格式则静默失败:单行偏移会导致99.1%的文件行号损坏,函数名编辑则有12.7%的概率命中错误函数。在两种设置中,一个“不确定时拒绝”的策略都能以可调的适用性代价,将静默失败转化为可恢复的失败:选择性接地在7.0%误报率下达到0.958的召回率;而“锚定与验证”应用器在8,320次试验中记录了一次静默误应用(0.01%)。我们发布了这两个基准测试、验证器和防护器。 代码—将发布。 数据集—将发布。 ## 1引言 语言模型智能体正越来越多地执行具有重大影响的动作。它们在终端中运行shell命令,并对源文件应用编辑(Jimenez等人,2024 (https://arxiv.org/html/2609.11957#bib.bib1);Yang等人,2024 (https://arxiv.org/html/2609.11957#bib.bib13);Wang等人,2025 (https://arxiv.org/html/2609.11957#bib.bib14);Xie等人,2024 (https://arxiv.org/html/2609.11957#bib.bib3))。与聊天响应不同,动作会改变状态,而错误的动作未必会自我暴露。一个带有幻觉标志的命令可能会报错,但也可能执行一些与预期略有不同的操作。一个针对错误位置的编辑可能无法应用,或者可能干净地应用到错误位置,完全不产生错误地损坏文件。我们将第二种情况称为*静默失败*:动作看似成功,因此智能体或下游检查均未被提醒,错误传播到后续步骤。当智能体在长且无人干预的轨迹上行动时,早期的一个静默动作可能悄无声息地使之后所有内容失效,因此单个动作的可靠性支撑着整个系统的可信度。 这些情况是具体的。一个智能体发出 `tar -xf archive.tgz`(遗漏了 `z`),或者传递了一个当前安装版本不支持的标志,会得到它可以读取并从中恢复的错误消息。一个智能体将编辑表示为“替换第40-52行”,而文件此时已偏移了一行,就会覆盖错误的十二行并报告成功,而损坏只会在很久之后(如果有的话)才会浮现。第一种失败是显式的且可恢复;第二种是静默的且具有破坏性。区别不在于运气,而在于动作的表示方式。 静默失败是一个监督问题。模型无法通过自省可靠地捕捉自己的错误,而事后修复(Madaan等人,2023 (https://arxiv.org/html/2609.11957#bib.bib10);Olausson等人,2024 (https://arxiv.org/html/2609.11957#bib.bib20))仅在观察到错误后才触发,而根据定义,静默失败未被观察到。我们研究一种互补机制:一个廉价的确定性检查,在动作生效前执行,要么允许动作通过,要么拒绝它并返回一个可恢复的信号。这是通过构造实现的监督,而非通过第二次可能出错的模型调用。它是模型无关的,不消耗推理成本,并且是部署智能体所需的那种经验评估过的“设计即安全”防护。 一个方法论上的举措使得这个问题变得可度量,并应用于两种动作模态。对于每个动作,我们在任何执行器或应用器运行之前,通过构造固定其正确效果。每次试验随后落入三类之一:*成功*,效果匹配目标;*干净失败*,动作被拒绝或未生效,智能体可以恢复;或者*静默失败*,动作在错误的目标上生效且未引发任何信号。由于验证器也可以弃权,我们绘制的是安全性/适用性前沿,而非单个点。相同的结构支配着两种模态:一个廉价检查、一个预言机精确的核心,以及弃权的自由,这指向了动作级监督的通用方案。据我们所知,这是首次在一种构造中测量静默动作失败(该构造在执行前固定了真实值),并在一种分类法下跨越两种不同的智能体模态进行研究。 ### 贡献。 (1) 一个用于*动作前验证*的通用框架:构造定义的真实值、成功/干净失败/静默失败的分类法,以及基于弃权的操作点(第2节 (https://arxiv.org/html/2609.11957#S2))。(2) 针对*shell命令*,一个基于482个真实工具、采用反循环构造的9,930条命令基准,以及一个静态验证器,其错误分解清晰地将预言机精确、零误报的核心与覆盖范围有限的标志检查分开(第3节 (https://arxiv.org/html/2609.11957#S3))。(3) 针对*代码编辑*,一个隔离应用步骤的基准,包含224个文件上的640次编辑,揭示了基于内容与基于位置的安全二分法,以及普通错误处理无法捕捉的静默失败模式(第4节 (https://arxiv.org/html/2609.11957#S4))。(4) 两个可部署的防护器:带有两级门控的选择性接地和鲁棒应用器(一个锚定与验证的元应用器),它们以可调的代价将静默失败推向零,以及一个跨领域综合分析,表明单一结构是两者的基础(第5节 (https://arxiv.org/html/2609.11957#S5))。 ### 与AI对齐的关联。 这是对LLM智能体动作的*经验鲁棒性评估*,也是一种*设计即安全*的监督机制:它量化了普通错误处理无法捕捉的静默失败模式,精确隔离了错误和误报的来源,并提供了廉价的防护器,将不可恢复的静默错误转化为可恢复的干净失败。两项研究都发布了开放基准、可复现的代码和实用的评估工具,这是本赛道明确鼓励的。 ## 2动作前验证:一个通用框架 智能体发出一个动作 `a`,意图在状态 `s` 上产生效果。预期效果定义了目标 `T`。一个确定性验证器 `V` 在执行前检查 `a`(以及 `s`),然后要么允许要么拒绝。如果动作被允许,执行器产生实际效果 `R`。 ### 构造定义的真实值。 核心设计选择是,`T` 在*任何执行器运行之前*就被固定。对于命令,有效性由独立于验证器的行为预言机确立;对于编辑,编辑后的文件被直接合成,然后渲染成格式并扰动。因为 `T` 是独立已知的,所以每次试验都有一个明确的结果: - • 成功:`R` 实现了 `T`。 - • 干净失败:动作被拒绝或未生效。*可恢复*:智能被告知并可以重试或修复。 - • 静默失败:动作生效但 `R ≠ T`。*危险*:未引发任何信号,因此未触发恢复。 此分类法将真实检测与猜测分开,并使安全性和适用性成为独立的轴。拒绝所有动作的验证器是绝对安全的但无用的;允许所有动作的验证器最大化了适用性但无法防止任何事。我们研究的是这两个极端之间的前沿。因为静默失败是根据已知目标定义的,而非从下游症状推断,所以单个标量——被允许动作中的静默率——直接捕获了安全相关的轴。正是这一点使得两种模态可以在同等基础上进行比较。 ### 弃权与操作点。 验证器无需对每个动作都做出裁决。当证据模糊时,它可能弃权,在没有强烈主张的情况下允许通过;或者在部署的门控中发出非阻塞警告。扫描弃权规则会在(适用性,安全性)空间中描绘一条曲线,并我们报告其上的操作点。每个阈值 `θ` 诱导一个点 `(app(θ), safe(θ))`,其中适用性是被允许且正确的动作比例,安全性是1减去被允许动作中的静默率;部署的防护器在满足最低安全性的前提下最大化适用性。相同的结构在两种模态中重现。廉价检查分为一个预言机精确的部分(失败时明确错误,因此产生零误报)和一个覆盖或猜测有限的部分(与不完美的参考进行比较,以购买剩余的适用性,这也是所有误报的来源)。将两者分开可以让部署刻意权衡安全性和适用性,而非接受一个混合的数字。 ### 一个实例说明。 以命令 `grep -rn --colour pat .` 为例。验证器解析 `grep`(二进制检查),确认其语法正确(`bash -n`),并针对提取的 `grep` 标志集测试每个选项。这里 `--colour` 是一个真正的英式拼写别名,解析器可能未捕获。朴素的标志检查会拒绝这个有效命令,导致误报,而一个弃权的检查会保留判断并允许通过。编辑展示了相同的模式。“在第12行后插入”没有内容可供验证,因此过时的行号会静默应用。同样的更改写成搜索/替换块则携带其周围的锚点,因此过时的锚点只会匹配失败并产生可恢复的干净失败。在两种模态中,决定错误能否在落地前被捕捉的,是表示方式而非模型。 ### 为什么是事前,而非事后。 事后检查(如测试、审查模型或人类参与环)有价值但成本高,并且它们对静默失败视而不见:测试如果未覆盖损坏区域就会通过,审查模型可能遗漏微妙错误的编辑,人类无法审计快速智能体的每一个动作。事前检查通过拒绝让无法验证的动作生效来规避这一点。代价是偶尔过度拒绝有效动作,但这是可恢复的,而作为交换,不可恢复的情况被消除了。用可恢复的误报来交换静默损坏的预防,是两个防护器共有的设计立场。 ### 威胁模型与范围。 验证器看到动作文本和本地环境(已安装的工具、当前文件)。它看不到模型的意图,也不判断预期的更改是否正确,只判断所写的动作是否能够有效且明确地实现。它是对动作执行的一个监督层,独立于并可与对动作选择的检查组合。我们假设一个非对抗性环境(一个有bug或产生幻觉的智能体,而非恶意的)以及一个忠实的执行器;防护器针对的是意外失败,而非游戏检查的智能体或绕过检查的执行器(后者需要沙箱)。在这些假设下,错误到达状态的唯一途径是通过一个被允许的动作,其实际效果与其目标不同,这正是框架所揭露的静默失败情况。 ## 3接地Shell命令 ### 基准。 我们基于482个已安装工具构建了9,930条命令。有效命令(n=1,986)来自人工整理的 tldrcorpus(tldr-pages 贡献者,2026 (https://arxiv.org/html/2609.11957#bib.bib12))。无效命令(每个类别1,986条,共四类)通过突变产生,并由独立于验证器的行为预言机确认为无效:不存在的二进制(通过 `which` 解析)、格式错误的语法(被 `bash -n` 拒绝)、无效的长选项和无效的短选项(两者都不在从 `--help`、`-h` 和 `man` 提取的标志集中)。这种反循环构造防止验证器根据其自身假设进行评估:如果基准是根据验证器检查的规则生成的,那么它衡量的将是自我一致性而非检测能力,因此我们的预言机充当(无效)有效性的独立见证。构造漏斗是明确的。在6,474个 tldr 工具页面中,546个工具已安装;解析产生2,160个候选命令,在确保每个管道阶段都可解析后为2,145个,每个工具上限后最终为1,986个。 ### 验证器。 验证器运行三项检查:语法(在命令字符串上运行 `bash -n`)、二进制存在性(`which`)和标志有效性(在提取的标志集中是否成员)。它支持子命令,因此 `git commit` 标志与 `git` 标志被分开处理。当工具无法产生可提取的标志时,验证器弃权并允许命令通过,因此标志召回率受限于提取覆盖率(91.1%的工具产生非空集合);我们从不对空参考进行猜测。每项检查都是命令和环境的纯函数。`bash -n` 是shell自身的解析器,`which` 查询活动的 `PATH`,标志集通过解析 `--help`、`-h` 和 `man` 提取长和短选项,每个工具构建一次。因为验证器继承了shell对形式良好的定义,而不是重新实现它,所以它的结构检查是精确的而非启发式的。 ### 结果。 完整配置在10.0%的误报率下检测出95.8%的无效命令(P=0.975,F1=0.966)。在工具聚类自助法(B=2000,基于482个工具聚类)下,估计值稳定(95% CI:召回率[0.944, 0.971],FPR [0.078, 0.122]),且验证器成本低廉:每个命令的热启动中位时间为2.55毫秒(p95 2.78毫秒,p99 3.05毫秒),一次性冷启动成本主要由标志提取主导(p95 2.85秒,之后缓存)。分解是科学的关键点(表1 (https://arxiv.org/html/2609.11957#S3.T1))。语法和二进制检查是预言机精确的:`bash -n` 和 `which` 精确测试了定义格式错误或未知二进制命令的属性,因此它们不能拒绝有效命令(零误报)但仍捕获了一半的错误(召回率0.500)。仅二进制检查是朴素的“`command -v` 是否解析?”基线(召回率0.255)。标志检查提供了剩余的召回率,并且是所有误报的来源:全部198个误报都是工具接受但我们的解析器未能提取的标志,分为三类词元(48.5% 单破折号单字符,29.8% 单破折号多字符,21.7% 双破折号),稀疏分布在95个工具上,每个工具最多8个。误报是帮助文本质量的属性,而非模型或接地概念的属性。按类别,预言机精确的检查完美捕获了不存在二进制和格式错误语法错误(每个召回率1.000),而无效的长和短标志的捕获率分别为0.916和0.916,受限于91.1%的标志提取覆盖率,而非方法本身(表3 (https://arxiv.org/html/2609.11957#S3.T3))。 表 1:Shell命令验证器:配置与关键消融实验(N=9,930)。FPR 为1,986验证集上的误报率。
相似文章
走向安全的LLM代理:关于规范、验证与执行的综述
这篇综述论文回顾了38项关于安全LLM代理的研究,强调了关键挑战,如规范翻译瓶颈、运行时监控等执行方法的不完全安全保障,以及阻碍安全任务完成的验证者税。
大规模安全测试LLM智能体:从风险发现到基于证据的验证
本文介绍了Vera,一个面向LLM智能体的端到端自动化安全测试框架,它结合了文献驱动的风险发现、安全案例的组合式构建以及基于证据的验证。在四个智能体框架上的评估揭示了显著的安全缺陷,在多通道攻击下平均攻击成功率高达93.9%,同时发布了包含1600个可执行安全案例的Vera-Bench。
LLM代理中的忠实不确定性:实践中校准与效用权衡
一位从业者讨论了LLM代理中的校准与效用权衡,分享了基于验证器的流水线经验,该流水线将幻觉工具调用减少了约60%,但引入了延迟成本并丢失了简单的正确答案。
LLM-as-a-Verifier (GitHub 仓库)
LLM-as-a-Verifier 是一个通用的验证框架,为AI代理提供细粒度反馈,在Terminal-Bench和SWE-Bench等基准测试上实现了最先进的性能。
通过溯源分析防范LLM代理失对齐
本文提出了一种基于溯源的框架和多阶段流水线\tool,用于在LLM代理执行工具调用前检测失对齐,与基于LLM作为裁判的基线相比,显著降低了错误率。