任务运行时

连接断开不等于轮次或任务结束

用户可以在同一项 Task 中补充要求、回答问题并继续执行。每次输入启动一个运行轮次,轮次内可以包含多次模型调用和工具操作;客户端连接只负责观察正在发生的执行。连接可以在轮次运行期间中断,轮次结束后 Task 仍可接受新的输入。

下图以同一 Task 中的两次输入为例。第一次执行期间连接断开,轮次仍在后台推进;重新连接后恢复观察。本轮结果保存后,Task 继续存在,并在收到下一次输入时启动轮次 2。

断线为什么不会结束 Task 同一 Task 接收两次输入,第一次运行期间客户端断开并恢复,但运行轮次继续推进 断线为什么不会结束 Task 连接可以更换,轮次可以结束,Task 继续保存工作事实 输入 1 连接断开 重新连接 轮次 1 保存 输入 2 Task 记录 同一 Task 持续存在 目标 · 消息 · 状态 · 工作空间 · 结果 运行轮次 轮次 1 继续执行 等待下一次输入 轮次 2 观察连接 连接中 离线 恢复观察 新连接 连接断开 只关闭观察通道,轮次 1 继续 轮次结束 结果写入后,Task 仍然存在 再次输入 同一 Task 启动新的运行轮次 Task、运行轮次和观察连接分别管理,因此三种“结束”不会互相替代。

对象保存或管理什么结束的含义
Task目标、消息、工作空间、任务状态和交付记录当前目标的处理结果已经记录,后续仍可继续
运行轮次本次输入对应的模型步骤、工具执行和取消控制本轮停止推进,进入收尾
客户端连接文本与工具事件的实时传递当前观察通道关闭,不直接代表后台执行结束

Chat 使用独立的会话记录与轮次入口,Team 还有成员及依赖状态。它们复用 Agent 核心能力,但不能将这些产品对象都理解为同一条 Task 数据记录。

Web 与 Desktop 共用任务轮次

共享任务轮次负责取得任务锁、读取已有状态、准备工作空间、装配模型上下文与工具、运行 Agent 循环,以及执行收尾。Web 与 Desktop 分别提供存储、锁、取消登记和传输实现。

这一边界使两端的任务语义可以共同维护。例如,取消时如何处理未结束的工具片段、何时保存助手消息、等待用户时如何保留任务状态,都由共享运行逻辑决定。

身份和配额等预检仍由宿主承担。任务运行前,宿主确认执行者与任务的绑定关系并保存用户输入。MCP 连接可以与 Agent 配置准备并行进行,在工具装配需要连接结果时再等待,从而减少启动路径中的串行等待。

同一任务的并发推进受锁约束

重复提交和队列重投都可能尝试启动同一任务。运行时只有在取得任务锁后才进入 Agent 循环;活动运行还登记取消控制器,以便停止请求找到当前执行。

Web 在配置相应基础设施时使用分布式协调,Desktop 使用进程内协调。锁控制并发推进,不能消除外部操作已经产生的副作用,也不等同于所有工具具有“恰好执行一次”的保证。

重连恢复观察,继续任务启动新轮次

客户端断开后,只要执行宿主仍然运行,后台任务可以继续推进。重新打开页面时,系统先确定任务是否仍在运行,再决定连接活动事件流,或读取已经保存的结果。

Web 的可恢复缓冲区区分活动流、已结束流和不存在的缓冲。新轮次开始前清理旧轮次缓冲,防止旧事件混入当前执行。缓冲用于恢复观察进度;任务记录用于恢复已保存的工作事实。

Desktop 的 Renderer 与应用主进程具有不同生命周期。Renderer 重载、导航或关闭面板后,只要主进程与本轮执行仍存活,内存 StreamBuffer 就可以重放已有事件并继续传递实时事件。主进程退出后,内存缓冲随之消失,恢复依据转为持久化消息、状态与文件。文档不承诺任意中断点的工具续跑,也不将事件重放描述为重新执行工具。

停止请求进入统一收尾路径

用户停止任务时,运行时向模型与工具传播取消信号,并处理尚未结束的消息片段。外部请求和脚本能否立即停止取决于各自实现;已经生效的文件修改或外部操作不会因取消自动撤销。

Web 的跨实例取消需要让停止请求到达持有任务的 worker。系统先记录取消状态,再通知执行实例;订阅建立后补查一次状态,以覆盖停止请求先于订阅到达的窗口。Desktop 使用本地取消控制,但进入相同的任务收尾逻辑。

停止原因也影响结果解释。用户取消、部署中断和执行失败需要保留区别,用户才能判断是继续任务、修复环境,还是调整目标。等待用户回答则可以结束当前轮次,同时保持任务处于等待输入的状态。

持久化结果先于轮次结束通知

任务收尾将运行中的消息转换为后续可以读取的记录。共享收尾流程依次承担以下职责:

  1. 对取消后仍处于等待执行状态的工具片段写入中断结果,避免界面持续显示运行。
  2. 保存助手消息、累加本轮用量并更新任务元数据与结束原因。
  3. 按配置保存后续压缩所需的用量锚点,以及逐步执行和子 Agent 记录。
  4. 满足条件时提交后台记忆提取。
  5. 返回收尾结果,由外层运行逻辑发出轮次结束通知并清理运行资源。

这里的关键顺序是任务结果先保存,再通知观察者本轮结束。用量锚点与后台记忆提取属于辅助路径,不能将它们的成功写成任务完成的必要前提。交付文件的持久化由交付服务负责,也不能理解为终态更新自动复制所有工作区文件。

恢复的边界在于已确认事实

继续任务时,运行时从已保存消息、状态和工作空间重新装配输入。未持久化的中间输出可能丢失,外部服务中的副作用也可能先于本地结果记录生效。

因此恢复需要区分两种情况:模型推理可以依据现有事实继续;文件写入、外部发送等动作则应先核查实际结果,再决定是否重试。任务锁、事件缓冲与持久化记录各自解决不同问题,共同提供恢复依据,但不会自动为所有外部工具提供事务回滚。

能力WebDesktop
并发协调依赖部署配置的跨实例锁与运行登记进程内锁与运行登记
活动流恢复配置恢复缓冲后重连读取,可跨 API 实例主进程存活期间由内存 StreamBuffer 重放并继续实时传递
进程退出后的依据已保存任务消息、状态与文件本地 SQLite、任务消息与文件
取消传播跨实例通知与本地取消信号本地取消信号
外部副作用恢复按工具核查或使用幂等机制按工具核查或使用幂等机制

相关阅读

这页有帮助吗?