一、一句话摘要
二、为什么需要了解生命周期事件
Hook 配置的第一个字段是事件名。填错事件名,脚本写得再好也不会运行。
三、核心内容
一次交互中的事件触发序列
Claude Code 处理一次完整请求时,事件按固定顺序触发。以下是最常见的主线路径:
几个可直接观察的默认行为:
- 每次新建或恢复会话,SessionStart 最先触发,紧接着 InstructionsLoaded 为每个加载的 CLAUDE.md 和 Rules 文件各触发一次
- Setup 仅在
--init-only、-p --init或-p --maintenance启动时触发,不在常规启动中出现 - Claude 每调用一次工具,PreToolUse 和 PostToolUse 各触发一次。一次对话中 Claude 可能调用多次工具,每次都是独立的事件对
- Claude 一次性并行调用多个工具时,每个工具各自触发 PreToolUse/PostToolUse,全部完成后 PostToolBatch 触发一次
- 用户输入
/skillname直接路径触发 UserPromptExpansion,在 Claude 处理前执行 - Stop 在 Claude 完成一轮响应时触发。一次会话中 Stop 可能触发多次,SessionEnd 只在会话结束时触发一次
四类事件与匹配器
28 个事件按干预对象分为四大类。
会话与交互事件——围绕会话本身和用户行为触发: