PIIONNXScannerEngineering
T0 PII 扫描引擎:硬规则与 ONNX 模型的双路径融合
为什么需要双路径
AI Agent 处理的文本中可能包含敏感信息:API Key、信用卡号、身份证号、地址等。单一检测路径要么误报高(纯规则),要么延迟大(纯模型)。Vigils 采用硬规则 + ONNX 模型双路径,兼顾速度与覆盖。
硬规则路径
14 条正则 + 关键字匹配,响应时间 <1ms:
| 类别 | 模式示例 | 误报率 |
|---|---|---|
| GitHub Token | ghp_[a-zA-Z0-9]{36} | 0 |
| AWS Access Key | AKIA[0-9A-Z]{16} | 0 |
| AWS Secret Key | 隐式模式(熵检测) | <0.1% |
| 信用卡号 | Luhn 校验 + BIN 范围 | 0 |
| 身份证号 | 加权求和校验 | 0 |
硬规则的优势是确定性——匹配即命中,无需概率判断。
ONNX 模型路径
OpenAI Privacy Filter q4f16 量化模型,8 类 PII 软标签:
- PERSON(人名)
- DATE(日期)
- EMAIL(邮箱)
- PHONE(电话)
- ADDRESS(地址)
- ORG(组织)
- MONEY(金额)
- SSN(社会安全号)
模型通过 BIOES 标注解码,识别边界模糊的实体(如 "John 住在深圳南山区" 中的 "John" 和 "深圳南山区")。
Hard-First 合并策略
当两条路径在同一文本 span 上重叠时,硬规则优先:
- 硬规则命中 → 直接采用,模型结果 discard
- 硬规则未命中,模型命中 → 采用模型结果
- 两者都未命中 → 放行
原因:硬规则是确定性的,模型是概率性的。安全场景下,确定性优先。
扫描流水线
输入 → Tokenize → Hard Rules → ONNX Inference → BIOES Decode → Merge → Risk Delta
- 冷启动:45ms(模型加载)
- 热推理:8ms
- 内存:23MB
Fail-Safe 退化
如果 ONNX 模型加载失败(如磁盘损坏、版本不兼容),系统自动退化为纯硬规则模式:
- 13 类硬指纹仍然全覆盖
- <1ms 响应不变
- 审计日志记录 degradation 事件
安全不会降级。
与业务场景的结合
在 PipelineDemo 场景 3 中,PII 扫描结果直接影响风险评分:
base_risk = 40
pii_delta = person(5) + date(5) + email(15) = 25
final_risk = 65 → 进入审批队列
这就是"扫描即策略"——PII 发现不是日志,是决策输入。