18.06概念更新于 2026年9月17日

异步任务体验

后台运行、通知、恢复与多任务并行。

18.06 · 课时讲解

异步任务体验

不是让用户盯着看,而是让用户放心离开,回来时一眼看懂。

1 / 12

一句话理解:长任务体验的关键不是让用户盯着看,而是让用户放心离开:任务在后台可靠运行,需要人的时候能及时找到人,用户回来时一眼看懂发生了什么。

Agent 的价值往往恰好在长任务上:全站 SEO 诊断要跑 20 分钟,一批售后工单要处理一上午,Coding Agent 在云端实现一个功能可能要一个小时。如果这些任务要求用户一直开着页面,那用户节省下来的时间,又被“盯着 Agent 干活”消耗掉了。

更麻烦的是,长任务中途经常需要人:审批一个操作、确认一个模糊点、处理一个异常。如果 Agent 在这些时刻只是在页面上默默等待,而用户早已切去开会,任务就会卡住几个小时。这一课讲如何设计异步任务的体验。后台执行、断点续跑等工程机制见 长时间运行的任务 与 任务状态与 Checkpoint,这里聚焦用户侧的体验。

什么时候应该转为异步

不是所有任务都应该异步。一个实用的判断方式是看 预期耗时 与 用户是否需要立即得到结果:

预期耗时(示例区间) 建议形态 例子
几秒 同步,流式输出 查询订单状态
十几秒到两分钟 同步,展示进度,允许用户离开 单个订单的售后诊断
几分钟以上 后台运行,完成或需要人时通知 全站 SEO 诊断、销售周报
周期性或事件触发 常驻任务,只在例外时通知 每天早上自动巡检前一天的超时工单

图 1 把这四档放在一条轴上:

按预期耗时选择任务形态:几秒同步流式,十几秒到两分钟同步加进度,几分钟以上后台运行并通知,周期性任务常驻并只在例外时通知 几秒 同步 流式输出 查询订单状态 十几秒到两分钟 同步 + 进度 允许用户离开 单个订单的售后诊断 几分钟以上 后台运行 完成或需要人时通知 全站 SEO 诊断、销售周报 周期性或事件触发 常驻任务 只在例外时通知 每天早上自动巡检超时工单 任务开始就告知预期耗时,并明确“离开也没关系”
图 1 · 按预期耗时选形态:从几分钟起,就该让用户放心离开(区间为示例)

表中的区间是经验示例,要结合你的用户研究调整。关键是:任务开始时就告诉用户预期耗时,并给出“离开也没关系”的明确信号,例如“预计 15–20 分钟,完成后会通知你,你可以关闭此页面”。

任务中心:多个任务的总览

当 Agent 任务在后台运行,用户需要一个地方统一查看所有任务。任务中心的设计要点是 按“需要我做什么”组织,而不是按时间排序(图 2):

任务中心线框:按“需要我处理”置顶,列出等待审批、需要确认、部分完成的任务,其下是进行中的任务与可数进度 我的任务 + 新任务 ● 需要我处理 (3) ○ 进行中 (5) ○ 已完成 ○ 失败 需要我处理 ⚠ A1024 订单售后处理 等待审批:发送客户邮件 12 分钟前 ? 3 月销售周报 需要确认:是否包含退货数据 1 小时前 ✕ 全站 SEO 诊断 部分完成:8 个页面抓取失败 2 小时前 进行中 ◐ 华东区库存巡检 第 3/5 步 · 已处理 214/600 单 预计 10 分钟 ◐ 竞品价格调研 第 2/4 步 预计 25 分钟
图 2 · 任务中心线框:按“需要我做什么”组织,而不是按时间排序

几个细节:

  • “需要我处理”置顶,并说明具体需要做什么,而不是只写“等待中”。
  • 失败和部分完成归入“需要我处理”,因为它们通常需要用户决定下一步。
  • 进行中的任务显示可数的进度,参考 计划与进度。
  • 每个任务都能一键进入 对应的执行页,从执行页也能返回任务中心。

通知:该打扰时打扰,不该打扰时安静

通知设计最常见的失败是两个极端:什么都不通知,任务卡住没人知道;什么都通知,用户很快关掉所有通知。按事件类型设计:

事件 是否通知 渠道 通知内容
需要审批或确认 立即 应用推送、企业 IM 要确认什么 + 可直接操作的按钮
任务完成 是 应用内、IM 或邮件 一句话结论 + 产物链接
失败或部分完成 是 与完成相同,标记醒目 做成了什么、没做成什么、建议的下一步
执行中的步骤进展 否 仅在页面内显示 —
审批长时间无人处理 升级 通知备选审批人或主管 已等待多久、影响是什么

可以直接操作的通知 能极大减少审批等待时间。例如在企业 IM 里收到的审批卡片,直接包含通知内容预览和“批准 / 修改 / 拒绝”按钮,用户不必打开 Agent 产品。但高风险操作仍应引导用户进入完整的审批页面,见 审批与接管。

其他注意事项:

  • 合并通知。同一个任务短时间内的多个事件合并为一条;批量任务完成时发一条汇总,而不是每个子任务发一条。
  • 尊重工作时间。非紧急通知在用户设定的免打扰时段内延后发送。
  • 让用户选择通知粒度。有的主管只想知道失败,有的专员想知道每个任务的完成。
  • 通知本身也要可追踪。审批通知是否送达、是否被打开,是排查“为什么卡住”的关键信息。

回来之后:一眼看懂发生了什么

用户离开两个小时后回到任务页面,最需要的是一段 离开期间的摘要,而不是一长串执行日志:

你离开期间(14:05–16:10)
  ✓ 已完成 23 个工单的售后诊断
  ✓ 已发送 18 封客户邮件(你在 14:32 通过 IM 批准)
  ⚠ 5 个工单需要你决定是否发起退款                 [去处理]
  ✕ 2 个工单因订单系统故障未能诊断,已安排 17:00 自动重试
  费用:本任务已花费约 ¥12.40,预算 ¥30

这段摘要回答了用户回来时的四个问题:完成了什么、我之前做过什么决定、现在需要我做什么、有没有出问题。

另外两个常见需求:

  • 运行中补充要求。 用户在任务执行过程中想到“对了,VIP 客户的通知要加上专属客服电话”。界面应该允许在运行中追加指令,并明确告诉用户这条指令从哪一步开始生效、已经发出的通知是否受影响。
  • 中断后恢复。 任务因为系统故障、超时或用户暂停而中断,恢复时应该从中断的位置继续,并告知用户“从第 4 步继续,前 3 步的结果已保留”,而不是从头再来一遍。

图 3 把一个异步任务从发起到用户回来的状态流转串起来:

异步任务的状态流转:发起时告知预期耗时,后台运行中可能需要人或被中断,结束后通知结果,用户回来看离开期间摘要 发起任务 告知预期耗时 后台运行 可以放心离开 结束 成功、部分完成或失败 通知结果 结论 + 产物链接 用户回来 离开期间摘要 需要人 审批或确认 立即通知,可直接操作 长时间无人处理则升级 中断 故障、超时或暂停 从断点恢复,前面的结果保留 避免重复执行写操作
图 3 · 异步任务的状态流转:需要人时立即通知,中断后从断点恢复,回来时先看摘要

多任务并行

当用户同时运行多个 Agent 任务,会出现单任务时不存在的问题:

问题 例子 设计对策
资源冲突 两个任务同时要修改同一个工单的状态 检测冲突并提示;对共享资源加锁,后发起的任务等待或询问用户
重复工作 用户不小心为同一批工单发起了两次诊断 发起时检测相似任务,提示“已有进行中的相同任务”
注意力分散 5 个任务同时请求审批 在任务中心聚合审批请求,支持批量处理
成本失控 同时运行大量任务,费用快速累积 显示每个任务与总体的花费,设置用户或团队级预算上限
优先级 紧急异常任务排在批量巡检后面 允许用户调整优先级,紧急任务可以插队

常见误区

  • “显示一个加载动画,等它跑完就好。” 超过用户耐心的任务必须支持离开和通知,否则用户会反复刷新或中断重来。
  • “通知越多,用户越放心。” 过量通知会让用户关闭通知,真正需要处理的审批也随之被错过。
  • “用户回来自己看日志就知道发生了什么。” 日志是给排查问题的人看的,普通用户需要的是离开期间的摘要。
  • “任务失败了就让用户重新发起。” 长任务从头重跑既浪费时间又浪费成本,还可能重复执行已经完成的写操作。

设计要点

  • 任务开始时告知预期耗时,长任务明确告诉用户可以离开。
  • 任务中心按“需要我处理 / 进行中 / 已完成 / 失败”组织,需要处理的置顶。
  • 通知只发给需要人的时刻和结果;审批通知可直接操作,长时间无人处理时升级。
  • 合并通知,尊重免打扰时段,让用户选择通知粒度。
  • 用户回来时提供离开期间摘要:完成了什么、做过什么决定、需要做什么、出了什么问题、花了多少钱。
  • 支持运行中追加指令,并说明指令生效的范围。
  • 中断后从断点恢复,避免重复执行写操作。
  • 多任务场景下处理资源冲突、重复任务、审批聚合、预算与优先级。

练习

为「可执行的售后处理 Agent」设计异步体验(45–60 分钟)。场景:客服主管早上 9 点发起“处理昨天全部 120 个超时工单”的任务,然后去开两个小时的会。

  1. 写出任务发起时的确认文案,包含预期耗时和离开提示。
  2. 列出执行期间会产生的通知事件,为每个事件决定是否通知、通过什么渠道、通知内容是什么。
  3. 写出主管 11 点回来时看到的“离开期间摘要”。
  4. 设计一个在 IM 中直接批准客户邮件的消息卡片。

下一步

长任务中,失败几乎不可避免:接口故障、数据缺失、Agent 判断不了。下一课「失败的呈现」讲如何坦诚地报告失败与部分完成,并给出下一步建议。

试试:上下文、MCP、沙箱、Prompt 注入、外链