教程

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 官方文档

相关文章推荐

教程Claude Code Hooks 完全实战指南:自动化你的编码工作流Claude Code Hooks 完整实战指南:6 种 Hook 事件类型(PreToolUse/PostToolUse/PreCompact/PermissionDenied/Stop/SubagentStop);8 个完整配置示例(文件修改后自动 lint+格式化/TypeScript 类型检查/git commit 前强制测试/危险命令阻断/Auto Mode 拒绝通知/MCP 工具调用/PreCompact 快照/条件 hooks);Hook 脚本环境变量说明;以及 5 个最佳实践(|| true 防误报/输出简洁/脚本快速/exit 1 明确阻断/逻辑放独立脚本)。2026/5/6教程Claude Code Hooks 深度实战:5 个真实案例教你用自动化消灭重复工作Claude Code Hooks 完整实战指南:配置文件结构(.claude/hooks/)、四种触发时机(post_write/pre_commit/session_start/session_end),以及 5 个完整案例:自动 Lint+格式化、修改后运行相关测试、TypeScript 类型检查、提交前安全扫描、Session 开始加载工作状态。含 on_error 策略选择。2026/4/22教程Claude Code Hooks 完全指南:用确定性脚本守护每次代码变更的自动化护栏Claude Code Hooks 完整教程:与 CLAUDE.md 规则的本质区别(每次都执行 vs 建议性)、四种 Hook 类型(PreToolUse/PostToolUse/Stop/Notification)、自动 lint、测试自动运行、阻止危险操作、任务完成通知,以及前端项目完整 Hooks 配置示例。2026/4/18教程OpenClaw Background Tasks 完全指南:让 AI 在后台自主执行长时间任务(2026)OpenClaw Background Tasks(后台任务)完整指南:Background Tasks 与普通对话的区别(异步执行/不阻塞渠道/可中断恢复)、通过自然语言触发后台任务(「帮我在后台处理...」)、openclaw tasks 命令行管理(list/show/cancel/logs)、任务状态跟踪与完成通知、长时间任务的最佳实践(分批处理/超时设置/错误恢复)、与 Cron Jobs 的区别和选用场景,以及实战案例(批量文件处理/代码库扫描/数据报告生成)。2026/4/2教程OpenClaw Polls 投票功能完全指南:在群聊中创建 AI 辅助投票(2026)OpenClaw Polls(投票)功能完整指南:AI 自动创建投票(对话中说「发起投票」即可)、支持的渠道(Telegram 原生投票/Discord 按钮投票/Slack 投票/WhatsApp 文字选项)、投票类型(单选/多选/匿名/限时)、AI 分析投票结果并给出建议、定时发起周期性投票(结合 Cron)、在群聊决策场景中的使用模式,以及各渠道投票交互方式差异对比。2026/4/2教程OpenClaw Gmail 邮件集成完全指南:让 AI 助手自动处理你的收件箱(2026)OpenClaw Gmail 集成完整指南:Google Cloud Pub/Sub 实时推送配置(Topic/Subscription创建/IAM授权)、OAuth2 授权流程、新邮件实时摘要/自动分类处理/订阅邮件归档/Google Calendar 联动,附 OAuth 回调不匹配/Pub/Sub 延迟/邮件重复处理四类常见问题排查。2026/4/1