本组论文

一、论文背景

1.1 三篇论文共同站立的地基

把这三篇论文放在一起读,先要看清它们共享的三个领域前提。

**第一个前提:agent 正在从玩具变成生产力。**SWE-agent、OpenHands、Claude Code、Codex 这类编码 agent 已经能在真实仓库里修 bug、提 PR。GitHub 的 Octoverse 2025 报告记录了 Copilot coding agent 上线五个月内创建超过一百万个 PR。当产出代码的量级暴涨,人工评审供给跟不上,评审本身也必须 agent 化,这就是 CIVER 站的背景。

**第二个前提:单 agent 的天花板已经显现。**再强的单体编码 agent,在开放式任务上也会收敛到局部最优。Evolving Agent Teams 开篇就给出诊断:写 DeepSeek-V3 的 MLA decode kernel 时,单 agent 往往在 WGMMA 张量核心实现上反复失败后放弃,退而求其次去调更容易写对的 WMMA,最终停在远低于专家基线的平台上——Codex 5.5 xHigh 花 1000 美元预算、多天努力,只达到专家性能的 28%。当任务从「写出正确的代码」变成「在大规模硬件相关的设计空间里搜索高性能解」,组织形式本身成了瓶颈。

**第三个前提:agent 的能力边界正在外溢到工具生态。**Model Context Protocol(MCP)让 agent 通过标准化接口调用 GitHub、PayPal、地图、浏览器等外部服务,工具以 JSON 元数据(名称、参数 schema、自然语言描述)的形式暴露给模型。问题在于:这些描述是自然语言,会直接进入模型的上下文——生态的互操作性红利和提示注入的攻击面,是同一枚硬币的两面。Log-To-Leak 研究的正是这个面。

1.2 给初学者的概念阶梯

如果这些名词还陌生,可以按下面五级台阶往上走。

  1. LLM Agent:让大模型不只生成文本,还能拆解目标、调用工具、观察结果、循环行动。ReAct 式的「推理—行动」交替是最基本的骨架。
  2. 多智能体系统:多个 agent 分工协作。最简单的形态是固定角色流水线——程序员写、评审员看、测试员跑;复杂形态涉及动态组队、共享记忆、中央调度。
  3. MCP(Model Context Protocol):一个开放协议,规定服务端(MCP server)如何向宿主(host,如 Claude Desktop、Cursor)暴露工具。agent 看到的每个工具都带一段人读的自然语言描述——这段描述就是注入攻击的载体。
  4. 因果干预(causal intervention):来自因果推断的 do-演算传统。相关性只能告诉你两个变量同涨同跌;干预 do(x) 才能回答「如果我主动改变 x,y 会不会变」。把缺陷修掉再观察评论分数是否下降,就是一次干预实验。
  5. 开放式程序优化:给定目标描述、代码库和正确性约束,在有限 token 预算内最大化某个评分函数(比如 kernel 加速比)。与一般代码生成的区别在于:搜索空间巨大、性能天花板由高层架构决定、过程跨越多个性质不同的阶段。

1.3 为什么放在一起读

单独看,这是三篇领域不同、方法各异的论文:一篇做多智能体组织演化,一篇做评审验证,一篇做安全攻击。合起来看,它们恰好覆盖了多智能体系统可信问题的三个正交维度:

  • 组织可信——团队这个「生产机器」本身如何随任务阶段演化而不僵化(Evolving Agent Teams);
  • 输出可信——agent 产出的评论、发现、结论如何被独立验证(CIVER);
  • 生态可信——agent 赖以生存的工具生态如何被污染、如何设防(Log-To-Leak)。

更有趣的是方法论上的呼应:Evolving Agent Teams 的 supervisor 靠「对系统自身做干预(重构团队)并观察结果」来逃离局部最优;CIVER 把「对代码做干预(靶向修复)并观察评论响应」形式化为因果验证;Log-To-Leak 的攻击者则利用「对上下文做干预(注入工具描述)并劫持 agent 行为」。干预—观察—归因这个因果推断的基本循环,在三篇论文里分别以建设者、验证者、攻击者的面目出现。这种镜像关系,比任何单篇的技术细节都更值得咀嚼。

时间线上它们也构成一组连环追问。Evolving Agent Teams 回答「怎么让 agent 团队变强」;CIVER 紧接着问「变强的团队产出的判断怎么信」;Log-To-Leak 则补上最后一问「信得过的 agent 接上真实生态后还安全吗」。三问层层递进,恰好对应一个 agent 系统从实验室走向生产环境要闯的三道关——这也是把它们编为一组精读的编辑理由。

二、论文定位和关联工作

2.1 Evolving Agent Teams:多智能体编排的谱系

多 agent LLM 系统的研究脉络大致三条线。第一条是固定角色流水线:ChatDev、MetaGPT、MAGIS 给 agent 分配程序员、评审、测试员等固定角色。第二条是动态角色调整:DyLAN 从手工角色池里选择,AgentVerse 每轮从头重组团队——但前者只是路由,后者不保留重组间的全局上下文。第三条是进化搜索:FunSearch、OpenEvolve、AlphaEvolve 用种群加交叉的进化搜索优化程序;ADAS 用 LLM 加档案库迭代提出新 agent 架构。

Evolving Agent Teams 的差异化定位有两点:其一,它面对的是多天尺度的开放式优化,工作的性质会从知识获取、到搜索、再到验证发生质变,需要的不是路由而是角色与职责的重新发明;其二,supervisor 在所有团队重构之间维护一个持久全局文件系统。与最近的 Meta-Harness 相比,两者都承认「更丰富的经验访问带来更好的元优化」,但优化对象不同——Meta-Harness 优化模型外围的 harness,Evolving Agent Teams 优化搜索过程本身。与 K-SEARCH 相比,后者虽解耦规划与实现,但固定在双角色配置上。

2.2 CIVER:代码评审验证的坐标系

代码评审可靠性的已有工作可分四类:上下文增强型(CodeReviewer、SGCR、OpenCodeReview 用仓库上下文生成更好的评论);反思与对抗型(Self-Refine 迭代反馈、Refute-or-Promote 对抗验证、Adversarial Review 结构化分歧);执行验证型(Fix-guided Verification Filter 跑原始与修复版实现对比测试);反事实与对比学习型(VISION 生成最小改动的标签翻转代码对、ComPass 语义保持变换加对比学习)。

CIVER 的差异在于一个明确的盲区:这些方法都没有显式建立「评论与其声称缺陷之间的因果连接」。评审者置信度高、验证 agent 之间一致,可能只是共同错误被强化;修改后评论分数变了,可能只是表面差异而非缺陷被移除。CIVER 同时建模验证与干预两侧(既学评论可靠性,也学干预相关性),并且显式区分靶向修复引起的分数变化与无关修改引起的分数变化。

2.3 Log-To-Leak:MCP 安全研究的增量

间接提示注入与工具投毒已有厚实的前序:InjecAgent 与 AgentDojo 建立了攻击与效用的双轨评测;MCPTox 在真实 MCP 服务器上评测投毒元数据,并把有效描述归纳为「触发条件 + 恶意动作 + 合理化借口」三件套;MCP-ITP 研究让投毒工具潜伏、借用高权限工具执行;MCP-SafetyBench 覆盖二十种攻击类型。

Log-To-Leak 相对 MCPTox 的模板增量有两个:一是把 Tool Binding(指名道姓绑定到 save_logs 这个工具并指示调用)从「恶意动作」里独立出来,二是把 Pressure(强制或禁止式措辞)单独隔离。这个四分解不是文字游戏——它支撑了受控消融:在固定「事后调用 + 载荷逐字段复原」的目标下,每个组件的角色可以被单独测量。更关键的定位差异是评测契约:t_log 必须出现在最后一个合法调用之后,载荷按字段评分,目标任务完成率单独测量——「任务被劫持」与「任务完成的同时发生未授权披露」被严格区分开。

2.4 三篇的定位对照表

维度Evolving Agent TeamsCIVERLog-To-Leak
论文类型方法 + 系统论文方法论文攻击框架 + 评测论文
核心对象团队组织 T=(R,Π,M)评论可靠性分数工具调用序列
可信维度组织可信(怎么组织)输出可信(怎么验证)生态可信(怎么设防)
方法论传统元优化 / 组织演化因果推断(do-演算)安全评测(提示注入)
前序最近邻DyLAN / AgentVerse / ADAS / AlphaEvolveFix-guided Filter / VISION / ComPassMCPTox / MCP-ITP / AgentDojo
差异化主张按诊断在线重构角色 + 持久跨团队记忆干预响应式验证而非合理性判断附加式事后泄露的严格契约

三、问题定义

3.1 Evolving Agent Teams:组织随解共演化

形式化地,开放式程序优化的任务是:给定目标描述、代码库与正确性约束 C,在可执行程序空间 P 中找解 s,最大化评分函数 F: P→R 同时满足 C,全程受有限 token 预算约束。

论文的关键观察是:任何 LLM 优化系统都可以被一个三元组 T = (R, Π, M) 刻画——角色 R(每个 agent 负责什么:单体通才?固定程序员/评审/测试?还是 LLM 变异算子?)、协调 Π(agent 怎么互动:无协调、固定流水线、选择-变异-评估循环)、知识管理 M(经验怎么积累共享:无管理文件系统、固定协议消息传递、候选档案库)。现有系统全部在运行前人工设计并固定这三者,只优化解 s 而不动 T 本身——这就是长程任务上停滞在局部最优的结构性根源。

三轴框架的价值不止于描述,更在于它是可操作的消融坐标:论文的关键消融(固定四角色团队 vs 演化团队)之所以能把 0.31× 到 0.74× 的差距干净归因于「演化」,正是因为两者共享 R 的候选空间、Π 的实现机制与 M 的存储载体,差异只在「谁来决定 T 以及何时改变 T」。这也给后续工作划出了清晰的比较基准:任何新的多 agent 编排方法,都应该报告在同样模型、同样预算、同样任务上「固定 T」与「演化 T」的对照,否则无法判断增益来自组织还是来自其他混杂因素。

于是问题变成:如何让 T 与 s 共同演化,使优化系统本身适应当前发现阶段的形态。挑战有三层:诊断层(如何从进度曲线与 agent 报告中识别停滞根因——知识缺口?搜索耗尽?还是过早宣布天花板?);重构层(角色可以按需发明而非从预定义池选取,协调可以是流水、并行或混合);连续性层(重构不能丢掉已有经验,否则每个团队都从零开始)。

3.2 CIVER:评论与缺陷的因果连接

设 x 为仓库状态或 PR,c 为 LLM 评审员生成的候选评论,y(x,c)∈{0,1} 指示 c 声称的缺陷是否真实存在于 x。验证器要估计 p_θ(x,c) = σ(s_θ(x,c)) = P(y=1 | x,c)。

CIVER 的形式化借用了潜在结果框架。定义两类干预:靶向干预 I_c 去除 c 声称的缺陷;无关干预 I_c’ 改动程序的其他部分但保留所述缺陷。干预下的潜在结果是 y_do(x=I_c(x)) = y(I_c(x), c)——程序被改动,评论保持固定。因果验证的两个条件是:

  • P(y(I_c(x),c)=1 | x,c) < P(y(x,c)=1 | x,c):靶向修复应压低真评论的有效性概率(公式 2,表征缺陷移除效应);
  • P(y(I_c’(x),c)=1 | x,c) = P(y(x,c)=1 | x,c):无关修改不应改变有效性概率(公式 3,充当阴性对照)。

挑战在于:验证器只能用 p_θ(I_c(x),c) 和 p_θ(I_c’(x),c) 逼近这两个条件概率,而干预本身要由模型生成——如何保证靶向修复真的去除了缺陷、无关扰动真的无关?CIVER 的回答是把干预构造(靶向修复取自 SWE-Review-Bench 的可执行缺陷-修复对,无关扰动用其干扰修复构造法)与干预排序(训练一个排序网络挑选与缺陷最相关的干预)都纳入可学习组件。此外还有第三类干预:语义保持变换 T(x)(重命名、换行等),它约束同一个评论在等价程序表示上得分不变——这是不变性约束,也是因果图里「不应有边」的检验。

3.3 Log-To-Leak:附加式事后泄露

设 agent 对用户查询 q 的执行为 A(q) = ⟨t(1),…,t(k), r_A⟩,其中 t(k) 是最后一个合法工具调用,r_A 是返回给用户的响应。敏感交互数据被定义为四字段元组 S = ⟨q, s^(k), o^(k), r_A⟩——用户问了什么、哪个 MCP 服务器处理的、服务器返回了什么、agent 对用户说了什么。这四个字段合起来,基本还原一次完整的交互隐私。

攻击目标是把良序执行扩展为 A_inject(q) = ⟨t(1),…,t(k), t_log, r_A⟩:在最后一个合法调用之后、响应返回之前,插入一个攻击者控制的日志调用 t_log,其载荷 b_S 尽可能保真地记录 S 中的字段。威胁模型限定得很克制:攻击者运营一个第三方 MCP 服务器,只控制自己服务器上工具的名称、参数 schema、默认值与描述;不能改别家工具、不能碰系统提示、不能拦截流量。攻击成立需三个前提——恶意服务器被启用、其工具描述进入模型可见的工具上下文、宿主权限策略允许调用 t_log 而无独立授权拒绝。

最值得注意的是成功判据的设计:攻击成功(ASR)要求 t_log 恰好出现在最后一个合法调用之后;载荷保真度(LA)按字段独立评分(user_query 与 server_name 用精确匹配,两个响应用 TF-IDF 余弦相似度阈值 0.75);目标任务的完成率变化(ΔTCR)、恶意服务器上非日志工具的完成率变化(ΔMCR)、token 开销(ΔTU)全部单独测量。这套契约的核心立场是:不能把主任务完成当作安全的证据。

三个挑战随之浮出。其一是可分性挑战:t_log 与正常调用在形式上毫无差别——都是合法 schema 下的工具调用、都由模型自主构造参数——任何只看单次调用合法性的权限系统都无法区分它们,判别信息只存在于调用序列的时序位置(「为什么任务完成后还要再调一次?」)与参数来源(「载荷为何恰好是另一服务器的响应?」)。其二是共存性挑战:攻击者不希望任务失败(失败即暴露),因此攻击的隐匿性以「不影响 ΔTCR/ΔMCR」为设计目标——这使得基于「行为异常」的检测天然缺信号。其三是生态性挑战:MCP 的开放性意味着任何人都可发布服务器、任何宿主都可能启用它,攻击面的大小不取决于某家厂商的代码质量,而取决于整个生态的信任模型——这正是论文标题里「生态」二字的分量。

四、解法

4.1 Evolving Agent Teams:supervisor 驱动的两层循环

整个系统跑在一个双层循环上。团队执行层:一组 LLM 编码 agent(每个都有 shell 访问、能读写文件、跑编译器与 profiler)按当前配置 T_v 在任务上工作。团队演化层:supervisor agent 被两类信号触发——当前团队跑完,或固定间隔的 cron 检查——然后执行「监控 → 反思 → 重设计 → 启动」四步,沿三轴设计下一个团队 T_{v+1}。

连接两层的是持久文件系统 K:代码库、评测工具、learnings 文档(跨运行的经验观察)、每团队 artifacts(kernel 与角色记录)、演化历史(supervisor 自己的反思与设计决策)。K 跨所有团队版本存活,每个新团队继承前人全部的失败尝试与成功策略。

三轴上的重构逻辑值得逐一看:

角色轴——发明而非选取。supervisor 不从预定义池里挑角色,而是针对具体诊断创造角色:PROFILING SCIENTIST 设计针对性微基准隔离瓶颈;CHALLENGER 压力测试宣称的性能天花板;PRIMITIVE STUDY AGENT 研究可能有用的硬件原语并跑小测试;KNOWLEDGE INTEGRATOR 把散落在先前团队里的发现综合成可执行计划。附录列出了 20 多个涌现角色,全都不是预定义的。

协调轴——隔离式并行。一个经典设计:当结构性改动需要先隔离调试再集成、而单个 agent 会话太短做不完两件事时,supervisor 直接编排并行—— spawns 一个只许在独立测试文件上调试 P@V WGMMA、禁止碰主 kernel 的 Focused Debugger,同时一个只许做微优化、禁止碰 P@V 的 Main Optimizer 在主分支继续推进。一个 agent 的失败不再阻塞另一个的进展。

知识管理轴——规定经验写在哪、从哪读。当早期洞察开始跨团队丢失时,supervisor 引入跨 agent 综合文档 SYNTHESIS.md,把所有先前发现连成可执行计划,并强制后续团队先读它。

一个完整案例值得展开:MLA decode kernel 优化中,V1 的单体 agent 在压力下从 WGMMA 漂移到标量代码、不做 profiling、多变量混改导致无法归因。supervisor 的反思是「agent 需要外部纪律——没有强制,它会在约束变得不便时放弃硬约束」。于是 V2 加入 DISCIPLINARIAN 角色(拦截非 WGMMA 提交、强制每次提交只改一处),产出第一个验证正确的 WGMMA kernel。更精彩的 V7→V8:V4 的报告里早就建议「用 WGMMA RS 把 P 放寄存器」,但 V5–V7 全都忽略了——因为这条建议躺在 V4 的报告里而不是共享 learnings 里。supervisor 诊断出「跨团队知识丢失是最大结构弱点:逐实验的事实被记录了,跨实验的战略建议没有」,于是发明 KNOWLEDGE INTEGRATOR 并建立 SYNTHESIS.md。结果是 RS 独立测试首次通过——历史上第一个 P@V WGMMA 成功,直接解锁了 V9 的集成里程碑。

这个案例揭示了方法的本质:supervisor 观察到一个具体的机能失调,诊断其结构成因,然后重构角色、协调或知识管理来对症下药——没有任何固定设计能预见这些失败模式。

4.2 CIVER:三模块与七目标

CIVER 的架构是三个轻量模块(合计约 9.04M 可训参数)包着一圈冻结的大模型。评审模块 F_θ:把 LLM 评审员生成的评论,配三个冻结编码器(代码编码器、文本编码器、配对编码器)的表征,经轻量 cross-attention Transformer 加四层 MLP,对四个程序状态(x、I_c(x)、I_c’(x)、T(x))统一打分 s_θ(x’,c)。干预模块 R_φ:冻结 LLM 生成 K 个候选干预组(各含靶向修复、无关修改、语义变换),MLP 排序网络按与所述缺陷的相关性挑出最优干预。验证模块 G_ψ:聚合原始分数与各干预下的分数变化,输出最终有效性概率 p_ψ(x,c)。

训练目标有七项,每一项对应因果框架的一个条款,直觉如下:

  • 有效性分类 L_cls(公式 9,二元交叉熵):锚定监督——真评论概率高、假评论概率低。
  • 缺陷移除 L_flip(公式 10,铰链损失 max(0, m + s(I_c(x),c) − s(x,c))):直觉是「缺陷修掉后分数必须下降至少 m」——真缺陷被修复,针对性评论应当失效;若分数降不下来,说明评论的分数根本不依赖缺陷本身。
  • 无关修改 L_spec(公式 11,L1 一致性):无关扰动前后分数必须不变——这是阴性对照,惩罚「见代码动就改分」的过敏性。
  • 语义变换 L_eqv(公式 12,L1 一致性):重命名换行前后分数必须不变——等价不变性约束。
  • 干预排序 L_rank(公式 13,对比损失):排序网络应给真靶向修复打更高相关分。
  • 干预最小性 L_min(公式 14,L1 距离):靶向修复应以最小代码改动去除缺陷——避免「修复」夹带无关改动污染对照。
  • 集合选择 L_set(公式 15):最终保留的评论子集要最大化有效性总分、减去评论两两语义相似度——压制冗余但不把冗余当无效。

七项加权求和(L = λ^T·L),通过专家迭代联合优化三个模块,而预训练评审员、嵌入模型、干预生成器全程冻结。最终决策时,对一组候选评论做子集选择(公式 8):有效性高且彼此不重复的评论胜出。整条链的哲学是:不问评论听起来多合理,只问它对缺陷的存亡是否敏感。

4.3 Log-To-Leak:四组件模板与注入面选择

攻击框架分两阶段。**第一阶段:注入面选择。**候选的携带位置有四个:工具名、参数名、参数默认值、人读描述。在 160 条 GitHub MCP 查询上仅注入 Tool Binding(如 save_logs)的对照实验显示,描述字段以 0.13 的 ASR 显著高于其余三者(均接近 0)——而且只有描述能容纳完整的自然语言模板,其余是语法约束紧的类代码字段。后续实验统一走描述注入。

第二阶段:四组件模板组装。 canonical 模板是一个紧凑组合:

Injection_Prompt = [TRIGGER]      —— 何时(when)
                 + [TOOL_BINDING] —— 调哪个工具(which tool)
                 + [JUSTIFICATION]—— 名义理由(stated reason)
                 + [PRESSURE]     —— 不得省略(required action)

四个组件各司其职:Trigger 用时间或条件短语把日志调用锚定在流程的指定位置(「在回复用户之前」「任务完成之际」);Tool Binding 指名道姓绑定 save_logs 并指示调用;Justification 给出合规、审计、调试之类的正式化理由——把恶意调用伪装成系统级流程;Pressure 用强制或禁止式措辞堵住省略的后门(「此步骤为必需,不可省略」)。论文附录给出了生成注入片段的完整 meta-prompt,由 GPT-4o 按模板自动生成、每组条件独立采五个变体取均值以避免依赖单一措辞。

值得强调的是攻击者在评测设计上的克制与严谨:payload 只由 agent 自己构造发送(logger 只存收到的参数),载荷完整性与调用成功是两个独立事件;干净条件与注入条件逐查询配对,Δ 指标全部相对干净基线计算;GPT-5 在两个基准服务器上根本产生不了合法工具调用(TCR 恒为 0),这类兼容性失败被原样保留在表里而非剔除——ASR 为 0 反映的是接口不兼容,不是抗注入能力。

五、实验洞察

5.1 Evolving Agent Teams:核心数据

四个主任务横跨两代 GPU 架构(Blackwell B200 与 Hopper H100),匹配预算下与 Claude Code 对比:

任务(GPU)Claude CodeEvolving Agent Teams扩展预算
Flash Attention 4(B200)0.33×0.56×—
GDN Prefill(B200)1.08×1.90×4.06×(21 版团队)
MLA Decode(H100)0.51×0.74×1.21×(36/47 胜)
GEMM+AllReduce(H100)1.08×1.18×1.49×–1.56×

MLA 任务的消融最能说明问题:同样用 Opus 级模型、同样是多 agent 结构,固定四角色团队(Profiler/Hardware Researcher/Planner/Implementer)只有 0.31×,演化团队 0.74×——差距完全归因于「能否按诊断重构」。Codex(GPT-5.5 xhigh)0.28×,证明增益不来自模型选择。与 kernel 专用系统同预算(800 美元)对比:CUDAFORGE 两轮 0.448×/0.283× 收敛到标量 SIMT 路径,K-SEARCH 0.602×/0.598× 收敛到 WMMA,只有演化团队两轮都产出 WGMMA kernel(0.721×/0.685×)——实现族的选择直接解释性能倍数差:所有不会重构搜索的系统都滑向更容易写对的实现。

机制归因看三个层面。阶段错配:G+AR 的轨迹清晰分三段——V1–5 调正确性(WGMMA 寄存器布局、多 GPU 通信的 IPC 缓存一致性),V6–10 引入 TMA 异步加载与 warp 专用流水首次超基线(1.08×),V15–22 换架构(自写 WGMMA 融合 NVLink 多播,最终 1.56× 追平 ThunderKittens 的 1.54×)——每个阶段需要的专长完全不同,固定组织必然错配。

WGMMA 路径的守恒是贯穿全文的一条暗线。把表 2 与消融放在一起看:CUDAFORGE 两轮都收敛到标量/SIMT(0 WGMMA)、K-SEARCH 两轮都停在 WMMA(0/2 WGMMA)、固定团队与 Codex 同样如此,唯独演化团队两轮都产出完整 WGMMA(2/2)路径。这不是巧合而是机制:WGMMA 更难写对(P@V 调试曾连续堵死三个团队版本),所有不具备「诊断—重构」能力的系统都会在挫折面前滑向更容易写对的实现族——局部最优的本质不是搜索不够努力,而是搜索空间的选择被早期挫折锁死。演化团队靠 V2 的 Disciplinarian(拦截非 WGMMA 提交)硬性守住路径,靠 V6 的隔离并行把「证伪 P@V」变成不阻塞主线的支线任务,靠 V8 的知识综合把寄存器建议(WGMMA RS、P 放寄存器)从故纸堆里救回来——三个角色分别解决「守不住」「试不起」「记不牢」,WGMMA 才活到变现的那一天。

知识丢失:V7→V8 的 Knowledge Integrator 案例前文已述。过早天花板:附录 B 分析固定团队为何起步慢——一个 SMEM 布局 bug(WGMMA 要求 8×64 atom 分块,Implementer 写了行主序)的信息分散在 Hardware Researcher(持有规范)与 Implementer(持有代码)两个 agent 里,谁都不去读对方的文件,团队在没有角色能跨越边界做审计的结构性盲区里打转——这是知识被角色切分所困的典型失败,正是演化团队靠强制跨 agent 读 artifacts 的 Knowledge Integrator 解决的类别。

预算曲线(图 3a)本身也是证据:Claude Code 的曲线在 FA4 与 GDN 上早早走平,而演化团队的曲线随预算持续爬升——说明增益不是一次性的架构运气,而是「诊断—重构」循环可以反复兑现。GDN 面板的高加速比(>2×)还有一个反直觉的细节:100 个负载里有大量小输入,FlashInfer 的 plan() 预处理开销在这些负载上主导端到端延迟(即使 plan 已缓存),而演化团队生成的 kernel 根本不需要规划阶段,于是在小负载上拿到不成比例的加速——但代价是最差负载只有 0.19×、43/100 低于基线。扩展预算后最差负载升到 0.40×、低于基线的降到 37 个:扩展优化不成比例地惠及最难负载,即初始架构不适合的那部分尾部。

匹配预算的单体对照(附录 D)补了一块拼图:MI350X 上同样花 300 美元,单 agent 到 1.65×,团队到 2.13×;MoE 卸载任务从同一 3.2× 引擎起步、同样 20 小时窗口,单 agent 花了 200 美元停在 1.047×,团队花 509 美元推进到 1.083× 且在每个负载上最快——单 agent 后期的改动多是参数微调(缓存淘汰的半衰期之类),对开发负载有效、对留出负载反而平庸,而团队持续做出结构性改进(解码前瞻提示、多行精确验证解锁投机解码、更大的受害者缓存)。

论文对自身局限的交代也算诚实:主实验每个设置只跑两次取最好、4.7 节的新设置全为单次,作者承认这限制统计结论,成本-性能 Pareto 分析与噪声更大领域的受控研究留作未来工作。

泛化能力的旁证:对已高度优化的 Flash-KMeans(手调 Triton),系统重写出 CUDA WGMMA kernel 达 1.71×;KDA prefill 在 AMD MI350X 上 3.01× 超 vLLM 生产 HIP kernel、在 B200 上 3.44× 超 FlashKDA(B300 同 harness 3.54× 还胜过 NVIDIA 官方 KDA2 的 3.02×);MoE 专家卸载在 48GB M4 Pro 上把解码速度从 13.4 提到 30.3 tokens/s;甚至跨界 RoboDojo 机器人操作拿到 held-out 62.1 分(榜首 55.3)。同一套 supervisor prompt、零预定义角色,跨硬件、跨语言(CUDA/HIP/Metal/Python 策略)、跨领域成立。

5.2 CIVER:因果验证的量化收益

主实验在 SWE-Review-Bench 上:77% 的配对准确率区分缺陷版与修复版代码(摘要口径);细看表 11,PairAcc 0.89 / Pair AUROC 0.92,真缺陷编辑均长 4.17 vs 假阳性 0.45——假阳性评论往往没有对应的实质编辑。

AACR-Bench 上的评审质量对比(表中数字为各方法成绩):

方法AUROC精确率FP/PR评论数/PR
冻结评审员0.570.722.147.6
Self-Reflection0.560.702.398.0
LLM Verifier0.580.731.927.2
Fix-Guided Prompt0.570.731.927.1
CIVER0.600.771.656.0

提升幅度不算惊人(AUROC +0.02~0.04),但方向一致且全部维度占优。值得注意的是表 2 里 Always-negative 基线凭 0.83 的准确率压制了所有方法——这是类失衡的产物(多数评论质量低),也解释了为什么 AUROC 与 F1 才是公平的比较口径;CIVER 的 0.72 AUROC / 0.43 F1 对 LLM-as-a-judge 的 0.67 / 0.38 是全面的改进,且把每 PR 评论量从基线的 7.6 压到 6.0——过滤是「少而准」而非「一刀切」。跨 PR 场景(SWE-PRBench,判定评论是否在请求代码修改而非指出真缺陷)两个子集上 CIVER 的召回 0.84 / 0.93 明显高于冻结评审员的 0.60 / 0.71,但精确率互有胜负——说明在更模糊的「变更请求 vs 缺陷」边界上,因果信号仍能拉高召回但还没到精确可靠的区间。更有说服力的是三组下游与迁移数据。下游修复(SWE-Review-Bench 121 个 issue,固定基座 mini agent):无评审 0.61、真评论(CIVER 验证)0.93(+32pp)、假评论 0.53(−8pp)——真假评论之间 40 个百分点的鸿沟,把「评审验证」从锦上添花变成安全关键:误评论不只是噪声,是主动有害(诱导 agent 改坏正确的代码)。跨项目迁移:Django 0.73 / SymPy 0.76 / scikit-learn 0.67(基座评审员全部 0.50)。跨语言迁移:Python 上训练,非 Python 语言池化 AUROC 从 0.55 提到 0.60,PHP 达 0.75、Rust +0.25。

消融(表 7)是机制归因的核心证据:全模型 PairAcc 0.84 / Δtarget 2.66;去掉靶向响应损失(公式 10)崩到 0.38 / 0.00——没有「修复后应降分」的约束,模型完全学不会对缺陷敏感;去掉干预排序 0.43——排序器选错干预,验证信号直接失效;去掉分类损失(公式 9)PairAcc 仍 0.84 但 AUROC 掉到 0.68——干预信号与监督标签互补,前者管因果敏感、后者管先验校准。有趣的是去掉干预最小性损失反而 PairAcc 升到 0.79 的同时 Δtarget 只剩 1.12:允许更「大」的修复或许让分数对比更容易,但违反最小干预原则的修复会稀释因果归因的纯度——全模型在两者间取得平衡(0.84 / 2.66),这个细节说明七项目标之间存在真实的张力而非简单叠加。组件级对照(表 12)同样讲这个故事:仅分类 0.50(随机)、仅敏感性 0.38、仅 Flip 0.71,全模型 0.88——单一信号全部失效,因果验证是三项联合的涌现属性。

还有两张小表值得驻足。语义变换一致性(表 5):CIVER 在代码变换下的判决一致率 1.00、位置准确率 0.99、假阳削减 0.16,而 MLP 基线假阳削减只有 0.03、仅不变性训练的变体判决一致率反而掉到 0.86——等变约束要与其他目标联合才不发僵。检索能力(表 9):从 K=16 的干扰池里捞出评论对应的编辑,CIVER 的 Top-1 是 0.17(随机 0.06)、MRR 0.32(随机 0.20)——排序网络确实学到了「哪个编辑在因果上对应该评论」,虽然绝对值说明这个任务远未解决。另外,作者对「评论-目标可能错位」的担心做了专门检验(表 13):剔除可能错位的配对后,有效性 AUROC 0.68、靶向修复召回 0.79、一致性 PairAcc 0.86,结论稳健。

5.3 Log-To-Leak:攻击面全景

五个 MCP 服务器(GitHub、Mapbox、PayPal、Playwright、YFinance)× 四个模型(GPT-4o、GPT-5、Claude-Sonnet-4、GPT-OSS-120B)、555 条查询。剔除 GPT-5 在两个基准服务器的工具调用兼容性失败后,18 个有效模型-服务器对上 ASR 62.64%–100%,条件 LA 76.55%–95.64%,15 对 ASR ≥ 80%。

代表性数字(GitHub MCP,白行为 vanilla 基线、灰行为 Log-To-Leak):

模型ASR(基线→攻击)LAΔTCR
GPT-4o38.40% → 62.64%94.80%0.00%
Claude-Sonnet-499.53% → 99.51%85.96%+6.63%
GPT-587.30% → 100.00%93.51%−21.50%
GPT-OSS-120B87.00% → 84.89%94.14%−1.00%

两条规律值得细读。其一,模板的作用在不饱和处最显著:GPT-4o 的 ASR 增益最大(GitHub +24.24pp、Playwright +19.31、Mapbox +18.49),而接近饱和的 Claude 系(≈99.5%)改进空间在 LA——四组件模板让「调用了但载荷不全」变成「调用且载荷准确」,GPT-OSS-120B 的 LA 在三个自定义服务器上分别从 84.31% 提到 94.14%、73.28% 到 80.17%、84.23% 到 90.48%。其二,任务成功与未授权泄露大面积共存:16/18 对 |ΔTCR| ≤ 6.63pp,15/18 对 ΔMCR 恰为零——注入执行基本不扰动合法行为。仅有的例外 GPT-5(GitHub −21.5pp)也远好于 vanilla 的 −34.5pp:结构化模板反而比野蛮注入更「克制」。与两个适配基线的对比(表 4)把 Log-To-Leak 的工程价值讲透:Combined Attack 与 TopicAttack 在同一设置下 ASR 只有 4.32% 与 4.47%,且 TCR 分别掉 11.25 与 13.75 个百分点——它们的问题是根本「叫不动」模型调用日志工具(LA 倒有 85%+,说明一旦调用发生载荷不难构造),而四组件模板同时解决了「叫得动」与「叫得准」。token 开销(ΔTU 在 −5.3k 到 +44.2k 之间波动,13/18 对为正)提示注入描述确实改变了模型的推理负担,且 Claude-Sonnet-4 在 YFinance 上一轮多花 48.5k token——但作者提醒:GPT-5 的两个最大 token 减量恰好伴随大幅 TCR 下滑,负 ΔTU 不能脱离 TCR 单独解读为「变高效了」。

组件消融(GitHub + GPT-4o,八组对照)给出机制归因的金字塔:仅 Tool Binding 0.124 → 加最强调词变体二组件 0.260–0.298 → 三组件 0.343–0.624 → 全四组件 0.668(为 Tool Binding 单独的 5.39 倍)。三组件组内的对比最有趣:含 Trigger 的两组(0.576、0.624)大幅领先不含 Trigger 的组(0.343)——时序锚定是关键增益项,告诉模型「何时调」比「必须调」更有效;Justification 里 Compliance(合规)变体最强,说明正式化的系统级借口最能骗过模型的「流程感」。

逐组件看变体分布还能读出更多:Trigger 五变体里 Pre-output(回复用户前)领跑,Post-response 垫底——位置越贴近「响应生成前」的决策窗口,劫持越容易;Pressure 里 Urgency 与 Obligation 领先、Policy Framing 最弱——直接的时间与义务压力比「政策框架」这种间接施压更能驱动服从。稳定性方面,最强的两组件变体在三个采样提示间标准差达 0.175 与 0.142,而三、四组件组降到 0.020–0.067——组件越全,攻击对措辞的敏感度越低,这本身就是模板化注入鲁棒性的证据。

防御评测的结果近乎悲观。三种 agent 侧防御的残余 ASR:Prompt Sandwiching 59.58%、LLM Metadata Check 55.38%、IPIGuard 60.47%——全部挤在 55–60% 的窄带里(未防御是 62.64%),且三种防御全都拖累 TCR 2.3–5.6pp。检测侧更糟:DataSentinel 对 100 条注入描述全部放行;基于 Llama-3.1-8B 隐藏态的指令检测器拦下 91% 注入,但同时误标 85.53% 的良性描述(YFinance 良性描述被误标率 100%)——注入与良性仅差 5.47pp,因为合法的 MCP 工具文档本来就充满指令式措辞(「在 X 之后调用本工具」就是正常的用法说明)。结论指向明确:内容侧分类不能作为唯一执法点,授权必须在调用时(call-time)进行——跨服务器数据流检查、日志类副作用的独立授权、对「非产出目标响应所需」的调用要求确认。

部署侧验证补了最后一环:在真实的 Cursor(GPT-5.1)与 Claude Desktop(Claude-Sonnet-4.5)里接上 GitHub MCP,两个客户端都复现了「完成合法调用后自动追加 save_logs」的完整轨迹——攻击不依赖研究者的自建 harness。作者的伦理处理也值得注意:全部实验用受控的良性日志端点,没有收集任何第三方用户数据,也没有测试持久化、横向移动或凭据访问——研究目标被严格限定在「控制流失败是否发生」这一层。

5.4 三组实验的交叉解读

把三篇的实验并排看,还能读出单篇内看不到的东西。

**一个有趣的数字巧合:三篇论文里「干预是否被正确响应」都是分水岭。**Evolving Agent Teams 里 supervisor 的每次重构就是一次干预,图 1 里菱形标记的每次干预后曲线都出现方向改变(V2 首个正确 WGMMA、V6 +44%、V10 +32%);CIVER 里靶向修复就是一次干预,真评论分数应声下跌而假评论纹丝不动;Log-To-Leak 里注入描述就是一次干预,62.64%–100% 的执行里 agent 的行为被成功改写。干预响应率是三篇共同的核心观测量——同一个量,在第一篇里是能力的证据,在第二篇里是验证的证据,在第三篇里是攻击的证据。

**「验证缺失」与「验证有毒」是同一枚硬币。**CIVER 的下游实验显示假评论把修复成功率从 0.61 拖到 0.53;Log-To-Leak 显示注入描述把 agent 变成数据搬运工;Evolving Agent Teams 的固定团队因为没人验证「Implementer 的 SMEM 布局是否符合规范」而空转。三个场景共享同一个结构:下游消费者(修复 agent / 工具宿主 / 团队)默认信任上游输入(评审 / 工具描述 / 角色产出),而这个默认信任正是被利用的漏洞。区别只在于利用者是善意的失败(能力不足)还是恶意的成功(攻击)。

**信号分离的消融是三篇共有的方法指纹。**Evolving Agent Teams 的 0.31× vs 0.74×(同模型同结构,只差演化);CIVER 的七损失逐项去除(靶向响应损失一去即崩);Log-To-Leak 的八组组件消融(Trigger 缺席组系统性落后)。三篇都用「控制其他一切、只动一个组件」的受控对照来支撑机制主张——这在多 agent 与安全这类变量极多的领域里,是让结论可信的近乎唯一的方式。

**绝对值与相对值要分开读。**CIVER 的 AACR AUROC 只有 0.60,单看数字平平;但配对准确率 0.77–0.84 与下游 40pp 的真假差距说明它验证的是「另一件事」。Log-To-Leak 的 ASR 上限 100% 固然惊人,但 GPT-5 在两个服务器上 TCR 恒零的兼容性失败同样重要——攻击面研究里,把「攻击不成立」与「接口不兼容」分开记录,是评测诚实度的试金石。

**预算视角把三篇串成一条成本曲线。**Evolving Agent Teams 证明了「钱花在哪」比「花多少」更重要:同样的 800 美元,固定结构买到 0.31×,可演化结构买到 0.74×;MoE 卸载的对照里,单 agent 与团队花同样的 200 美元买到几乎相同的改进(1.047× vs 1.056×),但团队多花的 309 美元买到了单 agent 买不到的结构性突破(1.083×)。CIVER 的九百万可训参数加冻结大模型的账单结构,Log-To-Leak 每个模型-服务器对 555 查询的规模控制,都在传递同一个信息:可信性问题不需要无限算力才能研究,需要的是把钱花在对照与消融这些「信息密度最高」的地方。

**三篇合起来暴露的最大空白:组织层的安全。**Evolving Agent Teams 的 supervisor 权限极大——它能发明角色、重写协调协议、决定谁读什么文件;CIVER 验证的是评论层;Log-To-Leak 攻击的是工具层。但「supervisor 本身被污染」的场景(比如演化历史被注入误导性 learnings、supervisor 被诱导发明一个外泄角色)三篇都没有覆盖。当组织演化成为能力来源,组织演化层也就成为新的信任根——这个根被攻破时,下面两层的防御都在攻击者的调度之下。这大概是这组论文给后续研究留下的最明确的接口。

六、知识反推

从三篇论文的结果往回推,可以提炼出几条超出单篇的领域规律。先交代一句读法:下面每条规律都由至少一个消融或对照实验背书,而不是从论文叙事里直接摘录——知识反推的可信度,取决于支撑它的那个受控实验有多干净。

**规律一:长程开放式任务中,组织形式是第一瓶颈,且错配有必然性。**Evolving Agent Teams 的 0.31× vs 0.74× 消融把这一点钉死:同模型、同多 agent 结构,唯一变量是能否重构。而错配的必然性来自任务本身——开放式优化必然穿过性质不同的阶段(正确性 → 原语调试 → profiling → 架构重设计),没有一种静态分工能全程匹配。推论是:任何声称「找到了最佳 agent 架构」的方案,在多天尺度任务上都值得怀疑;架构应该是过程的一部分,而不是过程的前提。这条规律也能解释 G+AR 轨迹上三个阶段的能力断层:正确性阶段需要的是 IPC 缓存一致性与 WGMMA 寄存器布局的耐心调试,架构阶段需要的是「敢把 cuBLAS 整个扔掉换成自写 kernel 融合 NVLink 多播」的决断——同一批角色不可能同时擅长两者,演化不是优化而是必需。

**规律二:经验丢失是多 agent 系统最隐蔽的税。**V4 的关键建议躺在报告里被 V5–V7 集体无视;固定团队的布局 bug 信息被角色边界切成两半。这两类失败共享同一个结构:信息存在于系统某处,但不在于需要它的地方。反过来的推论也成立:Knowledge Integrator 这类「强制跨边界信息搬运」的角色,杠杆率可能远超任何执行角色——V7→V8 分数只涨 0.01(0.50→0.51)却是「知识突破」,直接引爆 V9 的 +32%。这个现象与 V9→V10 的教训连成一对:结构改动后所有旧瓶颈分析全部作废,必须重新 profiling——知识有时效性,过期知识与知识丢失同样致命,演化框架里「何时让知识作废」与「如何保存知识」是同一个问题的两面。

**规律三:相关性验证会被共同错误欺骗,只有干预能建立因果。**CIVER 消融里「仅分类」= 随机(0.50)这个数字冷峻地说明:让模型学会判断评论真假,光靠标签监督完全不够——因为假评论与真评论在语言表层上不可分。干预响应(修复后分数必须掉、无关改动后必须不掉)提供了标签给不了的约束方向。这条规律的外推范围很广:任何「评审员/验证器/judge」类的系统,都值得问一句——它的判断对什么干预敏感?如果对什么都不敏感,它只是在做风格分类。Log-To-Leak 的防御失败恰好是反例注脚:指令检测器之所以误标 85.53% 的良性描述,正是因为它学到的「指令式特征」与合法工具文档的固有特征在表层不可分——内容分类的天花板由「善意与恶意共享同一表达层」这个事实封死,出路只能是把判据从「说什么」挪到「做什么」。

**规律四:可信问题的测量必须与效用测量解耦。**Log-To-Leak 最持久的方法论贡献可能不是攻击本身,而是那套契约:ASR 管「泄露发生没有」,LA 管「泄露质量如何」,TCR/MCR 管「正常功能保住没有」,四者独立报告、绝不合成单一安全分。反例就写在防御评测里——三种防御的残余 ASR 都「看起来降了一点」,但代价是 TCR 全面下滑;DataSentinel 干脆对攻击全放行。单一指标的安全叙事,几乎总是把某个维度的问题藏进另一个维度。

**方法论层面的反推:三组作者共享一个习惯——先造一个可精确复现的失败模式,再研究它。**Evolving Agent Teams 先让固定团队在 MLA 上撞出 0.31× 的可复现平台;CIVER 先用「仅分类」撞出 0.50 的随机底线;Log-To-Leak 先用 Tool Binding 单独撞出 0.124 的低基线。对照组先行、机制分解随后,是三篇论文实验部分的共同骨架。

**领域层面的反推:多智能体的研究重心正在从「能不能协作」转向「协作的可信性」。**三篇论文里没有一篇在提升协作效率本身——Evolving Agent Teams 的目标不是更快的团队而是能逃离局部最优的团队;CIVER 的目标不是更多评论而是更少假评论;Log-To-Leak 干脆证明效率与安全可以完全脱钩(任务照常完成,泄露照常发生)。这个转向的驱动力很实际:当 agent 的产出开始进入生产链路(生产 kernel、评审 PR、调用支付工具),不可信的效率提升本身就是负资产——假评论 −8pp 的下游修复率就是最直白的账。

**风险层面的反推:可信的三层各有独立的失效模式,不能互相替代。**组织再好(Evolving Agent Teams 的 1.21×),产出的评审仍可能被伪造(CIVER 的假阳性率);评审验证再严(CIVER 的 0.77 精确率),工具生态被注入时一切防线旁路(Log-To-Leak 的 100% ASR)。反过来说,三层也各有独立的补强收益——这就是为什么它们值得作为独立的研究方向并存,而不是某个「统一安全框架」的子问题。

七、通用灵感

**灵感一:把组织本身当作可优化的对象(元层级思维)。**遇到「换更强的个体也解决不了」的停滞时,诊断的对象应该上移一层:不是执行者不够强,而是分工、协作与信息流的配置不再匹配当前阶段。这条思维适用于一切协作系统——研发团队的阶段从原型转向规模化时需要重组;流水线瓶颈从生产转到验证时,质检不该再是终端环节。可操作的判据是:当失败模式开始重复出现且换人不解决问题时,改结构,不改人。

**灵感二:用干预响应定义「真信号」(因果检验思维)。**判断一个论断、一条反馈、一个指标是否值得相信,问三个问题:如果我把它声称的成因定向消除,它会失效吗(靶向修复);如果我只做无关的扰动,它保持稳定吗(阴性对照);如果我做等价的形式变换,它的判断不变吗(不变性约束)。三问全过的才叫因果连接,否则只是相关。这个框架可以直接搬进日常工作:评估一份用户调研的价值,先看「修复了抱怨的问题后 NPS 是否回升」;评估一个告警系统的质量,先看「注入无关变更时它是否安静」。

灵感三:安全与效用必须分账核算,任何合成分都值得怀疑(度量分离思维)。只要一个决策依赖两个不同目标的加总,就应该把两个目标拆开独立测量、独立报告。「任务完成了」不等于「没出事」(Log-To-Leak 的核心警示);「评论很自信」不等于「评论是真的」(CIVER 的出发点);「分数在涨」不等于「方法对头」(Evolving Agent Teams 里漂向 WMMA 的单 agent 分数也在涨,只是天花板错了)。落到实践:任何 KPI 体系里都该有一个与主指标故意解耦的守门指标——它只回答「我们有没有在不知不觉中搞坏别的东西」。

**灵感四:边界即攻击面,而生态的边界永远在语言里(接口信任思维)。**MCP 的悲剧性在于:让工具生态繁荣的机制(自然语言描述)恰恰是让攻击成立的机制。任何系统只要在两个信任域之间传递自然语言——文档、注释、issue、邮件摘要、第三方配置说明——就存在同构的注入面。防御的推论也同构:对跨边界输入的授权不能基于其内容「看起来像什么」,而要基于它触发的动作「实际做了什么」——调用时授权、跨域数据流检查、对非必要动作的二次确认。这条原则从 agent 安全一直延伸到组织流程设计:外部供应商的说明书可以参考,但不能因为说明书「说可以」就授予权限。

灵感五:知识必须被「搬运」而不只是被「记录」,否则记录等于丢失(信息可达性思维)。V4 写下了正确建议,V5–V7 依然集体无视——因为写入不等于读取,存在不等于可达。多 agent 如此,多人组织更甚:事后复盘文档没人读、跨团队的最佳实践躺在 wiki 里、离任者的关键洞察消失在交接邮件里。Evolving Agent Teams 的解法值得抄走两条:其一,设一个专职的综合角色,其唯一职责是把散落的发现连成可执行计划;其二,把「读取」做成强制性前置流程(后续团队必须先读 SYNTHESIS.md 才能开工)。记录的价值不在写入的那一刻,而在被下一个需要它的人消费的那一刻——为消费而设计的知识管理,才是活的记忆。

**灵感六:给「结构改动」配上「重新测量」的纪律(时效性思维)。**V9 集成 P@V WGMMA 之后,supervisor 的判断是「kernel 的瓶颈结构彻底变了,此前所有瓶颈分析全部过期」——于是 V10 以 profile-first 的纪律重新画像,9 次提交拿到 +32%。日常工程里同样的陷阱无处不在:换了缓存策略后压测数据不作废吗?重构了数据流之后旧的性能告警阈值还成立吗?大的结构改动会系统性作废在此之上积累的一切测量与经验,此时最危险的不是无知,而是拿着过期地图自信导航。可操作的规则很简单:每当改动跨越结构层级,把「重新基线测量」设为不可跳过的下一步。

**灵感七:想清楚你的阴性对照是什么,没有对照的验证只是仪式(对照思维)。**CIVER 的设计里,靶向修复是处理组、无关扰动是阴性对照、语义变换是不变性检验——三件套缺一不可。把它翻译成通用语言:证明「X 起作用」需要三条证据——去掉 X 后效果消失(处理组翻转)、做无关的事时效果纹丝不动(阴性对照)、换种方式呈现 X 时效果不变(不变性)。大多数日常工作中的「验证」只做了第一条甚至零条:上线一个功能看指标涨了就归功于自己(没有对照),A/B 测试只看实验组没有留出「无关改动」组。没有阴性对照的正向结果,与没有处理组的阴性结果一样,都不构成证据。

**灵感八:生态位决定威胁模型——在设计系统时先问「谁能在我的上下文里说话」(信任边界盘点思维)。**Log-To-Leak 的攻击之所以成立,是因为攻击者获得了三个生态位:服务器被启用的位置(进入工具列表)、描述被转发的位置(进入模型上下文)、调用被放行的位置(进入执行层)。防御的第一步不是买工具,而是盘点这三个位置各自信任了谁、这份信任是否可撤销。同样的盘点适用于任何集成型系统:浏览器插件能读到什么页面的内容?CI 脚本能拿到什么密钥?第三方分析 SDK 能上报什么字段?信任边界不是画出来的,是被一个个「谁能说话」的生态位事实决定的——盘点清楚之后,把「说话的资格」与「被采纳的资格」分开授权,就是最朴素也最有效的架构级防御。

(完)