dsh-workspace-running-indicator

DSH PLUGIN会话与消息

仓库 icrefin/dsh-workspace-running-indicator

会话与消息 L4 · 沙盒安装通过 安全审查:低风险 可信度:银 可安装插件
安装这个插件

dsh-workspace-running-indicator 是 icrefin 维护的 会话与消息 类 DSH 可安装插件, 仓库为 icrefin/dsh-workspace-running-indicator,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

dsh-workspace-running-indicator 是会话与消息类的 DSH 可安装插件,验证等级 L4 · 沙盒安装通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类会话与消息 收录类型可安装插件 验证等级L4 · 沙盒安装通过 安全审查低风险
验证等级 L4 L4 · 沙盒安装通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-29 创建于 2026-10-29
README 12.4 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:icrefin/dsh-workspace-running-indicator#v0.2.0
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

文件读写

上游标签

cordis-plugindeepseekdeepseek-harnessdshdsh-pluginin-progress-indicatorsession-statussidebartypescriptworkspace

验证等级与安全审查

L4 · 沙盒安装通过
自动化流程结论,不是人工审核
验证等级L4 · 沙盒安装通过安装命令在隔离沙盒内真实执行成功,无依赖错误
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度银综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L4:在沙盒里真实装过,依赖能装上,不是纸面声明。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在会话与消息场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-workspace-running-indicator当前 L4 · 沙盒安装通过 低风险 0 未标注 有
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方icrefin仓库 dsh-workspace-running-indicator · 默认分支 main
分类会话与消息desktop
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-29 · 2026-10-29最后推送 2026-10-29
本站收录2026-10-30首次进入本站目录的时间

README 全文

12.4 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-workspace-running-indicator

DeepSeek Harness 侧边栏里,被折叠的工作区会显示它藏起来的会话在做什么:有会话正在工作就是「进行中」的加载动画,一轮跑完但没人看过就是绿色的完成圆点 —— 把侧边栏本来就会画在会话行上的标记,还原到折叠把它藏起来的位置。

English | 简体中文








问题

一旦折叠,工作区里的会话行就全部隐藏了。于是不论里面有三轮对话正在跑、有一轮刚跑完却没人看、还是一周都没有动静,标题行画的都是同一个文件夹图标 —— 而行自己的加载动画和绿色圆点其实还在组内渲染,只是已经没有行可以承载它们。

Workspaces
◌ app · folded, running          ← 本插件:标题行本身就是状态
● dsh-plugins · finished unviewed
▢ ic_decryptor · idle
▾ research · expanded
● literature review          ← 原版:会话行自己的完成圆点
◌ chip bring-up              ← 原版:它的进行中加载动画

工作原理

工作区标题行属于原版 UI,而且没有任何槽位(seat):

归属 职责
dsh-client-ui-workspace 把每个工作区标题渲染成 role="treeitem",键是 data-row-key="workspace:",折叠状态写在 aria-expanded 上
sidebar.session.row.leading 每会话行的单元格 —— 工作区标题行没有这个位置
sidebar.workspaces 一个已被占用的槽位,承载整个浏览器面板:分组、嵌套、排序、搜索、拖拽与菜单

为了一个图标去顶替那个槽位,等于把整个浏览器面板的职责接过来。本插件改成从页面侧只装饰它真正需要的那一格:

步骤 发生什么
1 读取 ctx.sessions.list(实时会话目录)与 ctx.workspaces.list(工作区投影)
2 工作区里有会话报告 running,或有正在运行的直属子代理,就算进行中(external 子代理被排除,与侧边栏自身的规则一致);有会话跑完但没人看过,就算完成未读
3 只以成员关系为依据:一行只为它自己名下的会话报告状态,绝不为嵌套工作区的活动亮起
4 对每个 role="treeitem"、data-row-key="workspace:"、且 aria-expanded="false" 的行,把对应的标记覆盖在它 16×20 的图标格里:加载动画,或绿色圆点
5 用列表上的 MutationObserver 维持这份绘制 —— 折叠、展开、重新挂载、新增工作区都会跟上

为什么用会话目录作数据源。 ctx.sessions.list.byId[id].running 是 Host 的实时运行状态,每次状态变化都会下发;它正是 ui-workspace 自己在「实时状态尚未加载」时使用的兜底字段。所以折叠组问的问题,和它展开后各行问的完全一样。已归档的会话永远不算忙碌 —— 归档行本身也不显示实时状态。

进行中优先于已完成。 工作区里还有会话在跑就显示加载动画;属于它的会话全部安静下来之后,才轮到绿色圆点 —— 这与原版行的顺序一致。同一个会话再跑起来时,圆点随即被清除。

完成圆点照抄原版策略。 这个标记并不在会话目录里 —— 它是 dsh-client-ui-session 内部的进程内投影,只能通过它的 React hook 读到 —— 所以 completion.ts 用目录里唯一可得的信号重建它:跨快照观察到的 running 跳变。规则逐条抄自那个包自己的状态投影:当一轮从 true → false 且该会话不是当前屏幕上那一个(retainedBy.mainView > 0)时标记;会话重新开跑、在主栏被打开、或被归档时清除;首次看到某个会话只做播种,不标记。两个刻意保留的结果:插件挂载前就已经跑完的一轮不会凭空提醒;展开工作区不算「看过」 —— 只有打开那个会话才算,这与清除会话行自身圆点的规则完全一致。

只有折叠的行带标记,而且只为自己名下的会话。 展开的工作区里,各行把加载动画或圆点画在工作真正发生的位置,标题行保留文件夹图标。嵌套的工作区在跑时不会点亮它的父行:eda_vm(自己没有在跑)保持文件夹,只有 eda_vm/tangram 在转 —— 0.1.3 修复了此前按目录包含关系向上传播的问题。悬停时原版规则会把整个图标格换成折叠箭头,插件徽标也随之一起隐藏。

两个标记都是原版图形。 加载动画照抄 StateDot 的几何尺寸、两组 1.5s 关键帧、14px 直径、起始时刻对齐与 reduced-motion 降级,颜色用 --dsw-alias-label-tertiary;圆点就是该组件的实心 done 内核,6px、颜色 --dsw-alias-state-success-primary。全部重写在插件自己的类名前缀下,不 import 任何宿主组件。对齐相位是「运行中途才出现的徽标」能和相邻会话行的加载动画同步旋转、而不是各自从挂载那一刻起转的原因。

左:原版会话加载动画。右:本插件的工作区徽标。两者都是用构建产物配合原版侧边栏样式表渲染出来的。

环境要求

  • DeepSeek Harness 0.2.1-rc.3(桌面版或 Web UI)—— 插件读取的是该版本侧边栏的标记属性。
  • 从源码构建需要 Node.js ≥ 22.17 与 pnpm 11。

安装

在本仓库里构建并打包:

pnpm install
pnpm check                       # 类型检查 · 构建 · vitest
pnpm run pack                    # -> dist/dsh-workspace-running-indicator-0.2.0.tgz

然后在 DeepSeek Harness 桌面版里打开 设置 → 插件,安装
dist/dsh-workspace-running-indicator-0.2.0.tgz,并重启应用。加进运行中 profile 的 bundle 不在启动时算出的模块解析里,重启之前它的入口会一直导入失败。重启之后 Web 端还需要刷新一次页面。

使用说明

没有任何需要配置的东西:折叠一个其中的会话正在工作的工作区,文件夹图标就变成加载动画。一轮跑完后,加载动画变成绿色圆点,圆点会一直留到你打开那个会话、或者让它重新跑起来为止。嵌套的工作区只在它自己那一行动,不会点亮父行;展开的工作区保留文件夹图标,因为它的会话行已经把两个标记都画出来了。

不做的事

  • 没有面板、没有设置卡、没有宿主路由:宿主半是空的,浏览器半只画一格。
  • 不改会话行、不改折叠水位(watermark)、不改分组顺序,也不改折叠行为。
  • 两个标记都是装饰性的(aria-hidden);标题行的可访问名称仍然是工作区标题,所以读屏用户不会听到「进行中」或「已完成」的播报。
  • 提醒是推导出来的,不是读来的:它只对当前页面看到过的运行准确,对页面加载前就结束的运行保持沉默。
  • 它只认行自身的身份标识 —— role="treeitem"、data-row-key、aria-expanded —— 从不依赖构建时被哈希过的 CSS Module 类名。未来某个 dsh 版本改名,效果是徽标不再出现(无害地失效),而不是出错。

开发

pnpm install
pnpm check          # 三份 tsconfig、加载器 bundle,最后 vitest

想在不碰应用 profile 的前提下看到包被组合并对外提供:

scripts/dev-profile.sh boot 19499     # 在 .dev-home/ 下建一个隔离的 DSH home
scripts/dev-profile.sh url 19499      # 打印对外提供的 bundle 地址
scripts/dev-profile.sh remove

验证

层级 结果
类型检查:宿主半、浏览器半、测试 干净
构建出的 lib/client.js 放在假的 window.__ModuleLoader__ 后面 以包名注册,导出 apply 与 inject: ['sessions', 'workspaces'],不请求任何模块
jsdom 里针对构建产物跑行为 27 个用例:图标格里的加载动画与圆点、空闲、展开、未分组、空闲父行旁边在跑的嵌套子行、只有父行在跑、两者都在跑、子代理活动、external 子代理排除、已归档会话、展开后移除标记、运行开始时是加载动画而结束时换成圆点、打开会话清除圆点、再次折叠恢复圆点、重新开跑取代圆点、逐会话确认、重新挂载、销毁、订阅抛错、快照不可读
完成策略单独测试 8 个用例:播种、未读完成、看过即完成、事后确认、重新开跑取代、归档、pending 与 ready 目录、迟到出现的行
样式表 只有一个 style 标签、可重复安装、可移除、只使用主题 token、关键帧与 reduced-motion 均照抄、圆点使用 success token
在隔离的 dsh profile 里组合 Loader 行被组合,启动图对外提供了 bundle(/plugins/??dsh-workspace-running-indicator/client.js&rev=… → 200)
真实引擎 用 headless Chrome 把构建产物跑在原版行标记与样式上:0.1.2 时只在「折叠且忙碌」那一行画出唯一一个加载动画;0.1.3 用 eda_vm / eda_vm/tangram 的真实形状复核,eda_vm 未被点亮;0.2.0 用一次真实的运行结束得到 app=completed/dot=yes run=running/dot=no idle=none/dot=no
真实 GUI 重启后在桌面版中确认可用

两张截图是用构建产物配合原版侧边栏样式表渲染的,并不是运行中应用的抓屏。

文件结构

src/
├── index.ts              # 宿主半:Loader 行的空入口
└── client/
├── index.ts          # 快照 → 状态集合 → 观察者 → 绘制
├── activity.ts       # 每个工作区的「进行中 ∪ 完成未读」
├── completion.ts     # 照抄原版的完成提醒策略
├── rows.ts           # 行/单元格装饰器与两个覆盖层
├── styles.ts         # 加载动画与圆点的规则、style 标签安装
└── contract.ts       # 两份快照的结构化读取类型
test/
├── loader.ts             # 把构建产物放在假模块加载器后面
├── fixture.ts            # 插件「被允许读取」的原版行标记
├── bundle.spec.ts        # 加载器 id 与导出
├── badge.spec.ts         # jsdom 里的行为(27 个用例)
├── completion.spec.ts    # 完成提醒策略的独立测试(8 个用例)
└── styles.spec.ts        # 安装 / 移除 / token
scripts/
├── dev-profile.sh        # 用于组合验证的隔离 dsh home
└── install.sh            # 打包并打印安装路径

参与贡献

欢迎提交 issue 与 pull request —— bug 表单会问当时看到的是哪种工作区状态,通常就足够复现了。命令与每个 spec 钉住的行为在 CONTRIBUTING.md 里。安全漏洞请通过 SECURITY.md 报告,不要开公开 issue。本项目遵循 Contributor Covenant。

> 如果它替你省掉了「为了看一眼有没有在跑而展开工作区」这一步,一颗 ⭐ 能让更多 DSH 用户找到它。

许可证

MIT —— 见 LICENSE。

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-workspace-running-indicator 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:icrefin/dsh-workspace-running-indicator#v0.2.0` 即可。

dsh-workspace-running-indicator 的验证等级是什么意思?

L4 · 沙盒安装通过。安装命令在隔离沙盒内真实执行成功,无依赖错误

dsh-workspace-running-indicator 安全吗?

低风险。

dsh-workspace-running-indicator 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-workspace-running-indicator 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

icrefin 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。