Skip to content

任务:目标激活与宿主调度 ​

目标与计划通过会话事件保存状态,目标续轮还需要进程内激活。定时提醒使用独立宿主存储,并在到期时向原 Session 投递,三类机制分别拥有状态与触发责任。

持久任务状态与独立触发器

箭头表示标注的调用或依赖关系;点击组件定位正文。完整关系见下方文字说明。

文字关系说明与章节链接

目标服务 →(读取阶段与激活)→ 目标续轮消费者;目标续轮消费者 →(满足条件才续轮)→ 原 Session/Agent;目标服务 →(记录目标变更)→ 会话持久事件;计划协作插件 →(记录计划与模式)→ 会话持久事件;宿主提醒调度器 →(到期投递原会话)→ 原 Session/Agent;宿主提醒调度器 →(读写独立任务)→ 宿主提醒存储。

目标服务 · 目标续轮消费者 · 原 Session/Agent · 会话持久事件 · 计划协作插件 · 宿主提醒调度器 · 宿主提醒存储

目标服务保存修订与状态 ​

dsh-goal 保存每个 Session 的当前目标,以 goal/change 完整快照或删除记录表达 active、paused、blocked、complete 等状态。

dsh-goal · 接口摘录,省略上下文 · ctx.goals.create · docs/subsystems/goal.md
// 在会话日志中创建目标,并激活当前进程的自动续轮授权。
create(agent: Agent, request: CreateGoalRequest): GoalView

tool-goal 用精确的 id 与 revision 更新,避免旧调用覆盖新目标;command-goal 让用户直接控制。goal-round-driver 在 Agent 整体空闲、目标已激活续轮且还有额度时排入下一轮,进入模型历史的目标消息才消耗额度。人类新消息和过期预留不应被算作自动轮次。

续轮消费者检查本地激活 ​

目标的持久 active 状态与当前进程的续轮激活是两回事。固定版本在 resume 或 fork 后保持未激活,必须有明确人类授权的 resume 才重新自动推进;仅挂载 driver 不会重启旧目标。

dsh-goal · 接口摘录,省略上下文 · ctx.goals.resume · docs/subsystems/goal.md
// 按精确目标版本恢复并激活续轮,恢复会话后需明确人类授权。
resume(agent: Agent, ref: GoalRef): GoalView

取消不自动重试本轮,进行中或已排队的目标轮在下一次空闲时暂停,不相关取消则解除续轮激活。达到额度记录 round-limit 阻塞,持久化失败、卸载或特定结束原因也会停止自动推进。

计划模式保存协作状态 ​

dsh-plan-mode 通过 plan/mode 日志保存整体状态,让恢复、分叉和压缩仍能重建已接受的协作阶段。

dsh-plan-mode · 接口摘录,省略上下文 · ctx.planMode.set · docs/subsystems/plan.md
// 设置计划模式,运行中的变更可排队等待下一次接纳安全点。
set(agent: Agent, active: boolean): 'committed' | 'queued' | 'cancelled' | 'noop'

客户端区分当前状态和待应用选择;需要等执行安全点的变更在被接受的 pre-step 应用,失败则保留待定状态,未提交的选择可能在退出时丢失。它注入的是软性提示,section 与顺序由配置指定,并不会代替文件沙箱或动作审批。

宿主提醒独立保存与投递 ​

dsh-schedule 保存宿主范围的任务,在到期时恢复冷 Session 并向原会话投递后续消息,以 Session flush 确认提交。

// 持久保存绑定原会话的提醒,创建时不激活该会话。
async create(sessionId: SessionId, request: ScheduleCreateRequest, signal?: AbortSignal): Promise<ScheduleRecord>

固定版本 Web 默认没有 schedule 条目,需要可选实验 bundle,且投递依赖 Web Session controller 与持久化。周期任务停机后只补最新一次错过的触发;每日本地时间遇到夏令时缺口跳过,重复时刻只取较早一次。任务删除后,已经排入会话的消息不会因此被撤回。

辅助示例

用户要求检查全部模块,Agent 保存目标并逐轮推进;用户中途说先给计划,计划模式影响下一步协作方式。关闭后再恢复,目标仍可见,但自动续轮尚未激活;明确继续后才重新激活。另设的明早提醒由 schedule 负责,它投递一条新消息,不代表原任务仍在运行。

设计取舍 ​

把目标、自动推进、计划提示和时间调度分开,使人类可以分别控制“做什么”“现在是否继续”和“何时再提醒”;代价是界面和调用者必须呈现这些不同状态。持久目标与定时记录能跨重启保留,但不等于每种自动活动都具备恰好一次投递。

相关包与插件
资料来源与核验范围

本章依据固定版本的官方文档整理,设计取舍根据所述机制分析;核验范围为文档,不包含运行实测。

图示
100%双指缩放 · 滑动查看