
ruflo Darwin Shield 安全基准评测基于metaharness-darwin security bench的自学习安全检测基线【免费下载链接】ruflo The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo导读本文讲解 ruflo 仓库中harness-security-bench技能SKILL.md的完整原理与实战用法。该技能封装上游metaharness/darwin的 Darwin Shield 安全基准即上游 ADR-155在 10 个漏洞 / 9 个诱饵样本构成的标准语料上进化出冠军安全检测 harness并以 TPR/FPR/补丁通过率/可复现性/不安全输出等指标与四个基线B0 静态、B1 LLM 单次、B2 固定 Agent、B3 Darwin 冠军对比打分。读完本文你将掌握该基准的调用参数、输出结构、退出码语义、优雅降级机制以及它如何作为 ruflo 自身 ADR-155 夜间自学习安全检测 harness 的参考实现与经验基线被接入。背景为什么这个基准对 ruflo 的 ADR-155 至关重要ruflo 的 ADR-155对应 PR #2417 跟踪提出一个夜间自学习安全检测 harness包含三条学习回路回路 A按维度置信度加权per-dimension confidence回路 B严重度校准severity calibration回路 C自动修复出价auto-fix bid。其中回路 A 需要在累积的(finding, dimension, human_outcome)元组上训练。但梯度信号只有在底层检测机制能在已知正确的语料上收敛时才是有意义的——如果检测器连标准语料都无法收敛训练出来的权重就是噪声。Darwin Shield 恰好负责进化出这样一个检测机制它在 10-vuln / 9-decoy 的 ground-truth 语料上做进化然后按真实 TPR/FPR 打分。因此周期运行harness-security-bench能为 ruflo 的夜间 harness 提供三类价值均出自 SKILL.md经验下限Empirical floor如果 Darwin Shield 的冠军在基准语料上达不到 TPR1 / FPR0说明回路 A 的奖励信号本身是噪声需要先修语料或沙箱而不是调学习算法漂移检测Drift detection逐周比较冠军适应度fitness的增量可以捕捉安全环境或变异策略mutator policy的迁移基线多样性Baseline diversityB0–B3 四个基线提供了四个锚点用于按维度对置信度进行加权。算法与调用链实现位于 plugins/ruflo-metaharness/scripts/security-bench.mjs文件头部注释明确将其定位为metaharness-darwin security bench的包装器并说明它与 ruflo ADR-155 的关系同一形态、不同范围——上游进化安全检测 harnessruflo 评估 findings两者都以相对 ground-truth 语料的实测 TPR/FPR 打分。整个算法分五步继承自 SKILL.md调用npx -y metaharness/darwin~0.8.0 metaharness-darwin security bench --population N --cycles N [--seed S]默认超时 3s × 19 evaluations × population × cycles 30s overhead。默认--population 2 --cycles 1约 144 秒--population 4 --cycles 3约 12 分钟解析 markdown 报告——整体 PASS/FAIL 加上每个门的 pass/fail 行门示例见下文验收门一节解析基线与冠军对比表4 行每个 harness 的 fitness/TPR/FPR/patchPass/repro/unsafe/cost输出结构化 JSON带--alert-on-fail时整体为 FAIL 则退出码 1。调用链中的关键细节源码级从 security-bench.mjs 的main()可以看到实际构造的 CLI 参数const cliArgs [security, bench, --population, String(ARGS.population), --cycles, String(ARGS.cycles), ]; if (ARGS.seed ! null) cliArgs.push(--seed, String(ARGS.seed));随后通过runDarwinAsync(cliArgs, { timeoutMs, json: false, onProgress })启动子进程——注意json: falsesecurity bench 的输出是 markdown 而非 JSON与evolve/bench verify不同。_darwin.mjsplugins/ruflo-metaharness/scripts/_darwin.mjs是共享的 darwin 调用助手关键点版本钉住DARWIN_PIN metaharness/darwin~0.8.0使用 tilde 范围允许补丁级升级且注释要求与claude-flow/cli/package.json、ruflo/package.json的optionalDependencies保持同步异步流式runDarwinAsync将 stderr 按行回调给onProgress[security-bench] ...前缀输出到 stderr子进程支持超时SIGTERM和AbortSignal取消退化分类通过classifyDegraded(stderr, code, metaharness-darwin)识别MODULE_NOT_FOUND、网络失败等返回degraded: true绝不抛异常ADR-150 优雅降级规则 #3。此外 security-bench.mjs 还内置了安全校验与超时预算--population必须落在 1..20ruflo 上限--cycles必须落在 1..100越界直接报配置错误并退出 2默认超时Math.max(60_000, 3_000 * 19 * population * cycles 30_000)——基准语料为 10 漏洞 9 诱饵 每周期 19 次评估每次评估约 3 秒加 30 秒固定开销。命令行参数技能在 frontmatter 中声明argument-hint: [--population 2] [--cycles 1] [--seed N] [--alert-on-fail]allowed-tools: Bash。参数解析来自 security-bench.mjs参数默认值取值范围说明--population N21..20每代进化的候选 harness 数量越大搜索越充分但耗时线性增长--cycles N11..100进化轮数周期数--population 4 --cycles 3约 12 分钟--seed Snull整数确定性种子用于可复现的变异选择--alert-on-failfalse布尔整体 FAIL 时进程以退出码 1 结束便于 CI 门禁--formatjson字符串输出格式脚本内部固定输出 JSON--timeout-ms自动毫秒覆盖默认超时测试/CI 中常用如降级演练设 60000使用示例来自脚本头部 USAGE 注释node scripts/security-bench.mjs # 默认 population2 cycles1 node scripts/security-bench.mjs --population 4 --cycles 3 # 更深度的运行 node scripts/security-bench.mjs --population 4 --cycles 3 --alert-on-fail输出结构security-bench.mjs成功时输出如下 JSON完整继承自 SKILL.md 并保留字段语义{ success: true, data: { overall: { ok: true, icon: ✅ }, gates: { total: 11, passed: 11, failed: 0, details: [{ ok: true, criterion: TPR improvement ≥ 25% vs fixed harness, measured: 150% (B2 0.4 → B3 1) }, ...] }, baselines: [ { harness: static-only, fitness: 0.5665, tpr: 0.3, fpr: 1, unsafe: 0, ... }, { harness: LLM single-pass, fitness: 0.1365, ... }, { harness: fixed agent, fitness: 0.598, ... }, { harness: Darwin champion, fitness: 0.93275, tpr: 1, fpr: 0, ... } ], rawMarkdown: ..., shape: { population: 2, cycles: 1, seed: null }, durationMs: 142000 } }字段说明overall整体 PASS/FAIL 与图标由 markdown 报告头部**Overall: ✅ PASS**或**Overall: ❌ FAIL**解析而来见 security-bench.mjsgates验收门的汇总与逐条明细每条含ok/criterion/measuredbaselinesB0–B3 四行对比表每行含harness/fitness/tpr/fpr/patchPass/repro/unsafe/cost表格正则见 security-bench.mjsrawMarkdown原始报告全文供上层审计或重新解析shapedurationMs本次运行形态与耗时便于归档为轨迹记录。注意示例中冠军 fitness0.93275、TPR1、FPR0 是 SKILL.md 中的示例值用于说明输出形态实际数值取决于语料与进化结果。验收门Gate示例SKILL.md 列举了基准自带的典型验收门判据解析正则会匹配 markdown 中- ✅ **criterion** — measured形式的行TPR improvement ≥ 25% vs fixedFPR reduction ≥ 40%Patch-test pass rate ≥ 80%Reproduction success ≥ 90%Unsafe outputs 0Cost increase ≤ 2× fixedBeyond SOTA冠军在统计上击败上一代冠军Compounding误报重复率下降 ≥ 35%接入 ADR-155 夜间 harness按 SKILL.mdADR-155 夜间工作流#2418 的W1.5任务会把本基准作为 active-pentest 维度的一个调用点其结果写入轨迹记录trajectory record{ dimension: mcp-pentest, subdimension: darwin-shield-bench, champion_fitness: 0.93275, champion_tpr: 1, champion_fpr: 0, gates_passed: 11, gates_failed: 0, shape: { population: 4, cycles: 3 } }这条记录直接喂给回路 A如果darwin-shield-bench在固定种子的语料上持续通过就提高只由mcp-pentest维度捕获的 findings 的权重。这一接入模式与 ruflo-metaharness 插件读-写闭环的整体架构一致——README.md 将harness-security-bench列为 11 个技能之一调用形态为/harness-security-bench [--population 2] [--cycles 1] [--alert-on-fail]且全部技能统一经过skills/X/SKILL.md → scripts/X.mjs → scripts/_harness.mjs → spawnSync(npx, ...)的子进程调用链。退出码语义SKILL.md 定义了与脚本实现一致的退出码契约CodeMeaning0Bench 运行完成整体 PASS 或 FAIL——通过 JSONoverall.ok区分或退化降级1--alert-on-fail且overall.ok false2配置错误或上游基础设施故障实现上脚本对上游退出码做了区分处理exitCode 1被当作基准自身的门未通过信号作为数据对待而不是故障只有其他非零码才进入基础设施失败分支security-bench.mjs输出{ success: false, data: { exitCode, stderrTail } }并退出 2。最后--alert-on-fail的判定只发生在 JSON 输出之后security-bench.mjs保证失败信息完整落盘。优雅降级darwin 缺席时的行为当metaharness/darwin不可用时未安装、registry 不可达、模块加载失败脚本不会崩溃而是输出{ degraded: true, reason: metaharness-darwin-not-available }并退出 0。这并非特例而是默认行为源自 ADR-150 的架构约束可移除 / optionalDependencies / 优雅降级 / CI 门禁——ruflo 在 MetaHarness 全家桶被移除后依然完整可用。darwin 相关的降级发射器统一由_darwin.mjs中的emitDarwinDegradedJsonAndExit提供基于_invoke.mjs的makeDegradedEmitterplugins/ruflo-metaharness/scripts/_darwin.mjs。该契约有专门的运行时演练脚本 plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs 验证它把npm_config_registry指向不可解析的主机、把缓存基座指向空临时目录然后逐个调用依赖 darwin 的技能断言每个技能必须 (a) 退出 0、(b) 在输出 JSON 中带degraded: true。其中对security-bench的演练参数为[--population, 1, --cycles, 1, --timeout-ms, 60000]test-graceful-degradation.mjs与脚本内置的安全上限一致。演练还记录了迭代中发现的真实缺口如oia-audit在 registry 不可达时可能超过 180s、mint的降级 payload 缺字面量标记等说明该契约在持续被收紧。定位与边界参考实现而非替代Darwin Shield 是上游的 ADR-155是 ruflo 自身 ADR-155 夜间自学习安全 harness 最接近的参考实现同形态、不同范围。ruflo 的夜间 harness 并未依赖它才能运行而是借助它获得经验基线与 ADR-153 的关系ADR-153 是 darwin 模式的整体集成evolve为写入层其版本钉住策略、四约束、优雅降级模式与本技能一脉相承security bench是 darwin 0.8.x 提供的第三个子命令另有evolve与bench create|verify不做的事本技能不修改任何 harness 文件、不做自动进化决策只评测与输出结构化证据进化是否推广由上层流程如 PR 评审 witness 签名见 ADR-153 Phase 2决定。参考资源技能定义plugins/ruflo-metaharness/skills/harness-security-bench/SKILL.md核心实现plugins/ruflo-metaharness/scripts/security-bench.mjsdarwin 调用助手plugins/ruflo-metaharness/scripts/_darwin.mjs降级契约演练plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs插件总览plugins/ruflo-metaharness/README.md相关决策记录v3/docs/adr/ADR-150-metaharness-integration-surfaces.md、v3/docs/adr/ADR-153-metaharness-darwin-mode-integration.md【免费下载链接】ruflo The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考