AIUnlimited
🌳

AI基础

🌱
AI 种子

从零开始

🌿
AI 萌芽

打好基础

🌳
AI 枝干

付诸实践

🏕️
AI 树冠

深入探索

🌲
AI 森林

精通AI

🔨

AI精通

✏️
AI 草图

从零开始

🪨
AI 雕刻

打好基础

⚒️
AI 匠心

付诸实践

💎
AI 打磨

深入探索

🏆
AI 杰作

精通AI

📘

AI实战

📖
理解开源模型

开源模型的基础知识和资源

🎯
问题到模型任务

将业务问题转化为模型任务

⚡
跑通第一个模型

30分钟快速看到第一个结果

🔧
微调与评测

微调模型并评估性能

🚀
应用系统

构建实际AI应用系统

🎨
生成式AI

探索AIGC的开源模型

🤖
Agent智能体

学习Agent框架和MCP工具

📐
基础补充

LLM基础知识和评测

🎓

Claude 学院

🤖
Claude 101 入门

用 Claude 学习 AI 基础知识

💻
Claude Code 101 入门

让 Claude 成为你的结对编程伙伴

🤝
Claude Cowork 入门

与 Claude 协作完成复杂项目

⚙️
Claude 平台 101

使用 Claude API 构建应用

实验室

已加载 7 个实验
🧬神经网络沙盒🤖AI 还是人类?🥋提示工程道场🏁算法竞速🧠AI 知识挑战🏗️系统设计画布
🎯模拟面试进入实验室→
🚀

职业发展

🚀
面试发射台

开启你的旅程

🌟
行为面试精通

掌握软技能

💻
技术面试

通过编程轮次

🤖
AI与ML面试

ML面试精通

🏆
Offer与未来

拿下最好的Offer

立即开始
AIUnlimited

AI 教育平台

沪ICP备18025655号-11

学习

  • AI基础
  • AI实战
  • Claude学院
  • 实验室
  • 职业发展

社区

  • 关于
  • 常见问题

支持

  • 服务条款
  • 隐私政策
  • 联系我们
AI & 工程学习计划›💻 Claude Code 101 入门›课程›钩子
🪝
Claude Code 101 入门 • 高级⏱️ 6 分钟阅读

钩子

Hooks(钩子)

Hooks 允许你在 Claude Code 生命周期的特定时间点运行命令。Hooks 与本课程涵盖的其他内容的关键区别在于 hooks 是 确定性的——它们总是会运行。

为什么使用 Hooks

你可以在 CLAUDE.md 中告诉 Claude 在每次文件编辑后运行 Prettier。大多数时候它会这样做。但有时不会。Hook 确保每次都这样做,没有例外。

常见用例包括:

  • 文件编辑后自动格式化
  • 记录所有执行的命令以满足合规要求
  • 阻止修改生产文件等危险操作
  • Claude 完成任务时给自己发送通知

工作原理

Hooks 在你的 settings.json 中配置。你选择一个事件,可选地设置匹配器来指定适用的工具,然后提供要运行的命令。一些最常见的事件:

  • PreToolUse — 在工具调用前运行
  • PostToolUse — 在工具调用完成后运行
  • UserPromptSubmit — 在你提交提示时、Claude 处理前运行
  • Stop — 在 Claude 完成响应时运行
  • Notification — 在 Claude 发送通知时运行

这些只是你可以挂钩的事件中的一部分——Claude Code 支持更多。完整列表请参阅 hooks 参考。

你可以通过 Claude Code 内的 /hooks 命令或直接编辑 settings.json 来配置它们。

实际示例

最常见的 hook:编辑后自动格式化。设置一个 PostToolUse hook,匹配器为 "Edit|MultiEdit|Write",这样它会在 Claude 修改文件时触发。命令检查文件扩展名并运行相应的格式化程序——TypeScript 用 Prettier,Go 用 gofmt,或你项目使用的任何工具。

使用 PreToolUse 阻止操作

PreToolUse hooks 可以在工具调用执行前 阻止它们。你的 hook 通过 stdin 接收工具名称和输入(JSON 格式)。退出码决定行为:

  • 退出码 0 — 正常继续。
  • 退出码 2 — 阻止操作。stderr 消息会作为反馈提供给 Claude,这样它就知道为什么被阻止并可以调整。
  • 任何其他退出码 — 非阻塞错误,会显示给你但不会停止任何操作。

这就是你执行硬性规则的方式。阻止写入生产配置目录。阻止包含 rm -rf 的 bash 命令。阻止提交到 main 分支。无论你的团队需要 保证 什么,而不是建议。

与团队共享 Hooks

在 .claude/settings.json 中配置的 hooks 是项目级的,可以提交到仓库中。这意味着你的整个团队会自动获得相同的 hooks。在命令中使用 环境变量来引用存储在项目中的脚本,这样无论 Claude 的当前工作目录是什么,它们都能正常工作。

第 22 课,共 23 课已完成 0%
←高级功能

讨论

登录 参与讨论

CLAUDE_PROJECT_DIR

回顾

Hooks 让你对 Claude Code 的行为进行确定性控制。使用 PostToolUse 进行自动格式化和日志记录。使用 PreToolUse 阻止危险操作。使用 /hooks 或在 settings.json 中配置它们。并将它们提交到仓库中,这样你的团队也能获得它们。

如果某件事需要每次都发生且不能失败,不要把它放在提示中。把它放在 hook 中。