⚡ OpenClaw 事件驱动自动化指南

你有没有想过,为什么你的 Agent 总是在「等命令」而不是「主动干活」?事件驱动就是答案。让 Agent 从被动变主动,从工具变同事。

📋 目录

🎯 核心概念

OpenClaw 的事件系统由三个核心组件构成:

事件类型

类型触发方式典型场景
HooksAgent 生命周期事件消息前后处理、状态变更
Webhooks外部 HTTP 回调GitHub、飞书、Discord 集成
Cron定时触发日报、巡检、数据聚合
Events内部事件广播跨 Agent 通信、状态同步

🪝 Hooks 生命周期钩子

Hooks 允许你在 Agent 生命周期的关键节点插入自定义逻辑:

# openclaw.config.yaml hooks: beforeMessage: - script: ./hooks/validate-input.sh - plugin: content-filter afterMessage: - script: ./hooks/log-response.sh onError: - script: ./hooks/error-handler.sh onSessionStart: - script: ./hooks/init-context.sh

常用 Hook 示例:输入验证

#!/bin/bash # hooks/validate-input.sh INPUT="$1" MAX_LENGTH=10000 if [ ${#INPUT} -gt $MAX_LENGTH ]; then echo "输入超过 $MAX_LENGTH 字符限制" exit 1 fi if echo "$INPUT" | grep -qiE "(password|secret|token)"; then echo "输入包含敏感信息" exit 1 fi exit 0

🔗 Webhooks 外部集成

# openclaw.config.yaml webhooks: github: secret: "${GITHUB_WEBHOOK_SECRET}" events: [push, pull_request, issues] handler: ./handlers/github-event.sh feishu: verification: "${FEISHU_VERIFICATION_TOKEN}" events: [message, approval] handler: ./handlers/feishu-event.sh

Webhook 处理器示例

#!/bin/bash # handlers/github-event.sh EVENT="$1" PAYLOAD="$2" case "$EVENT" in push) BRANCH=$(echo "$PAYLOAD" | jq -r '.ref') [[ "$BRANCH" == "refs/heads/main" ]] && echo "🚀 main 有新提交" ;; pull_request) ACTION=$(echo "$PAYLOAD" | jq -r '.action') [ "$ACTION" = "opened" ] && echo "📥 新 PR,开始审查..." ;; esac

⏰ Cron 定时事件

# 每天早上 8 点生成日报 cron add --name "daily-report" \ --schedule "0 8 * * *" --tz "Asia/Shanghai" \ --payload "生成今日AI新闻日报" # 每2小时检查系统状态 cron add --name "health-check" \ --schedule "0 */2 * * *" \ --payload "检查系统健康状态"

🎯 实战模式

模式一:CI/CD 自动化

GitHub Push → Webhook → Agent 代码审查 → 自动部署 → 通知

模式二:内容自动化

Cron 定时 → Agent 搜索热点 → 生成内容 → 多平台发布

模式三:监控告警

Cron 巡检 → Agent 检查指标 → 异常时通知 → 自动修复

💡 事件驱动的关键是「解耦」。让每个组件只关心自己的事件,通过事件总线连接,系统才会健壮。