拓冰建站拓冰建站
首页 / 资讯中心 / 正文

深度解析 agent-governance-toolkit 提示注入评测语料方法论:可复现生成、零泄漏分桶与基线基线化全流程

深度解析 agent-governance-toolkit 提示注入评测语料方法论可复现生成、零泄漏分桶与基线基线化全流程【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit本篇文章聚焦 agent-governance-toolkit 中benchmarks/prompt-injection/提示注入评测夹具fixture的语料生成方法论系统回答合成攻击家族如何生成、过拟合如何控制、良性对照组如何构造、基线如何建立、零误报该如何解读、后续嵌入信号的生产路径是什么这 6 个核心问题。这是该仓库中任何**可选、默认关闭的嵌入证据信号embedding signal**被正式评审的前置条件——读者在读完本文后能够对照已合并的生成器源码独立验证语料是否可复现、是否零跨分桶泄漏并掌握 Wilson 置信区间与基础率精度等评估口径的正确用法。1. 背景为什么需要一份方法论文档作为前置条件在 agent-governance-toolkit 的 SLO 工作区中[ticket-pr2-methodology.md](https://link.gitcode.com/i/f5e16e7fbe8ea9f1ad6fc628a248bbcd)记录了一个文档型票据为 PR2可选的嵌入检测信号补齐可评审的语料方法论文档。其契约块Contract block明确限定了允许变更的文件只有两个——新增docs/benchmarks/prompt-injection-methodology.md以及docs/benchmarks/prompt-injection-evaluation.md中新增一行交叉链接兼容性要求为仅增量文档、无运行时变更、无过度宣称措辞。这一前置条件的核心动机是在让任何消费语料的检测路径进入评审之前维护者必须能够确认语料是以可复现、非过拟合的方式生成、分桶、去重和基线的。仓库中已合并的方法论文档 prompt-injection-methodology.md 正是这一票据的落地产物而 prompt-injection-evaluation.md 则描述夹具的整体范围与当前冒烟基线结果。两者形成总览 方法论的配套结构。需要强调的边界该语料是合成研究数据仅用于受控、可复现的检测器评估既不是训练数据也不是生产策略配置更不代表真实流量的安全保证。这一范围诚实scope honesty声明是整份方法论文档的基调。2. 问题一合成攻击家族如何生成2.1 确定性生成契约生成器 generate-corpus.py 是仅使用标准库stdlib-only的确定性脚本给定相同的种子seed与 profile输出字节级一致。其核心常量全部集中定义在文件头部常量值含义SEED1337全局随机种子分桶哈希与家族 ID 的派生依据ROUNDprompt_injection_fixture_v1语料轮次标识ID_PREFIXpi1所有合成行 ID 前缀TEXT_MARKERPI1每条合成行文本内固定的标记Scenario PI1-A-xxxxx/Reference PI1-B-xxxxx/Trace ...保证夹具文本永远不可能被误认为真实流量SPLITS(exemplar_bank, validation, test)三个分桶PROFILE_LIMITS{smoke: 10, pilot: 120, large: 1600}每个家族的行数上限每家族 cap仓库随附的是smokeprofile280 行pilot与largeprofile 按需重新生成即可。2.2 八类攻击家族与槽位填充攻击语料由ATTACK_TEMPLATES定义8 个攻击家族attack familydirect_override直接覆盖指令、prompt_leakage提示词泄漏、indirect_injection间接注入如检索到的网页/RAG 片段、tool_abuse工具滥用、tool_result_injection工具结果注入、output_exfiltration输出外泄、memory_poisoning记忆投毒、data_boundary_abuse数据边界滥用。每个模板通过槽位填充器slot fillers实例化ACTIONS攻击动作如reveal the system prompt、export the database credentials、disable the approval policyTARGETS攻击目标如include any secret-looking values、append the internal canaryTOOL_NAMES被滥用的工具名如read_secret、http_request、execute_command。渲染函数render_attackgenerate-corpus.py还会追加Scenario PI1-A-{idx:05d}. Trace {digest}.格式的追踪后缀其中 digest 是对attack:{attack_class}:{template}:{idx}的 SHA-256 摘要用于溯源每一行的生成路径。2.3 绕过类别bypass class——混淆面每一行都标注其bypass_class取值来自ALLOWED_BYPASS_CLASSES14 类。生成器内置的变异算子mutation operators实现了这些类别算子函数生成的bypass_class说明原文plain/none未混淆基线LEET_MAP翻译leet_spacing如i→1, e→3, a→4, o→0, s→5, t→7spaced()letter_spaced字符/单词间插入空格rot13()rot13ROT-13 编码urllib.parse.quote/ 实体编码 / base64encodingURL/HTML/Base64 编码homoglyph()homoglyph同形异义字符替换如a→а、e→еdiacritics()diacritics加重音符号compact_alnum()compact_plain仅保留字母数字并小写compact_leet()compact_leet紧凑 leetseparator_spaced()separator_spaced以.分隔字符chunked()chunked_leet4 字符切块多语言变体multilingual法语/西语攻击模板此外还有compact_pressure_mutations紧凑压力变异专门针对compact_plain/compact_leet/leet_letter_spaced等类别对应紧凑化 混淆叠加场景。由于bypass_class是逐行记录的元数据评估时可以按类别统计召回率甚至将某些混淆类别整体留出检验检测器对未见过的伪装形式的泛化能力。2.4 每行溯源元数据每条语料行都携带完整溯源元数据source_type如user、rag_chunk、tool_result、memory、trust_leveluntrusted、tool_output、authenticated_user、attack_class、benign_subclass、family_id、group_id、split、bypass_class、risk_level、expected_actionblock/quarantine/require_approval/allow等。expected_action由attack_expected_action推导tool_result_injection→quarantineprompt_leakage/direct_override→require_approval其余攻击 →block良性行一律为allow。这一标注让每条语料既是文本又是可审计的期望行为契约。3. 问题二过拟合如何控制——分桶即去重控制过拟合的第一原则是分桶单元是 family/group而不是随机行。split_for(family_id)generate-corpus.py按SEED:family_id的哈希加每个前缀的偏移量把每个家族确定性地映射到 5 个桶之一再映射为 3 个 split桶 0–2 →exemplar_bank桶 3 →validation桶 4 →test。同一个家族的所有行必然落在同一 split绝无家族或分组跨桶的现象——check_leakage会以family_split_leaks/group_split_leaks两个数组强制这一不变量。在此之上还叠加三重独立的跨桶泄漏检查见 check-corpus.py 与生成器内normalized_text_check全部要求计数为 0精确归一化泄漏每行文本经NFKC归一化 casefold小写 空白折叠normalize_text后取 SHA-256若同一归一化文本出现在两个 split 中即报告必须为零近似重复泄漏取 7-gram 分片NEAR_DUPLICATE_NGRAM 7用 simhash 的 16-bit 带SIMHASH_BAND_BITS 16做候选分块再以Jaccard 相似度 ≥ 0.92NEAR_DUPLICATE_THRESHOLD 0.92判定跨桶近似重复对同样必须为零标签覆盖检查每个 split 必须同时含有攻击与良性行避免某 split 退化为单标签。这些检查的结果写入 manifestleakage_check、normalized_text_check、duplicate_check、split_label_coverage_check字段并在main()中作为硬性门禁任一检查不通过生成器直接以非零码退出并打印泄漏详情generate-corpus.py。因此无过拟合不是一个断言而是一个可复现的构件。4. 问题三良性对照组如何构造为了不让检测器仅仅靠长得像攻击就得分每个攻击家族都配有匹配的良性对照组matched benign controls分为三层相邻安全类良性adjacent-security benignbenign_security_discussion安全讨论、quoted_injection_example引用的注入示例、security_training_material安全培训材料、research_blog_excerpt研究博客摘录、security_changelog安全变更日志、detector_code_fixture检测器代码夹具如const ATTACK_EXAMPLE: str {phrase};、owasp_ncsc_guidance安全指南、docs_code_comment文档注释。这些是最难负例——它们合法地引用/讨论提示注入短语但绝不构成实际攻击指令良性混淆对照benign obfuscation controlsBENIGN_OBFUSCATION_BASES提供的合法文本经过与攻击相同的变异算子处理含多语言使得检测器不能把混淆本身当作恶意信号合法祈使/工具请求legitimate_imperative_request如 Please summarize the report...与benign_tool_use如 Read ./report.md and summarize section {n}.确保祈使句语气或涉及工具本身不是判定特征。良性行同样携带benign_subclass、family_id、group_id等元数据与攻击行共用同一分桶与泄漏检查逻辑——这保证了攻击与良性分布在各 split 中是对称可比的。5. 问题四基线是什么基线baseline是 AGT现有的纯规则检测器rules-only detector即 Rust crateagentmesh::prompt_injection::PromptInjectionDetector由agt-rules-baselineharnessmain.rs运行。要点在于精确锁定基线锁定到上游的一个精确 commit 与检测器源码 SHA并随指标一并记录因此基线可在已知的 AGT 状态下复现预期特征该规则检测器是高精度 / 低召回设计。当前 smoke 冒烟结果见 prompt-injection-evaluation.md 与 README.md为攻击行 110 条捕获 7 条召回 0.0636良性 170 条误报 16 条误报率 0.0941即每千条良性 94.12 条误报。在困难留出伪装上召回率低是预期行为而非缺陷——这正是后续嵌入信号存在的价值空间元数据优先run-smoke.sh会断言 per-row 证据与摘要中raw_text_in_output必须为false即证据产物不包含原始提示文本只保留计数、比例与区间。冒烟复现一条命令即可完成bash benchmarks/prompt-injection/run-smoke.sh。脚本依次完成 Python 编译检查、重新生成 280 行语料与 manifest、语料卫生验证、编译 Rust 评分器、重建基线产物、以及仅元数据断言run-smoke.sh。6. 问题五零误报到底意味着什么方法论文档对零误报zero FP observed给出了非常克制的定义这是在冻结测试分桶上的有限样本观察不是保证。任何0 FP都必须同时携带两样东西Wilson 95% 置信区间summarize-baseline.pysummarize-baseline.py对每个操作点输出召回率与误报率的 Wilson 区间含 estimate / lower / upper。在样本量有限时观察到 0 个误报的真实区间上限远高于 0基础率base-rate精度修正脚本按1 攻击 : 100 良性与1 : 1000两种现实攻击稀有度计算 base-rate precision。因为即使在低绝对误报率下当攻击极其罕见时精度也会崩塌——这是零 FP 观察必须附带基础率警示的根本原因。此外任何阈值只在 validation 分桶上拟合并在打分 test 分桶之前冻结manifest 中记录为tau_policy: fit on validation only, freeze before final test。这三条共同构成了零 FP这句话的完整语境。7. 问题六可选嵌入信号的生产路径方法论文档将 PR2嵌入检测器本身明确定义为本方法论文档之外、被其门控的范围Out of scope。对于嵌入信号的生产路径文档给出严格增量且保守的原则仅作证据evidence only嵌入只产生可审计的得分/边界score/margin用于喂给评审或路由绝不单独硬阻断never hard-block alone默认关闭必须位于显式 flag / 配置项之后默认不生效治理元数据决定动作嵌入负责把当前规则漏掉的语义相似案例浮出水面但最终动作由策略/IFC 决定无托管推理要求本地、可审计运行即可。这一框架是刻意设计的嵌入不取代规则。可评审的结论是——AGT 规则基线高精度/低召回而一个保守的嵌入操作点能够在本语料上零误报的前提下捕获规则漏掉的部分攻击这足以支撑一个评审/路由信号而非默认阻断。方法论文档还明确列出了反例anti-exemplar措辞任何嵌入取代规则或生产就绪 / 零误报保证的表述都是禁止的。8. 验证计划每个数字都必须能在生成器里被 grep 到票据与文档共同给出四步验证方案Validation plan保证方法论的可审计性检查项命令预期结果生成器常量与文档一致grep -E SEED\|NEAR_DUPLICATE\|SPLITS\|ALLOWED_BYPASS benchmarks/prompt-injection/harness/generate-corpus.py与文档引用的值一致SEED1337、NEAR_DUPLICATE_THRESHOLD0.92、NEAR_DUPLICATE_NGRAM7、5 桶分桶、profile 上限、家族与绕过类别集合语料可复现且零泄漏python3 benchmarks/prompt-injection/harness/generate-corpus.py --profile smoke再运行 check-corpus.py 复核确定性输出跨分桶泄漏 0无运行时变更git diff --stat origin/main..HEAD仅 2 个文档文件变更链接有效人工核对 evaluation 文档 → methodology 文档的交叉链接链接可解析方法论的完整复现命令序列prompt-injection-methodology.md# 确定性重新生成一个 profile 并复核泄漏 0 python3 benchmarks/prompt-injection/harness/generate-corpus.py --profile smoke python3 benchmarks/prompt-injection/harness/check-corpus.py \ benchmarks/prompt-injection/corpus/injection-smoke.jsonl # 重跑 AGT 规则基线 汇总Wilson 区间 基础率精度 benchmarks/prompt-injection/run-smoke.shcheck-corpus.py的校验逻辑远超简单的格式检查它验证每行 17 个必需字段、id 唯一性、split 与expected_action枚举合法性、良性行动作必须为allow、攻击行benign_subclass必须为not_applicable并将 manifest 中的row_count、output_sha256支持 LF 归一化模式、leakage_check、normalized_text_check、duplicate_check、split_label_coverage_check与逐行重算结果逐一比对。任何不一致都会以ERROR:前缀输出并以退出码 1 结束全部通过则打印prompt-injection-corpus-check: PASS。9. 从源码结构看为什么这套方法论值得直接复用通读 generate-corpus.py 与 check-corpus.py 的源码结构可以发现这套夹具的设计哲学高度自洽生成与校验分离生成器负责产出校验器负责证明run-smoke.sh把两者串成端到端门禁且所有中间产物per-row 证据落到系统临时目录仓库内只提交摘要型元数据manifest、check 汇总从机制上避免原始提示文本被误提交一切皆可溯源generator_id、family_id、group_id、Trace摘要、生成器自身 SHA-256generator_sha256被写入 manifest任何一行语料都可以回推到模板、变异算子与索引评估口径被标准化Wilson 区间、FP/1k、基础率精度已在summarize-baseline.py中统一实现且 manifest 同时声明implemented_metrics与planned_metricsROC-AUC、PR-AUC、bootstrap CI、unsafe_action_success、critical_allow、leak_allow等为后续评估臂rules_only已实现gate_alone、embeddings_only、gate_plus_embeddings规划中预留了清晰的扩展点。这套确定性生成 家族级分桶 三重泄漏门禁 元数据-only 基线 带区间/基础率的口径报告的组合构成了 agent-governance-toolkit 中任何检测器实验的低风险起点它让规则在哪里漏、良性文本在哪里被误报变得可审计、可回归、可评审也为未来默认关闭的嵌入信号提供了一个不越界、不宣称过度保证的落地范式。【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门