1. 为什么你的 OpenClaw 需要“主动执行”能力OpenClaw 是一个可自托管的 AI Agent 运行框架支持多平台接入、持久记忆、自定义技能和定时调度。它能做什么简单说就是让 AI 不只是等你发消息才回复而是按你设定的时间表或事件条件自动干活。适合谁适合已经把 OpenClaw 跑起来、想进一步做自动化工作流的开发者和运维同学。前几期我们把 OpenClaw 接入了飞书、企业微信、Slack也配了持久记忆和自定义技能。但有个问题一直没解决它仍然是被动响应模式。你发消息它才干活你不发它就安静待着。真正的自动化应该是这样的每天早上 8 点自动生成行业简报推送到群里代码 PR 合并时自动触发 Review 摘要服务器磁盘超过 85% 时自动告警。这些场景的共同点是——不需要人主动发起由时间或事件驱动。OpenClaw 内置了 Cron 调度系统支持一次性定时、固定间隔、标准 Cron 表达式三种模式任务数据持久化在.openclaw/cron/jobs.json。配合 Webhook 触发器和 Agent 间通信可以搭建从“被动聊天”到“主动干活”的完整链路。下面我会用四个实战场景把配置、验证和排障一步步走完。2. TaoToken 前置统一 Key 与 API 通道在配置自动化任务之前先解决一个基础设施问题API Key 管理。OpenClaw 的定时任务和 Webhook 触发都会调用模型如果每个任务单独配 Key后期维护会很痛苦。我试过把 Key 散落在各个 job 的 payload 里结果换一次 Key 要改十几个地方。TaoToken 提供统一的 API 通道兼容 OpenAI 接口格式OpenClaw 可以直接把它作为模型后端。你只需要在 TaoToken 控制台创建一个 API Key然后在 OpenClaw 的配置里指向 TaoToken 的 API 地址即可。这样所有定时任务、Webhook 触发的模型调用都走同一个通道换 Key 只改一处。具体操作访问 TaoToken 控制台创建 API Key然后打开接入文档确认 base_url 和模型名称的对应关系。如果你还没决定用哪个模型可以先在模型对话页面测试一下响应质量确认没问题再写入配置。对于长期跑自动化任务的场景Coding Plan 更适合——它的额度模型对高频定时调用更友好不会因为每天几十次 Cron 触发就撞到限流。配置方式也很简单在 OpenClaw 的config.toml里把 provider 指向 TaoToken 即可。3. 可复制配置config.toml 骨架与 Cron 表达式3.1 确认版本与环境先确认 OpenClaw 版本定时任务系统需要 v2026.2.3 及以上openclaw --version # 输出应 v2026.2.3如果你用 Docker 部署进入容器操作docker exec -it openclaw bash安装自动化场景常用的技能openclaw skills install firecrawl openclaw skills install msg-pusher openclaw skills install summary openclaw skills list | grep -E firecrawl|msg-pusher|summary3.2 配置时区关键别跳过Cron 表达式默认按容器时区解释。如果容器是 UTC0 8 * * *会在北京时间 16:00 执行。显式设置时区openclaw config set system.timezone Asia/Shanghai或者在 Docker 启动时加环境变量-e TZAsia/Shanghai。3.3 config.toml 骨架OpenClaw 的主配置文件config.toml需要包含模型通道、Webhook 和 Agent 通信的基础配置。以下是一个可复制的骨架[system] timezone Asia/Shanghai [provider] name taotoken base_url https://taotoken.net/api api_key 你的TaoToken_API_Key default_model gpt-4o [webhook] enabled true port 18789 token 用openssl rand -hex 32生成 [agents] agentToAgent true [skills] auto_load truebase_url填 TaoToken 的 API 地址api_key填你在控制台创建的 Key。agentToAgent true是 Agent 间通信的前提后面做流水线时会用到。3.4 Cron 表达式速查OpenClaw 的schedule.kind支持三种模式类型说明示例at一次性定时{kind:at,atMs:1741161600000}every固定间隔{kind:every,everyMs:43200000}cron标准表达式{kind:cron,expr:0 8 * * *,tz:Asia/Shanghai}Cron 表达式是 5 段格式分 时 日 月 周。常用写法0 8 * * * # 每天 8:00 */30 * * * * # 每 30 分钟 0 9 * * 1-5 # 工作日 9:00 0 2 * * 0 # 每周日凌晨 2:003.5 创建第一个定时任务用命令行添加一个每天 8 点执行的简报任务openclaw cron add \ --name daily-ai-brief \ --schedule 0 8 * * * \ --tz Asia/Shanghai \ --session isolated \ --message 生成今日AI行业简报包含头条新闻、趋势讨论和机会洞察 \ --deliver feishu参数说明--session isolated让任务在隔离会话中执行不污染主对话上下文--deliver feishu指定推送目标需要提前配好飞书频道。3.6 Webhook 配置片段Webhook 用于外部事件触发比如 GitHub PR 合并。先在 OpenClaw 生成 Tokenopenssl rand -hex 32 # 输出 64 位十六进制字符串 openclaw config set webhook.token 你的64位Token然后在 GitHub 仓库的 Settings → Webhooks 中添加Payload URLhttp://你的OpenClaw地址:18789/hooks/agentContent typeapplication/jsonSecret填刚才生成的 Token事件选择Pull requests、Issues、Pushes注意Token 放在 HTTP Header 中传递不要写进公开文档或群聊。4. 验证请求从手动触发到定时执行4.1 手动测试简报生成先手动跑一次确认提示词和技能配置正确openclaw run --message 生成今日AI行业简报包含头条新闻、趋势讨论和机会洞察 --deliver feishu如果输出符合预期再进行定时配置。这一步别省——我踩过的坑就是直接配了 Cron结果第二天发现提示词里的信息源抓取失败白等了一晚上。4.2 手动触发定时任务配置好 Cron 后用run命令立即执行一次不用等到触发时间openclaw cron run daily-ai-brief查看任务列表和状态openclaw cron list openclaw cron show daily-ai-brief暂停和恢复openclaw cron pause daily-ai-brief openclaw cron resume daily-ai-brief4.3 验证 Webhook 触发用 curl 模拟 GitHub PR 合并事件curl -X POST http://localhost:18789/hooks/agent \ -H x-openclaw-token: 你的Token \ -H Content-Type: application/json \ -d { event: pull_request, action: closed, pull_request: { number: 142, title: 修复登录页样式问题, merged: true, user: {login: developer}, base: {ref: main}, head: {ref: fix/login-style}, changed_files: 5, additions: 120, deletions: 45 }, repository: {full_name: my-org/my-project} }查看日志确认触发成功openclaw logs --follow | grep webhook4.4 验证 Agent 间流水线如果你配了多 Agent 协作手动触发采集 Agentopenclaw run --agent collector --params {keyword:大模型,days:7}查看会话状态openclaw sessions_list openclaw sessions_history --id collector-20260307-0014.5 成功结果长什么样定时任务执行成功后openclaw cron list会显示lastRun时间戳和lastStatus: success。Webhook 触发后gateway.log里会出现webhook received和task dispatched两条记录。Agent 流水线完成后sessions_history能看到 collector → analyst → reporter 的完整调用链。5. 本篇常见错排查5.1 定时任务未执行最常见的原因是网关没运行或时区配错。先检查openclaw gateway status如果网关正常检查jobs.json里的tz字段是否设置。Docker 部署时宿主机和容器时区可能不一致建议在config.toml和 Docker 环境变量里都显式指定。5.2 任务执行时间偏差如果0 8 * * *在下午执行说明容器时区是 UTC。解决方案openclaw config set system.timezone Asia/Shanghai # 或在 docker run 时加 -e TZAsia/Shanghai5.3 Webhook 触发失败先确认端口可访问curl -I http://localhost:18789/hooks/wake如果返回 401说明 Token 没传对。检查 Header 里的x-openclaw-token是否和config.toml里的一致。如果返回 404检查 Webhook 路径是否正确——/hooks/wake是纯触发/hooks/agent是带任务指令的。5.4 任务重复执行这是幂等性问题。比如简报任务重试时重复推送。解决方案是在任务里加执行日志检查const today new Date().toISOString().split(T)[0]; const logFile /logs/brief-${today}.log; if (!await context.fs.exists(logFile)) { await context.deliver(feishu, report); await context.fs.writeFile(logFile, delivered); }5.5 Agent 间通信失败如果sessions_send报错检查config.toml里是否开启了agentToAgent true。另外确认目标 Agent 名称拼写正确OpenClaw 的 Agent 名称区分大小写。5.6 查看详细日志openclaw logs --follow tail -f ~/.openclaw/logs/cron/daily-brief.log grep webhook ~/.openclaw/logs/gateway.log运行诊断工具openclaw doctor它会检查定时任务配置有效性、Webhook Token 强度、频道连接状态和配置冲突。6. 让自动化链路真正跑起来到这里你已经把 OpenClaw 从“你问它答”升级成了“按计划自动执行”。四个场景的核心配置都不复杂Cron 负责时间驱动Webhook 负责事件驱动Agent 间通信负责多步骤协作。真正需要花心思的是幂等性设计和错误处理——自动化任务一旦跑起来出问题往往是在你没盯着的时候。如果你还没配 TaoToken 的统一 Key建议先把它接上。自动化任务的特点是调用频次高、触发时间分散统一通道能省掉很多 Key 轮换和限流处理的麻烦。接入文档里有完整的 base_url 和模型映射说明照着配就行。长期跑编码类 Agent 任务的话Coding Plan 的额度模型比按次计费更适合定时场景。下一篇会讲 OpenClaw 的安全配置与权限管理包括 API Key 保护、细粒度权限和操作审计。自动化跑起来之后安全就是下一个必须解决的问题。
