[CoPaw 教程系列] #07: Copaw Cron Heartbeat

CoPaw 配置:定时任务与心跳机制

CoPaw 提供了强大的自动化能力,主要包括两个核心机制:

定时任务(Cron Jobs)

- 多条、各自独立配置时间的任务

心跳(Heartbeat)

- 按固定间隔用你写好的一段问题去问 CoPaw

这两个机制让你能够自动化日常任务,减少重复操作。

定时任务概述

定时任务允许你按时间表自动执行任务,并将结果发送到指定频道。

支持的任务类型

1. 文本任务

  • 发送固定消息
  • 不需要 CoPaw 处理
  • 直接发送到频道

2. Agent 任务

  • 向 CoPaw 提问
  • CoPaw 处理后回复
  • 回复发送到频道

定时任务 vs 心跳

| 特性 | 定时任务 | 心跳 |

|------|---------|------|

| 任务数量 | 多条,各自独立 | 一组统一的问题 |

| 配置方式 | Cron 表达式 | 固定间隔 |

| 目标频道 | 每个任务独立指定 | 自动发送到上次使用的频道 |

| 适用场景 | 独立的单次任务 | 定期检查、摘要 |

| 复杂度 | 较复杂 | 较简单 |

何时使用定时任务:

  • 需要在特定时间发送特定消息
  • 每个任务有不同的目标和频道
  • 需要精确控制执行时间

何时使用心跳:

  • 需要定期检查多个问题
  • 希望发送到最近使用的频道
  • 需要灵活的检查内容

Cron 表达式基础

Cron 表达式是定时任务的核心,用于指定任务的执行时间。

Cron 表达式格式

分 时 日 月 周

  • :0-59
  • :0-23
  • :1-31
  • :1-12
  • :0-7(0 和 7 都表示周日)

常用示例

| 表达式 | 说明 |

|--------|------|

| 0 9

| 每天上午 9 点 |

| 0 9 1

| 每周一上午 9 点 |

| 0 /2

| 每 2 小时 |

| 0 0

| 每天午夜 0 点 |

| 0 9,18

| 每天 9 点和 18 点 |

| 0 9 1-5

| 周一到周五上午 9 点 |

| 0 0 1

| 每月 1 号午夜 0 点 |

| /30

| 每 30 分钟 |

特殊字符

| 字符 | 说明 | 示例 |

|------|------|------|

| | 任意值 |

- 每分钟 |

| , | 列表 | 0 9,18

- 每天 9 点和 18 点 |

| - | 范围 | 0 9-17

- 每天 9 点到 17 点每小时 |

| / | 间隔 | /5

- 每 5 分钟 |

Cron 表达式生成器

如果你不熟悉 Cron 表达式,可以使用在线工具:

  • https://crontab.guru/
  • https://crontab-generator.org/

通过控制台创建定时任务

基本流程

  1. 进入控制台 控制 → 定时任务
  2. 点击 + 创建任务
  3. 填写表单
  4. 点击 保存

表单字段详解

1. 基本信息

任务 ID

  • 唯一标识符
  • 使用小写字母、数字和下划线
  • 示例:daily-reminder-001

任务名称

  • 人类可读的名称
  • 便于管理和识别
  • 示例:「每日工作提醒」

启用开关

  • 控制任务是否激活
  • 可以随时开关

2. 调度

Cron 表达式

  • 指定任务的执行时间
  • 参考上面的 Cron 表达式基础

时区

  • 选择任务执行的时区
  • 默认使用系统时区

3. 任务类型及内容

任务类型

  • 文本:发送固定消息
  • Agent:向 CoPaw 提问

内容

如果是文本任务:

  • 直接输入要发送的文本
  • 可以包含表情符号
  • 支持多行文本

如果是 Agent 任务:

  • 输入要问 CoPaw 的问题
  • CoPaw 会处理并回复
  • 回复会发送到指定频道

4. 投递

目标频道

  • 选择消息发送的频道
  • 可选:钉钉、飞书、Discord、QQ、Console 等

目标用户

  • 选择接收消息的用户(某些频道支持)

投递方式

  • 流式:实时发送,CoPaw 生成内容的同时发送
  • 最终:等待 CoPaw 完成后一次性发送

选择建议:

  • 流式:适合需要快速反馈的场景
  • 最终:适合需要完整内容的场景

5. 高级选项

最大并发数

  • 同时运行的任务数量限制
  • 默认值通常为 1
  • 提高数值可以提高并发能力,但增加资源消耗

超时时间

  • 任务的最大执行时间(秒)
  • 超时后任务会被终止
  • 默认值通常为 300 秒(5 分钟)

宽限时间

  • 任务开始时间的允许误差(秒)
  • 用于处理系统负载高的情况
  • 默认值通常为 60 秒

创建文本任务示例

需求:

每天上午 9 点发送「早上好,今天也要加油!」到工作群

  1. 进入控制台 控制 → 定时任务
  2. 点击 + 创建任务
  3. 填写:
  • ID: morning-greeting-001
  • 名称: 「每日早上问候」
  • 启用: 打开开关
  • Cron: 0 9
  • 时区: Asia/Shanghai
  • 类型: 文本
  • 内容: 「早上好,今天也要加油!☀️」
  • 投递: 选择钉钉,选择工作群
  • 方式: 最终

4. 点击 保存

创建 Agent 任务示例

需求:

每天晚上 6 点让 CoPaw 总结当天的工作,并发送到工作群

  1. 进入控制台 控制 → 定时任务
  2. 点击 + 创建任务
  3. 填写:
  • ID: daily-summary-001
  • 名称: 「每日工作总结」
  • 启用: 打开开关
  • Cron: 0 18
  • 时区: Asia/Shanghai
  • 类型: Agent
  • 内容: 「帮我总结今天的工作,生成一份简短的日报」
  • 投递: 选择钉钉,选择工作群
  • 方式: 最终

4. 点击 保存

通过 CLI 创建定时任务

CoPaw 提供了 copaw cron

命令行工具,用于管理定时任务。

查看所有任务

copaw cron list

输出示例:

ID 名称 状态 Cron 下次执行

daily-summary-001 每日工作总结 启用 0 18

2024-03-15 18:00:00

morning-greeting 每日早上问候 启用 0 9

2024-03-15 09:00:00

创建文本任务

copaw cron create \

--type text \

--id morning-greeting-001 \

--name "每日早上问候" \

--cron "0 9

" \

--timezone "Asia/Shanghai" \

--channel "dingtalk" \

--target "工作群ID" \

--content "早上好,今天也要加油!☀️" \

--enabled

创建 Agent 任务

copaw cron create \

--type agent \

--id daily-summary-001 \

--name "每日工作总结" \

--cron "0 18

" \

--timezone "Asia/Shanghai" \

--channel "dingtalk" \

--target "工作群ID" \

--content "帮我总结今天的工作,生成一份简短的日报" \

--delivery final \

--enabled

查看任务状态

copaw cron state daily-summary-001

输出示例:

任务 ID: daily-summary-001

任务名称: 每日工作总结

状态: 启用

Cron 表达式: 0 18

下次执行: 2024-03-15 18:00:00

上次执行: 2024-03-14 18:00:00

执行次数: 30

成功率: 100%

启用/禁用任务

# 启用任务

copaw cron enable daily-summary-001

禁用任务

copaw cron disable daily-summary-001

删除任务

copaw cron delete daily-summary-001

立即执行任务

copaw cron run daily-summary-001

这会立即执行指定的任务,不等待预定时间。

通过对话创建定时任务

CoPaw 支持通过自然语言对话创建定时任务,这是最简单的方式。

示例对话

创建定时任务:

你:帮我创建一个定时任务,每隔 5 分钟提醒我喝水

CoPaw:好的,我来帮你创建这个定时任务。

任务信息:

  • ID: water-reminder-001
  • 名称: 喝水提醒
  • Cron: /5
  • 类型: 文本
  • 内容: 该喝水了!💧
  • 频道: 当前频道

确认创建吗?[是/否]

你:是

CoPaw:定时任务已创建成功!

创建 Agent 任务:

你:每天晚上 9 点,帮我总结一下今天的待办事项

CoPaw:好的,我来帮你创建这个定时任务。

任务信息:

  • ID: todo-summary-001
  • 名称: 每日待办总结
  • Cron: 0 21
  • 类型: Agent
  • 内容: 帮我总结今天的待办事项
  • 频道: 当前频道

确认创建吗?[是/否]

你:是

CoPaw:定时任务已创建成功!

修改任务:

你:把喝水提醒的时间改成每隔 10 分钟

CoPaw:好的,我来修改这个定时任务。

任务 water-reminder-001 已更新:

  • Cron: /10 (原:/5

删除任务:

你:删除喝水提醒这个任务

CoPaw:定时任务 water-reminder-001 已删除。

心跳机制

心跳(Heartbeat)是 CoPaw 的另一种自动化机制,按固定间隔用你写好的一段问题去问 CoPaw。

心跳 vs 定时任务

心跳更适合以下场景:

  • 需要定期检查多个问题
  • 希望灵活调整检查内容
  • 不需要精确的时间控制
  • 想要发送到最近使用的频道

配置心跳

心跳通过编辑工作区文件来配置:

HEARTBEAT.md

## 心跳配置

请按以下问题定期检查:

  1. 今天有什么重要的待办事项吗?
  2. 有哪些未读的消息需要处理?
  3. 今天的时间安排如何?

汇总这些问题的答案,并发送给我。

心跳配置文件结构

HEARTBEAT.md

可以包含:

  • 检查问题的列表
  • 汇总和格式化的指令
  • 发送目标(可选)

心跳示例

示例 1:每日自检

HEARTBEAT.md

## 每日自检

请每天检查以下内容:

待办事项

  • 今天有哪些待办事项?
  • 哪些是高优先级的?

消息

  • 有哪些未读的消息?
  • 有哪些需要回复的?

日程

  • 今天有什么会议或安排?
  • 需要做什么准备?

总结

  • 今天最重要的事情是什么?
  • 有什么需要提醒我的吗?

请以清晰、简洁的方式汇总这些信息。

示例 2:工作摘要

HEARTBEAT.md

## 工作摘要

请每 4 小时检查:

进行中的任务

  • 当前正在做什么?
  • 进度如何?

完成的任务

  • 之前完成了什么?
  • 有什么成果?

遇到的问题

  • 有什么困难或问题?
  • 需要帮助吗?

下一步计划

  • 接下来要做什么?

请以简洁的列表形式汇总。

通过控制台配置心跳

  1. 进入控制台 智能体 → 工作区
  2. 找到 HEARTBEAT.md
  3. 点击编辑
  4. 按照上面的示例编写心跳配置
  5. 点击 保存

实战场景

场景 1:团队日报自动化

需求:

每天下午 6 点自动生成团队日报

方案:使用定时任务 + Agent 任务

  1. 创建定时任务:
  • ID: team-daily-report-001
  • 名称: 「团队日报」
  • Cron: 0 18
  • 类型: Agent
  • 内容: 「帮我汇总今天团队的工作,包括:1. 每个人完成的任务 2. 进行中的任务 3. 遇到的问题 4. 明天的计划」
  1. AGENTS.md 中配置日报格式:

## 日报格式

生成团队日报时,请使用以下格式:

团队日报 - YYYY-MM-DD

今日完成

  • [成员1]: [任务1]
  • [成员2]: [任务2]

进行中

  • [任务1] - [负责人]
  • [任务2] - [负责人]

问题与风险

  • [问题1] - [影响]
  • [问题2] - [解决方案]

明日计划

  • [计划1]
  • [计划2]

场景 2:定期健康检查

需求:

每小时检查系统健康状况

方案:使用心跳

  1. 配置 HEARTBEAT.md

## 系统健康检查

请每小时检查:

系统状态

  • CoPaw 服务是否正常运行?
  • 所有频道是否连接正常?

性能指标

  • 最近 1 小时的响应时间如何?
  • 有没有出现异常?

错误和警告

  • 有什么错误日志?
  • 有什么需要注意的警告?

资源使用

  • CPU 使用率如何?
  • 内存使用情况如何?

请以简洁的报告形式汇总。如果发现问题,请提醒我。

场景 3:多定时任务协同

需求:

实现多个定时任务的协同工作

方案:

创建多个定时任务,相互配合

  1. 早晨提醒 - 每天 8:30

内容:早上好!今天有什么计划吗?

类型:Agent

  1. 工作开始 - 每天 9:00

内容:开始工作,记得喝水💧

类型:文本

  1. 午休提醒 - 每天 12:00

内容:该午休了,休息一下吧!🍱

类型:Text

  1. 下午提醒 - 每天 14:00

内容:下午工作继续!☕

类型:Text

  1. 工作总结 - 每天 18:00

内容:帮我总结今天的工作

类型:Agent

  1. 晚间提醒 - 每天 22:00

内容:该休息了,晚安!😴

类型:Text

最佳实践

1. 任务命名规范

  • 使用清晰的命名:daily-summary-001 而不是 task-1
  • 使用描述性名称:「每日工作总结」而不是「任务1」
  • 包含时间信息:morning-reminder-9am 而不是 morning-reminder

2. Cron 表达式管理

  • 优先使用标准格式
  • 避免过于复杂的表达式
  • 添加注释说明

{

"cron": "0 9

* 1-5", // 周一到周五上午 9 点

"timezone": "Asia/Shanghai"

}

3. 任务内容优化

  • 文本任务:简洁明了
  • Agent 任务:提供清晰的指令

好的 Agent 任务内容:

帮我总结今天的工作,包括:

  1. 完成的任务
  2. 进行中的任务
  3. 遇到的问题

请以列表形式输出。

不好的 Agent 任务内容:

总结今天的工作

4. 时区管理

  • 始终明确指定时区
  • 根据团队成员的时区调整
  • 注意夏令时变化

5. 错误处理

  • 设置合理的超时时间
  • 配置重试机制
  • 记录失败的任务

6. 监控和日志

  • 定期检查任务执行情况
  • 查看任务执行历史
  • 监控资源使用

性能优化

减少任务数量

  • 合并相似的任务
  • 使用心跳代替多个定时任务
  • 禁用不必要的任务

优化执行时间

  • 避免高峰期执行
  • 分散任务执行时间
  • 考虑负载均衡

资源控制

  • 设置合理的超时时间
  • 限制并发任务数
  • 监控 Token 消耗

常见问题

Q1: 定时任务没有执行?

A: 检查:

  • 任务是否启用
  • Cron 表达式是否正确
  • 时区是否设置正确
  • CoPaw 服务是否正常运行

Q2: 如何调试定时任务?

A:

  1. 使用 copaw cron run 立即执行任务
  2. 检查 CoPaw 的日志
  3. 查看 Token 消耗统计

Q3: 心跳和定时任务可以同时使用吗?

A: 可以。心跳和定时任务是独立的,可以同时使用。心跳更适合定期检查,定时任务更适合特定时间的任务。

Q4: 如何在多个频道间发送定时任务?

A: 每个定时任务只能指定一个频道。如果需要发送到多个频道,创建多个定时任务即可。

Q5: Agent 任务超时怎么办?

A:

  1. 增加超时时间设置
  2. 简化任务内容
  3. 检查模型响应速度
  4. 考虑使用流式投递

下一步

现在你已经了解了定时任务和心跳机制的配置方法。接下来建议:

  1. 阅读下一篇:CoPaw 配置:记忆系统与人设文件 - 学习如何配置 CoPaw 的记忆和个性
  2. 创建你的定时任务:根据你的需求创建实用的定时任务
  3. 配置心跳:设置适合的心跳检查
  4. 测试自动化:测试定时任务和心跳是否正常工作

总结

定时任务和心跳是 CoPaw 的核心自动化能力:

定时任务

- 精确控制,适合特定时间的任务

心跳机制

- 灵活检查,适合定期自检

多种创建方式

- 控制台、CLI、对话

任务类型丰富

- 文本、Agent

灵活配置

- Cron 表达式、时区、投递方式

通过合理配置定时任务和心跳,你可以大大减少重复操作,提高工作效率。


相关资源

  • CoPaw 官方文档:https://copaw.agentscope.io/
  • CoPaw 定时任务文档:https://copaw.agentscope.io/docs/console#定时任务
  • CoPaw 心跳文档:https://copaw.agentscope.io/docs/heartbeat
  • CoPaw CLI 文档:https://copaw.agentscope.io/docs/cli
  • Cron 表达式生成器:https://crontab.guru/

发表回复

后才能评论