Hooks 事件处理


理解触发机制

Hooks 用于在特定事件发生时执行预设处理,例如文件修改后格式化、工具执行前检查规则,或等待用户输入时发送通知。它依据会话事件触发,与按日期或间隔执行的定时任务不同。

常见事件包括:

事件触发时机常见用途
PreToolUse工具执行前检查操作条件,必要时阻止执行
PostToolUse工具成功执行后格式化或开展后续检查
Notification通知事件发生时提醒用户关注会话
Stop模型结束本轮响应时检查是否满足收尾要求
SessionStart会话开始或恢复时准备所需上下文或环境信息

应根据目标选择事件。例如,需要阻止某项操作时,应在执行前检查;操作已经成功后触发的处理,不能当作事前拦截。

image-20261026164822464

编写处理要求

Hooks 可配置于个人或项目设置文件。常见位置为 ~/.claude/settings.json、.claude/settings.json 和 .claude/settings.local.json。配置前应明确适用范围,避免将某个项目专用的处理应用到所有项目。

普通用户不必首先手工编写复杂配置,可先描述触发条件和预期行为,再审查生成的方案:

请为当前项目设计一项 Hook,用于{修改文档后执行格式检查}。

运行环境:{填写操作系统及已安装工具}。
触发范围:{当前项目中实际修改的 Markdown 文件}。
处理目标:{使用项目已有的检查工具报告格式问题}。
执行限制:{不安装新依赖,不自动提交,不修改其他类型文件}。

请先检查项目是否已有适用的检查命令。
若条件不具备,说明缺少的信息,不自行安装工具。
请提供配置位置、触发条件和测试方法,供我检查。

image-20261026143708165

验证触发结果

完成配置后,可通过 /hooks 查看已登记的处理,并使用测试文件触发相应事件。检查时,应分别确认触发对象、运行结果和失败提示,避免只验证“能够运行”,却未发现处理范围过大。

修改已有配置时,应合并所需条目,不应覆盖整个设置文件。命令式 Hook 会实际运行配置中的程序,因此需要核对脚本内容、依赖与路径。对于跨平台团队,还应检查相应命令在不同操作系统上是否适用。

image-20261026161056986

Hooks 适合规则明确、重复发生的步骤。需要理解复杂业务后才能决定如何处理的任务,应保留必要判断过程,不宜仅因能够自动触发,就将其全部转换为自动操作。

评论

登录后查看