Hook 为什么不触发?
一个悄无声息、从不运行的 Hook,是最常见的 Agent 配置谜题之一。下面教你用 Berth 把它揪出来。
1. 事件名对吗?
Hook 在特定生命周期事件上触发(例如工具调用前的 PreToolUse、调用后的 PostToolUse)。若事件名对不上任何真实事件,Hook 永远不会运行。Berth 会显示每个 Hook 被设定为何时触发。
2. 是不是被全局关掉了?
disableAllHooks 设置会一次性关闭所有 Hook。Berth 的健康检查会把它标出来——这是第一个要排除的因素。
3. matcher 是不是太窄?
很多 Hook 用 matcher 来锁定特定工具。若 matcher 匹配不到你正在用的工具,就什么都不会发生。对照会话的工具时间线里的工具名,检查 matcher。
4. 命令文件存在吗?
Hook 指向一个命令或脚本。若路径错误或文件缺失,Hook 无法运行。Berth 会在健康检查里校验 Hook 的入口路径。
参考来源
- 01
- 02