文章目录
- 1. 引言
- 2. Hooks 是什么?
- 3. Hooks 配置(用户级 vs 项目级)
- 4. 八种事件类型汇总
- 5. 命令型 Hooks
- 5.1 基础语法(最常用)
- 5.2 Hook 能拿到什么上下文?
- 5.3 退出码怎么控制“阻断/不阻断”?
- 6. 提示型 Hooks
- 6.1 基础语法
- 5.2 响应格式(核心)
- 7. 案例模板
- 7.1 案例:SessionStart 做环境体检(不阻断)
- 7.2 案例:PreToolUse 拦截危险 Bash(阻断)
- 7.3 案例:PreToolUse 做敏感信息检测(阻断)
- 7.4 案例:PostToolUse 自动格式化 + 自动跑测试(不阻断)
- 7.5 案例:Notification 做系统通知(不阻断)
- 8. 常见问题
- 9. 文末
在前面的博客,博主已经讲解了 Claude Code 相关的概念,有兴趣的同学可以参考下:
- 《Claude Code 完整指南(一):安装、CLI 实战、IDE 集成一次讲透》
- 《Claude Code 完整指南(二):终端命令全解析(收藏级)》
- 《Claude Code 完整指南(三):命令背后的数据流动》
如果你已经在用 Claude Code 写代码,你一定遇到过这些“重复但必要”的动作:
- 写完文件要跑格式化、lint、单测
- 运行危险 Bash 之前想要一层保险(尤其是 、)
- 想在会话开始时自动检查环境(Node/Python 版本、依赖是否安装)
- 想在 Claude “准备停下”时强制做一次自检:测试过了吗?有未提交的改动吗?
Hooks 的价值就在于:把这些动作从“ 你记得做” 变成 “系统自动做” ,并且可以做到“该阻断就阻断、该后台跑就后台跑、该提醒就提醒”。
Hooks 是 Claude Code 的事件驱动自动化系统:在特定事件触发时,自动执行一组 Hook。
它主要有两种形态:
- 命令型 Hooks(command):运行 Shell 命令/脚本,适合自动化与校验(格式化、检查、通知、跑测试……)。
- 提示型 Hooks(prompt):在 / 事件里,让 Claude 再做一次“停下前的质量检查”,根据结果决定继续还是停止。
你可以把它理解为:
- SessionStart/End:会话生命周期钩子
- PreToolUse/PostToolUse:工具执行前/后钩子(Write/Edit/Bash/Read…)
- Stop/SubagentStop:模型准备结束前的“收尾门禁”
- Notification:系统通知的自定义处理
支持分层配置,Hooks 通常按是否团队共享来决定目录。
项目级(推荐团队共享):
- 文件:
- 适合:团队统一的格式化、测试、危险命令拦截、质量门禁等
- 配套建议:把脚本也放进仓库,例如 ,让团队开箱即用
项目级本地(仅自己用,不提交):
- 文件:
- 适合:个人路径相关脚本、个人通知方式、私有工具等
- 配套建议:加入
用户级(跨项目生效):
- 文件:
- 适合:你个人的通用 Hooks(比如任何项目都启用的通知/危险命令拦截)
小贴士:团队规范建议 “项目级为主、用户级为辅”,项目级让仓库可复制;用户级放个人偏好。
写脚本就能自动化
GPT plus 代充 只需 145
关键点:
- :用于筛选工具(通常写正则/或模式串),比如 、。
- :
- :Hook 失败会阻断当前动作(适合安全校验、门禁)
- :Hook 失败不阻断(适合格式化、统计、通知)
命令型 Hooks 通常可以通过环境变量拿到上下文(不同事件变量略有差异,常见如):
更稳妥的写法:脚本里同时支持读取 (JSON)与环境变量,避免某些环境差异导致取不到值。
常见约定(建议你按这个写,团队最好统一):
让 Claude 在“停下前”做质量门禁
提示型 Hooks 仅用于 / :当 Claude 觉得“差不多可以结束了”,会先跑一次这个提示,让它自检并输出 JSON 决策。
GPT plus 代充 只需 145
你可以用它来实现 “Claude 自己给自己验收” 的体验,不满足条件就继续把事情做完,满足才停。
下面的模板尽量遵循一个原则:高风险校验 blocking=true,耗时工作 blocking=false。
依赖提示:后面的脚本示例会用到 来解析 JSON(macOS 可用 )。
:检查 Node/Python/Git 状态、依赖是否安装等(按你的项目改)。
配置如下:
GPT plus 代充 只需 145
示例代码如下:
思路:从 (或 stdin JSON)里取出 ,匹配 、 等高危模式,命中就 并在 stderr 输出原因。
GPT plus 代充 只需 145
示例代码如下:
适用场景:Write/Edit 写入内容前,扫描是否疑似 Key/密码/Token,命中直接拦截。
GPT plus 代充 只需 145
示例代码如下:
GPT plus 代充 只需 145
示例代码如下:
示例代码如下:
GPT plus 代充 只需 145
建议:
- 格式化脚本按后缀选择
- 测试脚本“只跑与当前文件相关的最小集合”,避免每次都全量测试拖慢体验
(macOS)可以用 或 ,从 里取 发系统通知。
示例脚本如下:
GPT plus 代充 只需 145
问题一:Hook 不执行
可以通过如下方式排查:
开调试:
检查脚本可执行权限:
GPT plus 代充 只需 145
脚本自测(用 stdin 模拟 JSON):
问题二:无故被阻断
的 Hook 一定要做到:
- 只在命中明确条件时才
- stderr 输出清晰原因(让 Claude 能把“为什么被拦”解释给你)
问题 三:变慢很明显
- 把耗时任务(全量测试、扫描整个仓库)改成 或改成“增量/抽样”
- 在脚本里加超时/短路条件(比如只对特定目录、特定后缀执行)
通过阅读本文,相信大家已经系统理解了 Claude Code 中 Hooks 的整体设计与实战价值:它并不是零散的脚本技巧,而是一套事件驱动的自动化与质量门禁机制。通过在 Session、Tool 执行前后以及 Stop 阶段合理配置命令型与提示型 Hooks,可以将格式化、测试、危险命令拦截、敏感信息校验等“重复但关键”的操作交由系统自动完成,把人为自觉升级为流程约束。
希望本文能对大家深入理解和落地使用 Claude Code Hooks 有所帮助,也欢迎在评论区分享你的实战配置、踩坑经验与优化思路。感谢阅读,本文完!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/241166.html