dsh-job-progress:在 DSH 会话里看后台任务进度

前言

在 DeepSeek Harness(DSH)里跑下载、模型转换、批量渲染时,任务往往在后台执行。终端里能看到输出,但回到 Web 对话界面后,很难一眼判断「还要多久、完成了多少」。常见做法是反复切回终端或让 Agent 轮询日志,既打断对话,也不便于同时盯多个任务。

下面介绍客户端插件 dsh-job-progress(维护者 Rice00):在有可观察后台任务的会话里出现可拖动的悬浮球,展开后面板展示每条任务的进度、速度与 ETA;任务数据来自 DSH 作业注册表与会话内的进度协议文件,无需额外配置凭证或外网调用。

这是什么

dsh-job-progress 是面向 DSH Web 的客户端插件,定位是「长耗时后台作业的实时进度条」。它读取宿主侧的作业注册表与会话目录下的进度 JSON,浏览器端约每 2 秒拉取快照,渲染悬浮球与任务面板。许可证为 MIT,运行时要求 Node 22+(与 package.json 中 engines 一致)。

核心功能

资料中明确列出的能力如下。

  1. 悬浮球:仅在有任务可看的会话出现;角标显示正在运行的任务数,超过 9 条显示 9+。
  2. 可拖动:位置可调整,刷新页面后仍保留(存在 localStorage)。
  3. 实时面板:每个作业一行,包含状态点、标签、进度条、百分比、done/total、速度、ETA、已用时间。
  4. 清除已完成:可删除当前会话内已结束任务的进度文件;运行中的条目不会被删。
  5. 与生产者解耦:未上报进度的作业仍会出现在列表中(来自注册表),只是没有进度条。
  6. 会话隔离:只展示当前 DSH_SESSION_ID 下的作业,不会看到其他会话的任务。
  7. 零配置:不读 token、不发额外网络请求;读作业注册表与会话进度目录即可。
  8. Agent 可发现协议:宿主侧将进度协议注册为会话可见 skill,启动长下载或编码时 Agent 可据此上报速度与 ETA。

安装与启用

安装命令以仓库 README 为准。任选 npm 或 GitHub 源,将 <profile> 换成你实际使用的 profile(Web 界面常用 web):

dsh plugin --profile <profile> add dsh-job-progress
dsh plugin --profile <profile> add github:Rice00/dsh-job-progress

bundle 补丁会在 profile 中插入一行 job-progress。安装后需要重启该 profile:宿主插件模块在进程内缓存,运行中的 Harness 不会热加载新行;若只改 UI 代码,浏览器刷新即可。

验证可参考 README:preflight 脚本应输出 ALL PASS (12);宿主日志中应出现 job-progress: mounted, progress root … 一类挂载信息。Windows 下宿主日志路径为 %APPDATA%\DSH Desktop\logs\host\。

典型用法

不配参数也能用

无需先写配置文件。在会话里用 run_in_background 跑任意后台命令,有可观察作业时悬浮球会出现。README 示例:

node download.mjs https://example.com/model.safetensors    # run_in_background

上报进度以显示进度条

在脚本里使用插件导出的 track API(速度与 ETA 由库根据更新间隔推算):

import { track } from 'dsh-job-progress/progress';

const t = track({ label: 'model.safetensors', total: 66000000 });
t.update(bytesSoFar);
t.phase('verifying');
t.finish('done');            // 或 t.finish('failed', 'sha256 mismatch')

Shell 侧可不 import,直接调用插件自带的 CLI(路径中的 <plugin> 换成本机插件目录):

node <plugin>/lib/dsh-progress.mjs set --label model.safetensors --done 12 --total 100
node <plugin>/lib/dsh-progress.mjs done --key model.safetensors

进度文件协议(简要)

生产者每个任务写一份 JSON,目录为:

<DSH_HOME>/job-progress/<DSH_SESSION_ID>/<key>.json

Agent shell 里已有 DSH_HOME 与 DSH_SESSION_ID,一般不必手写绝对路径。字段包括 label、done/total、unit(bytes 或 count)、可选的 speed/eta、phase、status(running | done | failed)等。运行中需定期刷新 updatedAt(约 15 秒内至少一次),否则会被视为已消失;写入时应先写 .tmp 再 rename,避免读到半文件。

数据流可概括为:生产者写 JSON → 宿主插件读目录与注册表 → 客户端轮询 jobProgress/snapshot 并渲染界面。

适用场景与注意

适合谁:经常在 DSH Web 里跑后台下载、转换、ComfyUI 渲染或批量 shell,且希望在当前会话内集中看进度与 ETA 的开发者。

权限与安全:插件随当前 DSH 进程与用户权限运行,能读写的范围与 Harness 一致。安装前建议浏览 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境策略。

生态说明:DSH 社区插件目录(如 SkillHub 上的条目页)是独立站点,与 DeepSeek / 幻方无官方从属关系;本文安装与用法以仓库 README 为准。

结尾

dsh-job-progress 把「后台任务进行到哪了」收进会话内的悬浮球与面板,配合进度协议或 CLI,长任务不必再靠猜或反复查终端。目录页:SkillHub - dsh-job-progress;源码与完整协议说明:GitHub - Rice00/dsh-job-progress。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜