RePolicy: Reinforcement Learning for Safety-Policy Invocation in Agent Safeguards 精读

论文链接:arXiv:2608.24275 代码仓库:jianghoucheng/RePolicy(含 PolicyTraj-20K 数据集、30 策略/358 条款库、RePolicy-4B checkpoint) 发表时间:2026年8月 机构:中国科学技术大学(一作+通讯,含 Xiang Wang、Xiangnan He)+ 新加坡国立大学 + 浙江大学 + 中关村学院——纯高校跨国合作,无企业参与 领域标签:cs.AI(agent 安全 / agentic RL)

一、论文背景

Agent 安全防护是什么? LLM agent 已经从文本生成助手进化为能规划任务、调用工具、操作外部环境的自治系统。随之而来的安全风险也从"单次交互里的有害内容"演变为在完整执行轨迹上涌现的行为危害——某一步看起来无害的文件读取,配合后面一步外发邮件,合起来就是泄密。Agent safeguard(防护器)就是专门审查 agent 完整轨迹、在任务执行中拦截风险的安全模型。

为什么需要"策略调用"? 现有防护器大多在预定义的风险分类法下做判断。但现实部署中没有任何固定策略集能覆盖一切:同一动作在不同用户权限、组织要求、监管辖区下约束不同,安全策略本身还会随时间演化。因此近期工作开始把安全策略当作可配置的外部规约,对每条轨迹用与其上下文相关的策略来评估——就像法官断案前要先找到适用的法条,而不是背一部写死的刑法。

现有方法的局限:策略感知防护器主要建立在 prompting 和监督微调(SFT)上。Prompting 能把策略展示给模型,但不优化模型怎么用策略;SFT 让模型模仿精选的策略使用示范,能力受限于训练时见过的轨迹-策略配对分布。面对未见场景或新的策略组合,防护器可能既不知道该调用哪条策略,也不知道条款该如何适用。

本文的核心视角转换:把安全策略从被动上下文变成可调用能力——策略调用是一个动作,可以放进 rollout 里,用基于结果反馈的强化学习直接优化。这与 agentic RL 让模型学会"何时用搜索引擎、何时写代码"是同一原理,只是这里的能力是"援引正确的安全策略"。

二、论文定位和关联工作

  • 传统 guard 模型线:WildGuard、ShieldGemma、Llama Guard、Qwen3Guard 等主要对 prompt/response 做内容审核,基于固定风险分类法。与 agent 轨迹级监测的需求错位。
  • 轨迹级 agent 防护线:GuardAgent 做知识赋能的安全检查;AGrail 自适应构造安全检查;AgentDoG 提供细粒度轨迹诊断(本文最强的专用 baseline,79.69 分)。这些工作已转向轨迹级,但不识别哪条安全策略应当管辖当前轨迹。
  • 策略感知防护线:ShieldAgent 在可验证规则上推理;DynaGuard 支持用户自定义自由文本策略;LPG 在动态策略上下文中推理。这些工作条件化于给定策略,但策略选择与判断本身没有被直接优化——RePolicy 的差异化定位正是把"从候选库选适用策略"显式化为可 RL 优化的动作。
  • Agentic RL 方法线:Search-R1、ReTool 等证明外部能力使用(检索、工具)可通过 RL 学会;GRPO(DeepSeekMath 提出)以组内相对优势做策略优化,是本文的优化器选择。
对比维度Prompting 防护SFT 防护RePolicy(RL 调用)
策略如何进入模型全量塞进 prompt模仿示范轨迹按需调用、内容注入
优化目标无拟合训练分布调用结果+判断正确性
对新策略组合依赖泛化受限于配对分布扰动训练强制语义判别

三、问题定义

具体场景:防护器收到一条完整 agent 轨迹 τ(用户指令、动作、工具调用、环境观察)和一个动态策略库 P = {p₁,…,p_K},需判断轨迹安全与否。

核心洞察:安全判断的正确性依赖于先找到管辖该轨迹的那条策略——这就像医生看病历先要分诊到正确的科室,分诊错了,后面再认真的分析都用错了标准。而"分诊"这个动作本身是可以被直接优化的。

形式化:rollout 分两步——

  • 策略调用:p̂ ∼ πθ(·|τ, P)
  • 有据判断:(r̂, ŷ) ∼ πθ(·|τ, P, p̂, c(p̂)),其中 c(p̂) 是被调策略的完整内容,r̂ 是有据理由,ŷ ∈ {safe, unsafe}

完整序列为策略调用 → 策略内容 → 安全推理 → 安全预测。注意:防护器不预先看到全部策略正文,只看到每条策略的简短范围描述,必须先调用才能获得条款细节——这迫使调用决策基于轨迹与策略范围的语义匹配,而不是把所有策略背下来再挑。

这个抽象的精妙之处:把"安全判断"从一个不可分的黑盒分类问题,分解成"检索决策 + 条件推理"的序贯结构——前者可验证(调对了吗)、后者可验证(判对了吗),两者都可成为奖励信号,整条链路因此可被 RL 端到端优化。

四、问题解法

4.1 PolicyTraj-20K 数据构造

类比:先造一批带标准答案的"案例教材",每案都标注"适用哪部法规、哪几条、怎么判"。

  • 轨迹合成:从多个安全资源收集 agent 交互模式,规范化工具 schema、环境描述与交互历史;再用 API 模型保持轨迹结构与安全机制不变,重采样任务内容(用户请求、实体、文件、URL、数值、工具参数),生成安全与不安全实例,剔除工具交互不一致或标签无依据的样本。
  • 按操作场景组织策略库:关键设计是策略不按最终风险类别(如"隐私泄露")组织,而按agent 操作场景(如"外部消息与授权")组织——一个场景自然涵盖其中可能出现的多种风险。每个场景初始化一条策略(标题+范围描述+详细安全要求),标题与范围描述服务于调用,完整内容服务于推理。
  • 审计与收敛:策略库对全部轨迹审计,覆盖不足先精修条款,只有当轨迹代表全新操作场景才新增策略;最后合并重叠范围、去冗余。产出 D = {(τᵢ, p*ᵢ, rᵢ, yᵢ)},即 20,000+ 条策略标注轨迹 + 30 策略/358 条款库。

4.2 冷启动 SFT

对每条训练轨迹,把适用策略 pᵢ 与干扰项组成局部候选库 P̃ᵢ,模型先生成对 pᵢ 的调用,其完整内容 c(p*ᵢ) 追加进上下文后生成理由与标签。损失同时优化两步(式 4),初始化完整调用-推理序列与交互格式。但 SFT 只模仿示范——它不优化"模型自己生成的 rollout 是否调对了策略、判对了结果"。

4.3 GRPO + 三项可验证奖励

从冷启动模型出发,GRPO 对每个输入采样多条完整 rollout(调用→内容→推理→判断),组内比较,提高"调对且判对"轨迹的概率。奖励是三项规则可验证奖励的加权和:

奖励项定义权重
R_fmt 格式有效策略调用+格式合规的最终响应0.1
R_pol 策略命中I[p̂ᵢ = p*ᵢ](调用的正是标注适用策略)0.3
R_acc 判断正确I[ŷᵢ = yᵢ](最终安全标签正确)0.6

类比:三项奖励像驾考的评分表——灯光使用(格式)、路线选择(调用)、安全抵达(判断)各有权重,学员(模型)通过多次完整驾驶(rollout)对比学习哪里扣分最多。

4.4 策略上下文扰动:反记忆化设计

RL 期间每个局部候选库重采样干扰项并打乱顺序:干扰项包括无关场景的真策略和合成的诱饵策略(每个局部库平均 28.9 条策略、其中平均 9.2 条诱饵、至少 2 条)。策略 id 跨样本重新索引。这迫使模型从当前轨迹与各候选范围的语义判断适用性,而不能记住"轨迹长这样就选 3 号策略"或"候选库凑够几条就闭眼选"。

4.5 训练配置

基座 Qwen3-4B-Instruct-2507;SFT 5,000 例 2 epoch,GRPO 14,425 例 3 epoch;8×H20;rollout 每提示 16 条、每次调用最多返回 5 条策略;KL 系数 0.001。推理时 vLLM 生成、FSDP 训练。

五、评估指标与实验证据

基准与协议:六个 agent 安全基准共 7,369 条标注轨迹——ATBench(长程延迟触发风险,1,000 条)、R-Judge(多轮交互风险,1,242 条)、OpenAgentSafety(真实工具环境,289 条)、ASSEBench(安全+安全威胁,1,476 条)、HINTBench(非攻击内禀失败,709 条)、AgentHazard(计算机使用有害行为,2,653 条全不安全)。统一二分类 {safe, unsafe},Unsafe F1(不安全类为正类的 F1)为主指标,Overall 为六基准无权重平均(防止大基准淹没小基准)。对比 19 个外部模型:闭源通用(Claude Sonnet 4.6、GPT-5.4 等)、开源通用(Qwen3-235B、GLM-5.1、DeepSeek V4、MiMo 1.02T 等)、专用 guard(9 个)。通用模型共用同一 trajectory-only prompt(温度 0),guard 用各自推荐接口。

主结果(Unsafe F1,%):

模型ATBenchR-JudgeOpenAgentASSEBenchHINTBenchAgentHazardOverall
Claude Sonnet 4.695.4686.2651.9781.1096.4793.7384.17
GPT-5.496.8387.4455.6376.2595.4287.1383.12
GLM-5.1 (754B)95.5586.6350.9977.6498.3177.2081.06
AgentDoG-4B87.9380.2448.9982.8590.2587.8779.69
DynaGuard-4B89.4375.5355.7669.7087.4881.2476.52
RePolicy-4B99.4082.1762.7988.1197.2399.2088.15
  • Obs 1:4B 模型 Overall 88.15,超最强外部模型(Claude Sonnet 4.6)+3.98、超最强专用 guard +8.46,胜过 GPT-5.4(83.12)、GLM-5.1(81.06)、1.02T 的 MiMo(75.96)。
  • Obs 2:六个基准中四个第一(OpenAgentSafety +2.55、ASSEBench +5.26、AgentHazard +5.47),增益是广谱而非基准特化。

RL 对调用机制的影响(RQ2):策略命中 R_pol 从冷启动 94.4% 升至 98.5%(+4.1pp);调用广度从 1.9 条/轨迹升至 3.2 条/轨迹而诱饵选中率全程 <1%——扰动训练迫使语义判别,广度扩大没有换来乱选。

消融(RQ4):零样本基座 58.47 → 冷启动 SFT 86.95(+28.48,数据集的贡献)→ 完整 88.15。去掉显式策略调用做 GRPO,全 6 基准下降(均值 −2.32,AgentHazard −5.9、OpenAgentSafety −4.4)——显式调用是主要 RL 组件。

库规模敏感性(RQ3):|P| 从 10→40,宏 F1 从 86.1→88.1 后饱和于 50 时的 87.9;R_pol 从 99.4%→97.1%(轻微选择代价)。覆盖不足主要伤异质性强的基准(AgentHazard −4.6、OpenAgentSafety −3.2)。

错误结构(附录 D):RL 后正确判断 84.2%→89.8%,误报 7.4%→3.0%、漏报 8.4%→6.8%、错策调用 8.7%→1.4%。关键对比:无调用的 GRPO 变体降漏报靠**升误报至约 9%**换取,而完整 RePolicy 双降——换来更均衡的错误权衡。

为什么这些实验能证明论点:Unsafe F1 直接衡量轨迹级拦截能力;同协议下 19 个外部对手覆盖三个家族排除了"挑软柿子"质疑;调用机制指标(R_pol、诱饵率)与判断指标分离呈现,支持"RL 改善的是调用机制本身而非仅分类器"的主张;错误分解把"调用对不对"与"判得对不对"拆开,正对应方法的两步 rollout。

六、效果优势的根源解释

baseline 的根本局限:从优化层面看,prompting 与 SFT 都不直接优化策略使用的结果。Prompting 只是展示——模型是否读了、读对了哪条,训练信号一无所知。SFT 更隐蔽的瓶颈在于分布束缚:它模仿的是训练数据里的轨迹-策略配对,模型学到的是"这类轨迹配这条策略"的表面关联;遇到新策略组合时,配对先验失效。这就像背案例集的学生——案例内的题会做,案例外的分诊全靠运气。

RePolicy 的机制改变与因果链:

  1. 结果反馈直接作用于调用决策:GRPO 把"调没调对 + 判没判对"作为组内比较信号 → 模型被推向"调用正确策略且用它判对"的轨迹 → R_pol 94.4%→98.5% 不是副产品而是直接被优化的量 → 错策调用 8.7%→1.4% → 错误的判断源头(用错标准)被消除大半。
  2. 扰动切断捷径:候选库重组+诱饵注入+id 重索引 → “记住库组成/位置关联"的策略在训练中持续失效 → 唯一稳定的解是轨迹语义×策略范围的匹配 → 诱饵率 <1% 且库规模从 10→40 性能单调升——调用能力对库变化鲁棒。
  3. 调用-检索-推理的算力再分配:带调用的 rollout 响应从约 0.6K 增至 2.5K token(4.1×),序列变长意味着模型把算力花在"选对标准→展开条款→据条推理"上 → 相比直出二分类(no-invocation 变体靠升误报换降漏报),多出来的检索推理步骤让 FP 与 FN 同时下降 → 更均衡的错误权衡体现在全部六基准。
  4. 反事实:去掉显式调用后 GRPO 仍有效(87.8% 正确,说明 RL 本身有贡献),但完整版再多 2.0pp 正确率且误报减半(3.0% vs 5.0%)——证明增益的边际部分来自"显式调用+内容注入"这个结构,而非单纯多训了几步。

一句话:RePolicy 不是"更会分类”,而是把分类前的"找对依据"变成了被优化、可审计、抗扰动的显式动作——依据找对了,判断的均衡性随之而来。

七、必要知识反推

假设一个零知识的人要做这项工作,他最少必须掌握:

  • 领域知识层:agent 风险的轨迹级涌现特性(单步无害、组合有害)——不理解这个就不会把判断对象定为完整轨迹而非单条消息;真实安全策略的形态(范围+条款两级结构)——策略库的"标题/范围服务于调用、内容服务于推理"的拆分直接来自此;现有安全基准的构成与盲区(为何要自建数据集)。
  • 方法论知识层:agentic RL 的核心原理——外部能力使用放进 rollout、用结果反馈优化(Search-R1/ReTool 脉络);GRPO 组内相对优势机制;SFT 与 RL 的分工(模仿 vs 优化);分布偏移与记忆化的对抗手段(扰动、重索引——数据增强思想在 RL 训练中的应用)。
  • 工程知识层:大规模 RL 训练栈(vLLM rollout 生成 + FSDP 分布式训练 + KL 正则);奖励函数的规则化实现(三项 I[·] 指示奖励的代码化);六基准统一评估协议(输出规范化到二分类、guard 模型各用原生接口的公平性设计)。

知识融合的关键节点:把 agentic RL 社区"工具调用可学"的洞察,迁移到安全防护这个看似纯分类的任务上——识别出"援引策略"与"调用搜索引擎"在结构上同构(都是"选择外部知识源→注入内容→条件推理"),是全文的创造性支点。其次是数据构造上的反向思维:不按风险类别而按操作场景组织策略库,使策略天然与轨迹的操作上下文对齐,让"调用"这个动作有明确的语义基础。

八、论文中可以提取的通用性灵感

  1. 被动上下文变为可调用能力,即可被 RL 优化(范式迁移类)
    • 证据:策略从 prompt 素材变为 rollout 内的动作后,命中率 98.5%、误报减半。
    • 推广:任何"先选知识源再推理"的任务——医疗诊断(先选指南)、法律检索(先选法条)、客服质检(先选规章)、代码审查(先选规范)——都可把"选源"动作化并用结果奖励优化。
  2. 可验证分解让黑盒流程可训练(机制类)
    • 证据:判断任务分解为格式/命中/正确三个 I[·] 指示奖励,权重 0.1/0.3/0.6。
    • 推广:复杂多步任务的奖励设计(数据分析、科研自动化)应优先寻找"中间步骤的对错可机判"的分解点,而非只给最终结果打分。
  3. 训练期扰动对抗记忆化,换来部署期对配置变化的鲁棒性(机制类)
    • 证据:候选库重组+诱饵注入下诱饵率 <1%,库规模 10→50 性能稳定。
    • 推广:推荐系统防位置偏置、RAG 防文档顺序依赖、多租户系统防路由记忆——凡是"选择类"模型都应在训练期注入配置扰动。
  4. 多步推理的算力开销可购买更均衡的错误结构(信号利用类)
    • 证据:调用版响应 2.5K token、FP 3.0%/FN 6.8%,无调用版 0.6K token、FP 约 9%——省下的算力以误报翻倍为代价。
    • 推广:高风险决策系统(风控、医疗、内容审核)的架构选型应显式评估"每多一步推理买来多少错误结构的改善",而非只看单步延迟。
  5. 组织知识库按使用场景而非类别体系切分(机制类)
    • 证据:策略按操作场景组织(30 策略/358 条款)即可覆盖 2 万+轨迹,而非按风险类别铺开。
    • 推广:企业知识管理、FAQ 体系、合规条款库——按"用户处于什么操作"聚类知识,比按学科分类更贴近检索时的真实语义需求。