Claude Code 有个钩子功能,知道的人用起来像开了外挂

0 阅读3分钟

我有段时间一直有一个小困扰。

每次让 Claude Code 帮我写完一段代码,我都要手动跑一遍 lint,手动格式化,有时候还要手动更新一下 changelog。不是什么大事,但每次都要做,每次都要记,时间久了就觉得:这些明明可以自动的事,为什么还在手动做?

后来我发现 Claude Code 有一个叫 Hooks 的配置项。

配好之后,我让 Claude 生成完代码,它自动跑 lint,自动格式化,session 结束前自动把关键决策写进 changelog。全程不需要我记,不需要我喊,它自己做。

你以为 Claude Code 是工具,其实配好 Hooks 之后,它是一个有记忆、有反应、会自动收尾的系统。

Hooks 是什么

Hooks 是 Claude Code 的一个配置项,让你可以在特定事件发生时自动触发自定义 shell 命令。

触发时机有四种:PreToolUse(工具操作前)、PostToolUse(工具操作后)、Notification(Claude 发通知时)、Stop(session 结束时)。

你可以在这些时间点挂载任何 shell 命令。不需要你记,不需要你喊,事件发生,命令自动跑。

配置写在 ~/.claude/settings.json(全局)或 .claude/settings.json(项目级)里。

三个最实用的场景

场景一:写完代码自动跑 lint + 格式化

Claude 每次用 Write 或 Edit 工具修改文件后,自动跑 lint 修复 + Prettier 格式化。你不需要记,不需要在提交前补跑——它写完就处理好了。CI 不再因为格式问题打回来。

场景二:执行危险命令前自动拦截

PreToolUse 的 Hook 如果返回非零退出码,Claude 会停止执行。你可以写一个脚本检测命令里是否包含 rm -rfDROP TABLE 等高风险关键词,包含就阻断,不包含就放行。比权限配置更灵活,因为逻辑你自己控制。

场景三:session 结束时自动存档

每次 session 结束,自动把时间戳和修改文件列表写进项目日志。不需要你手动整理,关掉就有记录。

从一个 Hook 开始

不需要一上来就配一堆。找你现在用 Claude Code 工作时最常手动做的那件事——大概率是某种格式化、lint,或者提交前检查——先把那一件事挂进 PostToolUse。

跑几次,感觉对了,再往外扩。

配好之后你会有一种奇怪的感觉:不是「哇这好厉害」,而是「这个早就该有」。

你现在用 Claude Code 有没有什么动作是每次都要手动做、但完全可以自动化的?评论区说说,我们一起想想能不能用 Hooks 解掉。

下一篇聊多 session 并行——同一个项目同时跑多个 Claude,怎么分工、怎么不打架。关注不迷路。


更多深度内容与完整文章,欢迎关注我的微信公众号:SamLai 效率研习社

主要分享:

AI 编程与开发效率

技术趋势与工程思考

实用工具与工作流