先给结论
AgentLAB 不是 Drift Monitor 本身,而是非常适合拿来打 Drift Monitor 的 adversarial probe suite。它的关键贡献是把 agent 安全从“单轮 prompt 是否安全”推进到“多轮 user-agent-environment trace 是否被逐步改写”。对我们关心的 self-evolving agent 来说,这篇最有价值的地方是:它把 objective drift、memory poisoning、tool chaining、task injection 放到同一个长周期攻击框架里。
版本说明:本页基于公开 arXiv v1、公开项目页、公开 GitHub README/代码布局、PDF 图表和 TeX/source inventory 阅读完成;检索日期为 2026-05-26。本页不声称完成了 AgentLAB 的独立复现实验,所有 ASR/T2S 数字均为论文报告值。
研究动机
现有 agent safety benchmark 很多仍然偏向 single-turn 或 static scenario:给一个 prompt、看模型是否拒绝;给一个网页注入、看 agent 是否被劫持。这类评估对 deployed agent 不够,因为真实 agent 不是一次性问答系统,而是在多个 user instructions、tool calls、environment observations、memory reads/writes 中持续运行。
AgentLAB 的出发点是:攻击者可以利用时间维度。单轮里太明显、会被拒绝的恶意目标,可以被拆成多个看似合理的步骤;环境里每一段文本都可能看似无害,但累积起来能改变目标;记忆写入时也许只是“用户偏好”,等到未来检索时才变成绕过安全策略的证据。
这就是它和 Drift Monitor 的关系:monitor 不能只盯最后一步是否违规,而要理解 trace 的因果轨迹。尤其在 self-evolving agent 中,系统会把经验、偏好、规则、workflow、工具使用习惯写回未来运行时;攻击者并不需要马上让 agent 犯错,只要让错误状态进入下一轮。
数学表示及建模
Long-horizon interaction trace
论文把 agent 的长周期交互写成四元组序列:
| 符号 | 含义 | Drift Monitor 要看什么 |
|---|---|---|
| \(p_i\) | user prompt / instruction | 用户目标是否被重新叙述、转移、社会工程化。 |
| \(a_i\) | agent action / tool call | 单个动作是否安全,以及动作序列是否组合成 \(T^*\)。 |
| \(o_i\) | environment observation | 网页、邮件、代码、文档、商品描述等是否包含长期注入。 |
| \(r_i\) | agent response | 响应是否表明目标、约束或安全策略发生漂移。 |
这个形式对我们特别重要,因为 self-evolving agent 的状态更新也可以被接到 trace 上:
其中 \(\Delta M_t\) 是 memory change,\(\Delta S_t\) 是 state/config change,\(\Delta W_t\) 是 workflow/skill/tool-use policy change。AgentLAB 本文没有直接做 self-modification,但它给了这些状态被攻击的外部压力。
两类 threat model
| 威胁模型 | 攻击者控制什么 | 典型攻击 | monitor 不能遗漏的点 |
|---|---|---|---|
| User as adversary | 把部分 \(p_i\) 替换成 adversarial prompts \(p_i^*\) | Intent Hijacking, Tool Chaining | 不要只看每轮是否“像正常用户”;要看目标是否被连续重塑。 |
| Environment as adversary | 把部分 \(o_i\) 替换成 adversarial observations \(o_i^*\) | Objective Drifting, Task Injection, Memory Poisoning | 工具返回内容、网页、邮件、文档都不能天然当作可信上下文。 |
Benchmark 四个组件
AgentLAB 把 red-teaming pipeline 分成 agent、environment、task、attack 四个模块。这个分解很适合后续做 monitor baseline:同一套 victim agent 和 environment,可以替换 attack generator 或 defense/monitor。
| 组件 | 论文中的角色 | 对我们可复用的地方 |
|---|---|---|
| Agent | backend LLM 加 tool use、planning、external memory 等能力。 | 作为 victim agent;比较有无 monitor 的行为差异。 |
| Environment | 应用域、可变 state、读写 state 的 tools。 | 作为状态污染和工具组合的真实载体。 |
| Task | benign task \(T\) 或 malicious task \(T^*\),带 ground-truth tool-call/mutation sequence。 | 可定义 monitor 是否在 \(T^*\) 完成前报警。 |
| Attack | 攻击策略、最大轮数、优化步数、planner/attacker/judge。 | 作为 adversarial evaluation suite。 |
算法流程 / 方法
五类 long-horizon attacks
| Attack type | Adversary | 核心机制 | 对 Drift Monitor 的启发 |
|---|---|---|---|
| Intent Hijacking | User | 多轮 social engineering / persona / framing 逐步侵蚀 safety guardrails。 | 检测“意图重述轨迹”,不是只检测最后一轮是否危险。 |
| Tool Chaining | User | 把恶意任务拆成多个单独看似 benign 的 tool calls。 | 需要 sequence-level tool semantics;per-call allowlist 不够。 |
| Objective Drifting | Environment | 在商品描述、搜索结果等观察里持续注入目标改写内容。 | 目标一致性应作为时间序列趋势监控。 |
| Task Injection | Environment | 把 \(T\) 与 \(T^*\) 通过中间 bridge actions \(\{\hat a\}\) 连接起来。 | 危险不在单一 injection,而在 bridge action 的全局作用。 |
| Memory Poisoning | Environment | 隐藏注入被 memory system 存成 user preferences,未来检索后触发 unsafe behavior。 | write-time 和 retrieval-time 都要审计。 |
多 agent 攻击生成框架
AgentLAB 的 attack generator 一般不是固定 payload,而是一个自适应系统:planner 先把 \(T^*\) 分解成策略,attacker 根据 victim agent 的响应继续改写,judge 判断当前是否成功,某些攻击还用 verifier 检查 tool-call sequence 是否真的能在 environment 中执行。
Task Injection 的 bridge action 思路
论文认为直接把恶意目标写进 observation 的 “IMPORTANT!!! ignore previous instruction...” 风格不够有效,因为它和用户任务 \(T\) 相关性弱,且容易被模型或防御器识别。AgentLAB 的 long-horizon prompt injection 会设计中间动作 \(\{\hat a\}\),把 benign tool sequence \(\{a\}\) 和 malicious sequence \(\{a^*\}\) 接起来:
生成过程可抽象为:
执行后得到 trajectory \(\mathcal{M}=\mathcal{L}(T,\{\hat o\},\{o^*\})\)。如果 bridge 失败,就改写 \(\{\hat o\}\);如果 bridge 成功但 payload 失败,就改写 \(\{o^*\}\)。成功样例进入 memory bank \(\mathcal{B}\),后续按同 benign task 或同 malicious task 检索 exemplar。
Memory Poisoning 的两阶段攻击
Memory poisoning 是最像 self-evolving drift 的攻击:写入时看起来像普通偏好,检索时才改变行为。AgentLAB 的流程是:
| 阶段 | 做什么 | monitor 对应检查 |
|---|---|---|
| Phase 1: Memory Injection | planner 生成策略,attacker 生成短 preference payload,evasive judge 判断是否足够隐蔽。 | writeback gate:来源、上下文、作用域、未来触发条件、风险偏置。 |
| Phase 2: Exploitation | 未来 risky scenario 中,retriever 取出 poisoned memory,给 agent 提供错误 justification。 | retrieval gate:memory-query-context 三元组是否合理,是否改变 safety decision。 |
实验设计
论文用 AgentLAB 对代表性 LLM agents 做 preliminary robustness evaluation。victim agents 覆盖 GPT-4o、GPT-5.1、Gemini-3.0-Flash、Claude-4.5-Sonnet、Llama-3、Qwen-3 等论文报告模型。默认 attack framework 中,planner 是 GPT-5.1 temperature 0.5,attacker 是 Qwen-3-14B-Abliterated,judge 是 GPT-5.1 greedy decoding。
| 项目 | 设置 | 为什么重要 |
|---|---|---|
| Attack turns | 五类攻击默认最大轮数分别为 7、20、15、5、12。 | 长周期攻击能力直接来自多轮预算。 |
| Metrics | ASR、T2S、RR。 | Drift Monitor 不能只看 ASR,还要看报警时间和拒绝行为。 |
| Data sources | SHADE-Arena、AgentDojo、WebShop、Agent-SafetyBench。 | 覆盖工具调用、网页购物、间接注入、记忆增强 agent 等场景。 |
| Scale | 论文报告 28 environments、644 security test cases。 | 足够作为一个 baseline probe suite 的起点。 |
| Defenses | Self-Reminder、Llama-Guard、Repeated Prompt、DeBERTa Detector。 | 用来说明 one-shot defense 很难直接迁移到 long-horizon setting。 |
证据边界:公开 README 和正文数据统计处使用 9 个 risk categories 的表述,正文 introduction 另有 10 个 risk categories 的表述。本页采用“多个风险类别”并保留这个小不一致作为阅读 caveat。
实验结果
Overall ASR:多数模型仍然显著脆弱
论文报告的平均 ASR 如下。这里最值得看的是两点:第一,tool chaining 在多数模型上非常高;第二,Claude-4.5 虽然在 task injection/objective drifting 上强很多,但 tool chaining 和 memory poisoning 仍不是 0。
| Agent | Intent Hijacking | Tool Chaining | Objective Drifting | Task Injection | Memory Poisoning | Overall |
|---|---|---|---|---|---|---|
| Qwen-3 | 78.1 | 96.3 | 92.2 | 93.1 | 48.0 | 81.5 |
| Llama-3.1 | 53.3 | 90.4 | 67.4 | 86.6 | 34.6 | 66.5 |
| GPT-4o | 74.0 | 94.1 | 79.2 | 79.9 | 63.3 | 78.1 |
| GPT-5.1 | 59.8 | 94.6 | 73.7 | 21.5 | 51.3 | 69.9 |
| Gemini-3 | 46.2 | 95.9 | 15.8 | 43.1 | 67.3 | 53.7 |
| Claude-4.5 | 27.2 | 73.3 | 5.3 | 0.0 | 38.8 | 28.9 |
Long-horizon injection 高于 one-shot baseline
| Agent | One-shot Attack | Long-horizon Attack | 阅读重点 |
|---|---|---|---|
| Qwen-3 | 81.9% | 93.1% | 本来已经高,长周期进一步推高。 |
| Llama-3 | 50.7% | 86.8% | 差距最大之一,说明 bridge action 很关键。 |
| GPT-4o | 62.5% | 79.9% | 直接注入不如逐步转移。 |
| GPT-5.1 | 2.08% | 21.5% | 单轮很强不等于长周期安全。 |
| Gemini-3 | 41.0% | 43.1% | 提升小,但仍存在风险。 |
| Claude-4.5 | 0.0% | 0.0% | 该任务注入设置下保持强抵抗。 |
Defense transfer:单轮防御效果不稳定
论文评估了 Self-Reminder / Llama-Guard / Repeated Prompt / DeBERTa Detector。结果不是“防御完全没用”,而是效果强依赖模型和攻击类型,不能作为 long-horizon monitor 的充分替代。
| 例子 | No defense | Defense result | 说明 |
|---|---|---|---|
| GPT-5.1 / Objective Drifting | 73.7 | RP 31.0, DD 7.8 | 检测器可显著下降,但仍依赖攻击类型和模型。 |
| GPT-5.1 / Task Injection | 21.5 | RP 20.8, DD 2.8 | Repeated Prompt 几乎没改善,DD 更有效。 |
| Claude-4.5 / Tool Chaining | 73.3 | SR 57.9, LG 46.7 | 即使强模型也难靠提醒或分类器挡住工具组合。 |
| Gemini-3 / Memory Poisoning | 67.3 | RP 43.2, DD 55.1 | memory attack 下防御顺序甚至不直观。 |
Ablation:轮数比优化步数更像主因
这两张图对 Drift Monitor 很关键。攻击者并不一定需要更强模型或复杂优化,只要有足够多轮,就可以逐步把 agent 带离原始目标。因此 monitor 的 evaluation 不能只报最终 ASR,还要报 detection latency:
我的评论
它最适合作为 baseline/probe,而不是最终方案
AgentLAB 的价值是把我们担心的 drift 攻击面打包成可跑的 benchmark 方向:目标漂移、任务注入、工具组合、记忆污染。它本身不是 monitor,也没有解决“人类不完全理解自改”的解释层问题。但它正好可以作为我们未来系统的红队压力测试。
我认为最自然的 baseline 设计是:
| Baseline | 做法 | 预期问题 |
|---|---|---|
| No monitor | 原始 agent 直接跑 AgentLAB。 | 给 ASR/T2S 下界。 |
| Prompt-level LLM judge | 每轮 \(p_i\) 或 \(o_i\) 单独分类。 | 会漏掉 bridge action 和 tool sequence composition。 |
| Repeated Prompt / Self-Reminder | 复述用户目标或安全提醒。 | 论文已显示迁移不稳定。 |
| Trace-level judge | 把 \(\tau_{1:t}\) 输入 judge,判断是否 drift。 | 可解释性、成本、false positive 可能差。 |
| Release-gated Drift Monitor | 对 state/memory/workflow/tool sequence diff 做 gate、quarantine、rollback。 | 这是我们真正想做的方向。 |
对 self-evolving agent 的直接改造
AgentLAB 原始 trace 可以自然扩展成 self-evolution trace:
然后 monitor 不只判断当前响应,而是判断候选状态写回是否允许:
这个公式不是论文原文,而是我基于 AgentLAB 和前面几篇 Drift Monitor 精读得到的研究化改写。它把 AgentLAB 的长周期攻击压力,接到了 AgentDevel/AIR/AgentXRay/Routine Chats/OEP/MemoryGraft 那条 monitor pipeline 上。
局限和需要小心的地方
- 论文里的模型名和数值是 paper-reported,不等于我们已经独立复现。
- benchmark 很偏 red-team effectiveness,monitor 研究还要补 false positive、utility preservation、rollback cost。
- AgentLAB 主要测外部交互攻击,不直接测 agent 自己改代码/改 skill/改 memory policy 后的内生 drift。
- 风险类别数量在论文不同位置有轻微文字不一致,不影响主结论,但写正式论文时要以 artifact schema 为准。
One More Thing
这篇读完之后,我更确信我们的 3-6 个月方向不应该是“再做一个攻击 benchmark”,而应该是:
用 AgentLAB/OEP/MemoryGraft/Routine Chats 作为 adversarial probe suite,用 AgentDevel 的 release gate 做系统骨架,用 AIR 的 incident response 做动作空间,用 AgentXRay 的 workflow delta 做人类可审查层。
实验上,不要只报 final ASR。更有论文价值的指标是:
| 指标 | 定义 | 为什么比单纯 ASR 更贴 Drift Monitor |
|---|---|---|
| Detection latency | \(t_{\mathrm{alarm}}\) | 长周期攻击的核心是“什么时候发现”。 |
| Pre-success alarm | \(t_{\mathrm{alarm}} < t_{\mathrm{success}}\) | 报警晚于恶意目标完成就没有安全意义。 |
| Rollbackability | 状态/记忆/workflow 变更能否撤回 | self-evolving agent 的风险常在写回后长期存在。 |
| Utility retention | benign long-horizon tasks 的成功率 | 过强 gate 会把 agent 变成不能工作的系统。 |
| Human-review burden | 人类需要看的 diff/token/trace 量 | 题目核心就是人类不完全理解,必须控制审查负担。 |
最小可做版本可以很朴素:先选 AgentLAB 的 task injection / memory poisoning / objective drifting 三条轨道,不改模型,只加一个 trace-level + writeback/retrieval gate。然后比较 no gate、prompt-level judge、trace-level judge、release-gated monitor 四组。只要能证明 monitor 更早发现 bridge/memory/objective drift,同时 false positive 可控,就已经是一个清晰可投稿的雏形。