跳转至

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 同步,请勿在站点侧修改)