OpenClaw Hooks 支持情况整理
OpenClaw 是开源的 AI 编码助手,提供事件驱动的 Hook 系统,用于在 Agent 命令与生命周期事件触发时自动执行自定义逻辑。本文档整理其目前支持的 Hook 类型、事件、内置实现与 CLI 管理命令。
一、Hook 分类
OpenClaw 将 Hook 分为两大类:
| 类型 | 说明 |
|---|---|
| Internal Hooks(内部 Hook) | 运行于 Gateway 内部,监听 Agent 命令与生命周期事件 |
| Webhooks(外部 Webhook) | 外部 HTTP 入口,允许其他系统主动触发 OpenClaw 工作 |
二、支持的事件列表
内部 Hook 可订阅以下事件,事件名需严格匹配:
命令类事件
| 事件名 | 触发时机 |
|---|---|
command:new | 用户执行 /new 命令 |
command:reset | 用户执行 /reset 命令 |
command:stop | 用户执行 /stop 命令 |
command | 任意命令的通用监听 |
会话类事件
| 事件名 | 触发时机 |
|---|---|
session:compact:before | 历史压缩开始前 |
session:compact:after | 历史压缩完成后 |
session:patch | 会话属性被修改时 |
Agent / Gateway 生命周期事件
| 事件名 | 触发时机 |
|---|---|
agent:bootstrap | Agent 启动阶段注入 bootstrap 文件之前 |
gateway:startup | Gateway 启动且所有 channel 就绪后 |
消息处理事件
| 事件名 | 触发时机 |
|---|---|
message:received | 入站 channel 收到消息 |
message:transcribed | 消息完成语音转写后 |
message:preprocessed | 完成媒体 / 链接富化后 |
message:sent | 出站消息发送时 |
三、内置 Hook
OpenClaw 预置了以下开箱即用的 Hook:
| 名称 | 作用 |
|---|---|
session-memory | 在 /new 或 /reset 时将会话上下文持久化到 <workspace>/memory/ |
bootstrap-extra-files | 根据 glob 规则向工作区注入额外的 bootstrap 文件 |
command-logger | 将所有命令事件写入 ~/.openclaw/logs/commands.log 审计日志 |
boot-md | 在 Gateway 启动时执行 BOOT.md |
四、Hook 的目录结构
每个自定义 Hook 为一个目录,包含两个文件:
my-hook/
├── HOOK.md # 元信息与文档说明
└── handler.ts # 事件处理逻辑(TypeScript)
OpenClaw 会从约定目录自动发现 Hook,用户只需启用即可。
五、CLI 管理命令
| 命令 | 作用 |
|---|---|
openclaw hooks list | 列出全部已发现的 Hook 及其启用状态 |
openclaw hooks info <name> | 查看单个 Hook 的详细信息 |
openclaw hooks check | 输出所有 Hook 的可用性 / 资格检查结果 |
openclaw hooks enable <name> | 启用指定 Hook |
openclaw hooks disable <name> | 停用指定 Hook |
openclaw hooks install <path> | 从本地路径或 npm 安装自定义 Hook 包 |
openclaw hooks update --all | 批量更新已通过 npm 安装的 Hook |
六、与 Plugin Hook 的关系
由 Plugin 提供的 Hook 会以 plugin:<id> 形式展示,不能通过 openclaw hooks enable/disable 直接切换,需改为启用 / 停用对应的父 Plugin。