[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. 基本信息
任务 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 点发送「早上好,今天也要加油!」到工作群
- 进入控制台 控制 → 定时任务
- 点击 + 创建任务
- 填写:
- ID:
morning-greeting-001 - 名称: 「每日早上问候」
- 启用: 打开开关
- Cron:
0 9 - 时区: Asia/Shanghai
- 类型: 文本
- 内容: 「早上好,今天也要加油!☀️」
- 投递: 选择钉钉,选择工作群
- 方式: 最终
4. 点击 保存
创建 Agent 任务示例
需求:
每天晚上 6 点让 CoPaw 总结当天的工作,并发送到工作群
- 进入控制台 控制 → 定时任务
- 点击 + 创建任务
- 填写:
- 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
## 心跳配置
请按以下问题定期检查:
- 今天有什么重要的待办事项吗?
- 有哪些未读的消息需要处理?
- 今天的时间安排如何?
汇总这些问题的答案,并发送给我。
心跳配置文件结构
HEARTBEAT.md
可以包含:
- 检查问题的列表
- 汇总和格式化的指令
- 发送目标(可选)
心跳示例
示例 1:每日自检
HEARTBEAT.md
## 每日自检
请每天检查以下内容:
待办事项
- 今天有哪些待办事项?
- 哪些是高优先级的?
消息
- 有哪些未读的消息?
- 有哪些需要回复的?
日程
- 今天有什么会议或安排?
- 需要做什么准备?
总结
- 今天最重要的事情是什么?
- 有什么需要提醒我的吗?
请以清晰、简洁的方式汇总这些信息。
示例 2:工作摘要
HEARTBEAT.md
## 工作摘要
请每 4 小时检查:
进行中的任务
- 当前正在做什么?
- 进度如何?
完成的任务
- 之前完成了什么?
- 有什么成果?
遇到的问题
- 有什么困难或问题?
- 需要帮助吗?
下一步计划
- 接下来要做什么?
请以简洁的列表形式汇总。
通过控制台配置心跳
- 进入控制台 智能体 → 工作区
- 找到
HEARTBEAT.md - 点击编辑
- 按照上面的示例编写心跳配置
- 点击 保存
实战场景
场景 1:团队日报自动化
需求:
每天下午 6 点自动生成团队日报
方案:使用定时任务 + Agent 任务
- 创建定时任务:
- ID:
team-daily-report-001 - 名称: 「团队日报」
- Cron:
0 18 - 类型: Agent
- 内容: 「帮我汇总今天团队的工作,包括:1. 每个人完成的任务 2. 进行中的任务 3. 遇到的问题 4. 明天的计划」
- 在
AGENTS.md中配置日报格式:
## 日报格式
生成团队日报时,请使用以下格式:
团队日报 - YYYY-MM-DD
今日完成
- [成员1]: [任务1]
- [成员2]: [任务2]
进行中
- [任务1] - [负责人]
- [任务2] - [负责人]
问题与风险
- [问题1] - [影响]
- [问题2] - [解决方案]
明日计划
- [计划1]
- [计划2]
场景 2:定期健康检查
需求:
每小时检查系统健康状况
方案:使用心跳
- 配置
HEARTBEAT.md:
## 系统健康检查
请每小时检查:
系统状态
- CoPaw 服务是否正常运行?
- 所有频道是否连接正常?
性能指标
- 最近 1 小时的响应时间如何?
- 有没有出现异常?
错误和警告
- 有什么错误日志?
- 有什么需要注意的警告?
资源使用
- CPU 使用率如何?
- 内存使用情况如何?
请以简洁的报告形式汇总。如果发现问题,请提醒我。
场景 3:多定时任务协同
需求:
实现多个定时任务的协同工作
方案:
创建多个定时任务,相互配合
- 早晨提醒 - 每天 8:30
内容:早上好!今天有什么计划吗?
类型:Agent
- 工作开始 - 每天 9:00
内容:开始工作,记得喝水💧
类型:文本
- 午休提醒 - 每天 12:00
内容:该午休了,休息一下吧!🍱
类型:Text
- 下午提醒 - 每天 14:00
内容:下午工作继续!☕
类型:Text
- 工作总结 - 每天 18:00
内容:帮我总结今天的工作
类型:Agent
- 晚间提醒 - 每天 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 任务内容:
帮我总结今天的工作,包括:
- 完成的任务
- 进行中的任务
- 遇到的问题
请以列表形式输出。
不好的 Agent 任务内容:
总结今天的工作
4. 时区管理
- 始终明确指定时区
- 根据团队成员的时区调整
- 注意夏令时变化
5. 错误处理
- 设置合理的超时时间
- 配置重试机制
- 记录失败的任务
6. 监控和日志
- 定期检查任务执行情况
- 查看任务执行历史
- 监控资源使用
性能优化
减少任务数量
- 合并相似的任务
- 使用心跳代替多个定时任务
- 禁用不必要的任务
优化执行时间
- 避免高峰期执行
- 分散任务执行时间
- 考虑负载均衡
资源控制
- 设置合理的超时时间
- 限制并发任务数
- 监控 Token 消耗
常见问题
Q1: 定时任务没有执行?
A: 检查:
- 任务是否启用
- Cron 表达式是否正确
- 时区是否设置正确
- CoPaw 服务是否正常运行
Q2: 如何调试定时任务?
A:
- 使用
copaw cron run立即执行任务 - 检查 CoPaw 的日志
- 查看 Token 消耗统计
Q3: 心跳和定时任务可以同时使用吗?
A: 可以。心跳和定时任务是独立的,可以同时使用。心跳更适合定期检查,定时任务更适合特定时间的任务。
Q4: 如何在多个频道间发送定时任务?
A: 每个定时任务只能指定一个频道。如果需要发送到多个频道,创建多个定时任务即可。
Q5: Agent 任务超时怎么办?
A:
- 增加超时时间设置
- 简化任务内容
- 检查模型响应速度
- 考虑使用流式投递
下一步
现在你已经了解了定时任务和心跳机制的配置方法。接下来建议:
- 阅读下一篇:CoPaw 配置:记忆系统与人设文件 - 学习如何配置 CoPaw 的记忆和个性
- 创建你的定时任务:根据你的需求创建实用的定时任务
- 配置心跳:设置适合的心跳检查
- 测试自动化:测试定时任务和心跳是否正常工作
总结
定时任务和心跳是 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/







