定时与后台调度
TIP
有两类工作不能在单个对话回合内完成:到未来某个时刻才触发的(早报、提醒、冷场搭话),以及耗时很长的(编译、下载、长脚本、子代理任务)。前者由定时任务负责,「到点再开始」;后者由后台任务负责,「现在开始,但不在当前回合同步等待」。
定时任务
| 部分 | 说明 |
|---|---|
| 目标 | 在哪个会话、哪个路由触发 |
| 触发 | 什么时候触发 |
| 动作 | 触发后做什么 |
| 重复 | 执行几次、到什么时候为止 |
| 状态 | 活跃、暂停、完成、失败 |
| 归属 | 谁创建的 |
目标绑定的是环境的身份快照,而不是固定的会话 ID,所以角色改名或群聊升级后仍能投递到正确位置。
触发方式
| 类型 | 含义 |
|---|---|
at | 某个具体时间点 |
every | 固定间隔重复 |
cron | 日历表达式,可带时区 |
watch | 持续观察一个条件 |
前三种由定时器驱动,watch 由新消息和定时轮询共同驱动。
动作
- 唤醒:模拟有人和机器人交互,在目标会话中触发一次常规回合。
- 运行:用指定的流程引擎或子代理在后台运行一段提示词。结果可以发送到目标会话、只通知控制台,或不发送仅内部记录。
TIP
先想清楚谁需要看到结果:群消息所有人可见,面向管理员的通知更适合发到控制台。
状态
活跃(等待下次触发)、暂停(保留配置但不触发)、完成(一次性任务执行完或达到重复上限)、失败(出错且未恢复)。状态实时持久化,重启后继续运行。
执行保证
定时任务追求「尽量准时」。触发时依次检查:
- 是否到期:当前时间是否达到计划时间。
- 是否在宽限内:默认允许延迟 1 小时,超出则跳过,避免半夜补发白天的消息。
- 是否超过每日上限:默认单会话每天 100 次。
- 是否超过任务数量:默认单会话 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 次预算,以及判定模型是否可用。
后台任务一直运行:看控制台日志是否还在滚动,确认是耗时长还是卡死,必要时手动取消。
后台结果没回到对话:检查完成通知方式,静默模式下结果只在控制台。
重复任务突然停了:检查是否达到重复次数上限,或因出错被标记为完成或失败。