本文详细介绍了 Claude Code 的 8 个实用自动化Hook(Hooks),涵盖了代码自动格式化、拦截危险命令、保护敏感文件、自动运行测试及提交前置检查等场景。通过配置 .claude/settings.json,开发者可以确保 AI 在编写代码时遵循项目规范并提升安全性。

你是否曾要求 Claude Code 执行某项操作,但它却没有执行?
比如你让它格式化代码,它没做;你让它不要碰某个文件,它碰了;你让它在结束抢跑测试,它忘了。
这是因为 CLAUDE.md 只是一个建议。Claude 会阅读并遵循它,但成功率大约只有 80%。而 Hooks 则不同,它们是自动触发的操作,每当 Claude 编辑文件、运行命令或完成任务时都会执行。
以下是 8 个实用的 Hooks 配置,你可以直接复制到 settings.json 中,从此一劳永逸。

Hooks 是在 Claude Code 执行特定操作(如编辑文件或运行命令)时自动运行的动作。你只需设置一次,它们就会在后台默默工作。
最常用的两种 Hook:
你可以在项目根目录的 .claude/settings.json 中进行配置。该文件会被提交到 Git,因此你的整个团队都能自动获得相同的 Hooks。

问题:Claude 编写的代码逻辑正确,但可能违反了你的格式规则。虽然可以在 CLAUDE.md 中要求它运行 Prettier,但它并不总是记得。
方案:设置 Hook,在每次文件写入或编辑后自动运行 Prettier。你可以根据语言更换格式化工具,如 Python 使用 black,Go 使用 gofmt,Rust 使用 rustfmt。这是每个项目都应该具备的基础配置。
问题:Claude 拥有运行 rm -rf、git reset --hard、DROP TABLE 或通过 curl 访问随机 URL 的权限。虽然它通常不会这么做,但在生产环境下,“通常”并不够安全。
方案:在执行前拦截破坏性命令。创建 .claude/hooks/block-dangerous.sh 并在 settings.json 中配置。使用退出代码 2 是关键,它会阻止操作并将错误信息反馈给 Claude,让它尝试更安全的方法。
问题:Claude 可以读取和编辑项目中的任何文件,包括 .env、package-lock.json 或配置文件,而你可能并不希望它触碰这些文件。
方案:通过 Hook 拦截对特定文件的编辑请求。创建 .claude/hooks/protect-files.sh 来实现这一保护层。
问题:Claude 完成修改并告知“已完成”,但你可能在 20 分钟后准备提交时才发现测试挂了。
方案:在每次代码变更后自动运行测试套件。如果测试失败,Claude 会立即看到错误并进行修复。建议使用 tail -5 保持输出简洁,让 Claude 看到“3 个测试失败”而不是几百行的完整日志。这种反馈循环能显著提升输出质量。
问题:Claude 完成功能后立即创建 PR,但此时测试可能还是失败的,导致 Reviewer 看到红色的 CI 状态。
方案:强制要求只有在所有测试通过时才能创建 PR。创建 .claude/hooks/require-tests-for-pr.sh。这是一个硬性门槛,如果测试不通过,Claude 必须先修复错误。
问题:Claude 写的代码能跑,但违反了 ESLint 规则、风格指南或类型检查。
方案:每次编辑后进行 Lint 检查。如果 Lint 失败,Claude 会在你看代码之前就自动修复这些问题。你可以将此与自动格式化 Hook 链式调用:先运行 Prettier,再运行 ESLint。
问题:Claude 在一个会话中会运行大量 Shell 命令。如果出了问题,你需要确切知道它在什么时候做了什么。
方案:将每个 Bash 命令及其时间戳追加到日志文件中。创建 .claude/hooks/log-commands.sh。这为你提供了完整的审计追踪,便于调试。记得将 .claude/command-log.txt 添加到 .gitignore 中。
问题:Claude 完成一个任务后你忘了提交,接着它开始下一个任务,导致两个不相关的变更混在了一个提交中。
方案:当 Claude 停止处理某个任务时,自动提交所有更改。创建 .claude/hooks/auto-commit.sh。这样你的 Git 历史会保持清晰,每个任务都有原子化的提交。
你可以将以下内容整合到 .claude/settings.json 中:

配置步骤:
.claude/settings.json。.claude/hooks/ 中创建相应的脚本。chmod +x .claude/hooks/*.sh 赋予执行权限。Hooks 是区分 Claude Code 配置好坏的关键。它们在你没留意时运行,捕捉那些本该在代码审查甚至生产环境中才会发现的错误。建议今天就先设置好“自动格式化”和“拦截危险命令”这两个 Hook。

- 原文链接: x.com/zodchiii/status/20...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!