REllm-driven-re

PILLAR 02 · AGENT ORCHESTRATION

工作编排:以假设拓展探索,以证据裁定结论

swarm 不是把任务丢给一群 agent 各干各的——它是套在 Phase 0-4 主循环外的编排壳: 假设分支有界探索、编号证据持久化、独立评审放行结论,Coordinator 状态全程落盘可无损重启。

ARCHITECTURE

Coordinator · Investigator · Reviewer

swarm 模式不是 Phase 0-4 的替代品,而是套在它外面的编排壳:每个分支内部仍然走 Phase 0 定位 → Phase 1 静态 → Phase 2 动态 → Phase 3 验证 → Phase 4 沉淀的主循环; swarm 层只负责「把哪些候选机制并行查、用证据裁定谁对谁错、结论过独立评审后才算数」。

图表加载中…
点击放大 · 滚轮缩放 · 拖拽
图 1 · swarm 总览:Coordinator 拆解假设派发分支,分支以编号证据协同,候选结论过独立 Reviewer 后收敛
机制 1

有界探索

围绕不同假设开独立分支,分支间互不污染;每个分支内部仍完整走 Phase 0-4 主循环。
机制 2

证据持久化

分支间只通过编号证据协同,已证伪路径显式登记,后续分支不重复试错。
机制 3

动态假设裁决

Coordinator 基于不断演化的证据状态,裁决假设树并决定下一轮把预算投到哪里。
机制 4

对抗式评审

结论不是分支说了算——必须过独立拉起的 Reviewer 对抗挑战,放行后才生效。

ROLE PROTOCOL

三个角色,三条硬边界

Coordinator 由主 agent 自己担任;Investigator 与 Reviewer 由 Coordinator 用 task 工具按需动态拉起,不预定义 agent 配置文件。每个角色都有一条不可违反的硬边界。

角色职责关键硬约束
Coordinator主 agent · 唯一
提出与拆分假设、维护假设树与证据库、派发分支、裁决假设状态、判断收敛、做统一审计与整体测试; 证据库是唯一权威来源,对话只是缓存。
反循环论证:goal 不得作为任何假设的支撑证据;
规划无兜底——证据不足时承认空转、可见地失败,不硬编宽泛派发填充进度;
统一审计不下放给任何 subagent。
Investigator按分支动态拉起
在有界 context 内把单个假设推进为「证实 / 证伪 / 新证据」三者之一,分支内自主完成 Phase 0-3 局部分析与局部验证,回传 supported / refuted / inconclusive / blocked。
任务小、职责单一:单次只判定一个问题,预期 ≤ 30 次工具调用、≤ 15 分钟;
只回传结构化证据,不回传过程流水账;
无权宣布结论「已验证」;每条有效发现立即增量落盘 evidence.md。
Reviewer独立拉起
对分支提交的候选结论做对抗式评审:挑战「可复现吗」「真的回答了原问题吗」,抽查复现 ground truth 样本,输出 approve / reject + 逐项理由与补救建议。
不得由产生该结论的 Investigator 上下文延续而来,不继承分支对话历史,只看简报、证据库与可复现产物;
6 项对抗检查清单(可复现性、验证强度、标签诚实、回答原问题、替代解释、边界一致)任一不过即 reject。

HYPOTHESIS LIFECYCLE

假设的一生:可验证、可证伪、可翻案

假设树登记在 hypotheses.yaml 中,status 字段是状态机唯一权威来源。假设的对象是「目标工作机制的候选结论」(语义层),保护类型(CFF / MBA / VMP)不构成假设、不影响分支划分。

图表加载中…
点击放大 · 滚轮缩放 · 拖拽
图 2 · 假设状态机:open / verified / refuted / superseded 四态及合法转换(hypotheses.yaml 的 status 字段)
refuted 的假设与证据永久保留——后续分支派活前,Coordinator 必须把相关 refuted-path 条目列进简报,让已排除的路径继续避坑。
verified 不是终态保险柜:统一审计发现端到端复现失败时,假设重新打开(回 open)并登记审计证据——翻案是合法转换。

EVIDENCE PROTOCOL

协同只认编号证据,不认对话记忆

evidence.md 是追加式日志,只增不改;编号 E<n> 全局单调递增、永不复用。简报、评审报告、假设树之间的证据引用一律用编号(「E7 显示……」),不允许贴大段原文。

analysis/swarm/
├── hypotheses.yaml   # 假设树(状态机唯一权威来源)
├── evidence.md       # 追加式编号证据日志(只增不改,E<n> 全局单调递增)
└── ground-truth/     # 全分支共用的输入→输出配对样本
规则 1

已证伪路径必须登记(type: refuted-path,claim 写清「试过什么、为什么排除」),下轮派发简报必列,避免重复试错。

规则 2

写入前去重:归一化比对 claim 后语义相同则不新增条目,在原条目追加 corroborated_by 分支号——独立佐证提高可信度。

规则 3

标签诚实:沿用 Phase 3 三级标签,未对拍的观察最高只能标「已验证推断」;不放行的证据不能作为 verified 假设的支撑。

analysis/swarm/evidence.md · 单条证据 schema(E7 示例)
## E7
- hypothesis: H1
- branch: H1
- type: observation        # observation | reproduction | refuted-path | audit
- claim: "sub_1A3F0 的 0x20 字节常量与样本 S3 的 HMAC 密钥逐字节一致"
- method: "Frida hook sub_1A3F0 取第 2 参数,与 ground-truth/S3.json 对拍"
- samples: [ground-truth/S3.json]
- label: 已验证            # 已验证 | 已验证推断 | 推测
- review: approved-by-R2
- date: 2026-07-29

DELIVERABLE CONTRACT

「基本搞清楚了」不算交付

简报的 deliverable 字段不是自由文本承诺。按任务类型对照下表,缺任一项即视为未交付——「发现了 AES」「基本搞清楚了」「找到了相关函数」只算过程自述。任务覆盖多行时取并集。

任务类型最少交付物(缺一不可)
定位(找到目标函数)函数地址 + 入口到目标的完整调用链 + 别名登记(IDB 重命名或符号注册表)
算法还原伪代码或等价结构化描述 + 参数语义表(每个输入的来源与含义)+ 关键常量在二进制中的地址
动态证据(hook / trace)hook 脚本路径 + 未裁剪的原始输出 + 与静态结论的对应关系(哪个输出证明了哪个 claim)
对拍验证复现脚本路径 + 全量样本逐条对拍结果(不允许只贴一条成功的)
最终结论(回答 goal)上述相关项的组合 + Phase 4 离线复现脚本 + goal 验收条件逐条达成说明
给分析过程设可交付物,而不是让流畅的文字伪装成进度——中间步骤有了明确交付物,Coordinator 才能判断一条分支是真在推进,还是在原地输出。

HUMAN IN THE LOOP

中途纠偏是 Hint,不是推倒重来

用户在 swarm 运行中途的任何输入(纠偏、补充线索、否决候选)都是 Hint。Hint 的价值在于把「错误候选」转译成下一轮可执行的约束;推倒重来会丢掉已落盘的证据与已排除的路径,是对 Hint 最贵的响应方式。

STEP 1

① 登记为证据

把 Hint 内容登记为一条 observation 证据,method 注明 human-hint,branch 填 coordinator。 Hint 是用户判断而非工具输出,默认标签「推测」;仅当携带可对拍的硬材料(抓包样本、真机验证结果)时按证据强度升级。
type: observation · method: human-hint · branch: coordinator
STEP 2

② 派发 follow-up

从 Hint 生成下一轮派发:优先改写受影响假设的简报,附上 Hint 编号与它指向 / 否定的证据编号; 只有 Hint 引入现有假设树容纳不下的全新方向时,才开新假设分支。
禁止清空或重建假设树
STEP 3

③ 从错误处继续

Hint 若否决了候选结论:相关证据 review 改 rejected、所属假设回 open,新一轮简报必须写明失败原因与 Hint 约束(例:「候选必须沿完整校验链验证」),而不是原样重跑同一个问题。
失败原因写进下一轮约束,不原样重跑

ANTI-PATTERNS

协议里写死的 23 条反模式,审计逐项排查

以下行为均为协议违规,Coordinator 统一审计时逐项排查。这里摘出 8 条最容易犯的代表。

反模式 01

分支间传递对话历史

把 A 分支的过程记录塞给 B 分支 = 污染。协同只通过编号证据进行。
反模式 03

Investigator 自己宣布已验证

绕过 Reviewer 直接给结论打 [已验证] 标签,候选结论必须过独立评审。
反模式 04

保护类型当假设

开「这是 CFF 还是 VMP」的分支。保护类型只是分支内的障碍,不是假设。
反模式 05

证伪路径不登记

试错了不留 refuted-path 条目,下一个分支重复踩同样的坑。
反模式 08

Reviewer 不独立

由产生结论的同一上下文「顺手自查」代替独立评审,对抗性归零。
反模式 09

静默超支

分支轮次/预算耗尽后不停叫、不登记,继续烧预算不回传。
反模式 13

证据攒批回传

发现攒到任务结束才落盘 evidence.md,中途被叫停则证据全丢。
反模式 20

无租约操作真机

绕过 runner / lease.sh 直连设备,多分支互踩与 hook 语义投毒的根源。

完整清单(共 23 条)见 references/orchestration/agent-swarm.md