OpenClaw 中的 Hooks 与 WebHooks,是AI 助理的自动化规则

AI 助理设置的一些 “如果发生……就自动做……” 的自动化规则,让助理的行为更贴合你的使用习惯。

OpenClaw 中的 Hooks 配置主要分为两类:一类是内部 Hooks,在 Gateway 内部响应特定事件而运行;另一类是外部 Webhooks,通过 HTTP 请求从外部触发。

内部 Hooks 主要用于”在 Agent 运行时,我想插入一些自定义逻辑”;而外部 Webhooks 则用于”当外部世界发生某事时,我想唤醒我的 Agent”。

  • 内部 Hooks:事件驱动的自动化脚本,是在 Agent 生命周期的特定时刻(如执行 /new/reset 命令或启动时)自动运行的脚本。
  • 外部 Webhooks:HTTP 触发入口,允许其他服务(如 GitHub、Gmail)通过 HTTP 请求来唤醒或控制你的 OpenClaw Agent。通过 Webhooks,OpenClaw 可以从“聊天助手”升级为“响应式系统”,实现外部事件驱动的自动化操作和智能代理运行,极大提升工作流自动化和跨平台集成能力。
特性内部 Hooks外部 Webhooks
触发方式Agent 内部事件(命令、生命周期)外部 HTTP 请求(GitHub、Gmail 等)
主要用途流程拦截、日志记录、修改上下文从外部系统唤醒或调用 Agent
配置位置通过 openclaw hooks CLI 管理openclaw.jsonhooks 字段中配置
开发方式编写 handler.tsHOOK.md配置 openclaw.json 和编写转换代码(可选)
本质事件驱动的插件系统HTTP API 入口

内部 Hooks by 26.3.14

o  Hooks ------------------------------------------------------------------+
|                                                                          |
|  Hooks let you automate actions when agent commands are issued.          |
|  Example: Save session context to memory when you issue /new or /reset.  |
|                                                                          |
|  Learn more: https://docs.openclaw.ai/automation/hooks                   |
|                                                                          |
+--------------------------------------------------------------------------+
|
*  Enable hooks?
|  [•] Skip for now
|  [ ] 🚀 boot-md
|  [ ] 📎 bootstrap-extra-files
|  [ ] 📝 command-logger
|  [ ] 💾 session-memory

安装时建议4个全选中

Hook 的四个选项的含义

  • 💾 session-memory (会话记忆):当你执行 /new 或 /reset 命令重置会话时,它会自动将当前会话的上下文保存到你的工作区目录中(默认为 ~/.openclaw/workspace/memory/
  • 📎 bootstrap-extra-files (额外启动文件):在 Agent 启动引导阶段,允许你通过配置将一些额外的文件(如特定的指令文件)注入到工作区中,为 Agent 提供初始上下文
    • 比如:为 AI 助理提前加载你准备好的“背景知识”或“操作指南”。
  • 📝 command-logger (命令日志):将所有发出的 Agent 命令(如 /new、自定义命令等)记录到日志文件中(位于 ~/.openclaw/logs/commands.log),方便进行审计或问题排查
  • 🚀 boot-md (启动指令):启用后,当 Gateway 启动时,会自动执行你工作区中的 BOOT.md 文件。你可以通过这个文件来设定 Agent 启动时需要自动执行的任务
    • 比如:让 AI 助理在“上班”时,自动执行你写在开机指南里的第一项任务。
    • 可能依赖于 openclaw config get hooks.internal.enabledtrue设置。也就是 ~/.openclaw/openclaw.json 中为 "hooks": { "internal": { "enabled": true } }

在安装后启用的方法

# 查看所有hook的状态
openclaw hooks list                  # 注意:ready是就绪,不是启用状态。
openclaw hooks info boot-md          # 查看 boot-md 的详细信息(包括是否启用)
openclaw hooks check                 # 检查所有 Hooks 的健康状态(部分版本支持)

# 如果没有被启用,逐一启用
openclaw hooks enable session-memory
openclaw hooks enable boot-md
openclaw hooks enable bootstrap-extra-files
openclaw hooks enable command-logger

# 另一种确认方法,从配置文件中查看
openclaw config get hooks.internal.enabled  # 总开关
openclaw config get hooks.internal.entries.<单一 Hook>  # session-memory.enabled  boot-md.enabled bootstrap-extra-files.enabled command-logger.enabled

验证 session-memory 有没有生效方法:

  1. 在聊天中执行 /new 命令(注意是向 Agent 发送的命令,不是终端命令)
  2. 检查 ~/.openclaw/workspace/memory/ 是否已创建,并包含会话记忆文件。

安装 Hook 包:你可以从 npm 或本地路径安装打包好的 Hook:

openclaw plugins install <package-name>        # 从 ClawHub 或 npm 安装
openclaw plugins install /path/to/my-hook-pack # 从本地路径安装

外部 Hooks / WebHooks

Webhooks 插件 – OpenClaw

基础配置:在 ~/.openclaw/openclaw.json 中启用 Webhook 服务并设置认证令牌:

{
  "hooks": {
    "enabled": true,                     // 必须为 true
    "token": "your-strong-secret-token", // 必填,用于验证请求
    "path": "/hooks"                     // 可选,默认为 "/hooks"
  }
}

Gateway 启动后,Webhook 端点默认为 http://127.0.0.1:18789/hooks

认证方式:发送请求时,需要在 Header 中携带令牌:

Authorization: Bearer <token> (推荐)
x-openclaw-token: <token>

主要端点:OpenClaw 提供了几个预设的端点:

  • POST /hooks/wake:用于简单的”唤醒”触发。请求体需包含 text 字段描述事件。
  • POST /hooks/agent:运行一个隔离的 Agent 回合。可以指定 message、独立的 sessionKey、覆盖的 model 等。
  • POST /hooks/<name>:用于处理自定义映射(如 Gmail、GitHub 的特定 Webhook 负载)。

示例:通过 curl 发送 wake 请求

curl -X POST http://127.0.0.1:18789/hooks/wake \
  -H 'Authorization: Bearer your-strong-secret-token' \
  -H 'Content-Type: application/json' \
  -d '{"text":"收到新邮件,请总结一下","mode":"now"}'

安全建议

  • 将 Webhook 端点置于 loopback、tailnet 或可信的反向代理之后,避免直接暴露在公网。
  • 使用专用的、高强度的 token,不要复用 Gateway 的认证令牌。
  • 默认情况下,请求体被视为不受信任的内容。如果你必须信任特定来源,可以在映射中设置 allowUnsafeExternalContent: true,但这有安全风险。

发表回复