定时任务
让 ZAI 按一次性或重复计划,在原来的聊天里继续工作。
用自然语言说明任务、时间、结果位置和结束条件。定时任务属于创建它的那个频道或群聊(在私信里 创建的,属于这段私信),同一个频道或群聊里的其他消息列也能查看和修改;创建任务的那段工作 结束后,任务仍按计划执行。
ZAI 先记下计划,到期后按记下的任务说明执行,再按你的要求回复到原来的消息列,或新开一个消息列;在频道或群聊里也可以不开消息列,见不开消息列的定时任务。默认只在有变化或异常时汇报,见什么时候汇报。
创建任务
一次性任务:
20 分钟后检查发布流水线,把状态和失败原因回复到当前消息列,还在运行也说一声。
重复任务:
每周一到周五 9:00(Asia/Shanghai)新开一个消息列,总结项目进度和风险,持续到本月底。
需要跳过法定节假日、补班日照常执行时,请说明“按中国工作日”,见运行前条件。
创建前应确认:
- 将来执行时仍能独立理解的完整任务说明。
- 结果放在哪里:回到当前消息列、每次新开消息列,还是不开消息列(见不开消息列的定时任务)。
- 时区、重复间隔以及次数或截止时间。
- 涉及轮询时,达到什么条件后暂停或结束。
- 只在有变化或异常时汇报(默认),还是每次都汇报,见什么时候汇报。
选择每次新开时,每个新消息列以「定时任务:」加任务名称开头,方便你认出它的结果。
计划保存时会固定时区。之后调整个人或频道的时区,不会移动已经保存的任务;要改变某个任务的 时区,请明确修改该任务,并核对下一次执行的本地时间。每天的日历计划与“每隔 24 小时”在夏令时 切换时可能不同,创建时请说明希望保持当地钟点还是精确间隔。
重复任务相邻两次至少间隔 15 分钟;要求更短的间隔会被拒绝,不会被悄悄改成 15 分钟。无法验证 的时间规则也会被拒绝。没有次数或截止时间的重复任务会一直运行,创建时请确认这确实是你想要的。
不开消息列的定时任务
在频道或群聊里创建定时任务时,可以让 ZAI 不开消息列:到点时 ZAI 不发消息,直接执行,再自己决定要不要在频道里说一声。
每周一到周五 18:00 检查当天的线上告警,不用开消息列,还有没处理的告警时在频道里提醒大家。
- 值得让大家知道时,ZAI 在频道里直接发一条新消息,否则不发言。成员回复这条消息不用 @zai 也会得到跟进,见在频道里直接发消息。
- 同一任务每次执行时,ZAI 通常记得上一次的情况,例如上次提醒过哪些告警。
- 执行时不显示处理状态和进度消息,ZAI 在频道里发的消息上也没有。
- 在私信里不能这样创建。
什么时候汇报
每次执行后,ZAI 默认只在有需要你知道的情况时汇报:有新结果、状态变化、数值超出预期、执行失败、有缺口或无法核实的地方,或者有需要谁处理、决定的事。这次检查确认没有变化、也没有缺口时,它不发汇报。任务要发的本来就是提醒或通知时(例如“每周五 16:00 提醒大家填周报”),每次都会发出,不用另外说明。手动运行一次时,ZAI 总会汇报结果,没有变化也用一两句交代。
想每次都收到汇报(包括没有变化时),创建或修改任务时说明,例如:
每周一到周五 9:00 总结项目进度和风险,每次都汇报,包括没有变化时。
ZAI 会把这项要求写进保存的任务说明,这样的任务没有变化时也用一两句交代。也可以说明什么情况才值得汇报,例如超过某个数值、进入某个状态。
一直没收到汇报、想确认任务照常执行时,可以让 ZAI 查看任务状态和最近的运行记录,或者手动运行一次。
修改和停止
在频道或群聊里创建的定时任务对成员共享:任何能使用 ZAI 的成员都可以让它查看、修改、暂停或删除这些任务, 任务不记录是谁创建的。在私信里创建的任务只能在这段私信里管理。
可以要求 ZAI 列出这里的任务,再按返回的任务名称暂停、恢复、修改或删除。修改、暂停和删除只影响 之后还没开始的执行;已经开始的那一次会按当时保存的任务内容完成。
修改执行时间、时区或结束条件后,任务从修改时起重新排期;已经执行过的次数照样计入,按次数结束的 任务可能因此立即结束。只改任务说明、名称或结果位置时,原来的节奏不变。
上一次还没做完时,到期的计划会等它结束,只补做最近的一次,期间错过的计划也计入次数;这时要求 手动运行也会被拒绝,请等当前这次结束。服务中断期间错过多次计划时也一样,恢复后只补做最近一次。
恢复一个被暂停的任务时,暂停期间错过的计划不会补做,之后按原来的节奏继续。按次数结束的任务, 暂停期间的计划也计入次数;次数用完或截止时间已过时,恢复后任务直接结束。
计划被运行前条件跳过、条件判断失败,或因为 ZAI 不在这里而跳过时,都不会在频道或群聊里提示。任务很久 没有结果时,可以让 ZAI 查看任务状态和最近一次失败原因;如果是被条件跳过(跳过不算失败,也不留 运行记录),可以让它用最近的日期预览条件的判断结果。
ZAI 所在的应用被更换后,原来回复到某个消息列的任务会改为每次新开消息列,其他任务照旧。消息列的首条消息被删除后,回复到这个消息列的任务同样改为每次新开消息列。
ZAI 不在这里工作期间(例如被移出频道),到点的计划跳过、不补做,任务保持启用;频道被删除后,任务在下一次到点时结束,之后只能查看或删除,不能再手动运行。 各项功能怎样变化、怎样恢复,见ZAI 不在这里工作时各项功能的变化。
每次运行结束后,运行记录默认保留 90 天,更早的记录不再列出;清理旧记录不会让已经过去的计划 重新触发。
用运行前条件控制触发
可以让 ZAI 给任务加一个运行前条件,把中国工作日、单双周、时间窗口等规则组合起来。例如:
每隔 15 分钟检查发布,只在中国工作日的 9:00 到 23:00 触发;根据检查到的进展调整后续触发条件。
运行前条件由 ZAI 按你的描述编写并随任务保存,每个任务一个,之后每次到点都会先判断:允许时执行 这次任务;跳过时等下一次;暂时无法判断时稍后再判断同一次,不额外增加次数。条件判断出错或超时时, 会在短时间内自动再试;仍不成功,或者条件写法本身无法执行,这一次记为失败,不会默认执行。按次数 结束的任务,被跳过或失败的那几次也计入次数。
中国工作日按官方公布的放假与补班安排计算,普通周末和补班日会分别处理。节假日安排随官方每年 公布的安排更新;新一年的安排更新前,依赖中国工作日判断的那几次会失败、不会执行,也不会在频道或群聊里 提示,需要时可以先改成按周一至周五执行。
“单双周”有两种算法:按 ISO 周号算,或从你指定的日期起每隔一周执行,两者结果不同,请说明要哪 一种。“09:00—23:00”这样的时间窗口包含 09:00、不包含 23:00;条件只决定是否触发,实际开始执行 可能更晚。
ZAI 可以在任务说明委托给它的范围内调整这个任务之后的条件,例如上面例子里的“根据检查到的进展 调整后续触发条件”。修改从下一次判断起生效,本次执行照常完成;即使这次执行后来失败,已保存的 修改也不会撤销。
可以要求 ZAI 查看当前条件,或用指定日期试运行、预览;这些操作不会真正执行任务。如果任务因为 条件一直不满足而始终被跳过,ZAI 不会自动修改条件,但你可以在这里的其他消息列里要求修改。要求 手动运行一次时,不经过运行前条件,也不消耗原计划的次数。
让定时任务发布 Artifact
任务说明里可以要求 ZAI 把结果发布成 Artifact,也可以要求它更新或移除在这里发布过的 Artifact。这需要 Artifact 功能已经开启,见开始之前;没有开启时,结果改用附件发回。
- 每天或间隔更长的报告,ZAI 每期发布一个新的 Artifact,标题里写明周期,往期的链接仍然可以打开。
- 间隔比一天更短的任务(例如每小时刷新一次的看板),或者你要求始终维护同一个页面时,ZAI 更新同一个 Artifact,链接不变。
- 结果回到当前消息列时,Artifact 消息只在链接第一次出现时附上;选择每次新开消息列时,每个新的消息列里都会再附一次。维护同一个页面的任务,建议让结果回到原来的消息列。