Skill Scanner CEL决策层深度解析:类型化事实投影与Shadow灰度发布的工程之道
发布时间:2026/10/3 20:15:35 锦皓数字建站

Skill Scanner CEL决策层深度解析类型化事实投影与Shadow灰度发布的工程之道【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scannerSkill Scanner 是面向 Agent Skills 的安全扫描器其CEL 决策层基于 cel-go 引擎的有界判定层配合类型化事实投影ScanFacts 契约与Shadow 灰度发布机制实现了上下文感知、可审计、可回滚的误报治理工程范式。本文将用通俗的语言拆解这三者的协作方式。一、CEL 决策层是什么不重查只裁决很多人误以为 CEL 是又一套检测引擎。实际上在 cel-decision-layer.md 中官方将其定位为有界决策层bounded decision layer真正的候选发现findings由确定性分析器产生——签名规则、YARA、AST、数据流、二进制分析等CEL 只回答一个问题这个候选结合包上下文是真的还是良性误报CEL 不能凭空创建发现不能修改规则 ID、类别或严重级别。包 - 确定性分析器 - 类型化事实投影 - CEL 闸门 - LLM 仲裁/富化 - 策略归一化 - 报告这种解析留在 Python、判定交给受控表达式的切分让上下文判断拥有小而可审计的输入面。核心实现见 gate.py 中的CelGate类。二、类型化事实投影给 CEL 一个干净证据包CEL 表达式看到的不是原始代码或告警文本片段而是一个名为f的 protobuf 值类型为skill_scanner.semantic.v1.ScanFacts。它只包含三块内容字段内容f.skill包清单能力、有界文件、命令、URL、数据流、引用边与并发信号f.candidate候选规则、分析器、类别、严重级别、位置与上下文f.projection完整性、截断状态、序列化大小与稳定错误码投影器projector.py有两条关键纪律消费结构化元数据从不重新解析证据片段——策略评估与检测彻底分离密钥永远不会进入 CEL 输入硬性资源上限最多 1,024 条文件事实、4,096 条命令/URL/流等语义项、单字符串 4 KiB、整体激活大小 2 MiB。超限即标记truncated true对应候选保留而不评估fail-open。三、Shadow 灰度发布只记录不压制这是整套机制最有工程味的部分。CEL 有两级独立开关全局扫描模式off/shadow/enforce 每条规则自己的rollout状态决策语义如下扫描模式规则 rollout表达式结果结果off任意只编译与类型检查保留shadow任意true保留记录keepshadow任意false保留但记录would_suppressenforceshadowfalse保留记录would_suppressenforceenforcefalse真正压制任意任意运行时/投影错误保留记录fallback也就是说即使全局开启enforce只要规则自身仍是shadow就不会压制任何告警。当前内置 core 包中所有 CEL 闸门见 pack.yaml均声明rollout: shadow例如FIND_EXEC_PATTERN规则会用context_kind、file.role等类型化事实判断find -exec是文档示例还是活跃指令。配套的观测命令很简单# 编译并类型检查 CEL 表达式 skill-scanner validate-rules # Shadow 模式观察决策不压制任何发现 skill-scanner scan ./my-skill --cel-mode shadow --format json为什么错误一律开闸放行在 gate.py 的注释中设计原则写得很直白Fail-open CEL decision gate。解析错误和类型错误是配置错误会导致扫描器启动失败而运行时的不完整事实、求值错误、非布尔返回值、慢/错误熔断一律保留发现并记录 fallback——决策层永远不能成为漏报的源头。四、审计遥测让如果 enforce 会怎样可量化Shadow 模式的价值全部沉淀在 JSON 扫描元数据里models.py 中的CelTelemetry模式、运行时版本、事实 schema、表达式集合哈希order-independent 的 SHA-256见expression_set_hashevaluated / retained / would-suppress / suppressed / fallback / incomplete-projection 各类计数逐规则身份与计数器表pack、rollout、表达式哈希及 keep/would-suppress/suppressed/fallback 合计同一问题归一化合并时胜出发现保留完整的cel_decisions血统链发布证据必须精确对账任何会移除恶意 HIGH/CRITICAL 发现的规则会被直接拒绝。五、晋升门禁Shadow 数据如何变成 Enforce灰度不是终点。detection-evaluation-rollout.md 给出了硬性晋升门禁在冻结语料上 5 次干净运行输出必须逐字节一致非时序字段完整跑一遍锁定版本公共语料不得出现运行时回退或投影不完整无 FPR 回归——良性误报率不能因为压制而升高延迟与检测率门同时达标。文档中附带的真实审计数据很有说服力开发语料上 core CEL shadow 将精确率从 95.61% 提升到 99.16%、F1 提升 14.81 个百分点但在来源不相交的 holdout 上 FPR 上升了 4.04 个百分点于是该轮变更被判定未通过晋升门禁所有规则继续留在 shadow。这正是灰度发布机制的自我约束数据说话门禁不过就回炉。此外CEL 表达式本身也被预校验器严格限缩只允许对f的字段选择、布尔运算、has、最多两层嵌套的exists/all拒绝动态正则、任意索引与算术运算表达式上限 16 KiB、4,096 个 AST 节点。表达式级精度测试集中在 tests/cel_precision/ 目录Go 运行时见 main.go锁定 cel-go v0.32.0协议版本 2 描述符哈希绑定。六、小结三件套的工程哲学组件解决的问题类型化事实投影CEL 输入有界、无密钥、可复现Shadow 灰度发布压制决策先观测后生效零漏报风险晋升门禁 审计遥测每个 shadow 规则都有数据化的转正门槛对新手而言Skill Scanner 的 CEL 决策层提供了一套可借鉴的通用范式先用确定性分析器抓候选再用极小受控语言做上下文裁决用灰度遥测积累证据最后由量化门禁决定转正。相关入门可从 quick-start.md 与 policy-quick-reference.md 开始。【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scanner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。