资讯动态

结论必须可验证:Cloudflare 在技能里内置了一套『防幻觉台账』

发布时间:2026/10/20 2:39:44 来源:尧图企业网站定制
结论必须可验证Cloudflare 在技能里内置了一套『防幻觉台账』【免费下载链接】security-audit-skillA coding-agent skill for multi-phase security audits with independently verified, machine-readable findings项目地址: https://gitcode.com/GitHub_Trending/se/security-audit-skill把审计交给大模型最让人心里没底的从来不是它漏了什么而是它言之凿凿地说错了什么。当security-audit-skill在 GitHub 上数天狂揽上万星时社区热议的焦点其实不在AI 能审计代码这件事上——毕竟扫描器做了几十年——而在于它如何让 LLM 产出的每一条漏洞结论都可复核、可证伪、可追溯。这套机制有一个很朴素的别名台账。Cloudflare 的做法不是靠一句请谨慎回答的提示词而是把结论必须挂证据从口头约定变成了数据结构约束 独立校验器 流程节点的三层强制。台账机制每个结论必须挂原始证据引用翻看 report-schema.json第一印象是它毫不客气trace与evidence两个数组被标记为minItems: 1且additionalProperties: false这意味着没有任何一条结论允许存在没有原始证据引用的形态——要么给出从 entrypoint 到 sink 的完整源码路径要么这条记录根本通不过 schema 校验。台账的账目条目被设计得极其具体trace是攻击路径的骨架每一条必须包含kind、file、line、scope、description五个字段多步链路必须以entrypoint开头、以sink结尾中间只能出现propagationevidence是支撑结论的原始证据点同样强制filelinedescription三元组且与trace一起满足uniqueItems杜绝重复引用同一行来凑证据三个 verdictconfirmed/needs_validation/rejected各自拥有互斥的字段契约confirmed禁止携带blockers、validation_plan、reasonneeds_validation禁止携带severity但必须给出精确的blockers和至少一条validation_planrejected则必须用reason说明为什么被推翻。这套互斥设计本质上是在逼模型要么说清、要么不说。特别值得注意的是 validate-findings.cjs 里的两个语义检查一是isSafeRelativeSourcePath拒绝绝对路径、..跳转、冒号、控制字符乃至 Windows 保留名con、com1这类强制证据路径必须是仓库内相对路径——防止模型编造一个看起来像文件路径的字符串二是overall_severity不能超过impact.score即严重性必须由已证实的危害支撑而不是模型凭感觉打分。换句话说台账不仅管引没引证据还管证据撑不撑得起结论。校验节点如何嵌入 Agent 推理流程台账若只是文档规范仍挡不住模型偷懒。真正的约束来自它被嵌进了整个六阶段推理流水线SKILL.md 的 Workflow overview侦察 → 覆盖率驱动的狩猎 → 候选验证 → 结构化输出 → 独立记录复核 → 目标中立报告。校验节点分布在每一道关口狩猎阶段的候选闸门Candidate Gate。HUNTING.md 给每个 hunter 的 prompt 里内置了七条硬规则候选必须有完整的仓库相对路径 trace 和证据、必须指名受影响主体与跨边界后果、不能把 crash 拔高成 RCE、源码可见的事实缺失必须降级为needs_validation——最后一条是当没有任何候选通过闸门时返回空数组。这让查无实据的猜测根本没有进入台账的机会。验证阶段的对抗性复核。VALIDATION-AND-REPORTING.md 明确规定每个候选交给一个没参与狩猎的全新 verifier其 prompt 第一句就是You did not write this candidate. Try to refute it from repository source and bounded local evidence。verifier 必须重新读取每条被引用的源码位置、独立复现决定性检查而且只接受一条无任何包裹散文的 JSON 结果格式不符直接丢弃重跑。这是对自说自话最直接的一击发现者与验证者物理隔离幻觉想要存活必须同时骗过两个独立 agent。流水线末端的机器校验节点。Phase 4 要求运行node validate-findings.cjs output-dir/findings.json并且每次 Phase 5 替换后都要重跑覆盖率台账则在创建和每次更新后由validate-coverage-ledger.cjs把关。这两个零依赖 Node.js 校验器本身也按不可信输入来对待用O_NOFOLLOW/O_NONBLOCK打开输入文件、拒绝符号链接与 FIFO、限制 5 MiB 输入与 64 层嵌套、对错误输出中的终端控制字符做转义。整条链路从 prompt 到 JSON 再到 CI 化校验器形成闭环模型写账另一个模型对账最后机器强制平账。这套设计对 Agent 可观测性的启发如果把账台的视角从防幻觉再抬高一层它其实是给 Agent 工作流装了一整套可观测性仪表盘——这正是社区把这套技能视为 Cloudflare 漏洞发现 harness 种子实现的原因仓库 README 明确写道 This is the skill that seeded Cloudflares vulnerability discovery harness。启发一结论要能追溯到谁在什么时间看了哪些代码。覆盖率台账 RECONNAISSANCE.md 定义的每个 ledger 单元都必须记录agent_id、reviewed_paths与local_checks并且unit 级reviewed_paths恰好是所有 check owner 路径的并集——哪怕审计结果干净也必须有路径和检查来支撑覆盖这个说法正如文中那句刺耳的原则The ledger is the coverage claim. An architecture summary, agent count, or generic auth reviewed sentence is not coverage evidence.启发二用稳定的 fingerprint 让结论跨轮次、跨状态可追。同一 root cause 在confirmed、needs_validation、rejected之间流转时 fingerprint 保持不变正则^[A-Za-z0-9][A-Za-z0-9._:/-]*$且不含行号、wave、agent、severity 等易变因素。这使得多轮审计是可累加的上一轮的needs_validation和rejected会成为下一轮的优先输入而不是被当成已经看过了而丢弃。AI 审计因此从一次性报告变成了可增量迭代的资产。启发三过程本身要可复现、可存档。coverage-ledger.json是一台严格的状态机planned → in_progress → covered / candidate / blocked外加deferred、out_of_scope每次 critic 重新指派都会把旧 owner 的证据原样归档到attempts新 wave 必须使用全新 owner、从空证据开始。budget、wave、fingerprint、unresolved 原因全部入账。当审计 AI本身的行为可以被逐条回放时它才真正配得上可信二字。说到底security-audit-skill给 Agent 工程最大的启示或许不是某个提示词技巧而是一条朴素的工程信条让结论可验证不是靠更强的模型而是靠更硬的结构。证据字段、互斥契约、对抗复核与机器校验器共同构成了一道任何声称安全的 AI 输出都绕不过去的账。【免费下载链接】security-audit-skillA coding-agent skill for multi-phase security audits with independently verified, machine-readable findings项目地址: https://gitcode.com/GitHub_Trending/se/security-audit-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑