一、一句话摘要
二、为什么需要了解生命周期事件
Hook 配置的第一个字段是事件名。填错事件名,脚本写得再好也不会运行。
26 个事件散布在会话的不同阶段,各自有不同的干预权限——有些能阻断操作,有些只能旁观记录。事件选对了,Hook 才会在正确的时间点执行正确的操作。
三、核心内容
一次交互中的事件触发序列
Claude Code 处理一次完整请求时,事件按固定顺序触发。以下是最常见的主线路径:
几个可直接观察的默认行为:
- 每次新建或恢复会话,SessionStart 最先触发,紧接着 InstructionsLoaded 为每个加载的 CLAUDE.md 和 Rules 文件各触发一次
- Claude 每调用一次工具,PreToolUse 和 PostToolUse 各触发一次。一次对话中 Claude 可能调用多次工具,每次都是独立的事件对
- Stop 在 Claude 完成一轮响应时触发。一次会话中 Stop 可能触发多次,SessionEnd 只在会话结束时触发一次
四类事件与匹配器
26 个事件按干预对象分为四大类。
会话与交互事件——围绕会话本身和用户行为触发: