L1.12.5long background jobs should not stream设计研究

后台长任务不适合流式,它需要的是进度与允许离开

别名: 长任务不流式 · 进度与离开 · stream vs progress

概念解释

跑二十分钟的分析还在对话气泡里一个字一个字往外蹦,人就得盯着气泡,也不能关页。长任务要的不是首字安慰,是进度和离开权:现在到哪、还要多久量级、关掉之后谁来通知我。把长任务做成流式,是把后台工作按成了前台表演。

秒级带子里的生成,流式是感知工具。出了带子,流式变成羁押。

机制

流式绑定会话:连接、滚动位置、前台注意力。后台任务绑定的是工作项:可断线、可换设备、可在完成后被叫回来。两种绑定反了,人要么牺牲离开权来换那点正在出的字,要么离开后丢失进度和结果。长任务的失败模式也不同:该报的是阶段和可恢复检查点,不是半句话。

进度必须是阶段真实进度,不是把 token 数画成百分比。Token 与「还要多久」在工具调用和排队面前几乎无关。假进度会在尾巴上冻住,比没有更像卡死。

怎么研究

同一二十分钟任务:对话内流式 vs. 工作项 + 阶段进度 + 离开后通知。因变量:离开次数、完成到达率(人真的回来看结果)、焦虑、误以为卡死。自变量:进度是阶段还是假百分比、通知通道。

到达率是主终点。流式组若人一直没离开,不能算「更投入」,要问他们能不能离开。

边界

用户明确要求看着中间推理,可以提供可选的只读流,但默认仍是可离开的工作项。一两分钟的任务仍在带子附近,流式或短进度都可以。真后台若完全不给任何活信号,会被判死,那是另一极端。这条把流式从长任务上拿开,不否定短生成上流式的感知价值。

怎么落地

  • 预估超过约 30 秒或含多步工具的任务,做成工作项:阶段名、允许离开、完成后通知。不要挤在气泡里流。
  • 进度用阶段(检索中 / 分析中 / 写报告),不用 token 百分比。
  • 离开后结果进收件箱或任务列表,下次打开还在,不依赖那条 TCP。
  • 验证:让人去做二十分钟的任务,看他们能不能去干别的并被叫回来。不能,流式在羁押。再看进度条在最后 20% 是否冻住——冻住,百分比是假的。

延伸

  • 同组L1.12.1 生成延迟通常落在用户能感知等待但尚不会放弃的秒级区间 · L1.12.2 流式输出缩短的是首字时间而非总时长,改变的是感知而非事实 · L1.12.3 逐字出现会诱使用户在结果完成前开始判断,从而基于半成品做决定 · L1.12.4 流式过程中的自我修正会让用户看到随后被推翻的中间内容
  • 相邻L4.12 任务进度与中间态可见 · L3.11 生成过程的流式呈现 · I3.07 后台任务
  • 站内检索background job not stream · progress and leave · TTFT versus long task

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/L1.12.5