教程

OpenClaw Hooks 系统指南:事件驱动自动化与自定义 Handler 开发

OpenClaw Hooks 事件驱动系统完整指南:4 个内置 Hook 详解(session-memory/bootstrap-extra-files/command-logger/boot-md)、HOOK.md 格式规范、handler.ts 实现示例、全部事件类型(命令/Session/Agent/Gateway/消息),5 步创建自定义 Hook 与最佳实践。

2026/3/103分钟 阅读ClaudeEagle

Hooks 是 OpenClaw 的事件驱动扩展机制——当 Agent 命令和生命周期事件触发时,自动执行你写的小脚本。

两种类型

  • Hooks(本文):在 Gateway 内部运行,响应 Agent 命令和事件
  • Webhooks:外部 HTTP 端点,让其他系统触发 OpenClaw 操作

内置 Hooks(开箱即用)

OpenClaw 自带 4 个内置 Hook:

Hook触发时机作用
💾 session-memory/new 命令将会话上下文保存到工作区记忆
📎 bootstrap-extra-filesagent:bootstrap注入额外工作区文件
📝 command-logger所有命令记录命令日志到文件
🚀 boot-mdGateway 启动运行 BOOT.md 指令
bash
openclaw hooks list
openclaw hooks enable session-memory
openclaw hooks info session-memory

Hook 发现顺序

  1. Workspace Hooks<workspace>/hooks/(每个 Agent 专属,优先级最高)
  2. Managed Hooks~/.openclaw/hooks/(共享)
  3. Bundled Hooks:内置

目录结构

my-hook/ ├── HOOK.md # 元数据 + 文档(YAML frontmatter) └── handler.ts # Handler 实现

HOOK.md 格式

yaml
---
name: my-hook
description: "执行某操作"
metadata:
  {
    "openclaw": {
      "emoji": "🎯",
      "events": ["command:new"],
      "requires": { "bins": ["node"] }
    }
  }
---

handler.ts 实现

typescript
const myHandler = async (event) => {
  if (event.type !== "command" || event.action !== "new") {
    return;
  }
  console.log(`[my-hook] Session: ${event.sessionKey}`);
  event.messages.push("Hook 执行成功!");
};

export default myHandler;

事件类型

命令事件

  • command:newcommand:resetcommand:stop

Session 事件

  • session:compact:beforesession:compact:after

Agent 事件

  • agent:bootstrap(可修改 bootstrapFiles)

Gateway 事件

  • gateway:startup

消息事件

  • message:received(媒体处理前)
  • message:transcribed(音频转写完成后)
  • message:preprocessed(Agent 看到之前的完整消息)
  • message:sent

消息 Context 结构

typescript
// message:received
{
  from: string,
  content: string,
  channelId: string,
  accountId?: string,
  conversationId?: string,
  messageId?: string,
}

// message:sent
{
  to: string,
  content: string,
  success: boolean,
  channelId: string,
  isGroup?: boolean,
}

创建自定义 Hook(5 步)

bash
# 1. 创建目录
mkdir -p ~/.openclaw/hooks/my-hook

# 2. 创建 HOOK.md 和 handler.ts(见上)

# 3. 验证发现
openclaw hooks list

# 4. 启用
openclaw hooks enable my-hook

# 5. 重启 Gateway

内置 Hooks 详解

session-memory

/new 时保存最近 15 行对话到带日期记忆文件: ~/.openclaw/workspace/memory/2026-03-11-api-design.md

bootstrap-extra-files

自动注入 monorepo 各包的文件:

json
{
  "hooks": {
    "internal": {
      "entries": {
        "bootstrap-extra-files": {
          "enabled": true,
          "paths": ["packages/*/AGENTS.md"]
        }
      }
    }
  }
}

command-logger

日志格式(JSONL):

json
{"timestamp":"2026-03-11T00:00:00.000Z","action":"new","sessionKey":"agent:main:main"}

boot-md

Gateway 启动时运行 <workspace>/BOOT.md 中的指令。

配置

json
{
  "hooks": {
    "internal": {
      "enabled": true,
      "entries": {
        "session-memory": { "enabled": true },
        "command-logger": { "enabled": true }
      }
    }
  }
}

最佳实践

保持 Handler 快速(异步处理,不阻塞命令);优雅捕获异常(不要 throw,让其他 Handler 继续运行);使用精确事件键(command:new 而非 command)。

故障排查

bash
openclaw hooks list            # 检查发现状态
openclaw hooks list --verbose  # 查看缺少的依赖
openclaw hooks info my-hook    # 查看资格检查
tail -f ~/.openclaw/gateway.log | grep hook

原文:Hooks - OpenClaw | 来源:OpenClaw 官方文档

相关文章推荐

教程OpenClaw Cron 定时任务与 Heartbeat 完全指南:让 AI 助手 24 小时主动工作OpenClaw Cron 定时任务与 Heartbeat 完整教程:Cron 表达式配置、Heartbeat 轮询机制、HEARTBEAT.md 编写、定时发送通知、周期性数据检查、自动日报生成,以及 Cron vs Heartbeat 选择指南和最佳实践。2026/3/15教程OpenClaw Cron Jobs 完全指南:定时任务、孤立执行与多频道投递配置OpenClaw Cron Jobs 完整配置指南:三种调度模式(一次性/固定间隔/Cron 表达式)、Main/Isolated 两种执行模式、多频道投递配置(Telegram/WhatsApp/Slack)、模型覆盖、多 Agent 绑定、重试策略,以及常用 CLI 命令和问题排查。2026/3/10教程Claude Code Hooks 实战指南:5 大自动化场景、三种 Hook 类型与故障排查Claude Code Hooks 实战指南:/hooks 交互菜单四步创建桌面通知 Hook、5 大常用自动化场景(等待通知/编辑后 Prettier 格式化/退出码 2 阻止受保护文件/PostCompact 重注入上下文/ConfigChange 审计日志)、四种 Hook 类型(command/prompt-based/agent-based/HTTP Webhook)、输入/输出机制(stdin JSON/stdout 注入上下文/退出码 0 继续/2 阻止/非零警告)、结构化 JSON 输出、Matcher 过滤器语法(Edit|Write/Bash(git *)/*/空字符串)、四级存储位置,以及五大故障排查方法和调试技巧。2026/3/8教程Claude Code Hooks 完全指南:五大自动化场景、三类 Hook 类型与 JSON 输入输出规范Claude Code Hooks 完整指南:30 秒创建第一个 Hook(/hooks 交互菜单)、五大常用场景(通知/自动格式化/保护文件/压缩后注入上下文/审计配置变更)、六个生命周期事件(PreToolUse/PostToolUse/Notification/PostCompact/SessionStart/Stop)、四类 Hook 类型(Command/Prompt/Agent/HTTP)、JSON 输入输出规范(decision/reason/output/updatedInput)、Matcher 过滤语法,以及五大故障排查方法。2026/3/6教程Claude Code Hooks 实战指南:自动格式化、桌面通知与文件保护Claude Code Hooks 实战指南:5 大场景(桌面通知、自动格式化、文件保护、压缩后注入上下文、配置审计)的完整配置,Hook 输入/输出 JSON 格式,事件类型(PreToolUse/PostToolUse/Notification/PostCompact),以及提示型和 Agent 型 Hook。2026/3/2教程Claude Code Cron 定时任务完全指南:定时提醒、自动报告与后台自动化OpenClaw Cron 定时任务完全指南:配置语法、常用时间表达式、每日早报/代码健康检查/服务监控等实用场景示例,以及 Cron vs Heartbeat 的选择策略和任务会话隔离机制。2026/3/1