OpenClaw 中的 Hooks 配置主要分为两类:一类是内部 Hooks,在 Gateway 内部响应特定事件而运行;另一类是外部 Webhooks,通过 HTTP 请求从外部触发。
内部 Hooks 主要用于”在 Agent 运行时,我想插入一些自定义逻辑”;而外部 Webhooks 则用于”当外部世界发生某事时,我想唤醒我的 Agent”。
- 内部 Hooks:事件驱动的自动化脚本,是在 Agent 生命周期的特定时刻(如执行
/new、/reset命令或启动时)自动运行的脚本。 - 外部 Webhooks:HTTP 触发入口,允许其他服务(如 GitHub、Gmail)通过 HTTP 请求来唤醒或控制你的 OpenClaw Agent。通过 Webhooks,OpenClaw 可以从“聊天助手”升级为“响应式系统”,实现外部事件驱动的自动化操作和智能代理运行,极大提升工作流自动化和跨平台集成能力。
- 对外部 Webhook 请求视为不可信输入,严格隔离和最小权限原则。
- Webhooks 插件 – OpenClaw
| 特性 | 内部 Hooks | 外部 Webhooks |
|---|---|---|
| 触发方式 | Agent 内部事件(命令、生命周期) | 外部 HTTP 请求(GitHub、Gmail 等) |
| 主要用途 | 流程拦截、日志记录、修改上下文 | 从外部系统唤醒或调用 Agent |
| 配置位置 | 通过 openclaw hooks CLI 管理 | 在 openclaw.json 的 hooks 字段中配置 |
| 开发方式 | 编写 handler.ts 和 HOOK.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.enabled为true设置。也就是~/.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 有没有生效方法:
- 在聊天中执行
/new命令(注意是向 Agent 发送的命令,不是终端命令) - 检查
~/.openclaw/workspace/memory/是否已创建,并包含会话记忆文件。
安装 Hook 包:你可以从 npm 或本地路径安装打包好的 Hook:
openclaw plugins install <package-name> # 从 ClawHub 或 npm 安装
openclaw plugins install /path/to/my-hook-pack # 从本地路径安装
外部 Hooks / WebHooks
基础配置:在 ~/.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,但这有安全风险。
发表回复
要发表评论,您必须先登录。