lhh010/dsh-ui-progress

DSH Web UI 会话进度插件:输入框停靠区常驻会话进度条(todos 真实进度 / 实时 token 生成速率 / 中断橘红态 / 待办提醒),零核心改动

Project Overview项目介绍

DSH Web UI session progress bar plugin: a client-side addon for the DeepSeek Harness Web GUI that docks at the input area, showing real todo-based progress, elapsed time, ETA, an orange interrupted state, an amber pending-interaction warning, and a live self-calibrating token generation rate (1s sliding window, estimated). Use it to observe DSH session status, todo advancement, and streaming throughput. Caveat: the token rate is an estimate (streaming chunks carry no token count, calibrated after the first settled step's provider usage), and ETA is only shown when the model reports an eta field via report_progress.

DSH Web UI 会话进度条插件,纯客户端实现,常驻于输入框停靠区,显示基于 todos 真实比例的进度、已耗时、ETA、中断橘红态、待办琥珀警告,并提供运行中实时 token 生成速率(自校准估算 + 1s 滑动窗口)。适用于需要观察 DSH 会话运行状态、待办进度与生成速率的场景。注意:速率流式 chunk 无 token 计数,依赖字符密度与首次校准,属估算值;ETA 完全依赖模型在 report_progress 上报,模型未报即隐藏。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.10.0'

lhh010/dsh-ui-progress 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

@dsh-external/dsh-ui-progress

DSH Web UI 会话进度插件:为 DeepSeek Harness 的 Web GUI 的输入框停靠区提供常驻会话进度条,零核心改动(纯 client 插件,不触碰 agent-loop)。

你的 DSH 版本决定装哪个插件版本(装错会崩:常见症状 useConversation is not a function

  • DSH 0.1.1-rc.2(npm 最新):装旧版 '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.9.3'
  • DSH 0.1.2-alpha.1 / alpha.2 / alpha.3 / alpha.4 / alpha.5 / rc.1:装新版(下方默认命令)

安装

# 方式一:git 依赖固定 tag(公开镜像,推荐;也可用 github:lhh010/dsh-ui-progress)
dsh plugin --profile web add '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.10.0'

# 方式二:本地 link(开发)
git clone https://github.com/lhh010/dsh-ui-progress.git
cd dsh-ui-progress && pnpm install && pnpm run build
dsh plugin --profile web add link:/path/to/dsh-ui-progress

配置行($DSH_HOME/profiles/web/cordis.patch.yml,热重载,无需重启):

- insert:
    - id: dsh-ui-progress
      name: '@dsh-external/dsh-ui-progress'

安装提示:pnpm 11 首次安装可能拦截 node-pty 等构建脚本——在 ~/.dsh/profiles/web 下执行 pnpm approve-builds --all 放行后重跑安装命令;装完硬刷新浏览器(Ctrl/Cmd+Shift+R)。

提示词安装(让 DSH 自己装)

把下面这段提示词发给任意一个 DSH 会话,模型会替你完成安装:

帮我安装 dsh-ui-progress 插件(DSH 会话进度条:输入框常驻会话进度条/todos 真实进度/中断橘红态),步骤:

  1. 执行 dsh plugin --profile web add '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.10.0'(首次可能被 pnpm 11 拦截 node-pty 构建脚本而失败)
  2. ~/.dsh/profiles/web 下执行 pnpm approve-builds --all(放行构建脚本)
  3. 再执行一次第 1 步的安装命令
  4. 完成后提醒我硬刷新浏览器(Ctrl/Cmd+Shift+R) 遇到报错先查 https://github.com/lhh010/dsh-ui-progress README 的常见问题/已知限制。

版本对应 / Version compatibility

版本对应 / Version compatibility

构建产物随 DSH 快照版本更新,安装时按快照选择对应版本:

插件版本 DSH 快照 说明
v0.10.1(默认) dsh-v0.1.2-alpha.1alpha.5rc.10.1.3-alpha.10.1.6-alpha.1 声明支持 dsh-v0.1.6-alpha.1(npm 已发布,钉版本实机验证;client 插件面零代码差异,typecheck/45 单测全绿,热挂载实机验证)
v0.10.0 dsh-v0.1.2-alpha.1alpha.5rc.10.1.3-alpha.10.1.5-rc.2 新功能双发:①「后台运行中」状态(青色)——主会话完成而子代理树仍在执行时,进度条不再误显就绪绿;②Token 用量徽标 + 悬停/点击明细面板(总量/未缓存输入/缓存读取/缓存写入/输出/缓存命中%,实时更新)。typecheck/45 单测/构建全绿,热挂载实机验证
v0.9.17 dsh-v0.1.2-alpha.1alpha.5rc.10.1.3-alpha.10.1.5-rc.2 声明支持 0.1.5-rc.1~rc.2(npm 已发布,钉版本实机验证;rc.1 为 0.1.5 系列首个候选版本,client 插件面零代码差异;typecheck/build/39 单测全绿,热挂载实机验证)
v0.9.16 dsh-v0.1.2-alpha.1alpha.5rc.10.1.3-alpha.10.1.5-alpha.2 声明支持 0.1.5-alpha.2(npm 已发布,钉版本实机验证;alpha.2 改动为 Sidebar 文档预览、模型文件交付、minimal 默认工具调整与 fs-ext 安装修复,client 插件面零代码差异;typecheck/build/39 单测全绿,启动清单确认加载)
v0.9.15 dsh-v0.1.2-alpha.1alpha.5rc.10.1.3-alpha.10.1.5-alpha.1 声明支持 0.1.5-alpha.1(npm 已发布,钉版本实机验证;0.1.5 改动在会话格式 V3 / ctx.agent 移除 / 宿主 bundle 服务路由 /plugins/??,client 插件面零代码差异;typecheck/build/单测全绿,启动清单确认加载)
v0.9.14 dsh-v0.1.2-alpha.1~alpha.5rc.10.1.3-alpha.10.1.3-alpha.2 声明支持 0.1.3-alpha.2(npm 已发布,钉版本实机验证;alpha.2 改动全在 pi-ai/Web 顶栏/子代理消息/host 面,client 插件面零代码差异;typecheck/build/单测全绿)
v0.9.13 dsh-v0.1.2-alpha.1~alpha.5rc.10.1.3-alpha.1 声明支持 0.1.3-alpha.1(npm 未发布,源码宿主实机验证;0.1.3 破坏性变更集中在 host/session 侧,client 插件面零代码差异;typecheck/build/单测全绿)
v0.9.12 dsh-v0.1.2-alpha.1~alpha.5rc.1 声明支持 rc.1(alpha.5→rc.1 为纯版本号提交,零代码差异;实机 rc.1 验证通过)
v0.9.11 dsh-v0.1.2-alpha.1~alpha.5 声明支持 alpha.5(typecheck/build 全绿;alpha.5 为纯 bug 修复,无 API 变更)
v0.9.10 dsh-v0.1.2-alpha.1~alpha.4 声明支持 alpha.4(typecheck/build 全绿)
v0.9.9 dsh-v0.1.2-alpha.1~alpha.3 更新提示词补「按 DSH 版本选 tag」路由说明与排查指引
v0.9.8 dsh-v0.1.2-alpha.3(npm alpha) 兼容 DSH 0.1.2-alpha.3:typecheck/build/单测全绿 + 实机验证
v0.9.3 npm @deepseek-ai/dsh@0.1.1-rc.1 修复中断检测:0.1.x 的停止不再留旧式节点痕迹,改用 turn/end reason 判定中断(见 changelog)
v0.9.2 npm @deepseek-ai/dsh@0.1.1-rc.1 0.1.1-rc.1 实机 boot 验证通过(boot 清单 + client.js 200),依赖的槽位/服务不变
v0.9.1 snapshots/20260810T155924Z(snapshot0810) 兼容性构建:客户端插件元数据从顶层 dshClient 迁移为嵌套 dsh.client(0810 的 ClientModuleHostService 只读该字段;顶层 dshClient 被静默忽略),inject/platform 原样保留
v0.9.0 snapshots/20260809T140917Z(snapshot0809) 新构建(原生 0809):运行中新增实时 token 生成速率(自校准估算 + 1s 滑动窗口平滑,首 token 到达起算,贴近真实 provider usage)
v0.8.0 snapshots/20260808T121140Z(snapshot0808) 新构建:移除自带 report_progress 工具与上报引导(宿主 half 置空)、移除工具卡片;填充改为 todos 真实比例(无 todos 默认 100%);新增中断橘红态(手动打断/API 错误等意外停止)
v0.7.0 snapshots/20260808T121140Z(snapshot0808) 新构建:适配 0808 的 slot 迁移(conversation.chat.toolviewtool.call.toolview,注册经 slots.inject 等待声明)
v0.6.0 snapshots/20260807T130646Z(snapshot0807) 新构建:已耗时 0.1s 步进(满分钟折叠)+ subagent 待办琥珀提示
v0.5.1 snapshots/20260807T130646Z(snapshot0807) 同快照上一构建:会话完成进度条浅绿色
v0.5.0 snapshots/20260807T130646Z(snapshot0807) 同快照上一构建:自带工具 + 上报引导
v0.4.0 snapshots/20260806T160212Z(snapshot0806) 同快照上一构建(ETA 仅来自模型上报)
v0.3.1 snapshots/20260806T160212Z(snapshot0806) 同快照上一构建(ETA 为线性外推)
v0.3.0 snapshots/20260806T160212Z(snapshot0806) 同快照上一构建(卡片耗时/ETA 文案插值缺失)
v0.2.0 snapshots/20260806T160212Z(snapshot0806) 同快照早期构建(无耗时/ETA/失败态/阶段时间线)
v0.1.0 snapshots/20260805T134133Z(snapshot0805) 旧构建,按旧安装方式(~/.dsh/config.yaml + pnpm add -w link:

兼容性说明:当前版本为 v0.9.12(面向 dsh-v0.1.2-rc.1);以下为历史快照兼容记录。v0.8.0 构建基于 snapshot0808 开发,同时兼容 snapshot0809(snapshots/20260809T140917Z),实机验证通过;v0.9.0 为原生 snapshot0809 构建;v0.9.1 面向 snapshot0810(snapshots/20260810T155924Z,默认版本),同时兼容 snapshot0811(snapshots/20260811T152241Z)与最终快照 snapshot0812(snapshots/20260812T172954Z-final)——0811 与 0812 实机 boot 验证通过(见下)。

npm 发版兼容:兼容 DSH npm 发版 @deepseek-ai/dsh@0.1.1-rc.1(v0.9.2 实机 boot 验证通过:dsh --profile web 启动后 boot 清单包含 @dsh-external/dsh-ui-progress/plugins/@dsh-external/dsh-ui-progress/client.js 返回 200;conversation.input.dock 槽位与 locale/invariants 服务在 0.1.1-rc.1 上保持不变),同时兼容 @deepseek-ai/dsh@0.0.1-rc.5(dist-tag next,即最终快照 snapshot0812 的 npm 发版;npm exec -p @deepseek-ai/dsh@0.0.1-rc.5 -- dsh --profile web --port <port> 可访问指定版本并启动,lib 生产模式),同时保持兼容 @deepseek-ai/dsh@0.0.1-rc.2(snapshot0811 的 npm 发版)。实测(npm rc.5 基线):dsh web 启动后 window.__DSH_BOOT__ 清单包含 @dsh-external/dsh-ui-progress(inject: dsh-client-locale/dsh-client-runtime/dsh-client-ui-conversation),/plugins/@dsh-external/dsh-ui-progress/client.js 返回 200;src 对 rc.5 基线构建产物 typecheck 全绿(本插件已把 cordis 类型导入与 peer 迁移至 @deepseek-ai/cordis,见下)。注意:0811 起 vendored cordis 更名为 @deepseek-ai/cordis(npm 发版不再发布 cordis 名义的 vendored 包),本插件已迁移(peer 声明 @deepseek-ai/cordis: ^4.0.1-rc.1,npm rc.5 基线上为 4.0.1-rc.4),纯 npm install 不再报 ERESOLVE。

alpha 发版兼容:兼容 dsh-v0.1.2-alpha.1(GitHub tag dsh-v0.1.2-alpha.1,源码构建安装,不发布 npm;v0.9.4 迁移并验证:0.1.2-alpha.1 移除了 @deepseek-ai/dsh-client-runtime 客户端包,ClientContext 改从 @deepseek-ai/cordis 导入、ConversationSnapshot 重构为 views 架构(旧 nodes/turnTimings/turnEnds/partial/runningCalls 全部移到 ChatSnapshot.legacy 兼容投影,turn 时间线在 ChatSnapshot.timeline)。本插件已在 0.1.2-alpha.1 源码基线上重写状态推导(session-state.ts 改为读取 Chat legacy 切片 + 新 SessionSnapshot 的 lastAgentError),typecheck、39 个单测与构建全绿,注册改用 ctx.slots.inject('conversation.input.dock', …) 新范式)。 本插件 v0.9.7 起内置兼容性自诊断:apply 时探测所需客户端 API,不满足时不再崩溃,而是在页面右下角渲染修复指引横幅(点击可关闭),提示升级 DSH 或更新插件。

git 依赖方式固定 tag(公开镜像,推荐):pnpm add '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.10.0'(或 github:lhh010/dsh-ui-progress;历史版本:0809 用户用 #v0.9.0,0808 用户用 #v0.8.0,0807 用户用 #v0.6.0,0805 用户用 #v0.1.0)。

0809 兼容要点(snapshot0809,实机验证)

  • 0809 运行中的 dsh webwindow.__DSH_BOOT__ 清单包含 @dsh-external/dsh-ui-progressconversation.input.dock 进度条正常渲染——运行中加载圈旋转、todos 真实比例填充、完成浅绿、中断橘红、待办琥珀各态实测正常。
  • 加载机制变化:0809 重构了客户端插件机制——旧的 dsh.plugin.json 清单 + resolveClientPathpackages/plugin/plugin)已删除,改为 package.json 的 dshClient 声明platform: 'web',可选 inject/immediately)+ exports["./client"] 指向构建产物;宿主扫描 loader 条目组成 boot 图,Web 端从 /plugins/<id>/client.js 拉取。本插件 package.json 已满足该声明,无需改动。
  • 本插件使用的槽位 conversation.input.dock(list/session)与 keyed tool.call.toolview 在 0809 上仍由官方客户端声明(tool.call.toolview 的 owner 类型与 0808 一致);useSession 快照与 todos 投影契约未变。
  • 构建要求:0809 宿主在激活时校验 dshClient 包的构建产物,缺失会抛 ClientPackageCompositionError拒绝启动 dsh web——升级快照或改源码后必须重新 pnpm run build 再启动,否则浏览器拉到的是旧 lib/client.js

0810 兼容要点(snapshot0810,实机验证)

  • 元数据发现变化:0810 的 ClientModuleHostService 在启动时扫描已加载插件的 package.json,但只读嵌套 dsh.clientpackages/client/modules/src/index.tsresolveMetapkg.dsh.client);顶层 dshClient 字段读不到会静默丢出 boot 图——无日志、无报错,"启动顺利但插件全没"。本插件已从顶层 dshClient 迁移为嵌套 dsh.client(inject/platform 原样保留),0810 实机验证 window.__DSH_BOOT__ 清单包含本插件、进度条各态正常。
  • 无需重构建lib/client.js 构建产物不变,package.json 不参与编译;symlink 安装改源仓库即生效,无需重装。

0811 兼容要点(snapshot0811,实机验证)

  • cordis 更名(本快照唯一影响本插件的官方变化):0811 将 vendored cordis 由 cordis@4.0.0-rc.7 更名为 @deepseek-ai/cordis@4.0.1-rc.1(官方 client 包随之全部改从 @deepseek-ai/cordis 导入)。本插件对 cordis 只有 type-only 导入(src/invariant.tsimport type { Context } from 'cordis'),构建产物(lib/*.js)零 cordis 运行时导入——更名不影响已构建 bundle 的运行时加载;但源码对 npm rc.2 基线 typecheck 时 cordis 裸导入报 TS2307(仅此一处),将类型导入迁移为 from '@deepseek-ai/cordis' 后全绿。建议同步把 peerDependencies.cordis 迁移为 @deepseek-ai/cordis: ^4.0.1-rc.1
  • 实机 boot 验证:snapshot0811(snapshots/20260811T152241Z)web 启动后 window.__DSH_BOOT__ 清单包含 @dsh-external/dsh-ui-progress(inject: dsh-client-locale/dsh-client-runtime/dsh-client-ui-conversation),/plugins/@dsh-external/dsh-ui-progress/client.js 返回 200。本插件使用的槽位 conversation.input.dock(list/session)、useSession 快照与 todos 投影契约在 0811 上均保持声明。
  • 测试 fixture 漂移:typecheck 的 src 全绿;tests/session-progress-bar.spec.tsx 有两处 fixture 未跟上 0811 新增字段——ConversationSnapshot.views(0811 新增视图快照存储)与 InputState.imageIds(0811 新增草稿图片附件)——源码与构建产物不受影响(fixture 已在 v0.9.1 最终快照适配中补齐,见下)。

0812/最终快照 兼容要点(snapshots/20260812T172954Z-final,实机验证)

  • cordis 更名落地:本插件已把 type-only 导入(src/invariant.tsimport type { Context } from '@deepseek-ai/cordis')与 peerDependencies/devDependencies 迁移至 @deepseek-ai/cordis^4.0.1-rc.1;npm rc.5 基线上为 @deepseek-ai/cordis@4.0.1-rc.4)——构建产物(lib/*.js)零 cordis 运行时导入,npm rc.5 消费者 typecheck 全绿,npm install 无需 --legacy-peer-deps
  • invariants 源码包迁移(仅影响本地 typecheck):最终快照将 @deepseek-ai/dsh-invariants 源码包由 packages/support/invariants 移至 packages/runtime-diagnostics/invariants,devDependencies 路径已同步更新;服务名 invariants 与注册协议未变,运行不受影响。
  • 测试 fixture 补齐tests/session-progress-bar.spec.tsx 的 fixture 已补齐 0811 起新增的 ConversationSnapshot.views(空视图快照 { get: () => undefined })与 InputState.imageIds(空数组)字段——typecheck(含 tests)与 27 个单测对最终快照基线通过。
  • 实机 boot 验证:最终快照(snapshots/20260812T172954Z-final)web 启动后 window.__DSH_BOOT__ 清单包含 @dsh-external/dsh-ui-progress/plugins/@dsh-external/dsh-ui-progress/client.js 返回 200;npm rc.5 consumer dsh web 启动后 boot 清单同样包含本插件。本插件使用的槽位 conversation.input.dock(list/session)、useSession 快照与 todos 投影契约在最终快照与 rc.5 上均保持声明。typecheck、build 与 27 个单测对最终快照基线通过。

功能

  • 常驻会话进度条conversation.input.dock,输入框停靠区):读取框架 useSession 快照渲染真实执行状态——运行中/空闲、当前在飞的工具名、当前窗口已结算的工具结果数、当前轮次。运行中左侧加载圈旋转,进度条 shimmer 扫光 + 品牌色光环脉冲,填充宽度缓动。填充宽度:有 todos 投影时按真实完成比例((已完成+进行中)/总数,进行中任务计入进度);无 todos 时固定默认 100%——会话整体进度没有专门投影,不展示伪百分比(v0.8.0 起移除旧的"每个已结算工具结果进一格、窗口上限 10"分段填充)。运行中额外显示实时已耗时(自当前回合开始,0.1s 步进跳动,满一分钟折叠为 XmYs 后按秒递增)与 ETA 预计剩余时间(仅当模型在最近的 report_progress 上报里给出 eta 估计——不做线性外推,模型没报就不显示);空闲时显示上一回合耗时。会话完成(跑过至少一轮后空闲)进度条切换为浅绿色,从未运行过的会话保持中性蓝灰。
  • 中断橘红态(v0.8.0 新增):本会话最近一个已结束回合被中断/停止——手动打断、API 故障或其他意外原因——进度条切换为橘红色(浅橘背景 + 橘红填充/图标/百分比 + 慢速脉冲),标签显示"已中断",优先于运行中/完成态的常规配色。只按最近一个回合判定:中断后继续发送并正常完成的新回合会让进度条恢复正常配色(中断遗留标记仍保留在窗口内但不再触发)。注意态(琥珀,见下)仍优先于中断态。
  • 实时 token 生成速率(v0.9.0 新增):运行中模型正在生成时(有流式 partial 内容、且无待处理的人机交互),进度条在已耗时旁显示实时速率(如 12.3 tok/s,斜体品牌色,固定最小宽度保持进度条右侧稳定)。流式 chunk 不携带 token 计数(核心端只有回合结束后的 provider usage),因此该值是自校准估算值:初始按 CJK 感知字符密度折算当前 partial 的 token 数(中日韩宽字符 1 字符 ≈ 1 token,其余按核心 token-meter 同款 4 字符 ≈ 1 token);一旦窗口内任何已结算 step 上报了真实 output tokens,就用其「真实 tokens ÷ 加权字符数」密度缩放当前流式估算——数字会贴近所用模型 tokenizer 的真实密度,而非固定字符启发式。速率按滑动窗口平均(默认 1s 窗口)计算:每 ~1s 刷新一次、只统计最近窗口内新增的 token,消除逐 chunk 闪动;空窗口保持上次读数不归零。速率除以窗口时长(排除 TTFT)——与核心端回合结束后显示的结算 tokens/s(outputTokens/decodeMs)口径一致,运行中数值可直接与结算值对比。每个新 step 重新起算;工具执行/等待人机交互/回合结束时不显示(结算后的精确速率由核心 StatsLine 呈现,避免重复展示同一事实)。
  • 待办提醒(attention):本会话或其后代 subagent 会话存在等待人处理的交互(沙箱命令审批 / 选项选择 / 计划审阅)时,进度条切换为琥珀色警告态(浅琥珀背景 + 琥珀填充/图标 + 慢速脉冲),文字提示来源与类型——等待审批 / 需要选择(本会话)、子代理等待审批 / 子代理需要选择(subagent)、等待审批 · 子代理 2 项待处理(并存时)。subagent 会话被官方侧边栏隐藏,其 pending 状态从全局会话列表(origin: 'subagent' 行的 pendingInteraction)读取——这是主 agent 感知子代理等待的主要出口。优先级:pending(琥珀) > running(蓝) > interrupted(橘红) > done(绿) > idle(中性)。

Model Experience

v0.8.0 起本插件不再注入任何模型可见输入report_progress 工具与上报引导段落已移除(宿主 half 为空),插件只做浏览器端呈现。若其他宿主插件注册 report_progress 工具,会话进度条的 ETA 行仍会读取其上报的 eta 字段(见上文)。

不注入任何用户消息内容;会话文本与上下文注入不受影响。

安装

INSTALL.md(组织内成员)。

配置

无配置键。安装后只需在配置树里插入一行:

- insert:
    - id: dsh-ui-progress
      name: '@dsh-external/dsh-ui-progress'

更新记录 / Changelog

2026-08-20 · v0.9.3 — 修复中断橘红态在 DSH 0.1.1-rc.1 上失效

  • 修复:0.1.x 的 agent-loop 不再为「手动停止」产生旧式节点痕迹——agent/error 只在非取消错误时上报(lastAgentError 不再填充)、turn/error 事件已取消(turn-error 节点只在 turn/end reason: error 时生成)、工具截断的错误码由 interrupted 改为 ABORTED_BEFORE_DISPATCH/TOOL_OUTCOME_UNKNOWN/TOOL_NOT_STARTED(调度器路径的 code 还嵌在 error.info.code)。因此无 partial 内容的停止不再触发橘红态
  • 迁移:中断判定改以 snapshot.chat.timeline 中最新回合的 turn/end reason 为主信号(aborted = 手动停止/取消,interrupted = 崩溃修复;0.1.x 起每次停止都会留下 turn/end 事件),窗口节点痕迹降级为兼容旧宿主与 error 回合的回退路径,并扩充工具错误码集合(含嵌套 info.code 与三个新码,保留旧 interrupted
  • 验证:新增 12 例单测(reason 主信号 4 例 + 节点回退 8 例),39 例全部通过;typecheck、build 通过;DSH npm 0.1.1-rc.1 实机核验

Export shape

浏览器半 ./clientapply/inject 命名空间插件)、空 Node half ./index、标准 invariant companion ./invariant

Known Limitations and Deferred Work

  • 会话整体进度无专门投影:无 todos 时填充固定 100%,不展示伪百分比;todos 比例只反映当前 todos 列表,不代表会话全程进度。
  • 中断检测按当前窗口 + 最新回合判定(v0.9.3 起以 turn/end reason 为主信号,停止即检出,不再依赖节点痕迹);分页/压缩后旧标记被截断,中断态随之消退;窗口内没有 turn/end 事件(如会话被强杀且未修复)时回退到节点痕迹,仍可能漏检。处于重试路径(model-retry)的回合不显示中断态。
  • ETA 完全依赖模型在 report_progresseta 字段上报:模型不报或报错(非字符串/非正数)就不显示;进度条取窗口内最近一次上报的 eta,若最近一次未带 eta 则隐藏(即使更早的上报带过)。
  • 浏览器 half 刷新页面即生效(宿主 half 为空,升级安装无需重启 dsh web)。
  • CSS 动效常量(时长/缓动)为本地字面量(当前样式体系尚无 motion token 族);中断橘红色为 warn/error token 的 color-mix(样式体系无独立橘色 token)。
  • 实时 token 速率为估算值(流式 chunk 无 token 计数):先按 CJK 感知字符密度起算,一旦有已结算 step 的真实 provider usage 即按密度自校准(首个校准 step 之前的首个回合仍为字符启发式);推理/正文/工具参数一并计入;显示为 1s 滑动窗口平均(本地字面量 TOKEN_RATE_WINDOW_MS),非 provider 报告值,回合结束后以核心 StatsLine 的结算 tokens/s 为准。
上一个 Prev dsh-diff-stat 下一个 Next dsh-plugin-open-app