问题域/PD-494

定时心跳任务

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 自动追踪最近活跃渠道,无需手动配置分发目标