定时任务调度
Task Scheduling
支持定时、周期和 cron 表达式的任务调度系统,持久化存储任务状态
子问题
1.三种调度模式(at/every/cron)
2.任务持久化存储
3.异步回调执行
4.任务状态管理
5.LLM 自主创建和管理定时任务(Tool 暴露)
6.调度结果多通道投递(Telegram/WhatsApp等)
7.CronService 与 AgentLoop 循环依赖解耦
各项目的解法1 solutions
Signals
横向对比
| 维度 | FastCode |
|---|---|
| 调度模式 | at/every/cron 三模式统一 CronSchedule,kind 字段判别 |
| 定时器实现 | asyncio.create_task 单定时器最近唤醒,零线程 |
| 持久化方式 | JSON 文件 camelCase 序列化,版本号预留迁移 |
| Agent 集成 | on_job 回调注入 AgentLoop.process_direct(),走完整推理 |
| LLM 自主调度 | CronTool 暴露 add/list/remove,LLM 通过 function calling 自主管理 |
| 任务生命周期 | at 模式执行后自动禁用或删除,every/cron 自动重算下次 |
| 消息投递 | payload.deliver + channel + to 支持多通道结果回推 |
最佳实践
1.使用 croniter 解析标准 cron 表达式保证兼容性
2.用回调注入解耦 CronService 和 AgentLoop 的循环依赖
3.单定时器最近唤醒模式替代轮询,降低 CPU 开销
4.at 模式任务执行后自动禁用而非删除,保留审计记录