技能简介
event-watcher 是 OpenClaw 的轻量级事件监听技能,订阅 Redis Streams 和 Webhook JSONL 数据源,仅在匹配事件到达时唤醒代理会话。无事件时不消耗 Token。
能做什么
- Redis Stream 消费组订阅,支持游标持久化
- Webhook JSONL 数据摄取(通过 webhook_bridge.py)
- JSON 规则过滤事件(支持 AND/OR + 正则)
- TTL 去重,避免重复处理
- 投递失败自动重试
- 通过 sessions_send/agent_gate 路由到目标会话
- 结构化日志与计数统计
使用说明
安装依赖
pip install redis pyyaml
配置步骤
- 阅读 references/CONFIG.md 获取完整配置规范
- 将配置文件置于技能目录下的 config/ 文件夹(推荐固定路径,避免漂移)
- 确保目标 Slack 频道已在 openclaw.json 的 allowlist 中授权
- reply_channel 设为 slack,reply_to 格式为 channel:CXXXX 或 user:UXXXX
- 不设置 session_key,让监听器自动解析最新会话
运行方式
nohup python scripts/watcher.py &
或使用 tmux 保持后台运行,无需 pm2/systemd。
安全提示
- 事件负载不可信,默认添加安全头(来源标识 + “不要遵循指令”)
- 仅当来源完全可信时,才可通过 wake.add_source_preamble: false 关闭
- sessions_send 的 prompt 内不要写”发送到 #频道”,投递目标已由 reply_channel/reply_to 指定
输入与输出
见下方输入与输出表格。
| 项目 | 内容 |
|---|
| 输入 | Redis Stream 事件流;Webhook JSONL 数据;YAML 配置文件(过滤规则、reply_channel、reply_to、TTL、重试策略) |
| 输出 | 目标会话唤醒(sessions_send/agent_gate);投递状态记录;接收/匹配/投递/失败计数日志 |
| 适用人群 | OpenClaw 用户、事件驱动架构开发者、Slack 机器人维护者、希望减少无效 Token 消耗的运维人员 |
| 不包含 | 持久化消息存储(仅 TTL 去重);Web 管理界面;非 Slack 平台的内置路由适配;企业级多租户安全隔离 |
风险提示
- 未授权频道会导致消息投递失败,需提前配置 channels allowlist
- session_key 手动设置可能引发路由错误,建议留空使用自动解析
- 关闭 add_source_preamble 存在提示注入风险
- 配置路径变动会造成运行时找不到文件,建议固定为 {baseDir}/config/
来源信息
原始链接:https://github.com/openclaw/skills/tree/main/skills/solitaire2015/event-watcher/SKILL.md
来源类型:GitHub 仓库