Files
dsh_shenxian/dsh-server-docs/scripts
admin 3f141c7b4d fix(cost): 修门禁三处误伤 + 新增「自动发现并上报」
用户两问:① 机制会不会影响 AI 会话?② 后续能否自动发现并上报?——① 自查出**三处真误伤**并修掉,
② 新增两条自动上报。

**修误伤(都是实测出来的,不是推测)**
1. `ls -la` 被拦 —— 正则 `-[a-zA-Z]*[lR]` 里的 `l` 命中日常 `-la` ⇒ 改为**只拦 `-R`**(递归全树)
2. `cat 小文件` 被拦 —— 盲拦一切 `cat *.txt` ⇒ 改为**按目标文件大小**(`> cat_bigfile()`:>200 KB 才拦,
   取不到大小一律放行)
3. **"提到"也拦** —— 原按**整条命令文本**匹配 ⇒ `printf 'ls -laR /x'`、测试脚本、写文档全被拦(阻塞面过大)
   ⇒ 改为**按 shell 分段、只看每段开头**(`segments()` + `re.match`):
   `cd /tmp && ls -laR /x` 照样拦(第二段以 `ls` 开头),而"引号里提到"放行
   实测 8/8:`ls -la` 放行 · `ls -laR` 拦 · `cd x && ls -laR` 拦 · `cat` 小/大 分别放行/拦 ·
   引号内提到放行 · `grep -rn` 拦 · `grep -rn | head` 放行

**新增「自动发现并上报」**(用户第 2 问的落地)
- `stop-dialog-guard.py` → `guard_health()`:读 `bash-guard.log`,**同一规则重复命中 ≥3 次** ⇒
  经 `UserPromptSubmit` 主动报告「疑似误伤,不是你操作有问题」,并给出两条处置(换写法 / `off` + 上报用户)
- 两个钩子脚本仍保持**入口即留痕**(`entry|event=…`)⇒ "钩子有没有被调用"永远可判

⚠️ 副作用须知:门禁**已生效**(重启已加载)。默认 `soft` 只拦 6 类;急停 = env `DSH_OUTPUT_GUARD_OFF=1`
或 `<工作区>/.workbuddy/bash-guard-mode` 写 `off`;`hard` 才启用 `rg`/`git log`/`du·tree` 三条。
2026-09-15 21:20:02 +08:00
..