posttooluse-guard — 「改 skill / 规则后提示开新会话」¶
状态:已上线并端到端验证通过(2026-09-23)
背景与结论¶
来自 docs/HANDOFF.md 3.2 的「可选增量」:改 ~/.trae-cn/skills/** 或 user_rules/** 后,
提示「开新会话」。动机是改这两处会使上游前缀缓存失效(实测约 0.35 元/次,见 SOP 18.4.1),
在旧会话里继续对话等于反复踩这条成本。
实测结论(2026-09-23):本机 Trae 支持 PostToolUse ——
| 阶段 | 判据 | 结果 |
|---|---|---|
| 事件触发 | probe.jsonl 出现记录 |
✅ 2 条,stdin 11 个键与官方契约一致 |
| 回注通路 | 会话出现 <hooks_context event_phase="post_tool_use"> |
✅ 读到带实时时间戳的探针文本 |
| 静默可控 | 取消输出后不再注入 | ✅ |
详见 docs/SOP.md 第三十二节。
文件¶
| 文件 | 用途 |
|---|---|
skill-edit-guard.py |
正式实现:写操作命中 skill / 规则目录时回注提醒;未命中静默 |
posttooluse-probe.py |
验证探针(备用):置 INJECT_PROBE=True 可复测回注通路 |
probe.jsonl |
验证阶段抓到的真实事件记录(2 条) |
backup/ |
hooks.json 备份台账,见 backup/README.md |
配置要点¶
- hooks.json 的
PostToolUse组,matcher: "*",命令指向skill-edit-guard.py - 用
matcher: "*"而非收窄到写类工具名,是为了避免工具改名后静默失效 ([ -f ]守卫找不到脚本即跳过、不报错,见 SOP 30.9);脚本首步即判断路径,未命中直接退出 - 脚本改动静默生效(hook 每次新起进程),只有 hooks.json 变更才需重启 Trae
验证方法¶
# 离线用例(无需重启):模拟 PostToolUse 的 stdin
echo '{"hook_event_name":"PostToolUse","tool_input":{"file_path":"/home/rain/.trae-cn/skills/x/SKILL.md"}}' \
| python3 skill-edit-guard.py
端到端验证需重启 Trae 后触发一次真实写操作,并观察会话中是否出现 [规则变更提醒]。
来源:
/home/rain/Documents/services/token_proxy/posttooluse-guard/README.md| 最后更新:2026-09-23 02:25(由build/sync.py同步,请勿在站点侧修改)