定时心跳任务
Scheduled Heartbeat Tasks
Agent 定时自主执行任务并将结果推送到指定渠道
子问题
1.间隔解析与调度
2.活跃时间窗口控制
3.结果分发路由
4.任务超时处理
5.跨午夜活跃窗口的时间比较逻辑
6.心跳与通用 cron 任务的触发器共存管理
7.任务失败时的前端错误推送机制
各项目的解法1 solutions
Signals
横向对比
| 维度 | CoPaw |
|---|---|
| 调度引擎 | APScheduler AsyncIOScheduler,IntervalTrigger + CronTrigger 双触发器共存 |
| 间隔配置 | 人性化字符串解析(30m/1h/2h30m),正则提取 h/m/s 三段 |
| 活跃窗口 | ActiveHoursConfig 08:00-22:00 默认窗口,支持跨午夜判断 |
| 查询驱动 | HEARTBEAT.md 文件驱动,用户直接编辑 Markdown 自定义查询内容 |
| 结果分发 | 双轨路径:target=last 追踪最近活跃渠道 / target=main 静默执行 |
| 并发控制 | per-job asyncio.Semaphore(max_concurrency) + 全局 asyncio.Lock |
| 持久化 | JsonJobRepository 原子写入(tmp+replace),单机 JSON 文件 |
| 超时保护 | asyncio.wait_for(timeout=120) 硬超时 + misfire_grace_seconds 容错 |
最佳实践
1.HEARTBEAT.md 文件驱动查询内容,支持用户自定义
2.per-job Semaphore 防止同一任务重叠执行
3.asyncio.wait_for 硬超时兜底防止 LLM 调用挂起
4.last_dispatch 自动追踪最近活跃渠道,无需手动配置分发目标