Skip to main content
2025ICML 2025 (arXiv 2503.22738)

用一个 Agent 守护另一个 Agent:ShieldAgent 的形式化安全防护

ShieldAgent: Shielding Agents via Verifiable Safety Policy Reasoning

当 LLM Agent 在网页购物、股票交易、代码执行中穿行,谁来保证它们不越界?ShieldAgent 的答案是:再造一个 Agent 来专门「盯着」它——用概率规则电路做形式化验证,而不是凭感觉拒绝。这比简单的提示词护栏强在哪?本文带你拆解它的架构与数据。

Zhaorun Chen, Mintong Kang, Bo Li
AI Agent运行时安全形式化验证Agent 规范与安全Agent 架构设计

论文概览

arXiv: 2503.22738 | ICML 2025

作者: Zhaorun Chen、Mintong Kang、Bo Li(芝加哥大学 & UIUC)

项目主页: shieldagent-aiguard.github.io

这篇论文解决的是一个被大多数人忽视的问题:我们花了大量精力让 LLM 本身「对齐」,但当它被套进一个具备工具调用能力的 Agent 框架后,安全性的保证就瞬间碎片化了。提示词注入、记忆投毒、环境操控——任何一条攻击路径都可能让一个「安全」的模型执行出危险的操作序列。

ShieldAgent 的核心主张是:不要试图用一个 LLM 的直觉来判断另一个 LLM 的行为是否安全,而是把安全策略形式化成可验证的逻辑规则,然后用形式化工具来核对轨迹。这是一种从「经验主义」到「形式主义」的转变,在 Agent 安全领域相当少见。


核心创新

1. 动作语义策略模型(ASPM)

ShieldAgent 不直接用 LLM 判断行为是否违规,而是先把安全策略文档(比如 GitLab 使用手册、电商平台条款)转化成一套结构化的逻辑规则系统。

每一条规则被建模为 动作语义概率电路(Action-based Probabilistic Circuit),形如:

ϕ::=pP¬ϕϕ1ϕ2ϕϕϕ1Uϕ2\phi ::= p \in P \mid \neg\phi \mid \phi_1 \wedge \phi_2 \mid \bigcirc\phi \mid \square\phi \mid \phi_1 \, U \, \phi_2

这是有限线性时序逻辑(LTL_f)的语法。用时序逻辑来表示 Agent 行为轨迹,允许表达「某个动作之前必须满足某个条件」「在轨迹的某个时间点内必须执行某步」这类跨步骤约束。

相比直接让 LLM 回答「这个轨迹是否违规」,形式化规则电路的优势在于:可解释、可复用、可验证,同时大幅减少对闭源 API 的调用次数。

2. 实时防护流程(Shielding Pipeline)

给定一个被保护 Agent 的动作轨迹,ShieldAgent 每一步都做以下事情:

  1. 动作谓词提取:从 Agent 的输出中解析出语义谓词(如 AccessPage(url), SubmitForm(data)
  2. 规则检索:从 ASPM 中取出与当前动作相关的规则电路
  3. 防护计划生成:基于长期记忆中的历史成功工作流,用 few-shot 生成验证步骤
  4. 形式化验证:调用 model-checking 工具(Stormpy 等)对谓词真值赋值并验证规则
  5. 概率推断:对验证结果做概率聚合,输出最终安全标签 + 解释

这四个操作分别对应四种「防护动作」类型:Search(枚举)、Binary-Check(二分类)、Detect(调用内容审核 API)、Formal Verify(形式验证)。

ShieldAgent 系统架构
ShieldAgent 系统架构

3. ShieldAgent-Bench:首个综合型 Agent 防护基准

论文同时发布了迄今为止规模最大、维度最全的 Agent 防护评测基准:

基准样本数风险类别攻击类型环境数规则注解
ST-Web23430336
AgentHarm4401000
VWA-Adv2001130
ShieldAgent-Bench3,1107261,080

七类风险涵盖:访问限制、内容限制、幻觉、指令遵从、操作风险、错误处理、长期一致性。两类攻击分别针对 Agent 内部(AgentPoison:记忆投毒)和外部环境(AdvWeb:页面内容篡改)。


方法论深度解析

ASPM 结构优化

原始从策略文档中提取的规则往往存在两个问题:模糊性(同一概念多种表达)和冗余性(重复规则)。ShieldAgent 设计了迭代优化流程,最多进行 10 轮精化:

以 Shopping 环境为例,优化前有 920 个谓词、562 条规则,平均模糊度 0.71;优化后压缩到 461 个谓词、240 条规则,模糊度降至 0.38。这种压缩不只是「量变」,它直接影响推理效率和验证精确度。

混合记忆模块

ShieldAgent 设计了两层记忆:

  • 短期记忆(KV-cache):缓存当前轮次的 Agent-环境交互,验证完成即清空,避免上下文膨胀
  • 长期记忆(成功工作流库):把验证成功的流程存储下来,下次遇到类似动作直接复用,不必重新规划

这个设计在实测中带来了显著的效率提升:API 调用减少 64.7%,推理时间压缩 58.2%


实验结果

实验结果
实验结果

ShieldAgent-Bench 主实验

在两种攻击类型(Agent-based / Environment-based)下:

方法ACC@G (Agent)ACC@G (Env)FPR@GARR@RNoQTime(s)
Direct73.375.87.131.516.5
Rule Traverse82.081.616.672.029.377.7
GuardAgent81.484.812.562.914.260.5
ShieldAgent90.491.74.890.110.432.5

ShieldAgent 在准确率上比最强 baseline 高 10.2%,同时误报率最低(4.8%),规则召回率高达 90.1%,且效率最优。

跨基准泛化

在三个独立基准(ST-WebAgentBench、VWA-Adv、AgentHarm)上,ShieldAgent 平均超越第二名 7.4%,在 ST-Web 上的 Consent 和 Boundary 两类风险上提升尤为显著。


启示与思考

我觉得这篇论文最值得关注的,不是那几个百分点的提升,而是它提出的范式转变——从「用模型感知安全」到「用形式化逻辑验证安全」。

这种思路在传统软件工程中其实早就存在:我们用类型系统、契约(contract)、运行时断言来保证程序行为,而不是靠程序员的直觉。把这套哲学迁移到 Agent 安全领域,逻辑上是成立的,工程上也是可行的——ShieldAgent 用实验证明了这一点。

当然,局限也很明显:当前的 ASPM 依赖预先存在的策略文档,对于动态、开放的任务域(比如用户完全自定义的 Agent 工作流)还无法直接适用;幻觉类风险的准确率也相对偏低,因为这类违规需要外部知识来裁定,超出了策略文档的覆盖范围。

从更宏观的视角看,随着 OpenAI Operator、Anthropic Computer Use 这类「真正帮你操作电脑」的 Agent 逐渐进入日常使用,ShieldAgent 这类「守护者 Agent」或许会成为 Agent 基础设施中不可缺少的一层。一个 Agent 生态里,可能需要的不只是功能 Agent,还需要专职的安全 Agent 24 小时盯着它们的轨迹。


参考链接