Skip to content

定时任务和主动推送

大多数 AI 助手是被动式的——你不说话,它就不响应。

Moltbot 支持主动推送。它可以按计划自动执行任务并发送消息。

例如:早上 8 点推送天气和日程概览,每小时检查 GitHub 是否有新的 PR 需要 review,晚上 10 点发送提醒。

Heartbeat Engine

Moltbot 的主动推送依赖 Heartbeat Engine——一个内置的心跳机制,定期检查是否有需要执行的任务。

Heartbeat Engine 与 cron job 配合使用。你通过 cron 设定时间和任务内容,Heartbeat Engine 在到点时唤醒 Moltbot 执行。

配置定时任务

最直接的方式是用自然语言告诉 Moltbot:

每天早上8点给我发一份天气预报和今天的日程安排
每周一上午9点提醒我写周报
每30分钟检查一下 GitHub 上的 moltbot 仓库有没有新 Issue

Moltbot 会自动将这些转化为 cron 任务。

也可以通过配置文件手动配置:

yaml
# ~/.moltbot/config.yaml
cron:
  jobs:
    morning-briefing:
      schedule: "0 8 * * *"          # 每天早上8点
      prompt: "查看今天的天气和我的日程,给我一份简短的早间简报"
      channel: telegram               # 推送到 Telegram

    weekly-report-reminder:
      schedule: "0 9 * * 1"          # 每周一早上9点
      prompt: "提醒我该写周报了,顺便帮我回顾一下这周我们聊过的工作内容"
      channel: telegram

    github-check:
      schedule: "*/30 * * * *"       # 每30分钟
      prompt: "检查 GitHub 上有没有需要我处理的 PR 或 Issue"
      channel: telegram

schedule 使用标准 cron 表达式格式,五个位置分别为:分钟、小时、日、月、星期几。

常用 cron 表达式参考:

效果cron 表达式
每天早上8点0 8 * * *
每小时0 * * * *
每30分钟*/30 * * * *
每周一早上9点0 9 * * 1
工作日早上9点0 9 * * 1-5
每月1号上午10点0 10 1 * *

也可以直接描述你需要的频率,让 Moltbot 帮你生成表达式。

早间简报

这是最常见的使用场景。

一份完整的早间简报可以包含:

  • 今日天气(需配置网页搜索,参见 MCP 工具
  • 今日日程(如果接入了日历 MCP)
  • 未读重要邮件摘要
  • GitHub 待处理事项
  • 前一天设置的提醒
yaml
cron:
  jobs:
    morning-briefing:
      schedule: "0 8 * * 1-5"       # 工作日早上8点,周末不推送
      prompt: |
        给我准备一份早间简报,包含:
        1. 今天的天气预报
        2. GitHub 上需要我 review 的 PR
        3. 昨天有没有设置过什么提醒
        简短一点,不要太长。
      channel: telegram

prompt 中的内容相当于你发给 Moltbot 的消息。到达设定时间后,Moltbot 会处理这段 prompt 并将结果推送到指定渠道。

提醒

除了定时任务,还可以直接设置提醒:

3个小时后提醒我给客户发邮件
明天下午2点提醒我开会
每天晚上10点提醒我喝水

一次性提醒和循环提醒均支持。

事件告警

这是一个较为高级的应用场景。

配合 MCP 工具,可以让 Moltbot 定期检查特定状态,发现异常时主动告警。

例如:

yaml
cron:
  jobs:
    server-health:
      schedule: "*/10 * * * *"       # 每10分钟
      prompt: "检查一下服务器的健康状态,如果有异常立即告诉我"
      channel: telegram

    api-usage:
      schedule: "0 18 * * *"         # 每天下午6点
      prompt: "查看今天的 API 调用量,如果超过日均水平50%就提醒我"
      channel: telegram

这些场景需要 Moltbot 能够访问对应的数据源(通过 MCP 工具或内置 browser 工具)。

推送渠道

channel 字段指定消息推送的目标渠道,填写已配置的渠道名:telegramdiscordslackwhatsapp

如果配置了多个渠道,不同任务可以推送到不同目标。例如工作相关推送到 Slack,个人事项推送到 Telegram。

yaml
cron:
  jobs:
    work-reminder:
      schedule: "0 9 * * 1-5"
      prompt: "今天有什么工作需要处理"
      channel: slack

    personal-reminder:
      schedule: "0 21 * * *"
      prompt: "提醒我明天要做的私人事项"
      channel: telegram

Heartbeat 间隔

Heartbeat Engine 默认检查间隔为 1 分钟,即 cron 任务的最小精度为 1 分钟。

可以调整:

yaml
heartbeat:
  interval: 60        # 秒,默认60

缩短间隔会提高检查频率,但也会增加资源消耗。通常保持默认值即可。

调试定时任务

查看所有定时任务及其下次触发时间:

bash
moltbot cron list

手动触发某个任务进行测试:

bash
moltbot cron trigger morning-briefing

该命令会立即执行指定任务,无需等待定时触发。

注意事项

Moltbot 必须保持运行。 定时任务依赖 Heartbeat Engine,Moltbot 停止后任务不会触发。如果部署在服务器上,建议使用 systemd 或 pm2 等工具保持进程常驻。

Token 消耗。 每次定时任务触发都会执行一轮 AI 对话,消耗 Token。如果设置了多个高频任务(如每 5 分钟一次),Token 费用会累积。请根据实际需求合理规划。

时区。 cron 表达式使用系统本地时区。如果服务器时区与你的生活时区不同,注意换算。

本站为第三方教程站,与 Moltbot 官方无关