dual-gateslisted
Install: claude install-skill xu-jin-cs/dsh-skills
# dual-gates — 声明闸 Declaration Gate + 查询闸 Query Gate(正式定稿版)
> 核心原则:前置意图定性 → 定向溯源查询;严格 2 字词根白名单、无黑名单、规避技能 Prompt 冲突;职责强隔离,查询链路只做定位与原始数据输出,推理、有效性判断全部后置。
> 适用场景:Agent 内数据源检索、评估基准/方案/源码/历史记录读取,杜绝无脑全量 grep 扫描。
> 执行脚本:`scripts/dual_gates.py`(相对本技能目录),判定禁止手写,必须扳脚本照抄输出。
## 1 整体架构与串联链路
```
用户/Agent 请求
↓
【声明闸】dual_gates.py declare(双通道,固定顺序)
├─ ✅ 意图硬路由命中(通道①优先:安全/问题) → is_danger/is_problem → must_pull 机械指令(不经裁量)
├─ ✅ 白名单命中(通道②) → is_query → 【查询闸】dual_gates.py query
└─ ❌ 未命中 → not_query → 直接分流推理/生成链路,不进入查询闸
↓
【查询闸】输出原始数据+溯源元信息 → 交付下游推理层(有效性/废弃资产/解读/打分全在下游)
```
## 2 声明闸 Declaration Gate
- ✅ 职责:任务定性路由;判定问题意图(优先)与查询意图;输出标记、命中词根、审计信息;**不检索文件、不读取源码、不做内容推理**
- ❌ 禁止:自建黑名单、内容解读、数据源拉取、有效性判断、打分、改写生成
- 硬约束:白名单**仅 2 汉字词根**;词语边界匹配(jieba 精确 2 字 token 匹配优先,无 jieba 时退化为 ASCII 词边界子串匹配并在输出中说明降级),降低与系统技能提示词重叠冲突风险
### 通道① 意图硬路由(2026-08-20 用户指令落地 + GENERALIZE-GATE 判A 泛化「declare-gate-signal-channel」模式,优先于白名单)
- 信号**不在本文件维护**:运行时按 id 加载 `~/.agents/skills/dual-gates/data/trigger_signals.json` 的信号定义(match/match_mode/must_pull),唯一真源,禁双副本
- 通道表(顺序即优先级):**安全 S-DANGER-CMD → is_danger | 问题 S-PROBLEM-GATE → is_problem**
- 命中 → `declaration_result = is_<intent>`,`must_pull` 字段透传真源 must_pull 指令列表(如 problem_gate.json 判 A / danger_cmd_gate.json 判 A),机械执行不经裁量
- 设计意图:机械可判信号不停留在「软扫描+记得扳」层,前置到任务定性唯一入口硬路由,概率空间归零;问题类输入直接进问题闸、危险命令直接进事前闸,**都不需要用户来做决定**
- S-RETRO-WORDS 已有 retro-match 独立起手式 + F6 后查兜底,不重复设防,未入通道表(登记模式库待复盘裁定);S-TEST-WORDS 测试通道 2026-08-20 用户裁定随超时闸取消一并摘除
### 定稿 2 字白名单词根库(不可随意新增 3 字及以上词条)