当翻译终端开始呼吸:我把日志墙改成了实时仪表盘

当翻译终端开始呼吸:我把日志墙改成了实时仪表盘

盯着终端里一行行刷过去的日志,脑子里只有一个念头:

我知道它在跑,但我不知道它现在到底跑到了哪里。

批量翻译的旧体验,就是一堵会滚动的文字墙。每个 chunk 最终完成时你能看到,但在进行中,三件关键事情一眼判断不了:

  1. 整体进度是不是健康
  2. 哪几个块在卡住
  3. 当前吞吐到底是快还是慢

当规模从几块变成几十块、再到多语言并行的几百次调用时,这三件事不清楚,焦虑指数级上升。

目标很朴素:做成像 top 那样,一眼可读。

改了什么

核心思路:把"事件日志"变成"状态面板"。

三层显示策略,确保任何环境都能跑:

  • auto:检测终端与依赖,能上面板就上
  • rich:强制面板
  • plain:回退到传统日志

体验升级不绑架可用性——终端条件不好时自动降级,不影响翻译主流程。

面板分两层:

上层——全局态势:

  • 总进度条 + ETA
  • 成功率
  • 瞬时吞吐(近 5s chars/s)与平均吞吐(全程 chars/s)

下层——逐块状态:

  • chunk 编号 + 状态(pending / running / retry / done / failed)
  • 百分比 + 实时字符数
  • 耗时 + 重试备注

两个吞吐并排是我最满意的细节。平均值告诉你全程表现,瞬时值告诉你此刻体感——只看一个,要么忽略突发抖动,要么被短期波动误导。两者并排,才是可操作的信息。

真正值钱的不是界面

Screen Shot

表面看是终端好看了。实际是工程行为变了。

以前等任务跑完,再回头看哪里慢、哪里失败。现在运行中就能做判断:

  • 某块长期低百分比——模型慢还是网络慢?
  • 某批吞吐突然下滑——系统波动还是内容复杂度上升?
  • 成功率变化——偶发失败还是配置问题?

"排障"变成了"调度"。从被动监工到主动驾驶。

用实验书稿重跑了一遍全流程验证:6 chunk 全部成功,面板实时可读,每块百分比让"哪里慢"一眼可见。这类反馈在小任务里是锦上添花,在 24 chunk × 10 语言的规模里就是救命信息。

一句话

当系统进入规模化阶段,界面不是装饰,它是控制面。

而且这次,我终于能在终端里看到它"呼吸"了。

Comments