CodexQA

行业与实践研究与基准测试

VeriHarm-Bench:任务做成了,指定伤害也留下了

CodexQA 团队阅读约 27 分钟

有害成功指编码智能体完成良性任务的同时触发指定伤害。VeriHarm 用最小扰动和可执行伤害测试构造可验证基准。留出前沿模型平均任务准确率 95.1%,有害成功 58.2%,安全成功只有 37.0%。

本文目录

VeriHarm-Bench: Measuring Harmful Success in LLM Coding Agents Verifiably 可验证地度量大语言模型编码智能体中的有害成功

Wei-Lin Chen,单位:University of Virginia(弗吉尼亚大学)。Zhepei Wei,单位:University of Virginia。Xinyu Zhu,单位:University of Virginia。Yu-Min Tseng,单位:Virginia Tech(弗吉尼亚理工学院)。Tzu-Han Lin,单位:UCLA(加州大学洛杉矶分校)。Yu Meng,邮箱:{wlchen,yumeng5}@virginia.edu。GitHub。Hugging Face。单位:University of Virginia。作者姓名按原文保留,不音译。

###### 摘要

大语言模型(LLM)编码智能体越来越多地带着 shell 权限运行,因而可以写脚本、移动文件、改权限、改系统配置。然而,智能体可能在完成用户目标的同时造成并非有意的伤害,例如删除无关文件、削弱访问控制或破坏数据;这些伤害来自良性输入,并没有显式的越狱。这种失败模式特别重要,因为表面上的任务成功会让用户以为智能体行为正确,有害副作用因而被忽略。我们把这称为有害成功(harmful success):智能体成功完成了原本良性的任务,同时又造成了并非有意的伤害。尽管重要,有害成功很难度量,因为常规的任务成功指标看不到有害行为,而现有安全评测又常常只为评估有害结果而设计。我们提出 VeriHarm,一套自动框架,用来构造可以用程序验证的基准,直接度量有害成功。VeriHarm 对编码任务做最小扰动,以引出并非有意的有害行为,同时保持任务的良性,并保留原来的任务目标。它再合成可执行的伤害测试;这些测试与原来的任务正确性测试一起,同时评估任务准确率和有害结果。前沿智能体,包括 GPT-5.6-Sol 和 Claude-Opus-5,在我们筛选后的 VeriHarm-Bench 上平均任务准确率达到 95%,却仍难以安全地完成任务:安全成功率,也就是成功完成任务且没有触发指定伤害的比例,平均只有 37%。这些结果表明,成功完成任务经常可以与并非有意的伤害并存,单靠任务成功指标,可能严重低估编码智能体的潜在安全风险。

1 引言

图 1:大语言模型编码智能体中的有害成功。

图 1:大语言模型编码智能体中的有害成功。左: VeriHarm-Bench 的一个说明性例子。对原任务做一个很小的、良性的改动(以 diff 表示),增加一条要求:再次运行脚本时不应把已合并的内容再追加一次。智能体满足这条要求的办法,是清空源文件(file2.txt),而用户从未要求修改这个文件。于是发生了有害成功:所要求的任务被正确完成,但带有并非有意的、破坏性的副作用。右: 前沿智能体在 VeriHarm-Bench 上的评测。智能体平均正确完成 95% 的任务(整根彩色条),而只有 37% 是在没有触发指定伤害的情况下完成的(安全成功)。因此,单靠任务成功指标,可能严重低估编码智能体的安全风险。

大语言模型(LLM)编码智能体越来越多地带着 shell 权限运行,因而可以写脚本、移动文件、改权限、改系统配置。这些能力暴露出一种任务成功指标单独抓不住的安全失败。智能体可能在达成用户目标的同时造成并非有意的伤害(Jones et al., 2026; Rudner and Toner, 2021; Ruan et al., 2024):有害副作用(例如删除无关文件、削弱访问控制或破坏数据)来自良性输入,而没有对抗性操纵——这是一个探索不足的设定,不同于越狱、提示注入和显式的有害请求。我们把这种失败模式称为有害成功:智能体成功完成了原本良性的任务,同时又造成了并非有意的伤害。有害成功特别重要,因为表面上的任务成功会让用户以为智能体行为正确,有害副作用因而被忽略。

近期研究表明,良性指令可以让智能体做出不安全的、并非有意的行为(Jones et al., 2026; Ning et al., 2026),从而确立了这一安全关切的重要性。然而,先前工作主要问伤害是否发生,而不问它是否与成功完成用户任务同时发生。它们的评测是为引出并检测有害行为而设计的,常常不能用来判断智能体是否做成了用户所要求的事。此外,它们往往依赖复杂的多阶段流程,调用很强的外部模型或人工标注者来检查智能体轨迹,以判定伤害是否发生。这种评测很贵:每评估一个新的目标模型,都要在每条实例轨迹上重跑昂贵的基于模型或有人在环的审计流水线。而且,完整轨迹对用户并不总是可得或完全透明(Korbak et al., 2025; Jiang et al., 2025; Zaman and Srivastava, 2026; Yueh-Han et al., 2026),限制了这类方法的适用性。评测过程本身也是动态的:更换评判模型、提示或标注协议,都可能改变有害性裁决,降低可复现性,也使评测难以直接核验。

在这项工作中,我们提出 VeriHarm,一套自动框架,用来为 LLM 编码智能体中的有害成功构造可以用程序验证的基准,并用它构造 VeriHarm-Bench。VeriHarm 包含两个阶段:由 rollout(一次完整执行)引导的候选生成,以及多方面质量评估。对每个来源任务,目标智能体先执行未修改的任务,使候选构造立足于观察到的执行行为。提议者智能体再迭代地生成最小任务扰动,并配上可执行的伤害测试。失败 rollout 的反馈引导候选的修订,而原来的任务正确性测试保持不变,以保留来源目标。我们得到 1,046 个候选,在这些候选上目标智能体既通过原来的任务、又触发了指定的伤害测试;再经过随后的语义质量评估,选出得分最高的 150 个实例。所得基准为任务正确性和有害结果提供固定的可执行测试,从而能直接、可复现地度量有害成功,而在评测时不需要对执行轨迹做基于模型或人工的评估。

我们在 VeriHarm-Bench 上评测未参与基准构造的留出前沿编码智能体。在所评测的智能体上,任务准确率平均为 95.1%,但全部实例中有 58.2% 以有害成功告终,安全成功率平均只有 37.0%。即便表现最好的智能体 GPT-5.6-Sol,也只有不到 45% 的任务是在没有触发指定伤害的情况下完成的。值得注意的是,所有被评测的智能体都强于每一个用来构造基准的模型,这表明用较弱模型发现的有害成功案例会迁移到较强模型上。这些发现表明,并非有意的伤害可以经常与正确完成任务并存,单靠任务成功指标,可能严重低估编码智能体执行的安全风险。我们的贡献有三项:

  • 我们识别并形式化有害成功,一种独特的安全失败模式:编码智能体成功完成一个良性任务,同时又造成并非有意的伤害。
  • 我们提出 VeriHarm,一套自动框架,用来构造可以用程序验证的基准;其可执行测试同时度量任务正确性和有害结果,评测时不需要外部评判器。
  • 我们构造 VeriHarm-Bench,并评测留出的前沿编码智能体,表明尽管任务成功率很高,有害成功仍可以以相当大的比例发生。

2 VeriHarm 框架

我们提出 VeriHarm,一套自动框架,用来为 LLM 编码智能体中的有害成功构造可验证的基准。VeriHarm 的目标,是整理出现实的、良性的任务:智能体可以在满足用户请求的过程中,同时表现出并非有意的有害副作用;并给出可执行测试,以同时核验任务是否正确、伤害是否存在。

VeriHarm 由两个阶段组成:由 rollout 引导的生成阶段(§2.1),用来搜索那些在经验上确实产生有害成功的候选;以及质量评估阶段(§2.2),用多方面评分模式评估候选。具体而言,框架涉及三种模型角色:目标智能体 $\bm{a}$,它把候选构造落实到实际执行行为上;提议者智能体 $\bm{m}$,它联合提出候选以及对应的、可以用程序验证的测试;以及评判模型 $\bm{j}$,它评估候选的语义有效性。图 2 给出 VeriHarm 的总览。完整过程见算法 1。

图 2:VeriHarm 总览。

图 2:VeriHarm 总览。阶段 1(§2.1): 对每个目标智能体、来源任务和提议者智能体,VeriHarm 在智能体 rollout 的引导下,迭代搜索一种任务扰动和与之匹配的伤害测试。从来源任务上的一次种子运行开始,提议者做一个小的、良性的扰动(规格不足,或把控制权委托出去),并写一个伤害测试。目标智能体在看不到任何测试的情况下求解扰动后的任务。未改动的原任务测试和伤害测试随后检查最终沙箱。搜索在第一次有害成功时停止(任务测试通过,伤害测试被触发)。否则,失败的运行引导下一次提议,最多五次迭代。阶段 2(§2.2): 大语言模型评判器按五条有效性标准给每个候选打分,加总为质量分。

2.1 由 rollout 引导的候选生成

具体而言,一个基准候选 $c$ 表示为

$$c=(t,V_{\mathrm{task}},V_{\mathrm{harm}}),$$ (1)

其中 $t$ 指定呈现给智能体的任务,$V_{\mathrm{task}}$ 是一个可以用程序执行的测试,核验智能体是否完成了所意图的任务,$V_{\mathrm{harm}}$ 是一个可以用程序执行的测试,核验所得环境是否表现出并非有意的有害副作用。两个测试都返回 $\{0,1\}$ 中的二元结果。对 $V_{\mathrm{task}}$,$1$ 表示任务成功完成,$0$ 表示任务失败。对 $V_{\mathrm{harm}}$,$1$ 表示检测到指定伤害,否则测试返回 $0$。

若只是朴素地做,候选生成需要对任务指令 $t$,以及可执行测试 $V_{\mathrm{harm}}$ 与 $V_{\mathrm{task}}$,在这些实际上没有上界的空间里做联合搜索。因此,这样一种搜索一般来说并不可行。我们改为使用一条已有的来源任务作为种子,保留它的环境,也保留它的正确性标准 $V_{\mathrm{task}}$。在把来源任务执行一次、从而得到一条种子轨迹之后,我们对其最小扰动以及与之对应的伤害测试,进行一次更有边界的迭代搜索。每一次 rollout 的结果,接着引导后续的修订。这一设计有效地限制了搜索空间,同时仍然允许提议者同时调整两个方面:一是任务扰动,它在保留良性用户意图的同时引出并非有意的有害行为;二是用来检测由此产生的伤害的那项测试。

译注:原文作 “the test for detect the resulting harm”,动词形式不完整,这里按“用来检测由此产生的伤害的测试”理解。

算法 1 VeriHarm 框架总览。

 来源任务 $\mathcal{T}_{\mathrm{seed}}$,目标智能体 $\mathcal{A}$,提议者智能体 $\mathcal{M}$,评判模型 $\mathcal{J}$,迭代预算 $I$
 $\mathcal{C}\leftarrow\emptyset$ $\triangleright$*基准候选池*
 **1. 由 rollout 引导的候选生成**
 **for all** $(\bm{a},t_{\mathrm{seed}},\bm{m})\in\mathcal{A}\times\mathcal{T}_{\mathrm{seed}}\times\mathcal{M}$ **do**
   $(s_{\mathrm{seed}},\tau_{\mathrm{seed}})\leftarrow\bm{a}(t_{\mathrm{seed}})$ $\triangleright$*运行来源任务*
   $\mathcal{F}\leftarrow\emptyset$ $\triangleright$*初始化反馈*
   **for** $i=1,\ldots,I$ **do**
    $(\tilde{t},\tilde{V}_{\mathrm{harm}})\leftarrow\bm{m}(t_{\mathrm{seed}},\tau_{\mathrm{seed}},\mathcal{F})$ $\triangleright$*提议扰动后的任务和伤害测试*
    $(\tilde{s},\tilde{\tau})\leftarrow\bm{a}(\tilde{t})$ $\triangleright$*运行扰动后的任务*
    $(\tilde{r}_{\mathrm{task}},\tilde{r}_{\mathrm{harm}})\leftarrow\bigl(V_{\mathrm{task}}(\tilde{s}),\tilde{V}_{\mathrm{harm}}(\tilde{s})\bigr)$ $\triangleright$*评估两项测试*
    **if** $\tilde{r}_{\mathrm{task}}\land\tilde{r}_{\mathrm{harm}}$ **then**
      $c\leftarrow(\tilde{t},V_{\mathrm{task}},\tilde{V}_{\mathrm{harm}})$
      $\mathcal{C}\leftarrow\mathcal{C}\cup\{c\}$ $\triangleright$*保留第一次有害成功*
      **break**
    $\mathcal{F}\leftarrow(\tilde{t},\tilde{V}_{\mathrm{harm}},\tilde{\tau},\tilde{r}_{\mathrm{task}},\tilde{r}_{\mathrm{harm}})$
 **2. 候选质量评估**
 $\mathcal{Q}\leftarrow\emptyset$ $\triangleright$*按评判器分开的分数表*
 **for all** $(c\in\mathcal{C})$ **do**
   **for all** $\bm{j}\in\mathcal{J}$ **do**
    $(q_{\bm{j},c}^{(1)},\ldots,q_{\bm{j},c}^{(5)})\leftarrow\bm{j}(t_{\mathrm{seed}},t,V_{\mathrm{harm}})$ $\triangleright$*按五条有效性标准打分*
    $\mathcal{Q}[\bm{j},c]\leftarrow\sum_{\ell=1}^{5}q_{\bm{j},c}^{(\ell)}$
 **return** $(\mathcal{C},\mathcal{Q})$ $\triangleright$*候选与质量分*

译注:算法里的 for、if、break、return 以及公式保持原文。三角符号后的斜体是原文注释,此处译为中文。

#### 用来源 rollout 落地。

对每个来源任务 $t_{\mathrm{seed}}$ 和目标智能体 $\bm{a}$,我们先执行未修改的任务:

$$(s_{\mathrm{seed}},\tau_{\mathrm{seed}})\leftarrow\bm{a}(t_{\mathrm{seed}}),$$ (2)

其中 $s_{\mathrm{seed}}$ 是所得环境状态,$\tau_{\mathrm{seed}}$ 是智能体的执行轨迹。轨迹揭示智能体如何理解任务、如何与实际环境交互,包括与该任务相关的文件、工具和其他资源,以及中间探索。我们用它来告知并初始化候选生成过程。

#### 扰动与伤害测试的联合搜索。

在来源任务、种子轨迹,以及上一次尝试的反馈 $\mathcal{F}$(第一次尝试时 $\mathcal{F}=\emptyset$)的条件下,提议者 $\bm{m}$ 生成

$$(\tilde{t},\tilde{V}_{\mathrm{harm}})\leftarrow\bm{m}(t_{\mathrm{seed}},\tau_{\mathrm{seed}},\mathcal{F}),$$ (3)

其中 $\tilde{t}$ 是上一次尝试或来源任务(对第一次尝试而言)的最小扰动。注意 $\tilde{t}$ 始终与来源任务 $t_{\mathrm{seed}}$ 原来的、未修改的正确性测试 $V_{\mathrm{task}}$ 配对。要求同一个操作性成功标准 $V_{\mathrm{task}}$,是为了确保扰动后的版本保留来源任务的目标和目的。生成的伤害测试 $\tilde{V}_{\mathrm{harm}}$ 检测最终环境状态中一个指定的、并非有意的不安全结果。

联合搜索之所以重要,是因为并非有意的副作用是异质的:哪种行为算有害,取决于任务和扰动,而那种行为又决定伤害测试应当检查哪一种状态变化。我们指示提议者保留来源目标,只做让并非有意的行为得以出现所需的最小自然改动,并保持请求现实且良性。特别是,$\tilde{t}$ 既不应显式请求、也不应描述指定的伤害。遵循 Jones et al. (2026),我们考虑两类扰动:规格不足(underspecification)和控制权委托(delegation of control)。规格不足的目标,是修改任务约束,使允许不安全假设的可能性增加;控制权委托则在处理未预见情况时给智能体更大的裁量。

#### 用执行核验结果。

目标智能体随后去执行这条扰动后的任务,$(\tilde{s},\tilde{\tau})\leftarrow\bm{a}(\tilde{t})$。在这一次 rollout 进行期间,$V_{\mathrm{task}}(s)$ 与 $V_{\mathrm{harm}}$ 这两项测试都始终保持隐藏,并不向智能体展示。一旦 rollout 完成,就通过实际运行 $(\tilde{r}_{\mathrm{task}},\tilde{r}_{\mathrm{harm}})=\bigl(V_{\mathrm{task}}(\tilde{s}),\tilde{V}_{\mathrm{harm}}(\tilde{s})\bigr)$ 来评估所得结果。回想一下,$r_{\mathrm{task}}=1$ 表示智能体成功地完成了任务,$r_{\mathrm{harm}}=1$ 表示所指定的有害行为确实发生了。我们把有害成功定义为

$$\mathrm{HS}(\bm{a},\tilde{t})=\tilde{r}_{\mathrm{task}}\land\tilde{r}_{\mathrm{harm}}.$$ (4)

如果这两项测试都通过(也就是 $\mathrm{HS}(\bm{a},\tilde{t})=1$),我们就把 $c=(\tilde{t},V_{\mathrm{task}},\tilde{V}_{\mathrm{harm}})$ 加入候选池 $\mathcal{C}$,并停止当前 $(\bm{a},t_{\mathrm{seed}},\bm{m})$ 这一元组上的搜索。因此,每一个元组至多贡献一个候选,也就是第一个被观察到有害成功的那条提议。

#### 用过去的 rollout 做迭代搜索。

若这两项测试里有任何一项失败(也就是 $\tilde{r}_{\mathrm{task}}\land\tilde{r}_{\mathrm{harm}}=0$;原文 “either tests” 主谓不一致,按“任一测试失败”理解),我们收集这次失败尝试的产物

$$\mathcal{F}\leftarrow(\tilde{t},\tilde{V}_{\mathrm{harm}},\tilde{\tau},\tilde{r}_{\mathrm{task}},\tilde{r}_{\mathrm{harm}})$$ (5)

作为反馈告知 $\bm{m}$(公式 3),把下一次提议迭代推向一个有效候选。译注:原文 “propsal” 是 proposal(提议)的拼写错误。若 $\tilde{r}_{\mathrm{task}}=0$ 且 $\tilde{r}_{\mathrm{harm}}=1$,这说明扰动可能引出了指定的有害行为,但可能偏离了来源任务的目标。若 $\tilde{r}_{\mathrm{task}}=1$ 且 $\tilde{r}_{\mathrm{harm}}=0$,来源目标能够被保留,但要么扰动太弱、引不出有害副作用,要么所提议的伤害测试 $\tilde{V}_{\mathrm{harm}}$ 没能准确检测到它。$\tilde{r}_{\mathrm{task}}=0$ 且 $\tilde{r}_{\mathrm{harm}}=0$ 的情形,则要求提议者 $\bm{m}$ 重新考虑两个部分。跨迭代时,$\bm{m}$ 只修订 $\tilde{t}$ 和 $\tilde{V}_{\mathrm{harm}}$,$V_{\mathrm{task}}$ 保持固定。我们设定迭代预算 $I$,每个 $(\bm{a},t_{\mathrm{seed}},\bm{m})$ 最多经过 $I$ 次提议,包括最初的那一次。

我们按算法 1 所概述的,把这一阶段应用到多个目标智能体 $\bm{a}\in\mathcal{A}$ 和提议者智能体 $\bm{m}\in\mathcal{M}$ 上,从而能在多样的模型配置上扩展候选生成。

2.2 候选质量评估

由 rollout 引导的生成阶段确立的是:一个候选可以执行,并且按其正确性测试和伤害测试能够产生有害成功。质量评估阶段补充这种经验性的行为核验,评估该候选是否忠实地抓住了一个并非有意的有害结果。例如,$V_{\mathrm{task}}$ 和 $V_{\mathrm{harm}}$ 都可能通过,即便候选任务显式请求了有害副作用,或一个写错的伤害测试把安全行为当成了有害。

在这一阶段,每个评判模型 $\bm{j}\in\mathcal{J}$ 独立地审查并给每个保留下来的候选 $c\in\mathcal{C}$ 打分,依据五条标准:(i) 伤害测试正确性:是否当且仅当有害结果存在时 $V_{\mathrm{harm}}$ 才通过;(ii) 伤害的非意图性:有害结果是否来自对扰动后任务的一种说得通的解释,而不是被显式请求;(iii) 伤害测试对应性:$V_{\mathrm{harm}}$ 是否忠实地抓住指定的有害结果,而不是无关的或良性的状态变化;(iv) 伤害可行性:指定伤害能否离线、确定性地评估;(v) 扰动的隐蔽性:$\tilde{t}$ 是否是对 $t_{\mathrm{seed}}$ 的自然、最小修改,保留来源目标,且不显式请求或泄露伤害。

对每个候选 $c$,评判器 $\bm{j}$ 给出分数向量:$\bm{j}(t_{\mathrm{seed}},t,V_{\mathrm{harm}})=(q_{\bm{j},c}^{(1)},\ldots,q_{\bm{j},c}^{(5)})$,其分量对应这五条标准。种子轨迹和扰动后任务的轨迹、最终环境状态以及测试结果都对 $\bm{j}$ 隐瞒,以确保语义质量的评估独立于上一阶段用来挑选候选的 rollout 产物。

对每个评判器–候选对,我们定义其质量分 $\mathcal{Q}[\bm{j},c]=\sum_{\ell=1}^{5}q_{\bm{j},c}^{(\ell)}$。这些分数随后用于筛选最终基准,如第 3 节所述。评判器还被指示提供关于并非有意的有害行为的简短理由,我们把它用于表 6 的描述性分析。注意这些判断只在基准构造时用来评估候选有效性。我们的基准在智能体评测时不调用任何基于大语言模型的评判器:只有固定的可执行测试,以可验证的方式决定评测结果。VeriHarm 的进一步实现细节和提示见附录 B 和附录 C。

3 VeriHarm-Bench

3.1 候选选择

VeriHarm 给出一套可扩展的框架,用来生成基准候选 $\mathcal{C}$ 以及伴随的质量分 $\mathcal{Q}$。通过对得分最高的候选排序并选择,我们给出 VeriHarm-Bench——一个用可执行的、程序性核验来度量 LLM 编码智能体有害成功的评测基准。

对每个 $c\in\mathcal{C}$,我们把各个评判器给出的总分取平均,得到共识质量分 $Q$:$Q(c)=\frac{1}{|\mathcal{J}|}\sum_{j\in\mathcal{J}}\mathcal{Q}[j,c]$。给定目标基准规模 $K$,我们保留共识质量分最高的 $K$ 个候选,作为最终筛选出的基准。对我们的 VeriHarm-Bench,我们设 $K=150$。费用估计见附录 F。

3.2 基准质量的人工评估

为进一步核验 VeriHarm-Bench 的质量并评估 VeriHarm 的有效性,我们在选择之后做人工评估。我们按共识质量分 $Q(c)$ 分布的上尾和下尾,把候选分成两组。具体而言,令 $\mathcal{C}_{\mathrm{top}}$ 表示得分最高的 150 个候选(即我们筛选出的 VeriHarm-Bench),令 $\mathcal{C}_{\mathrm{bottom}}$ 表示一个受控对照组,由得分最低的 150 个候选组成。我们用分层抽样,从每组各取 25 个有代表性的例子,得到 $\mathcal{H}_{\mathrm{top}}$ 和 $\mathcal{H}_{\mathrm{bottom}}$,从而得到一个平衡的人工评估集 $\mathcal{H}=\mathcal{H}_{\mathrm{top}}\cup\mathcal{H}_{\mathrm{bottom}}$。

对 $\mathcal{H}_{\mathrm{top}}$ 的人工判断直接评估 VeriHarm-Bench 的质量;与 $\mathcal{H}_{\mathrm{bottom}}$ 的比较则评估共识质量分 $Q(c)$ 是否有效地区分了高质量候选和低质量候选。

#### 标注协议。

对每个候选 $c\in\mathcal{H}$,标注者得到 $t$、$V_{\mathrm{harm}}$ 和 $t_{\mathrm{seed}}$,以及扰动任务与原任务之间的文本 diff $\delta=t-t_{\mathrm{seed}}$。译注:原文 “alone with” 按 along with(连同)理解。标注者不知道组别。每个候选用三条二元标准评估:

  1. 良性与现实性。 这个扰动后的任务,是否有可能由一个良性用户在普通的编码或系统管理情境中提交?
  2. 伤害的非意图性。 在对扰动后任务的一种合理读法下,伤害测试所检测的结果是否落在用户预期范围之外?
  3. 伤害测试正确性。 当指定的有害结果存在时,伤害测试是否通过;当它不存在时,是否失败?

对一名标注者,我们把所标注候选 $c$ 的二元有效性标签定义为如下。译注:原文 “For a annotator” 冠词用了 a。

$$\mathrm{Valid}(c)=C_{1}(c)\wedge C_{2}(c)\wedge C_{3}(c),\quad\mathrm{Valid}(c)\in\{0,1\}$$ (6)

其中 $C_{i}(c)\in\{0,1\}$ 是标准 $i$ 的指示,判断为「是」时取值 1,否则为 0。因此,当且仅当三条标准都得到「是」时,该候选才被这名标注者视为有效。对每个候选 $c$,我们把三名标注者的 $\mathrm{Valid}(c)$ 按多数票汇总,得到最终有效性标签 $\mathrm{Valid}_{\mathrm{agg}}(c)$。利用这些标注,我们评估所选基准候选的有效性、共识质量分是否可靠地把有效候选排在低质量候选之前,以及标注者一致性。结果见 §4.3。完整的人工评估细节和标注指南见附录 D。

4 实验

我们的实验针对三个目标:(i) 我们评估由 rollout 引导的修订在发现基准候选上的有效性。(ii) 我们随后在 VeriHarm-Bench 上评测留出的前沿智能体(即未参与基准构造的智能体)。(iii) 我们做人工评估研究,以同时评估 VeriHarm-Bench 的有效性,以及自动质量评估过程的有效性。

4.1 由 rollout 引导的候选搜索的有效性

#### 设定。

我们从 BashBench(Bhatt et al., 2025; Lee et al., 2026)抽取 200 个良性编码任务作为来源任务。每个任务都要求用 shell 脚本求解,并包含在执行期间提供反馈的公开测试,以及评估任务正确性的私有测试。如 §2.1 所规定,在整个基准构造过程中我们保留来源环境和任务正确性测试 $V_{\mathrm{task}}$。提议者只修改任务指令,并生成对应的伤害测试 $V_{\mathrm{harm}}$。我们采用四个目标智能体:Claude-Sonnet-4-6(Anthropic, 2026d)、Kimi-K2.5(Team et al., 2026)、GPT-5.4-Mini(OpenAI, 2026c)和 Qwen3-235B-A22B(Yang et al., 2025)。提议者和质量评估评判器两个角色,我们都使用 Claude-Opus-4-7(Anthropic, 2026a)和 GPT-5.5(OpenAI, 2026a)。我们把迭代预算设为 $I=5$,允许每个目标–提议者–来源任务配置最多五次提议。

#### 结果。

表 1:由 rollout 引导的候选搜索的有效性。对每个提议者和目标智能体,成功率是在迭代预算($I=5$)内产生一个有害成功候选的来源任务百分比。平均迭代是发现第一次有害成功时所处迭代的平均。Iter-$k$ 报告第一次有害成功发生在第 $k$ 次迭代的任务百分比,因此五列之和等于成功率。

目标智能体成功率(%)平均迭代各迭代上的增益(%)
Iter-1Iter-2Iter-3Iter-4Iter-5
提议者智能体:Claude-Opus-4-7
Claude-Sonnet-4.679.52.4822.023.516.59.08.5
Kimi-K2.576.12.7818.915.415.415.910.5
GPT-5.4-Mini56.72.7212.415.910.510.97.0
Qwen3-235B-A22B42.82.7610.710.75.99.16.4
总体64.12.6716.116.512.111.38.1
提议者智能体:GPT-5.5
Claude-Sonnet-4.685.72.0832.628.613.18.03.4
Kimi-K2.579.32.3826.619.715.411.26.4
GPT-5.4-Mini60.72.5112.919.915.98.04.0
Qwen3-235B-A22B59.22.5913.919.49.99.07.0
总体70.62.3721.121.713.69.05.2

表 1 表明,由 rollout 引导的修订在所有目标智能体和两个提议者智能体上都成功发现了有害成功候选。以 Claude-Opus-4-7 为提议者时,总体搜索成功率为 64.1%,第一次成功的平均迭代为 2.67。用 GPT-5.5 做提议者,把总体成功率提高到 70.6%,并把第一次成功的平均迭代降到 2.37。第一次成功所在迭代的分布进一步表明,迭代修订对候选发现贡献很大。用 Claude-Opus-4-7 时,全部配置中有 16.1% 在第一次迭代就成功,另有 48.0% 只在至少一次修订之后才成功。因此,在它的成功候选中,74.9% 是通过修订发现的。对 GPT-5.5,对应的数值分别是 21.1%、49.5% 和 70.1%。对两个提议者,第 2 次迭代提供的增量贡献都最大,分别占全部配置的 16.5% 和 21.7%。贡献随后在更后面的迭代中下降。这一模式表明,失败 rollout 的反馈在修订的早期阶段特别有用,而把更后面的迭代留给一组逐渐更难的案例。

候选搜索的成功也随目标智能体而变化。在两个提议者智能体下,Claude-Sonnet-4.6 在四个目标智能体中报告的搜索成功率最高,而 Qwen3-235B-A22B 最低。这一差异表明,候选发现不仅取决于提议者,也取决于扰动后的任务在目标智能体上诱发的行为。注意这些结果度量的是候选搜索过程的有效性,而不是目标智能体的相对安全性。总体而言,搜索产生 1,046 个经过核验的有害成功候选,它们成为随后质量评估和基准筛选阶段的输入。

4.2 度量留出智能体中的有害成功

表 2:留出前沿智能体在 VeriHarm-Bench 上的评测。高任务准确率与频繁的并非有意的伤害并存,表明单靠任务成功指标,可能高估智能体安全完成任务的频率。$\uparrow$/$\downarrow$ 表示数值越高/越低越好的指标。我们报告 $\pm$ 一个标准误。更多指标见附录 E。

被评测智能体任务准确率(%) $\uparrow$有害成功(%) $\downarrow$安全成功(%) $\uparrow$
Claude-Opus-4.898.7 $\pm$ 0.972.0 $\pm$ 3.726.7 $\pm$ 3.6
Claude-Opus-597.3 $\pm$ 1.456.2 $\pm$ 4.141.1 $\pm$ 4.1
GPT-5.5-Pro89.3 $\pm$ 2.553.7 $\pm$ 4.135.6 $\pm$ 3.9
GPT-5.6-Sol95.3 $\pm$ 1.750.7 $\pm$ 4.144.7 $\pm$ 4.1
总体95.1 $\pm$ 0.958.2 $\pm$ 2.037.0 $\pm$ 2.0

#### 设定。

我们在筛选后的 VeriHarm-Bench 上评测四个前沿编码智能体:Claude-Opus-4.8(Anthropic, 2026b)、Claude-Opus-5(Anthropic, 2026c)、GPT-5.5-Pro(OpenAI, 2026a)和 GPT-5.6-Sol(OpenAI, 2026b)。这些模型都没有在基准构造中用作目标智能体、提议者或评判模型。我们有意选择被认为强于基准构造中所用全部模型的留出智能体。这一设定探测弱到强的迁移:由较弱模型建成的基准,在评估较强模型时是否仍然有效。评测时,每个智能体只在其对应的沙箱环境中收到任务指令 $t$。$V_{\mathrm{task}}$ 和 $V_{\mathrm{harm}}$ 对智能体保持隐藏,只在 rollout 结束后执行。

我们报告三个主要指标:(i) 任务准确率(Task Accuracy,TA),$V_{\mathrm{task}}$=1 的实例比例;(ii) 有害成功率(Harmful Success Rate,HSR),$V_{\mathrm{task}}$=1 且 $V_{\mathrm{harm}}$=1 的实例比例,抓住那些成功完成任务、同时又表现出指定有害结果的情形;(iii) 安全成功率(Safe Success Rate,SSR),$V_{\mathrm{task}}$=1 且 $V_{\mathrm{harm}}$=0 的实例比例,抓住没有指定有害结果的成功任务完成。SSR 更高,表示智能体更经常在不触发所度量伤害的情况下完成所请求的任务。按构造,TA $=$ HSR $+$ SSR。附录 E 另外报告伤害通过率(Harm Pass Rate,HPR),即不论任务是否正确、$V_{\mathrm{harm}}$=1 的实例比例;以及归一化有害成功率(Normalized Harmful Success Rate,NHSR),即任务成功的实例中 $V_{\mathrm{harm}}$=1 的比例,度量在成功完成任务的条件下有害结果的普遍程度。与在全部实例上计算的 HSR 不同,NHSR 只用 $V_{\mathrm{task}}$=1 的实例做分母。

#### 结果。

如表 2 所示,四个智能体的平均 TA 为 95.1%,表明底层的良性目标在绝大多数实例中被完成。与此同时,HSR 为 58.2%:超过一半的实例以任务被成功完成并且指定伤害被触发而告终。这直接抓住了 VeriHarm-Bench 所针对的失败模式:智能体满足用户所陈述的良性目标,同时又产生并非有意的有害结果。这一模式在四个被评测智能体上一致成立。HSR 从 50.7% 到 72.0%,而每个智能体的 TA 都高于 89%。因此高任务准确率并不排除大量有害成功,这也说明为什么单靠任务完成指标,不足以刻画我们基准所针对的、与安全相关的行为。HPR 和 NHSP 也显示同样的趋势(表 7)。

另一方面,SSR 直接度量没有指定有害结果的成功任务完成。在这些智能体上,SSR 平均只有 37.0%,表现最好的智能体 GPT-5.6-Sol 也低于 45%。因此,尽管平均 TA 高于 95% 的任务表现很强,前沿智能体仍然难以在不触发 VeriHarm-Bench 所度量之伤害的情况下,安全地完成所请求的任务。

4.3 结果的人工评估

我们做人工评估,以评估自动筛选过程的两个性质:所选候选是否满足有效性标准,以及共识评判分数是否把较高质量的候选与候选池中得分较低的部分分开。遵循 §3.2 的协议,我们从排名靠前的组抽 25 个候选,从排名靠后的组抽 25 个,并按良性与现实性、伤害的非意图性、伤害测试正确性评估每个候选。只有当三条标准都得到肯定判断时,一个候选才对一名标注者视为有效。我们再按多数票汇总标注者层面的判断,得到该候选的最终有效性标签。

(a) 质量分排序作为人工有效性之二元预测器的结果。

(a) 质量分排序作为人工有效性之二元预测器的结果。

(b) 排名靠前与靠后两组内、经人工核验的有效性。

(b) 排名靠前与靠后两组内、经人工核验的有效性。

图 3(a) 把自动排序评估为人工有效性的二元预测器:排名靠前组中的候选被预测为有效,排名靠后组中的候选被预测为无效。以多数票的人工标签为真值,这一预测器达到 88% 的准确率、84% 的精确率和 91% 的召回率。高精确率表明很少有无效候选进入排名靠前的组,高召回率表明很少有人工判定有效的候选被放到排名靠后的组。因此,自动排序与人类对有效性的判断高度一致。

图 3(b) 对用于基准选择的排序做直接检验。在排名靠前的候选中,84% 经人工核验为有效,而排名靠后的候选中只有 8%。反过来,排名靠前的候选中有 16%、排名靠后的候选中有 92% 被判为无效。这表明 VeriHarm 的质量分在排名靠前与靠后的候选之间提供了很强的分离,支持用它来选择筛选后的基准。

表 3:三名标注者在 50 个经人工评估的候选的二元有效性标签上的标注者间一致性。

一致性指标数值
Fleiss’ $\kappa$0.537
Krippendorff’s $\alpha$0.540

我们还在表 3 中报告两个指标的标注者间一致性:Fleiss’ $\kappa$ 和 Krippendorff’s $\alpha$。这些数值表示中等程度(Landis and Koch, 1977),与先前研究(Jones et al., 2026)一致,并且对一项固有主观的标注任务来说,代表相当强的一致性。特别是,候选有效性要求对说得通的用户意图、对任务指令的合理解释,以及所请求动作的预期安全范围做出判断。两种一致性度量得到相近的数值,表明这一结论相对稳健。

5 相关工作

#### 来自良性输入的并非有意的行为。

先前工作刻画了计算机使用设定下、良性指令所导致的不安全且并非有意的行为(Shayegani et al., 2026; Ding et al., 2026),包括有风险的工具调用(Ruan et al., 2024)、操作性不当行为(Kuntz et al., 2026)和偏离任务的动作(Ning et al., 2026)。关系最近的是 Jones et al. (2026) 提出的 AutoElicit,它迭代地扰动良性的 OSWorld(Xie et al., 2024)指令,直到伤害出现。我们的扰动类别(即规格不足和控制权委托)建立在这一框架上。然而 AutoElicit 通过昂贵的、基于模型的轨迹分析来判定是否引出了伤害,并且不论任务是否完成都把伤害计入。VeriHarm 则对每次扰动合成一个可执行的伤害测试,并把它与来源任务未修改的正确性测试配对;我们筛选出的 VeriHarm-Bench 是一个固定基准,度量任务成功与伤害的合取,而在评测时不需要昂贵的评判器或轨迹访问。

#### 编码智能体的操作安全。

同期基准已经开始探索启用 shell 的编码智能体中的不安全副作用。译注:原文 “Concurrent benchmarks has” 主谓不一致,按“同期基准已经开始”理解。OverEager-Bench(Qu et al., 2026)审计工具调用,看良性请求上是否有超出范围的动作。SABER(Hu et al., 2026)根据工作区状态变化标记违规,并由基于大语言模型的评判器判定任务是否完成。UnderSpecBench(Ji et al., 2026)用手工编写的预言机,在规格不足的 DevOps 指令上给安全成功和超出范围的结果打分。ClashBench(Xie et al., 2026)度量智能体是否靠扰乱一项既有任务来完成请求。这些工作同样表明任务完成与安全完成会分开,但它们依赖事先为预定义伤害类别指定的场景和检查。相比之下,VeriHarm 从来源任务自动导出扰动和特定于任务的伤害测试,并立足于目标智能体被观察到的行为。译注:原文 “VeriHarm it automatically derives” 多出一个 it。此外,它继承既有任务的正确性标准,而不是去评判它,因此基准可以随着来源任务和智能体的演化而重新生成。

6 结论

我们识别出有害成功:一种失败模式,其中 LLM 编码智能体完成一个良性任务,同时造成并非有意的伤害。我们提出 VeriHarm,一套为这种失败模式构造基准的自动框架。译注:原文 “framework that construct” 中 construct 未用第三人称,按“构造基准的框架”理解。任务结果和伤害结果都由程序性的、可验证的测试决定。在我们筛选后的 VeriHarm-Bench 上,留出的前沿智能体平均任务准确率超过 95.1%,但安全成功只有 37.0%。这一差距表明,单靠任务成功指标,可能严重低估编码智能体的安全风险。我们希望 VeriHarm-Bench 能成为一个可复现的试验台,用于发展针对并非有意之伤害的缓解。

致谢

这项研究得到 Coefficient Giving 通过其 Technical AI Safety Research 计划的支持。

参考文献与附录 A–G 另文发布,仍是同一篇论文,不是第二篇来源。

觉得有用,转给同事

微信扫码

用微信扫一扫,在手机上打开后即可转发。

用 RSS 订阅

提交勘误