什么是 Claude Hooks ?
可以分开来看,Claude 是一个帮你写代码/干活的 AI。
Hook 是一个自动触发的动作。
Claude Hooks 就是可以在 Claude 工作过程中,自动执行你设置的动作。
有什么用?
我们在让 Claude 帮我们干活时,它是有一些固定阶段的,比如:
收到你的指令的时候
生成代码前
生成代码后
保存文件前
执行命令前
Hooks 的作用就是:
当 Claude 走到某一步时,自动帮你执行一段脚本 / 程序。
举个生活的例子:
你每次买东西付完款之后,银行卡都会收到一条扣费短信。这其实就可以看成是一个 Hook,当银行卡支付成功这个动作发生的时候,自动触发一个发短信的脚本。
Apple watch可以在你摔倒的时候自动发送SOS求救,也可以看成是一个 Hook。当摔倒这个动作发生的时候,就触发 SOS求救。
那我们在使用 Claude 的时候,也会有很多固定的阶段,在这些固定的阶段,我们使用 hooks 就可以做一些很有意思的事情。
案例 1,自动格式化代码:
Claude 每次生成代码后 → 自动跑 prettier→ 帮你格式化
案例 2:自动记录日志
每次 Claude 改了文件 → 自动把改动写进日志 → 方便你回溯
案例 3:自动跑测试
Claude 写完功能后 → 自动跑测试 → 如果报错就提醒你
hooks 钩子可以在哪些时候运行?
就像上面我们付款的例子,付完款之后可以使用 hooks 去给我我们发一条短信,告诉我们扣款信息。
那 claude hooks 都可以在哪些时候运行呢?
PreToolUse:在工具调用前运行(可阻止调用)
PermissionRequest:在显示权限对话框时运行(可允许或拒绝)
PostToolUse:在工具调用完成后运行
UserPromptSubmit:在用户提交提示后、Claude 处理之前触发
Notification:当 Claude Code 发送通知时触发
Stop:当 Claude Code 完成回复时运行
SubagentStop:在子代理任务完成时运行
PreCompact:在 Claude Code 即将执行压缩操作前运行
SessionStart:在 Claude Code 启动新会话或恢复现有会话时运行
SessionEnd:在 Claude Code 会话结束时运行
实操演示
我们知道 claude code 可以自动帮我们完成工具调用,比如查看当前目录下有哪些文件。
这其实就是 claude code 去调用 Bash 帮我们完成的,不使用 claude code ,你直接在命令行使用 ls 命令也能查看。
任务:
现在我们就想要去配置一个 Claude hooks ,当 claude 调用 Bash 命令之前,我们自动把它调用的这个命令,以及这个命令是干什么用的,给它记录到一个日志文件里面。
也就是,当 claude 在调用工具之前,触发记录日志这个动作。
下面看看具体怎么做:
为了更好的阅读体验,来飞书看吧:
Comments on "快速上手 Claude Hooks ,一篇文章带你搞懂" :