0020 调度:用 Paseo 定时任务把消息发回对话,排队在本机进行
- 状态:已采纳
背景
需求开发要几个小时,使用者常常不在电脑前:希望晚上或明天早上再开始;限流中断后能自己接着做;等自己回答问题太久时有人提醒;同一台机器同时跑太多条流水线会抢资源和额度。
流水线进程是后台脚本,进程结束后就没有谁来做"过一会儿再做某事"。Paseo 的定时任务(schedules)由 daemon 保存,机器重启后仍然有效,可以在指定时间把一段话发进某个 agent 的对话,也可以按时间表启动新 agent。
决定
- 需要"以后再做"的事,都用 Paseo 定时任务把一条写明步骤的消息发回发起的对话,由对话 agent 执行 req-kit 的命令:预约开始(
--at)、等待回答的提醒(waitingReminderHours)、临时错误后的自动继续(autoResumeMinutes,每次尝试最多autoResumeMax次)、可选的定时检查(watchdogMinutes,默认关闭)。消息先让对话 agent 查看进度,状态不符就什么也不做,所以重复或过期的消息无害。 - 这些定时任务记在状态文件中,下一次运行和暂停命令会取消它们;预约开始记在
.pipeline/scheduled-start.json。 - 并发上限在本机实现(
maxConcurrentPipelines,~/.req-kit/slots/):排队的流水线进程自己等待名额,不需要 Paseo 参与。 - 需求总览(
req digest)发给外部通知;--schedule用 Paseo 定时任务按时间表启动一个短暂的 agent 执行这条命令(会产生少量用量)。 - Paseo 定时任务在 0.11 的公开 SDK 中还没有,和工作区脚本一样经由内部客户端调用(见 ADR 0017),不可用时这些功能自动关闭,并在输出中说明。
影响
使用者不在时,开发可以按时开始、出错后自己继续、等待太久会被提醒。每条定时消息会让对话 agent 运行一个回合,有少量用量;定时检查的回合最多,所以默认关闭。
本页由仓库中的 docs/adr/0020-scheduling-through-the-chat.md 生成。在 GitHub 上编辑