I2.10.4elapsed time when ETA has no basis设计
缺乏可靠依据时,宁可只显示已耗时而非编造剩余时间
别名: 没有依据不编剩余 · 只显示已用时 · withhold remaining
概念解释
外推要有原料:可测的完成量、非零的时间窗口、对剩余工作量的某种计量。三样缺一样,吐出的「还剩 N 分钟」是编的。编比沉默更糟,因为它占用了剩余时间这条信道。依据不够时,诚实的显示是已耗时(「已用 2 分 10 秒」)加阶段,而不是一个没有分母的终点。已耗时是观测,不是预言,不依赖平稳速率。
机制
剩余时间是剩余量除以速率。剩余量不知道(不确定进度、生成式任务、排队位置未告知),除法没有被除数。速率不知道(还没开始动、主线程冻住、窗口里全是零),除法没有除数。仍然显示剩余,只能塞进默认值、拍脑袋的「大约一分钟」、或从别的用户平均里借一个与这次无关的数。这些数看起来和真外推长得一样,人无法分辨,于是会按预言去计划。已耗时不进入除法:它只报告时钟已经走了多少,让人用自己的耐心模型去决定还要不要等,而不假装系统已经算到了终点。
只给已耗时还有一个副作用:它不会在速率抖动时乱跳,因为它不外推。跳动被从根上拿掉了。代价是人少了一个决策用的终点,必须用阶段和可取消来补决策,而不是用假终点来补。
边界
总量已知、速率窗口已经够长,还只给已耗时,是在该外推时偷懒,把决策负担推给人。平均历史若与这次任务同质(同一类导出、同一机房),可以作为弱依据出宽区间,并标明是「同类任务通常」,不是这次的外推;不标明就是编。排队系统若能给位置,位置可以代替剩余量来做一种终点,不必退回纯已耗时。已耗时自己变成一种压力(「你已经等了 20 分钟」)时,要配取消,不要用已耗时催人继续等一个没有终点的过程。
怎么落地
- 在「剩余量未知或速率窗口无效」时关掉剩余时间,改显示已耗时 + 当前阶段。
- 不要用产品级默认「大约 1 分钟」去填空;那是编。
- 一旦窗口和总量变得有效,再升级到区间或点,并让人看得出从已耗时切到了估计。
- 验证:对一个不确定进度、不知总量的生成任务,界面若仍出现「还剩 3 分钟」,问这个 3 从哪来。说来自默认值或与本次无关的平均值,就是在编。关掉它,只留已耗时,看人是否仍能决定取消或切走——能,这条降级就够用。