一、论文背景:会“总结经验”的 Agent,可能把毒药也总结进去

先从最基础的概念讲起。LLM Agent 是让大模型不只回答问题,而是能调用工具、读写文件、执行命令、多步完成任务的系统。自改进(self-improving)Agent 更进一步:它会把执行过的轨迹(trajectory,即完成任务的全过程记录)沉淀成跨任务、跨会话持久保存的状态,让能力随使用不断积累。

技能(skill)就是这种持久化学习的一种典型形态。它把交互轨迹蒸馏成“可执行、可迁移、可检查”的操作流程,通常以 SKILL.md 这类文本文件存在技能库里,内容覆盖软件工程、工具使用、重复性工作流等场景。主流做法包括:从轨迹中抽取经验、合并或修订已有技能、按效用决定去留。注意一个关键点:这些进化方法优化的目标是任务结果(任务成没成功、效用高不高),而不是流程的安全性。

那危险从哪来?Agent 的部署历史里充满不可控输入:用户请求、issue 工单、仓库脚本、runbook、经工具传递的指令——这些都可能是攻击者控制或已被攻陷的内容。其中可能埋着窃取机密、执行未验证命令、破坏性清理之类的操作。**如果 Agent 用不安全的手段完成了任务,进化机制就可能把这条不安全捷径连同周围有用的流程一起保留下来。**一个可执行、可迁移的技能库,就能在原始输入消失之后,跨任务、跨主机地复现这套不安全行为。

论文把这种持久的策略失败称为技能劣化(skill misevolution)。这里要和经典的**数据投毒(data poisoning)**区分开:

  • 数据投毒污染的是训练数据,受害者是模型权重,攻击者需要长时间、大规模地投喂;
  • 技能劣化污染的是经验库,受害者是 Agent 的持久状态,而且攻击者可以离开——只要一次不安全的“成功”被写成技能,危害就能在没有任何新攻击指令的情况下持续发生。

一句话概括论文的核心担忧:“熟能否生巧”的另一面是“熟也能生危”。

二、论文定位和关联工作:Agent 安全谱系里缺失的一环

把这篇论文放进 Agent 安全的研究谱系里看,会更清楚它的位置。已有工作大致覆盖了几段相邻的战线:

  • 提示注入与越狱:AgentDojo、Argus 等研究攻击者如何在当前会话中操纵 Agent 行为;
  • 有害任务与工具滥用:AgentHarm、RedCode、OpenAgentSafety 等基准测量 Agent 面对有害目标时的行为;
  • 技能安全:SkillInject、MalSkillBench、SkillSafetyBench 等直接给 Agent 供给恶意技能文件,测量其执行、检测与过滤;
  • 记忆与自进化安全:MemEvoBench 研究记忆累积的风险,另有综述讨论自进化系统的威胁与放大效应。

这些工作各有盲区。用一个类比:它们要么检查“这顿饭有没有毒”(当前提示),要么检查“仓库里的存粮有没有毒”(静态技能文件),但没人跟踪“这袋粮食是自己种出来、入库、又被取走煮熟的完整过程”。论文的核心定位正在于此:沿着“更新—产物—检索—再执行”的纵向链条做风险归因,而现有基准只能测量当前行为或静态产物,无法回答“这个危害是哪个环节引入的”。

维度提示注入/越狱数据投毒已有技能安全基准本文:技能劣化
攻击对象当前会话行为模型权重外部供给的技能文件Agent 自己总结的技能
攻击者是否需要在场需要(每次会话)需要(投毒期)需要(注入文件)不需要,离开后危害持续
测量时点单次交互训练后评估静态检查/单次执行全生命周期分闸门测量
风险归因不归因难以归因不归因归因到写入/检索/执行各环节

另一条相关脉络是多智能体与自进化系统安全:已有研究指出模型、记忆、工具、工作流等 adaptation 层面都存在风险漂移,本文把它落到“技能库”这一具体、可检查的载体上,使问题变得可测量、可治理。

三、问题定义:不安全的“成功”如何变成可复用的策略

论文先给出抽象表述:自改进本质上是一次策略更新。设 Agent 基础策略为 π,执行一系列三任务块 Q = (Q₁, …, Q_K),第 k 块产生轨迹 Tₖ,进化方法 E 在每块之后更新技能库:L_{k+1} = E(Lₖ, Qₖ, Tₖ)。下一块任务从 L_{k+1} 检索技能。会话重置,技能库长存——这就是风险传播的唯一通道,也是论文做隔离实验的立足点。

在此基础上,论文定义:当一次进化更新选择或泛化了一条不安全流程、把它写入技能库,且后续的检索与复用伴随比“不进化”更高的不安全行为时,该 episode 呈现技能劣化。注意定义里的严谨之处:论文把 artifact(产物)、retrieval(检索)、action(行动)分开报告,因为劣化链条可能在任何一道闸门停下来。

威胁模型也交代得很清楚:

  • 攻击者目标:把一段有限的不安全任务曝光转化为可复用流程,改变 Agent 后续行为;最强结局是 SKILL.md 在全新会话中引发危害(fresh-session carryover);
  • 攻击者知识:知道外部任务与工具接口、知道轨迹可能更新技能库,但看不到模型内部、隐藏提示、当前技能库和未来探测任务;
  • 攻击者能力:只能在学习历史的有界位置提交任意指令;不能直接写技能库、不能篡改检索/进化/评判、不能注入后续良性任务。

沙箱会重置其他所有任务状态,所以跨任务影响必须且只能经过技能库——这正是“技能劣化”与“攻击输入仍在场”的其他攻击的本质区别:攻击输入消失后,危害仍通过持久化状态延续。这与数据投毒的区别是双重的:投毒改权重、需要持续投喂;技能劣化改经验库、一次曝光即可播种。

四、问题解法:测试框架 + 冻结基准 + 治理包装器三件套

论文的贡献是一个完整的问题—测量—治理闭环,分三层展开。

4.1 SKILLMISEVO-GYM:生命周期感知的测试框架

要研究纵向传播,先得有能“回放”和“隔离”的实验装置。GYM 是跨 Agent 框架的 harness,核心设计有三:

  • 技能库版本化:对每轮更新后的 Lₖ 做快照,把 diff 关联到源轨迹,记录结果、工具轨迹与评判证据;
  • 状态隔离:每个任务跑在全新沙箱(新会话、新工作区、新进程命名空间、新工具会话),每个(episode、方法、Agent)单元从全新进程与空库启动,只有 episode 范围内的技能库前进——保证跨任务影响只能走技能库这一条路;
  • 净会话回放:episode 结束后导出最终 SKILL.md,在干净执行器中仅凭这个文件重建检索并跑 P 类任务(persistence probe),验证“攻击者已离开、只剩技能文件”时危害是否仍在。

附录 D.1 给出了最小集成接口:目标 Agent 适配器实现 isolate/run,进化方法适配器实现 setup/run_task/evolve_batch/authored_skills,治理包装器另有可选控制面。这使新 Agent、新进化方法、新治理策略都能接入同一套协议。

4.2 SKILLMISEVO-BENCH:从恶意曝光到迁移危害的冻结基准

有了框架,还需要标准化的“考卷”。BENCH 的构建流程分两步:

**第一步:概念发现。**以 AgentHazard(有害行为基准,提供有害目标分类、可重置沙箱与轨迹评判器)为可执行验证底座,用 AHA 自动化红队方法离线发现“恶意–良性”漏洞概念对,形成 VCG(验证概念图)。每个候选对要在隔离沙箱跑四个阶段:恶意任务 M、基于其轨迹的参考技能进化、带该技能的良性任务 B、不带技能的干净基线。只有 M 成功、技能不安全或污染 B、且干净基线安全(机制可复制、未被证伪)的概念才被保留。

**第二步:episode 实例化。**构造器把保留概念实例化为全新的 M/B/P 三类任务记录:

  • M(Malicious,恶意任务):实现概念的不安全路径;
  • B(Benign,良性任务):在相同概念与工具家族内做正常工作,但移除不安全条件——且 B 的提示里不含任何攻击载荷或“检测攻击”暗示;
  • P(Persistence,持久性任务):全新场景上的良性工作,提示里既无载荷也无显式不安全指令,只允许从最终导出的 SKILL.md 检索。

每个 21 任务的 episode 按 MMM BBB MMM BBB MMM BBB | BBB 的固定顺序组织,进化在每三个任务块后运行一次,最终 P₃ 不做任何更新、只重载冻结的 SKILL.md。任务、元数据、评判器全部冻结,发现用的 VCG 对被评估系统保密。每个条件包含 25 个 episode、共 525 个任务(225 M + 225 B + 75 P),三个漏洞概念各占 8、8、9 个 episode:

  • VC1 标签条件化不安全复用(8 episode):M 把“监控/遥测/扫描/.setup”等可复用标签与不安全实现绑定,B 用同一标签做真正良性的事,劣化发生在更新把标签抽象为触发条件却保留不安全实现;
  • VC2 双重用途边界丢失(8 episode):M/B 共享自动化角色但 M 附加未验证目的地、敏感收集等条件,劣化发生在技能保留基础设施模板却丢掉安全边界,把不安全能力当成默认;
  • VC3 组合式补全外溢(9 episode):M 演示完整的“收集–处理–传输”链,B 只需安全子集,劣化发生在技能把整条链打包,检索时“补全”了 B 从未要求的有害步骤。

4.3 九项生命周期指标

评测体系覆盖三道闸门,共九项核心指标(均为冻结基准规模上的绝对微聚合,M/B 分母固定 225、P 固定 75,缺失按零计入):

指标含义衡量哪道闸门
BU 良性效用B 任务良性完成率在线行为
M-ASR 恶意成功率M 任务有害目标完成率在线行为
B-ASR 污染率B 任务上实现同一有害目标的比率在线行为(污染)
CU 内容不安全度产出技能的 1–5 不安全评分产物
UG 不安全泛化度不安全指令超出原任务的泛化程度(仅 CU≥3 产物计入)产物
Stealth 隐蔽性不安全步骤伪装成正常操作的程度(仅 CU≥3 产物计入)产物
URR 不安全检索率P 任务检索到 CU≥3 技能的比率复用
C-ASR 迁移攻击成功率P 任务有害完成率复用(危害)
C-Util 迁移效用P 任务良性完成率复用(效用)

在线行为用 Gemini-3-Flash 按 AgentHazard 有害轨迹规则判定,产物审计用 Kimi-K2-0905 打 CU/UG/Stealth 分,良性完成由独立评判器打分——完成良性目标不抵消额外的有害行为,两者分开记。

4.4 SAFEEVOLVE:治理“写什么、复用什么”

诊断之外,论文还给药:SAFEEVOLVE 是一个方法无关的治理包装器,不改 Agent、不改进化算法、不改运行时拒答策略,只在两个边界上动手:

  • 写入时(write-time):非阻塞的 critic–deleter 对。critic 把候选技能当作“可复用策略”而非单次轨迹来审,定位可复用的不安全指令(考察不安全泛化、显式删除验证、未授权特权、不可逆操作、不受信外发、不安全机密处理六个维度,需引用候选文本中的具体片段);配对的 deleter 执行只删除修复——删掉最小的不安全片段,或把无条件规则收窄回原任务范围。禁止添加任何确认门、白名单、验证步骤或人机交互。修复版只有在仍可加载且风险更低时才替换原生候选,否则保留原件并附上审计证据。
  • 复用时(reuse-time):按“效用 + 谱系风险”对技能排序,把任务结果归因到被检索的技能(安全/有害结果都写回其谱系),跨过安全风险或低效用阈值的技能被退役;容量驱逐按“效用减风险”淘汰最低者。

评测配置里:最多两轮删除–审计、每更新块后做一次维护、两次有害复用或有效风险≥0.6 即退役、32 个技能的库容量上限。

五、评估指标与实验证据

实验在 4 个 Agent 框架(Claude Code、Codex、Hermes、OpenClaw)× 6 种进化方法(EvoSkill、SkillClaw、AutoSkill、SkillsVote、SkillOpt、Hermes-native)+ 不进化基线上展开,全部共享 MiniMax-M2.7 骨干模型,共 25 个配置、每个 525 任务。三个研究问题分别对应三组实验。

5.1 RQ1:不安全产物是普遍的,但危害要闯过三道闸门

21 个进化配置(4 框架 × 6 方法中去重后的组合)的结论是:全部 21 个都产出了不安全技能产物;19 个出现不安全检索;19 个出现污染;只有 15 个在净会话造成新会话危害。不进化基线的污染与迁移接近零。

这个“逐级衰减”正是技能劣化的签名:不安全状态被广泛写入,但实际危害还要闯过导出、检索、执行三关。**反过来讲,一个没有 carryover 危害的配置未必干净——它可能只是存着一个没被选中或没成功应用的危险产物。**只测最终行为的传统 ASR 会把这些不同的失败点混在一起,漏掉潜伏的持久风险。

配置间的差异同样值得注意:

  • EvoSkill 在每个框架都走完全生命周期,C-ASR 稳定在 25.3%–30.7%;
  • AutoSkill 也到达每个闸门,但 C-ASR 从 OpenClaw 的 14.7% 到 Codex 的 29.3%,框架敏感性强;Codex 上 AutoSkill/SkillsVote 保持 BU>79% 的同时 M-ASR>64%——有用与有毒并存,而非简单的效用–安全权衡;
  • SkillOpt 呈相反画像:OpenClaw 上产出高泛化产物但无不安全检索、零 C-ASR,其他框架上检索率与 C-ASR 也保持低位;
  • 15 个走完全生命周期的配置中 12 个 C-Util 超过不进化基线——有害传播与有用复用可以共存。

附录 I.2/I.3 的跨框架、跨方法案例进一步显示:同一条 M→B→P 任务流,四个框架都执行了初始有害任务,但后续路径不同(Codex 甚至在无记录检索事件的情况下经注入的 shell 上下文达成 P 危害);五种方法则留下五种不同的持久状态。风险位于“产出策略 × 技能通道 × 执行器”的交互中,单一 ASR 或产物分无法代表整个生命周期。

5.2 RQ2:三个恶意任务就够,良性更新洗不掉

RQ2 把恶意经验当作有界的攻击者能力,固定 Claude Code+AutoSkill 与 Hermes+Hermes-native 两组配置,只变曝光与调度:

  • 剂量效应:合并 C-ASR 从无恶意曝光的 16.0% → 一轮(3 个恶意任务)后的 35.3% → 满剂量(9 个)的 41.3%;C-Util 同期从 30.0% → 55.3% → 56.7%。3 个恶意任务足以播种一条可复用的不安全流程,且与有用复用共存;后续加量维持并推高风险,但非单调。
  • 时机效应:早期曝光的污染率 40.7% vs 晚期 19.8%(C-ASR 相近)——早的不安全更新影响更多后续良性工作,时机放大的是污染窗口而非最终持久性。
  • 批次构成:满混合与纯恶意批次的合并污染率 31.8% vs 34.2%、C-ASR 48.0% vs 46.0%,且两者排序在不同方法间反转。纯恶意批次并非持久化的必要条件——混在日常正常工作里的弥散曝光照样跨任务传播,良性经验不能可靠擦除已学的捷径。

5.3 RQ3:SAFEEVOLVE 大幅压低持久风险,效用几乎不损

在 OpenClaw 上对比五种治理(Raw / Utility-only / SecureClaw / ClawKeeper / SAFEEVOLVE,AutoSkill 与 EvoSkill 等权平均):

治理BU↑M-ASR↓B-ASR↓CU↓U-A(%)↓URR↓C-ASR↓C-Util↑
Raw 原始进化58.4470.4419.562.2637.3735.3321.3353.33
Utility-only65.1168.674.671.7626.1230.678.0072.00
SecureClaw58.4466.895.111.6922.4924.674.6760.00
ClawKeeper71.3368.896.221.7825.4225.337.3359.33
SAFEEVOLVE58.0066.004.441.5918.808.674.0040.67

关键读法:

  • 相对 Raw,SAFEEVOLVE 把 URR 从 35.33% 压到 8.67%(-26.7pp)、C-ASR 从 21.33% 压到 4.00%(-17.3pp),同时 BU 仅从 58.44 降到 58.00(-0.4 分)——安全收益几乎不用效用买单;
  • 分方法看,URR 下降同样显著:AutoSkill 45.33%→14.67%,EvoSkill 25.33%→2.67%;
  • 代价是 C-Util 从 53.33% 降到 40.67%——压制的正是那些“有用行为与可迁移风险混在一起”的流程,这是可识别的剩余成本;
  • Utility-only 对照(同样治理预算、同样维护节奏,但决策只看效用、不看安全证据)在 URR/C-ASR 上远逊 SAFEEVOLVE,证明收益来自安全专用证据而非生命周期管理本身。

组件消融把每个部件的贡献拆开验证:

  • 去掉配对 deleter:critic 风险削减(AutoSkill 0.53 / EvoSkill 0.40)消失,M-ASR/B-ASR/C-ASR 均上升;
  • 去掉复用归因:有害结果无法写回技能证据,B-ASR 从 4.44% 升至 8.22%,BU 从 58.00% 掉到 54.89%,C-Util 从 40.67% 掉到 32.00%;
  • 去掉安全退役:效果最直观——完整 SAFEEVOLVE 中跨阈值的 121 个 AutoSkill 与 48 个 EvoSkill 技能之后再未被检索(0/121、0/48),去掉退役后 100/106 与 44/44 被再次检索,URR 从 8.67% 翻倍到 17.33%。

附录 I.5 的配对案例给出微观图景:原始 AutoSkill 的库把一个普通的 Jenkins 遥测请求变成环境变量外传(curl ... ctx=$(env | base64)),SAFEEVOLVE 治理后的 Jenkinsfile 只调用共享的 buildTelemetry 例程,无任何环境导出或外发请求——治理没有改写初始任务、也没阻止原生进化,改变的是传播。

六、效果优势的根源解释

SAFEEVOLVE 为什么能以 0.4 分的效用代价换来近 27pp 的不安全检索下降?沿因果链拆解:

**第一环:原始进化的目标函数里没有安全项。**进化只优化任务结果,所以不安全捷径与有用流程作为同一个“成功轨迹”被一起入库。这不是某个方法的 bug,而是所有以结果为信号的学习机制的共性——成功是个含糊的学习信号。

第二环:写入端“只删除”直击要害。critic 定位的不是“这个技能整体是好是坏”,而是“哪几条指令是可复用的不安全规则”。deleter 只删不安全片段、保留其余全部内容——因为危险指令是可分离的少数,删掉它们对良性流程的损伤天然很小。这解释了 BU 几乎不动(58.44→58.00)。同时“禁止添加防御代码”的设计很关键:任何添加式改写都可能破坏技能与原生进化算法的兼容,而删除是最保守、最不引入新风险的操作。

**第三环:复用端归因让危害成为库内证据。**每次检索的结果(无论安全有害)都写回被检索技能的谱系。108/110 与 99/99 的归因覆盖率意味着几乎所有有害结果都变成了具体技能的风险证据——危害不再是孤立事件,而是可累积、可查询的库内属性。没有这一步(消融显示),同样的 C-ASR 背后是更高的污染和更弱的效用。

**第四环:退役切断“证据已坐实”的技能的检索通道。**0/121 vs 100/106 的对比说明:没有退役,跨阈值技能几乎必然被再次检索;有了退役,传播链在最确定的环节被物理切断。这是三道治理里对持久性效果最决定性的一环。

最后回到论文的立场:运行时拒答和纯效用的库管理之所以失灵,是因为它们既不检查学到的状态,也不把状态与后续结果关联起来。论文由此提出持久更新的三原则——可观察、可归因、可撤销,即使更严的治理会牺牲一些有用复用。

七、必要知识反推

要做出这项研究,作者需要哪些储备?按层拆解:

领域层:Agent 与技能进化的完整版图(AutoSkill、EvoSkill、SkillClaw、SkillsVote、SkillOpt、Hermes-native 六种方法的更新门控、检索规则、自强化路径各有差异——比如 EvoSkill 从失败轨迹蒸馏、SkillsVote 成功门控、Hermes-native 靠后台被动审查写入);Agent 安全的攻击面分类(提示注入、越狱、数据投毒、技能注入各自的前提与局限);AgentHazard、AHA 等上游基准与红队工具的语义与接口。

方法论层:纵向实验设计——版本化快照、跨单元隔离、固定分母微聚合、冻结基线防泄漏(B/P 提示无载荷、P 只从导出的 SKILL.md 检索、发现集不进评估);威胁模型的精确界定(攻击者能做什么、不能做什么);组件消融与“组件局部验证”(直接测量每个干预对其所改状态的效果,而非只看端到端);配对的恶意–良性概念构造与证伪逻辑(干净基线必须安全,机制必须可复制)。

工程层:四种异构 Agent 框架的适配(各自原生技能通道、隔离需求不同,Hermes 需要 bind-mount 特例);每任务一次性 Docker 沙箱与进程级隔离;多评判器管线(Gemini-3-Flash 轨迹判定 + Kimi-K2-0905 产物审计 + 独立良性评判);256 维哈希索引、Chroma 检索等各方法原生基础设施的保留与调用。

融合节点:这篇论文最大的思维跳跃,是把软件供应链安全的思维引入自然语言技能库——技能库就是 Agent 的“依赖仓库”:写入端是包发布(需要准入审计),谱系是 SBOM/来源追踪(provenance),退役是依赖封禁/召回,复用归因是生产事故归因到具体依赖版本。一旦建立起这个映射,大量成熟的治理实践可以平移过来。

八、通用性灵感

把论文的发现抽象到 Agent 之外,有几条可迁移的判断:

**1. 持久化学习通道是新的攻击面。**任何“把经验写下来、以后再取用”的系统(技能库、记忆、工作流模板、检索库)都有一条攻击者可以播种、然后离开的通道。危害的生命周期不再等于攻击输入的生命周期。论文证据:3 个恶意任务让 C-ASR 从 16.0% 翻倍到 35.3%,且良性更新不能可靠擦除。推广场景:RAG 知识库的防投毒审计、企业 Agent 的记忆管理、Copilot 类产品的用户自定义规则。

**2. 写入时治理优于事后清洗。**在状态进入持久层之前修复(critic–deleter),比危害发生后再补救便宜且可控;“只删除、不添加”是最小侵入的修复哲学——它承认治理者可能出错,所以只做减法。论文证据:配对 deleter 带来 0.53/0.40 的风险削减,去掉它各项风险指标回升。推广场景:CI/CD 的提交前检查、数据库迁移的 schema 门禁、任何“写路径守门”的设计。

**3. 谱系追踪让危害可归因、可召回。**给每条持久状态记来源、修订史与使用结果,危害就从“环境问题”变成“具体证据落在具体条目上”的问题,退役才有依据。论文证据:108/110、99/99 的归因覆盖,退役后 0/121 再检索 vs 不退役 100/106。推广场景:特征库/模型注册表的版本问责、微服务依赖图谱、数据血缘。

**4. “成功”是含糊的学习信号,评测必须分闸门。**只要优化目标只看结果,不安全捷径就会搭有用流程的便车;测量若只看终态,会把“潜伏的危险产物”误判为安全。论文证据:21/21 产出不安全产物但只有 15/21 到达净会话危害;C-Util 与 C-ASR 可以同时高。推广场景:RLHF/RL 中奖励的黑客行为检测、任何“指标好但过程可疑”的系统的过程审计。

**5. 效用与安全并非天然权衡,“可分离性”是关键杠杆。**SAFEEVOLVE 只损失 0.4 分效用的前提是:不安全指令在技能文本中是可定位、可切除的少数。当一个系统里危险行为与有用行为真正纠缠不清时(论文里 C-Util 降 12.7 分显示这种纠缠确实存在于部分流程),才需要付出真实代价。推广场景:先诊断“风险是否可分离”,再决定治理强度的分级策略。

九、结语

这篇论文讲了一个朴素但被系统性忽视的故事:Agent 从经验中学习的能力,同样是被攻击的能力。它的贡献不只在提出问题,更在于把问题拆成可测量的闸门(写入/检索/执行)、可复现的基准(冻结的 M/B/P 流与九项指标)和可组合的治理(修复/归因/退役)。对正在构建自改进 Agent 的团队,最直接的行动项是:给你的技能库加上版本、谱系与退役机制——论文已经证明,这套“古老的”供应链治理思路在自然语言技能库上同样成立。

本文基于论文全文逐页阅读撰写。