加入会员
Skip to content

访问受限

会员专属内容

Hooks

课程导读

这节课介绍 Claude Code 的 Hooks 功能。Hooks 可以在固定节点自动执行预设动作,适合用来做通知、检查、提醒等自动化流程。

一、查看 Hooks 触发时机

Claude Code 官方文档中有 Hooks 的触发时机说明和生命周期图。

Claude Code Hooks 官方文档
英文名中文名作用
SessionStart会话开始会话开始、恢复、清空或压缩后重建时触发,可注入项目上下文。
Setup初始化设置--init-only,或打印模式 --init / --maintenance 时触发,适合一次性准备。
UserPromptSubmit用户提交提示用户 prompt 进入 Claude 前触发,可校验、阻止或补充上下文。
UserPromptExpansion提示展开用户输入命令展开成 prompt 前触发,可阻止展开或追加上下文。
PreToolUse工具调用前工具参数生成后、执行前触发,可允许、拒绝、询问、延迟或改写输入。
PermissionRequest权限请求权限对话框显示前触发,可代替用户批准、拒绝或更新权限规则。
PermissionDenied权限被拒自动模式分类器拒绝工具调用后触发,可记录并提示模型可重试。
PostToolUse工具成功后工具成功执行后触发,可给 Claude 反馈、追加上下文或替换输出。
PostToolUseFailure工具失败后工具失败或报错后触发,用于记录失败并给 Claude 补充纠正信息。
PostToolBatch工具批次后一批并行工具全部结束后、下一次模型调用前触发,适合批量注入上下文。
Notification通知Claude Code 发送权限、空闲、认证或 elicitation 通知时触发,适合转发提醒。
SubagentStart子代理开始通过 Agent 工具创建 subagent 时触发,可给子代理注入初始上下文。
SubagentStop子代理结束subagent 完成响应时触发,可阻止其停止并要求继续。
TaskCreated任务创建TaskCreate 创建任务时触发,可强制命名规范或阻止不合格任务。
TaskCompleted任务完成任务被标记完成时触发,可先跑测试或检查,不通过就阻止关闭。
Stop主代理停止主 Claude 代理完成回复时触发,可阻止停止并要求继续完成条件。
StopFailure停止失败轮次因 API 错误结束时触发,用于日志、告警或恢复动作。
TeammateIdle队友空闲Agent team 队友即将空闲时触发,可作为质量门并要求继续工作。
InstructionsLoaded指令加载CLAUDE.md 或 rules 文件加载进上下文时触发,用于审计和可观测性。
ConfigChange配置变更settings、托管策略或 skill 配置变化时触发,可审计或阻止未授权变更。
CwdChanged目录变化会话中的工作目录改变时触发,可切换环境、工具链或动态监听文件。
FileChanged文件变化被监听文件在磁盘变更时触发,常用于重新加载 env 或维护 watcher。
WorktreeCreate创建工作树--worktree 或 worktree 隔离 subagent 创建工作副本时触发,可替换默认 git 行为。
WorktreeRemove移除工作树worktree 被移除时触发,适合清理非 git 工作副本或归档状态。
PreCompact压缩前自动或手动 /compact 前触发,可阻止压缩或检查压缩条件。
PostCompact压缩后压缩完成后触发,可记录摘要或同步外部状态。
Elicitation请求用户输入MCP 服务器在工具执行中请求用户输入时触发,可程序化响应或拒绝。
ElicitationResult用户输入结果用户响应 MCP 请求后、发送回服务器前触发,可观察、改写或阻止响应。
SessionEnd会话结束会话退出、清空、切换或登出时触发,用于清理任务和统计。

二、查看当前 Hooks

在 Claude Code 中输入:

text
/hooks

这个命令可以管理和查看当前 Hook 配置。

界面中会列出 Claude Code 支持的一些触发节点。

例如:

节点含义
NotificationClaude Code 发送通知时触发
SessionStart新会话启动、恢复、清空或压缩后重建时触发
Stop主 Claude 代理完成回复时触发
PreToolUse工具调用执行前触发
PostToolUse工具成功执行后触发

节点后面的数字,表示当前这个事件下面已经配置了多少个 Hook。

选中某个节点后按回车,可以查看这个 Hook 的触发条件、匹配规则和具体执行动作。

这些内容稍作了解即可。真正新增或修改 Hook,通常是改配置文件,或者直接让 Claude Code 帮你配置。

三、Hooks 保存位置

Hooks 通常保存在 Claude Code 的设置文件中。

常见位置如下:

配置文件作用
~/.claude/settings.json当前用户的 Claude Code 配置
.claude/settings.json当前项目共享配置
.claude/settings.local.json当前项目本地配置

注意

如果 Hook 里包含飞书 Webhook、API Key 或其他凭据,更建议放在本地个人配置中,不要提交到仓库。