promptgarten 🌱
🌍 DE
指南●●○4 分钟 · +30 XP

Claude Code 中的 Hooks

Hooks 让你可以在 Claude Code 工作流程的特定节点自动执行自定义命令——例如在每次 tool 调用之前。

什么是 hook

Hook 是你自己定义的 shell 命令,Claude Code 会在流程中的特定节点自动执行它——这不是模型可选择性决定的行为,而是由系统确定性触发的。这样就能强制执行一些不依赖模型"随意发挥"的规则。

重要的 hook 事件

  • PreToolUse:在某个 tool 执行之前运行——甚至可以阻止该 tool 的执行
  • PostToolUse:在某个 tool 执行之后运行
  • UserPromptSubmit:在你发送一条消息时运行
  • SessionStart / Stop:在一个 session 开始或结束时运行

Hooks 的用途

  • Guardrails:在危险命令(例如 rm -rf)执行之前自动拦截
  • 每次文件修改后自动格式化或做 lint 检查
  • 在特定操作发生时记录日志或发送通知
  • 在 agent 继续执行之前进行自定义校验

配置方式

Hooks 在 Claude Code 的 settings.json 中配置——可以是项目级别,也可以是全局级别——因此它们独立于具体的 prompt,可以稳定复现,因为它们运行在模型之外。

示例

一个 PreToolUse hook 会检查每条 Bash 命令是否包含 'rm -rf' 这种模式,并在命令真正运行之前就以错误提示中止执行。

小测验

Hook 与 prompt 中的普通指令有什么区别?

来源

相关主题

Claude Code:Anthropic 的命令行 agent ●●○斜杠命令、Hooks 等:如何操控 Claude Code ●●○自主 agent 的护栏(guardrails) ●●●