Skip to content

【Managed Agent】可恢复任务:暂停、回退与现场复现

本文暂为大纲,正文待补充。

Agent任务不是一次不可中断的函数调用。用户可能在执行中补充要求、改变主意、切换对话后再回来;系统也可能遇到Worker重启、Sandbox异常或外部调用失败。这里要讨论的是:如何把一轮任务保存成可解释、可继续推进的现场。

要回答的问题

  • 一段对话、一次Run、一个Session和Sandbox分别保存什么状态?
  • 为什么要把关键变化记录为原子事件,并在关键位置保存Snapshot?
  • 任务暂停、失败或服务重启后,如何找到可以恢复的检查点?

消息进入正在执行任务时的选择

  • QUEUE:等待当前Agent Loop收束,再顺序处理下一条消息。
  • STEER:把新消息作为对当前任务的补充,在合适的衔接点带入后续推理。
  • SUPERSEDE:用户改变主意,停止当前路径,回退到上一个可恢复检查点,再按新消息继续。

现场复现与回退

  • Snapshot包含哪些可复现信息:配置版本、消息历史、工具结果、工作区与Session指针。
  • 怎样区分“恢复阅读结果”和“恢复执行任务”。
  • 回退后如何避免旧事件、旧工具输出继续污染新的执行路径。

用户主动改变历史时发生什么

  • Saki编辑一条已经发送过的历史消息:编辑不是覆盖旧事实,而是从该消息所在节点创建新的后续分支;旧分支仍可审计和复现。
  • Saki选择“回到这里”:从某个历史节点恢复当时的对话、配置和执行现场,并把后续交互接到新的分支上。
  • Saki在正在执行的任务中选择回退:先停止或隔离当前尚未收束的执行,再以选中的检查点重新开始,避免旧任务的流式输出继续写入新分支。
  • 用户可见的界面应该怎样表达“当前所在分支”“正在回退”“已从历史节点继续”,避免把回退误解成删除历史。

和其他专题的边界

  • 事件主干与可靠投递见《事件主干:为什么是Kafka》。
  • 用户如何看到持续更新,见《流式交付与可恢复阅读》。
  • Sandbox的快照、重建与回收,见《Sandbox选型与生命周期》。