QiangDiao Li
想让 Buda 在北京时间的工作日早上整理一份简报。文档里看到排期可以设时区,但还有一个日历问题。
如果只按周一到周五,遇到法定假期和周末调休就不一定对。大家会给它一份工作日历,让任务开始时先判断,还是提前手动调整排期?
主要想把规则说准确,不默认它知道我们团队哪天上班。
想让 Buda 在北京时间的工作日早上整理一份简报。文档里看到排期可以设时区,但还有一个日历问题。
如果只按周一到周五,遇到法定假期和周末调休就不一定对。大家会给它一份工作日历,让任务开始时先判断,还是提前手动调整排期?
主要想把规则说准确,不默认它知道我们团队哪天上班。
更推荐 「每天定时触发 + 任务开始时拉取公开节假日数据(或团队日历)先判断」,不用每次节前手动改排期。
原因是 Buda 定时任务的底层调度使用标准 Cron 表达式(配合 Asia/Shanghai 时区),而标准 Cron 只能表达“周一到周五(1-5)”,没法识别法定节假日和周末调休:如果只按周一到周五排期,遇到周末调休补班那天,任务根本不会触发。
可以按下面两步把规则配置好:
创建定时任务时,把排期设为每天早上触发(例如 0 9 * * *,时区 Asia/Shanghai),而不是仅周一至周五。这样周末调休上班那天也会准时启动检查。
NateScarlet/holiday-cn 的 CDN 地址 https://fastly.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{年份}.json,其中 days 数组里 isOffDay: true 代表法定放假、isOffDay: false 代表周末调休补班)。/agent/config/team-calendar.json 作为最高优先级覆盖。可以直接在定时任务的执行指令(Prompt)开头写明规则:
1. 先按Asia/Shanghai时区获取今天日期(YYYY-MM-DD)和星期;
2. 请求公开节假日数据https://fastly.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{当年年份}.json(若网盘有/agent/config/team-calendar.json团队自定义排休则优先匹配);
3. 判断今天是否为工作日:
- 若命中days中的当前日期:isOffDay: true为非工作日,isOffDay: false为调休工作日;
- 若未命中节假日特殊日期:周一至周五为工作日,周六、周日为非工作日;
4. 如果今天是非工作日,不要整理简报、也不要向渠道发送任何消息,直接回复 NO_REPLY 静默结束;只有确认为工作日时,才执行简报整理与推送。这样既不需要手动维护全年法定节假日和调休,也不会出现 Agent 自己瞎猜哪天上班的情况。
登录后参与讨论。阅读始终开放,只有发帖和回复需要账号。
登录