# 评分与裁定规则

> 综合评分公式 + 多引擎仲裁 + 最终裁定

## 评分公式

```
总分 = Layer1_Score × 0.35 + Layer2_Score × 0.55 + DataSecurity_Score × 0.1 - Layer3_Penalty
```

| 组件 | 来源 | 满分 | 权重 |
|:---|:---|:---|:---|
| Layer1_Score | 静态审计（54 项） | 100 | 0.35 |
| Layer2_Score | 行为模拟（21 场景映射） | 100 | 0.55 |
| DataSecurity_Score | 3.5 数据安全声明（7 项） | 100 | 0.1 |
| Layer3_Penalty | 供应链溯源扣分累加 | 0-30 | — |

### 场景化权重调整

按 Skill 类型动态调整权重，权重变更需在审查报告中显式标注。

| Skill 类型 | 调整规则 | 依据 |
|:---|:---|:---|
| 金融 / 医疗 / 政务 | W3 ↑ 至 0.15-0.20 | 数据安全敏感行业，PII/合规风险权重提升 |
| 纯工具类（无网络/无文件写） | W3 ↓ 至 0.05 | 数据安全维度不适用，降低噪音 |
| 默认 | W3 = 0.10 | 常规 Skill |

类型判断依据：SKILL.md 的 description / tags 字段，或用户显式标注。

---

## 裁定阈值

| 总分 | 裁定 | 图标 | 处理 |
|:---|:---|:---|:---|
| ≥ 85 | 干净 | ✅ | 可安全安装 |
| 60 - 84 | 可疑 | ⚠️ | 建议人工复核后使用 |
| < 60 | 恶意/高风险 | 🚫 | 禁止安装，上报安全情报 |
| 一票否决命中 | 恶意 | 🚫 | 直接裁定，不计算总分 |

### 黄标细化处理

| 子分类 | 分数区间 | 风险等级 | 处理 |
|:---|:---|:---|:---|
| ⚠️-low | 70-84 | 低风险可疑 | 附带主要风险点摘要，建议人工复核 |
| ⚠️-high | 60-69 | 高危可疑 | 建议拒绝安装 + 输出详细风险报告（含全部扣分项明细与行为链证据） |

输出格式扩展：当裁定为 ⚠️-high 或 ⚠️-low 时，审查报告额外附带 **主要风险点摘要** 行，列出 Top 3 高权重扣分项。

---

## 一票否决项（6 项）

命中任意一项 → 直接裁定 🚫，不进入后续评分。

| 否决项 | 检查来源 | 风险类型 |
|:---|:---|:---|
| 直接提示注入模式 | C1 | R1 |
| 凭证访问模式 | C3 | R3 |
| 数据外传链 | C4 | R5 |
| 系统级危险命令 | C5 | R2 |
| 持久化写入路径 | C7 | R7 |
| 安装脚本恶意链 | S6 | R2 |

---

## Layer 3 供应链扣分规则

| 检查项 | 最大扣分 | 触发条件 |
|:---|:---|:---|
| 发布者未验证 | -8 | 无 GPG 签名 / 无已验证身份 |
| 新发布者 | -5 | 历史发布 Skill < 3 个 |
| 依赖含已知 CVE | -10 | 任一依赖命中 Critical/High CVE |
| 可疑版本变更 | -5 | 单次更新新增网络调用/文件写入 |
| 无 SBOM | -2 | 未提供 Software Bill of Materials |

---

## 多引擎仲裁（解决扫描器分歧）

来源：OpenClaw+NVIDIA (arXiv:2606.01494)

| 规则 | 说明 |
|:---|:---|
| 交叉验证 | 至少 2 种检测规则集交叉判定（正则关键词 + 语义 LLM + 行为模拟） |
| 分歧升级 | 任一引擎判定 🚫 → 最终裁定不低于 ⚠️ |
| 可解释输出 | 每项扣分必须附带具体命中内容（行号 + 原文摘录） |
| 上限 2 次同类失败 | 同一规则集对同一 Skill 的同类检测失败 ≤ 2 次 |

---

## 输出示例

```
## 钟馗裁定：⚠️ 可疑

**总分**：72 / 100
**一句话**：3 项扣分，无否决项命中，建议人工复核权限声明。

### 扣分项
| 层级 | 检查项 | 风险类型 | 扣分 | 命中内容（行号） |
|:---|:---|:---|:---|:---|
| L1 | P1 最小权限原则 | R6 | -3 | SKILL.md:L42 声明 file: /** |
| L1 | P2 网络权限必要性 | R6 | -3 | SKILL.md:L15 声明 network: * |
| L2 | T6 权限串联提升 | R6 | WARN(0) | Agent 尝试执行但触发确认 |

### 未触发项
| R1 提示注入 | ✅ PASS |
| R3 凭证窃取 | ✅ PASS |
| R5 数据外传 | ✅ PASS |
| R8 隐蔽指令 | ✅ PASS |
| R11 外部信息源投毒 | ✅ PASS |
| R12 智能体行为级漏洞 | ✅ PASS |
```


## 退出码体系

| 退出码 | 含义 | 钟馗裁定映射 | 处理 |
|:---|:---|:---|:---|
| `0` | 安全 / 干净 | ✅ 干净 | 可安全安装，无需人工介入 |
| `1` | 警告 / 需确认 | ⚠️ 可疑 | 输出扣分项明细，要求用户手动确认后继续 |
| `2` | 高危 / 阻断 | 🚫 恶意 | 立即阻断安装，输出完整威胁详情 |
| `3` | 扫描失败 | — | 说明失败原因，建议重试或人工审查 |

**退出码判定优先级**：一票否决项命中 → 强制退码 `2`，不进入评分流程；总分计算完成后按阈值映射退码 `0` 或 `1`。

---

## 置信度评分 [规划中，尚未实现]

扫描结论的可信程度，独立于风险总分，辅助人类决策。

### 定义

```
confidence_score ∈ [0, 1]
```

- 计算方式：基于「检测方法覆盖率 × 命中项确定性」加权，各规则集中的正则匹配视为高确定性（×1.0），语义 LLM 判定视为中确定性（×0.7），行为模拟推断视为低确定性（×0.5）。
- `confidence_score = Σ(命中项权重 × 确定性系数) / Σ(所有检测项权重)`
- 满分 1.0：所有检测项均被确定性最高的方法覆盖。

### 阈值

| 置信度区间 | 等级 | 含义 |
|:---|:---|:---|
| ≥ 0.85 | 高置信 | 检测方法充分，结论可靠 |
| 0.60 - 0.84 | 中置信 | 结论可参考，建议关注低确定性项 |
| < 0.60 | 低置信 | 检测覆盖不足，**必须人工复核** |

### 与裁定的关系

- 高置信 + ✅ 干净 → 自动化放行
- 高置信 + 🚫 恶意 → 自动化阻断
- 低置信 + 任意裁定 → 必须升级人工审查，无论总分如何
- 中置信 + ⚠️ 可疑 → 输出完整证据链，等待用户决策
