OpenClaw �� Hooks 钩子是什么?3 分钟一次性讲透!
OpenClaw的Hooks功能很多人听说过但没用过,今天一次讲透。
先说说啥是Hooks
官方文档:钩子是在 Gateway 网关内部发生某些事件时运行的小型脚本。它们可以从目录中被发现,并可通过 openclaw hooks 进行检查。只有在你启用钩子,或至少配置了一个钩子条目、hook pack、旧版处理器或额外钩子目录后,Gateway 网关才会加载内部钩子。
说人话:Hooks(钩子),简单来说就是一种自动化机制。当OpenClaw里发生某些事情的时候,Hooks能自动帮你执行一些操作。
举个例子,你每次输入/new命令创建新会话的时候,Hooks可以自动帮你:
-
• 保存上一会话的记录到memory -
• 记录操作日志 -
• 调用外部API -
• 写入文件
根本不用你动手!
两种Hook类型
OpenClaw里其实有两种Hook:
1. 内部Hooks
这个是运行在Gateway里的,当一些特定事件发生时自动执行。比如:
-
• command:new—— 你输入/new命令时 -
• command:reset—— 你输入/reset命令时 -
• gateway:startup—— OpenClaw启动时 -
• agent:bootstrap—— Agent启动时
2. Webhooks
这个是对外的,允许其他系统通过HTTP请求来触发OpenClaw的工作。比如你可以在Gmail里设置规则,当收到特定邮件时自动调用OpenClaw。
自带4个常用Hook
OpenClaw默认带了4个很实用的Hooks:
|
|
|
|
|---|---|---|
|
|
|
/new时自动保存会话记录到memory目录 |
|
|
|
|
|
|
|
|
|
|
|
|
session-memory这个我觉得最实用!每次创建新会话都会自动保存之前的对话记录,这样就不怕之前的重要信息丢失了。
怎么用?几条命令搞定
查看有哪些Hooks:
openclaw hooks list
启用一个Hook:
openclaw hooks enable session-memory
查看状态:
openclaw hooks check
查看详细信息:
openclaw hooks info session-memory
怎么自己写一个Hook?
如果你想自己写Hook,需要创建一个目录结构:
my-hook/├── HOOK.md # 元数据和说明文档└── handler.ts # 处理逻辑
HOOK.md的格式:
---name: my-hookdescription: "我的第一个Hook"metadata: { "openclaw": { "emoji": "🎯", "events": ["command:new"] } }---# 我的自定义Hook这个Hook会在你输入/new命令时执行...
handler.ts的格式:
importtype { HookHandler } from"../../src/hooks/hooks.js";consthandler: HookHandler = async (event) => {// 只在command:new时触发if (event.type !== "command" || event.action !== "new") {return; }console.log("[my-hook] 执行啦!");// 在这里写你的自定义逻辑};exportdefault handler;
都能干些啥?
根据官方文档,Hooks可以实现这些场景:
-
1. 保存记忆 —— /new时自动把当前会话存到memory -
2. 日志追踪 —— 记录所有命令,方便排查问题 -
3. 审计合规 —— 满足监管要求 -
4. 自动化 —— 会话开始或结束时触发后续操作 -
5. 文件操作 —— 事件发生时自动写入文件或调用外部API
说白了,只要你能写TypeScript,就能写Hook,就能让OpenClaw帮你干各种自动化的事情。
Hooks vs Cron vs Heartbeat 有啥区别?
很多人会问:Hooks、Cron定时任务、Heartbeat心跳,这三个功能有啥区别?我帮大家捋一捋:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
举个例子分别它们
Hooks——比如你每次输入/new命令时,自动保存上一次的会话记录。这个是「事件驱动」。
Cron——每天早上9点自动查询天气。这个是「时间驱动」。
Heartbeat——每天下午3点分析A股收盘数据并给出操作建议。这个也是「时间驱动」,但更侧重于「巡检」和「提醒」。
怎么选?
-
• 需要响应某个操作 → 用Hooks -
• 需要定时执行任务 → 用Cron -
• 需要周期性检查+提醒 → 用Heartbeat
简单来说:
-
• Hooks是「你做了什么」时自动触发 -
• Cron是「到了某个时间」自动执行 -
• Heartbeat是「定时检查+通知你」
钩子发现顺序
钩子会按以下目录进行发现,覆盖优先级依次递增:
-
1. 内置钩子:随OpenClaw一起发布 -
2. 插件钩子:内置在已安装插件中的钩子 -
3. 托管钩子: ~/.openclaw/hooks/(用户安装,在各工作区间共享) -
4. 工作区钩子: <workspace>/hooks/(每个智能体单独使用,默认禁用,需显式启用)
注意:工作区钩子可以新增钩子名称,但不能覆盖同名的内置钩子、托管钩子或插件提供的钩子。
启用方式
在配置内部钩子之前,Gateway会在启动时跳过内部钩子发现。你可以通过以下方式启用:
-
• openclaw hooks enable <name>—— 启用一个内置或托管钩子 -
• 安装一个hook pack -
• 设置 hooks.internal.enabled=true—— 启用更广泛的发现机制
总结
说实话,Hooks这个功能我自己也还在摸索。今天写这篇文章,主要是想让大家知道OpenClaw还有这么个东西。
如果你想深入了解,建议:
-
1. 先试试自带的4个Hook -
2. 玩熟悉了再尝试自己写 -
3. 多看官方文档
文章内容基于OpenClaw版本2026.4.23。
我已收集了OpenClaw的资料并已打好包,关注后发消息:小龙虾获取。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。

我的Openclaw教程
夜雨聆风