大数跨境
0
0

第三部分-钩子和SDK - 14-定义钩子

第三部分-钩子和SDK - 14-定义钩子 NA AI Studio
2025-08-31
2
导读:定义钩子Claude Code 中的钩子允许你在工具调用执行之前或之后拦截和控制它们。

 

定义钩子

Claude Code 中的钩子允许你在工具调用执行之前或之后拦截和控制它们。这让你能够精细控制 Claude 在你的开发环境中能做什么和不能做什么。

构建钩子

创建钩子涉及四个主要步骤:


钩子构建过程
  1. 1. 决定使用 PreToolUse 或 PostToolUse 钩子- PreToolUse 钩子可以阻止工具调用的执行,而 PostToolUse 钩子在工具已经被使用后运行
  2. 2. 确定你想要监视哪种类型的工具调用- 你需要准确指定哪些工具应该触发你的钩子
  3. 3. 编写一个将接收工具调用的命令- 这个命令通过标准输入获得关于建议工具调用的 JSON 数据
  4. 4. 如果需要,命令应向 Claude 提供反馈- 你的命令的退出码告诉 Claude 是否允许或阻止操作

可用工具

Claude Code 提供了几个内置工具,你可以用钩子监控它们:

可用工具

要查看当前设置中确切的可用工具,你可以直接向 Claude 询问列表。这特别有用,因为当你添加自定义 MCP 服务器时,可用工具会发生变化。

工具调用数据结构

当你的钩子命令执行时,Claude 通过标准输入发送包含关于建议工具调用详细信息的 JSON 数据:


工具调用数据结构
{
  
"session_id""2d6a1e4d-6...",
  
"transcript_path""/Users/sg/...",
  
"hook_event_name""PreToolUse",
  
"tool_name""Read",
  
"tool_input"{
    "file_path""/code/queries/.env"
  }
}

你的命令从标准输入读取这个 JSON,解析它,然后根据工具名称和输入参数决定是否允许或阻止操作。

退出码和控制流

你的钩子命令通过退出码与 Claude 通信:



退出码
  • • 退出码 0- 一切正常,允许工具调用继续进行
  • • 退出码 2- 阻止工具调用(仅限 PreToolUse 钩子)

当你在 PreToolUse 钩子中使用退出码 2 退出时,你写入标准错误的任何错误消息都会作为反馈发送给 Claude,解释为什么操作被阻止。

示例用例

一个常见的用例是防止 Claude 读取敏感文件,如 .env文件。由于 Read和 Grep工具都可以访问文件内容,你会想要监控这两种工具类型,并检查它们是否试图访问受限制的文件路径。

这种方法让你完全控制 Claude 的文件系统访问,同时提供关于为什么某些操作受限制的清晰反馈。

 


【声明】内容源于网络
0
0
NA AI Studio
我们是您的人工智能前沿观察站。在这里,我们致力于分享最新、最深度的AI技术解读、产业洞见与应用实例。无论您是技术开发者、产品经理,还是对AI充满好奇的探索者,NA AI Studio都将为您提供最有价值的参考。
内容 113
粉丝 0
NA AI Studio 我们是您的人工智能前沿观察站。在这里,我们致力于分享最新、最深度的AI技术解读、产业洞见与应用实例。无论您是技术开发者、产品经理,还是对AI充满好奇的探索者,NA AI Studio都将为您提供最有价值的参考。
总阅读12
粉丝0
内容113