第 3 章 · 02 多代理编排 本节摘要:Strix 的 root agent 不是「一个全能代理自己干所有事」,而是一个编排层——它把目标拆成可并行的任务,按漏洞类/资产派生专门的专家子代理,自己只做调度、汇总、收尾,绝不亲自碰目标。这种「分工 + 并行 + 共享发现」的结构,让 Strix 能像真实渗透团队一样系统化覆盖复杂目标。本节讲清 root agent 的角色边界(它从不亲自跑扫描器/爬虫/fuzzer)、四步作用域分解、四类专家代理的分工架构、五条协调原则,以及最终如何把各代理发现去重聚合成报告。 内容来源:原项目文档 ,汉化并套用体系化模板。 ⚠️ 仅限授权测试:编排的所有代理仅在授权范围内活动;root agent 在派生前必须先确认边界。
本节摘要:Strix 的 root agent 不是「一个全能代理自己干所有事」,而是一个编排层——它把目标拆成可并行的任务,按漏洞类/资产派生专门的专家子代理,自己只做调度、汇总、收尾,绝不亲自碰目标。这种「分工 + 并行 + 共享发现」的结构,让 Strix 能像真实渗透团队一样系统化覆盖复杂目标。本节讲清 root agent 的角色边界(它从不亲自跑扫描器/爬虫/fuzzer)、四步作用域分解、四类专家代理的分工架构、五条协调原则,以及最终如何把各代理发现去重聚合成报告。
内容来源:原项目文档
strix/skills/coordination/root_agent.md,汉化并套用体系化模板。
⚠️ 仅限授权测试:编排的所有代理仅在授权范围内活动;root agent 在派生前必须先确认边界。
阅读完本节,你应当能够:
root agent 是 Strix 的编排层(orchestration layer)。它的唯一职责是协调专家子代理完成安全评估,但自己不直接做任何测试。原文有一条非常硬的边界:
你从不运行扫描器、爬虫或 fuzzer,也从不自己发送 exploit / 注入 payload——哪怕是对一个已发现端点做一次「快速基础测试」都不行。任何触碰目标的工作都委托给子代理。
这条边界的设计意图是专注与可控:
而且代理可以在整个测试过程中动态创建,不限于开头——随着新发现出现、范围演变,root agent 随时派生新的专家代理处理。
⚠️ 记住这条红线:root agent 永远不亲自发 payload。哪怕看起来「就试一下」,也要派一个子代理去做。这条纪律保证了编排层和执行层的清晰分离。
派生代理之前,root agent 先对目标做作用域分解。注意:它做分解的依据是扫描配置/作用域、提供的上下文,以及(侦察子代理上报后的)侦察结果——不是自己跑侦察工具。
作用域分解四步 ┌─────────────────────────────────────────────┐ │ 1. 识别攻击面 web 应用 / API / 基础设施 ... │ │ 2. 划定边界 范围内域名、IP 段、排除资产 │ │ 3. 确定方法 黑盒 / 灰盒 / 白盒 │ │ 4. 按风险排序 关键资产与高价值目标优先 │ └─────────────────────────────────────────────┘
四步的要点:
💡 黑盒 vs 白盒的派生差异:黑盒下,侦察与资产发现子代理是主力;白盒下,源码分析与静态分诊子代理先上,动态验证随后。白盒的专门协调策略见下一节「source-aware 白盒协调」。
root agent 按功能把代理分成四层。每一层有明确职责,层与层之间通过发现(findings)传递工作:
💡 分层的意义:每一层的输出是下一层的输入。侦察层产出「目标清单」喂给漏洞评估;漏洞评估的「疑似漏洞」喂给利用与验证层证实;证实的漏洞交报告层落档。这种流水线让每个代理专注于自己的领域,就像真实渗透团队里有人专攻侦察、有人专攻 Web、有人专攻认证。
root agent 怎么把代理管好?靠五条协调原则:
派生依赖最小的代理。能并行的绝不串行——并行执行比顺序执行快得多。设计任务时,优先把它们拆成互不阻塞的独立单元。
每个代理都该有一个具体、可衡量的目标。模糊的目标会导致范围蔓延(scope creep)和重复劳动。「测这个 API 的注入」是模糊的;「测 /api/users/<id> 的 id 参数是否存在 SQL 注入,用 sqlmap 验证,产出 PoC」是清晰的。
派生前先做三件事:
⚠️ 重复是最大的浪费:两个代理测同一个端点的同一个漏洞,既烧预算又烧轮次。root agent 在派生前必须核对「这件事有没有人已经在做」。
复杂发现值得派专门的子代理接力:
code_locations / fix_pr_body 字段携带补丁,不要再单独加一个「修复代理」去重新推导同一份补丁。💡 修复内联,不另起代理:报告代理本身就携带修复(
code_locations/fix_pr_body)。另立一个「修复代理」会重复推导同一份补丁,纯属浪费。
代理不是一次性全派好。随着测试推进、新发现出现、范围演变,root agent 随时派生新代理。比如:
当所有代理上报完成,root agent 执行四步收尾:
finish 工具产出最终报告。所有代理完成 │ ▼ ┌──────────────────────────────────┐ │ 1. 收集 + 去重发现 │ │ 2. 评估整体安全态势 │ │ 3. 编写执行摘要 + 优先级建议 │ │ 4. 调用 finish 产出最终报告 │ └──────────────────────────────────┘
单一代理在面对复杂目标时会撞上几堵墙:
多代理架构逐一化解:按漏洞类/资产切分,每个代理上下文聚焦、专注单一领域;并行执行缩短总时长;预算与轮次按代理分配(--max-budget 跨所有代理累计,--max-turns 按代理计,见第 2 章 CLI 参考)。这就是为什么 Strix 的多代理不是「锦上添花」,而是处理复杂目标的必要结构。
💡 成本控制的配合:
--max-budget跨根代理与所有子代理累计计算,无头模式下子代理在 90% 预算处停止、留最后一段给根代理收尾。这套机制和本节的编排原则是配套的——分工越细,越需要全局预算闸门。
finish 产出报告。下一节,我们看有源码时这套编排怎么升级——source-aware 白盒协调用静态分诊排优先级、动态验证坐实,让白盒覆盖更系统。