☰
每个场景该跑什么配置?Skill Scanner从本地开发到注册表扫描的推荐设置清单
2026/10/3 12:35:18 网站建设 项目流程

每个场景该跑什么配置?Skill Scanner从本地开发到注册表扫描的推荐设置清单

【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scanner

Skill Scanner 是一个面向 AI Agent Skills 的安全扫描器,能检测提示词注入、数据外泄和恶意代码模式。不同使用场景该选哪套扫描配置?这篇文章按「本地开发 → CI 门禁 → 第三方技能审查 → 注册表扫描」的真实工作流,给出一份可直接照抄的 Skill Scanner 推荐设置清单,每个场景都附具体命令和预期效果。

一、先搞懂:Skill Scanner 的 5 个内置策略预设

Skill Scanner 通过--policy参数选择扫描策略,内置 5 个预设,定义在 data 目录的策略文件 等位置:

预设风格LLM 裁判适用场景
strict最高敏感度建议开启不受信内容、审计、威胁狩猎
balanced(默认)检测与误报平衡按需开启通用 CI、日常扫描
low-noise比 balanced 少 11 条高噪规则一般不需要本地开发、pre-commit、自家 CI
quiet再降级 8 条规则,压低审查队列必须开启审查人手不足的第三方技能审查
permissive最高阈值、最少发现不需要可信的内部技能

⚠️ 两个通用原则(每个场景都成立):

  1. HIGH 级别拦截,MEDIUM 级别进人工审查队列—— 这是官方推荐的标准姿势;
  2. 无法完成分析的 Skill 要当作「未审查」,而不是「干净」。

预设细节可参考 scan-policies-overview.md,逐项参数说明见 policy-quick-reference.md。

二、场景一:本地写 Skill + pre-commit 钩子

推荐:纯规则 +low-noise预设,HIGH 级别拦截,不需要 LLM。

skill-scanner scan ./my-skill --policy low-noise

在仓库根目录创建.skill_scannerrc,再用skill-scanner-pre-commit --install安装钩子:

{ "skills_path": ".claude/skills", "severity_threshold": "high", "policy": "low-noise", "fail_fast": true }

为什么这么配:规则扫描不需要任何 API Key、不联网、毫秒级出结果,正是 pre-commit 钩子需要的特性。low-noise在 188 万个真实技能上把 MEDIUM+ 误报率从 2.14% 压到 1.93%,同时几乎不损失真实威胁检出。

预期效果:规则能抓到 7.7% 的恶意技能(留出集),足以在你编写过程中拦截「下载即执行、硬编码凭证、注入字符串」这类无歧义模式。

三、场景二:CI 里给团队自己的 Skill 设门禁

推荐:纯规则 +low-noise,HIGH 级别让流水线失败,MEDIUM 通过 SARIF 上传为 PR 注释。

skill-scanner scan-all ./skills --recursive --policy low-noise \ --fail-on-severity high --format sarif --output results.sarif

项目提供了现成的可复用 GitHub Actions workflow,输入参数和密钥配置详见 github-actions.md;本地也可以直接用 scan-policies-overview.md 里的命令快速验证。

为什么不需要 LLM:团队自己写的 Skill 意图可信,门禁主要防「手滑」和「抄来的危险模式」——规则扫描确定性强、同一输入永远同一结果,失败的构建可复现。只有当你们会从外部引入 Skill时,才需要升级到下一节的配置。

预期效果:与本地开发相同,真实技能上约 1.9% 触发 HIGH 门禁;如果你们的 Skill 会安装软件或处理凭证,被拦概率会更高——这恰恰是规则在盯的东西。

四、场景三:安装第三方 Skill 前审查

推荐:规则 + LLM 裁判 + 默认balanced预设,HIGH 拦截 + MEDIUM 审查队列。

export SKILL_SCANNER_LLM_MODEL="bedrock-mantle/google.gemma-4-26b-a4b" # 或你常用的模型 export SKILL_SCANNER_LLM_API_KEY="..." skill-scanner scan ./downloaded-skill --use-llm --fail-on-severity high --format json --output scan.json

scan.json里所有 MEDIUM 及以上的发现交给人工,HIGH 及以上直接拦截。

为什么要加 LLM 裁判:规则单独只能抓到 8% 的恶意技能——大多数恶意 Skill 的内容没有可被模式证明的特征(比如「触发时运行某个自带脚本」)。LLM 裁判负责读懂意图,并且能区分「技能用途」和「滥用」:支付类 Skill 动钱、浏览器类 Skill 跑 JS,本身不算发现。

预期效果(留出测试集 / 真实技能):

阈值恶意召回率良性误报率到达人工的真实技能占比
MEDIUM+ 审查66.7%15.4%11.7%
HIGH+ 拦截33.7%6.4%3.8%

LLM 裁判每个 Skill 约消耗 3800 输入 + 90 输出 token(Gemma 4 26B 实测)。

审查人手不够?换成quiet

skill-scanner scan ./downloaded-skill --use-llm --policy quiet --fail-on-severity high

quiet在low-noise基础上再降级 8 条规则,并把裁判低置信度和「上下文风险」类发现封顶到 LOW(仍会报告,但不再触发门禁和入队):

预设MEDIUM+ 召回率MEDIUM+ 误报率进入审查队列的真实技能
balanced66.7%15.4%11.7%
low-noise63.2%13.4%8.7%
quiet50.3%7.2%3.9%

⚠️quiet绝不能脱离 LLM 裁判单独使用——它的额外降级是基于有裁判的数据选出来的,没裁判时规则单独检出率会直接腰斩(8.0% → 4.2%)。

五、场景四:扫描整个注册表 / 技能市场

推荐:全量跑规则 +low-noise;预算允许就全量加裁判,否则只对「规则命中的 + 随机抽样的一部分」跑裁判。

skill-scanner scan-all ./registry --recursive --policy low-noise --format json --output rules.json

为什么规则打底:注册表规模下裁判是成本大头——官方实测判完 188 万个技能要 71 亿输入 token,而 10 进程规则扫描 16 核主机约 90 分钟跑完。规则在真实技能上的 MEDIUM+ 命中率为 2.14%(low-noise下 1.93%),裁判能通读全文时与规则有 47% 的一致率。

内容必须留在内网?用 vLLM 本地起一个 Gemma 4 26B-A4B 即可复刻托管结果(本地 F1 64.2% vs 托管 61.2%),配置方法见 recommended-settings.md 的「Keeping skill content on your own machines」小节。纯规则模式下默认什么都不出机器——VirusTotal、AI Defense、OSV 分析器都要显式传参才启用。

六、场景五:威胁狩猎与应急响应

推荐:全开,只读结果,绝不用它做门禁。

skill-scanner scan ./suspect-skill --policy strict --rule-packs atr promptguard \ --use-llm --llm-decompose --use-behavioral --format json --detailed

启用全部社区规则包(packs 目录)后,留出集召回率升到 73.8%,但良性命中率也从 7.5% 飙到 92.5%——适合「把技能可能干的所有事都挖出来」,不适合当门禁。--llm-decompose会让裁判按多个焦点各跑一次再合并,token 消耗约为单次的 5 倍。

七、别忽略的三个「自留地」缺口

  1. 裁判读不了的 Skill 会直接通过门禁:失败会以 INFO 级发现LLM_ANALYSIS_FAILED报告,而 INFO 永不触发门禁。批量扫描后用 JSON 检查是否出现该发现,有的话送人工审查。
  2. 超大 Skill 只会被判部分内容:INFO 发现LLM_CONTEXT_BUDGET_EXCEEDED会列出被排除的文件。真实技能中约 5% 会触发,此时裁判与规则的一致率只有 7%——要么调大 custom-policy-configuration.md 里llm_analysis的预算,要么送人工。
  3. 数字来自特定语料,先在自己技能上实测:换个 20 万规模的技能源,同样规则命中率从 2.1% 降到 0.5%。上线前用两个预设各扫一遍自己的技能抽样,再定审查队列大小:
skill-scanner scan-all ./sample --recursive --policy balanced --format json --output balanced.json

八、从推荐配置出发定制自己的策略

不确定怎么改?从最接近的预设生成一份策略文件,只动需要的部分:

skill-scanner generate-policy --preset low-noise -o my-policy.yaml skill-scanner scan ./skill --policy my-policy.yaml

最常调的两组开关(完整字段说明见 policy-quick-reference.md):

severity_overrides: # 降级的规则按 LOW 报告:可见、但不触发门禁 - rule_id: FILE_MAGIC_MISMATCH severity: LOW reason: "mostly a text label in Markdown on real skills" llm_analysis: low_confidence_max_severity: LOW # 模型自评低置信度的发现封顶到 LOW

也可以用交互式 TUI 可视化编辑:skill-scanner configure-policy。

九、一张表总结:选配置就看这张

你是谁 / 要做什么配置拦截级别审查级别真实技能到达你的比例
本地写 Skill规则 +low-noiseHIGH—1.9% 被拦
CI 管团队自己的 Skill规则 +low-noiseHIGHMEDIUM 注释1.9% 被拦
装第三方 Skill 前审查规则 + LLM,balancedHIGHMEDIUM11.7% 审查,3.8% 拦截
审查人手有限规则 + LLM,quietHIGHMEDIUM3.9% 审查,2.9% 拦截
扫注册表 / 市场规则 +low-noise,裁判按预算加HIGHMEDIUM规则 1.9%
威胁狩猎全规则包 +--llm-decompose从不拦截全部大多数都会标记,只做分诊

完整数据、方法学和每个数字的出处,见 recommended-settings.md 与 measured-results.md。装好 Skill Scanner(pip install cisco-ai-skill-scanner)后,照上表抄对应命令就能开工——先按low-noise起步,再根据自己技能的实际命中率微调,比盲目追求「最严格」稳妥得多。🛡️

【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scanner

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询