HTTP Hook

本地脚本还是远程端点,两种 Hook 执行方式的选择依据与配置差异

实战14 分钟

一、为什么需要选择

command 类型处理器运行本地 Shell 命令,HTTP 类型处理器向远程 URL 发送 POST 请求。两者挂载在同一套生命周期事件上,接收相同的 JSON 数据,但执行位置和依赖链完全不同。

选错的代价:

  • 用 command 类型做远程通知——每台开发机器都要安装 curljq,维护认证脚本,跨平台适配
  • 用 http 类型做本地文件操作——请求绕到远端再回来,多一跳网络延迟,断网时直接失效

两种类型各有不可替代的场景。这一节的核心是建立清晰的选择标准。

二、限制与红线

SessionStart 不支持 HTTP 类型

26 种生命周期事件中,SessionStart 是唯一仅支持 command 类型的事件。无论需求是什么,SessionStart 处理器只能用本地 Shell 命令。

其余 25 种事件中,9 种支持全部四种类型(command / http / prompt / agent),16 种支持 command + http。HTTP 类型的覆盖范围是 25/26。

网络依赖

HTTP 类型的请求经过网络。离线环境、高延迟网络、防火墙限制外部访问时,HTTP 类型不可用。

阻断型事件(如 PreToolUse)挂载 HTTP 处理器时,远端响应时间直接影响 Claude 的执行速度。远端服务 500ms 才返回,每次工具调用都多等 500ms。

认证安全约束

HTTP 类型通过 headers 字段传递认证信息,环境变量引用必须列入 allowedEnvVars 白名单才会被展开。未列入白名单的 $VAR_NAME 引用被替换为空字符串——不是报错,而是静默失效。

$API_TOKEN 只有出现在 allowedEnvVars 数组中时才会被替换为环境变量的实际值。这是白名单机制,防止 headers 中意外泄露其他环境变量。

三、怎么选

场景速查表

付费内容

继续阅读完整课程

购买后即可解锁全部 16 个功能模块、实战场景与深度配置。

¥199¥399
  • 30 分钟完成第一个真实任务
  • 实战场景 + 深度配置
  • 长期访问,持续更新
Hooks 完全指南12/12