# dsh-escrow 红灯细分规则说明书(v0.4 草案) > 状态:**设计草案**。本文定义 v0.4 "风险自愈护栏"方向的红灯分级体系。分级明细待用户审核确认后定稿,作为实现(子 agent 修复 / 方案弹窗 / 品味路由)的基础。 > 动机(2026-08-30 真实试用反馈):v0.2 的"红灯 = 进同一队列(批准/拒绝)"太粗——`git push`(常见安全操作)与 `rm -rf /`(不可逆灾难)被同样处理,且红灯后模型不知如何修复、只会轮询空转烧 token。v0.4 改为**按后果等级分流**:红灯不是"等人批准",而是"识别风险 → 分级 → 子 agent 修复/品味放行/人工兜底"。 ## 一、分级体系 | 等级 | 语义 | 处置 | 是否可被品味覆盖 | |---|---|---|---| | **critical(级 1)** | 不可逆 / 高后果(删数据、格式化、写裸设备、改根权限、自改 dsh 自身) | 子 agent 提修复方案 → **方案弹窗必须人工确认** → 修复后重新分类 → 放行;无法修复 → 人工兜底(拒绝/手动处理) | ❌ 永不 | | **high(级 2)** | 可逆但需上下文判断(可能覆盖远程、删未跟踪、执行远程脚本、写敏感文件) | 子 agent 检查/规避 → 方案弹窗确认;**若品味已学会该签名(用户批准过)→ 自动放行** | ✅ 批准 ≥2 次可学 | | **medium(级 3)** | 低风险可逆 | 品味决定:批准 ≥2 次冷却后自动放行;未批准时弹窗问用户 | ✅ 这是品味的主场 | | **yellow(默认)** | 未命中红灯的可逆操作 | 记账放行,品味可学 | ✅ | **核心变化**:红灯不再是"拦下来等批准",而是"**拦下来让子 agent 判断/修复,方案给你确认**"。低风险(medium)才真正由品味决定。critical 是最后防线(子 agent 也不能自行放行)。 ## 二、分级路由器(红灯出现后) ``` 红灯动作 → 查品味:若该签名已在品味且是 medium/high 且已 active → 自动放行(不再打扰) → 按 severity 分流: critical → 启动子 agent:分析风险 + 提修复方案 → 弹窗人工确认 → 修复 → 重新分类放行 / 兜底人工 high → 启动子 agent:检查/规避风险 → 弹窗人工确认(或品味已学→自动放行)→ 放行 medium → 品味决定(未批准 → 弹窗问用户) ``` ## 三、规则 schema 变化(v0.4) 每条规则加 `severity` 字段(内置规则与用户规则一致): ```yaml rules: - id: block-git-push-force tools: ['bash', 'pwsh'] args: [{ key: 'command', pattern: 'git push.*--force' }] action: red severity: high # 新增:critical | high | medium(默认 high) ``` - 内置规则:severity 已按下方明细固化。 - 用户规则:可显式配 severity;不配则默认 `high`。 - 缺省 `defaultAction: yellow` 即 medium 层(品味主场)。 ## 四、内置规则分级明细(草案,待审核) ### critical(级 1)——不可逆/高后果,方案必须人工确认 | 动作 | 子 agent 修复方向 | |---|---| | `rm -rf` / `rm -r`(递归删除目录树) | 先确认路径存在与内容、先备份、改用安全删除 | | `mkfs` / `format`(格式化文件系统) | 确认目标盘、评估是否真需格式化、避免 | | `dd if=...of=/dev/sd*`(直接写设备) | 确认目标设备、避免 | | `>> /dev/sd*`(写裸设备) | 同上 | | `chmod -R 777 /` / `chown -R /`(改根权限) | 恢复权限、避免 | | `git reset --hard`(丢 commit + 工作区,未 push 则不可恢复) | 先 stash / 备份、确认 | | 自改 `$DSH_HOME/**` / `AGENTS.md` / `cordis.patch.yml`(宪法级,永不进品味) | 最敏感,子 agent 方案 + 人工确认 | | fork bomb(`:(){:|:&};:`) | 直接拒绝(无修复意义) | ### high(级 2)——可逆但需上下文判断,子 agent 检查/规避 + 方案确认(品味可学) | 动作 | 子 agent 检查/规避方向 | |---|---| | `git push --force` | 确认远程状态、备份、改用非 force 或新分支 | | `git push`(普通) | **检查本地 vs 远程冲突** → pull/merge → 或推 staging;安全则建议放行 | | `git checkout --` / `git restore`(丢工作区改动) | 先 stash / 备份 | | `git clean -fdx`(删未跟踪文件) | 先列出将被删的文件、确认 | | `curl \| sh` / `wget \| sh`(管道执行远程脚本) | 先下载并审查脚本内容 | | `shutdown` / `reboot` | 确认非必要、评估影响 | | `Remove-Item -Recurse` / `del/rd/rmdir /s` | 确认路径、先备份 | | **写敏感文件**(`.env*` / `.ssh/**` / `*.pem` / `credentials*` / `secrets/**` / `*.key` / `token*` 等) | **子 agent 判断这次写是否安全**:内容是否含真密钥、路径是否正确、是否会提交泄露;安全则建议放行 | ### medium(级 3)——低风险可逆,品味决定 - 未命中内置红灯、但用户规则标 `severity: medium` 的动作。 - 示例(未来细分候选):`git push` 到**已存在且确认无冲突**的分支(子 agent 检查通过后,用户批准几次 → 品味自动放行)、安全目录内常规 `git commit`、非敏感路径的常规文件写。 ### yellow(默认,未命中红灯) - 记账放行,品味可学。当前 `defaultAction: yellow` 即此层。 ## 五、用户自定义与免责声明 - **允许用户修改**:用户可在 `cordis.patch.yml` 配置自定义规则(含 `severity`)、调整内置规则分级(通过规则覆盖)、修改品味阈值(learnThreshold/cooldownHours 等)。 - **自负责任**:用户修改分级/规则后产生的行为(如将 `critical` 降为 `medium` 导致高后果动作被品味自动放行、或自定义规则误拦/漏拦)**由用户自行负责**。插件提供默认安全基线(本说明书的 critical/high 分级),偏离基线即偏离默认安全承诺。 - 宪法级不可降级:**自改路径**(`$DSH_HOME`/AGENTS.md/配置)与 **never-learn 名单**(`rm -rf`/`--force`/磁盘/递归删除)不因用户配置而进入品味自动放行。 ## 六、待确认点(需要你拍板) 1. **普通 `git push` 归 high(子 agent 检查冲突)还是 medium(直接品味)?** 我倾向 high:因为普通 push 也可能覆盖远程,让子 agent 先确认"这次 push 是否安全";但一旦你批准几次,品味会学 → 自动放行。如果你希望普通 push 直接走品味(不启动子 agent),改 medium。 2. **写敏感文件的"安全判断"粒度**:子 agent 判断"这次写是否安全"——是只检查路径/内容(不含密钥),还是也判断"这个配置是否真需要写"(业务语义)?前者确定性可做,后者是模型主观判断(违背"确定性规则优先")。我建议前者(路径/内容/泄露检查),后者留给你的品味。 3. **`rm -r`(非 force)是否也 critical?** 现在 rm -r 也是递归删除,我归 critical。如果你觉得 `rm -r` 一个明确临时目录是低风险,可降到 high(子 agent 确认路径)。 确认这三点后,分级明细定稿,说明书生效,作为 v0.4 实现(子 agent 调度 + 方案弹窗 + 分级路由器 + 品味路由)的基础。