Skip to content

定时与后台调度 ​

字数
2109 字
阅读时间
8 分钟

TIP

有两类工作不能在单个对话回合内完成:到未来某个时刻才触发的(早报、提醒、冷场搭话),以及耗时很长的(编译、下载、长脚本、子代理任务)。前者由定时任务负责,「到点再开始」;后者由后台任务负责,「现在开始,但不在当前回合同步等待」。

定时任务 ​

部分说明
目标在哪个会话、哪个路由触发
触发什么时候触发
动作触发后做什么
重复执行几次、到什么时候为止
状态活跃、暂停、完成、失败
归属谁创建的

目标绑定的是环境的身份快照,而不是固定的会话 ID,所以角色改名或群聊升级后仍能投递到正确位置。

触发方式 ​

类型含义
at某个具体时间点
every固定间隔重复
cron日历表达式,可带时区
watch持续观察一个条件

前三种由定时器驱动,watch 由新消息和定时轮询共同驱动。

动作 ​

  • 唤醒:模拟有人和机器人交互,在目标会话中触发一次常规回合。
  • 运行:用指定的流程引擎或子代理在后台运行一段提示词。结果可以发送到目标会话、只通知控制台,或不发送仅内部记录。

TIP

先想清楚谁需要看到结果:群消息所有人可见,面向管理员的通知更适合发到控制台。

状态 ​

活跃(等待下次触发)、暂停(保留配置但不触发)、完成(一次性任务执行完或达到重复上限)、失败(出错且未恢复)。状态实时持久化,重启后继续运行。

执行保证 ​

定时任务追求「尽量准时」。触发时依次检查:

  1. 是否到期:当前时间是否达到计划时间。
  2. 是否在宽限内:默认允许延迟 1 小时,超出则跳过,避免半夜补发白天的消息。
  3. 是否超过每日上限:默认单会话每天 100 次。
  4. 是否超过任务数量:默认单会话 20 个活跃任务。

因检查未通过而跳过不算失败,后续周期照常触发。

WARNING

任务偶尔不执行时,先查延迟宽限和每日上限。重启、长时间停机或任务堆积都可能让任务超出宽限。

频率约束 ​

配置默认
最短触发间隔5 分钟
单会话活跃任务20
单会话一次性唤醒5
单会话每日触发100
单次定时最长24 小时
最大延迟1 小时

间隔低于最短间隔的任务必须显式审批才能创建,防止误设成「每 10 秒一次」几分钟就耗尽全天额度。

关注条件 ​

watch 持续观察条件是否达成,可以读取:最近的消息、发言人身份与权限、会话沉默时长、累积消息条数、当前时间、任务已触发次数。

  • 消息驱动:只依赖消息内容的条件,每收到新消息判断一次。
  • 轮询驱动:依赖时间或沉默时长的条件,按固定间隔检查,默认 10 秒。

意图判定:规则表达不了的场景,可以调用判定模型回答一个是 / 否问题。单个频道两次判定至少间隔 30 秒,全局每天最多 200 次;超出配额直接返回「否」,不排队。

TIP

判定模型适合「聊到某个话题时插话」这类语义场景。只看消息数量或时长的规则不要用它。

一次性唤醒 ​

角色系统用一次性唤醒实现「等会儿再说」。与常规定时任务相比,它可以:

  • 设置过期时间,过期时选择「放弃」或「强行唤醒」。
  • 设置最小触发间隔,避免频繁自言自语。
  • 在角色因其他原因开口后自动取消。

后台任务 ​

什么时候转后台 ​

工具声明了同步等待的耗时上限。实际执行超出上限时,允许转后台的工具交给后台继续执行,先给当前回合返回占位结果;不允许的直接超时失败。委派的子代理也可以主动申请转后台。

状态:运行中、停止中、完成、失败、取消。

输出 ​

  • 模型可读结果:只含有效产出,完成后写回会话上下文,上限 8 KB。
  • 人类可读日志:详细执行日志,只在控制台展示,不进入模型输入,上限 256 KB,超出后只保留尾部并打截断标记。

日志接口支持从偏移量增量拉取,控制台只展示新增内容。

WARNING

截断只打标记、不报错。模型说「结果不完整」时,先查是否触发了 8 KB 的结果截断。

完成通知 ​

  • 唤醒:立即在当前对话中插入一条助手消息。
  • 下一轮:排队等用户下次对话时合入。
  • 静默:只在控制台记录。

按结果在当前对话中是否需要即时看到来选。

取消 ​

取消会通知底层任务停止,并立即切断结果回流。部分外部任务无法瞬间停止,但过期结果绝不会再写入会话。

持久化 ​

定时任务落盘,重启后自动恢复调度;运行中的后台任务属于进程状态,重启后通常标记为中断。定时任务是对用户的承诺,必须守住;后台任务的执行环境随进程消失。

与权限的关系 ​

无人值守触发的工具调用照常走审批,需要审批而无人处理时按未批准处理。所以把需要人工审批的命令放进定时任务,效果往往是每次都失败。

WARNING

自动化任务优先用只读操作。确实需要写入或高权限操作时,提前在权限规则中为该场景授权。

常见问题 ​

任务到点没执行:检查状态是否活跃、是否超出延迟宽限、是否达到每日 100 次或活跃 20 个的上限,以及实例当时是否停机。

关注条件一直不成立:先用最简单的条件验证,确认引用的字段存在,检查轮询间隔是否过长。

判定模型没有调用:检查频道 30 秒冷却和每日 200 次预算,以及判定模型是否可用。

后台任务一直运行:看控制台日志是否还在滚动,确认是耗时长还是卡死,必要时手动取消。

后台结果没回到对话:检查完成通知方式,静默模式下结果只在控制台。

重复任务突然停了:检查是否达到重复次数上限,或因出错被标记为完成或失败。

下一步 ​

页面历史

在 CC-BY-SA-4.0 许可下发布