dsh-group-tab
Verifieddsh-group-tab · v0.3.0 · MIT · Web UI
Workgroup — a right-sidebar tab that shows who is working right now, what each member is doing and how long is left, as a live group chat. Registers as a dsh-better-sidebar tab.
Install
dsh plugin add dsh-group-tab Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-group-tab — 工作群
给 DeepSeek Harness(DSH)右侧栏加一个 tab:谁在干活、每个人现在做到哪、大概还要多久,用群聊的形态实时呈现,而不是一份静态日志。

它注册在 dsh-better-sidebar 上(那个插件对外提供 tab 注册点,第三方 tab 都走它)。
为什么
主代理派了三个子代理、又起了两个后台任务时,DSH 的会话视图只讲其中一个;想知道「有没有东西卡住」得开四个会话。
这个 tab 一个地方回答:
- 每个成员一张卡(主代理 + 树里所有子代理),显示此刻正在跑的 tool
- 每个成员的 ETA,按本机自己的历史完工时长算(最近 20 次取中位),没有历史时明确标注是按经验值估的
- 后台任务折叠到发起它的成员身上
- 一条合并的时间线:开始干活 / 换工具 / 说话 / 任务进度 / 收工,最新的在最下面
- 每个成员实际在用的模型(
provider / model) - 在等你(提问或审批)的成员置顶 + 红色角标 + 头部计数;子代理收工可选提示音
安装
dsh plugin --profile web add dsh-better-sidebar # 必需:tab 宿主
dsh plugin --profile web add dsh-group-tab
然后右侧栏 + 菜单里选 工作群(和「任务管理」并列)。每次页面加载会在当前会话自动打开一次;一旦有派活,会按会话自动打开一次;你手动关掉后本页不再抢开(手动再打开即恢复)。
数据来源
| 来源 | 方式 | 拿到什么 |
|---|---|---|
sessions 客户端服务 |
订阅(事件驱动) | 有哪些会话、谁在跑、标题、父子关系 |
jobs 客户端服务 |
订阅(事件驱动) | 每个会话的后台任务清单 |
POST /sidebar/api/subagents.live |
轮询,只在有人跑时 | 每个成员当前工具 + 最后一句 |
POST /sidebar/api/git.models |
每成员一次,30 秒缓存 | 成员实际用的模型路由 |
空闲不花钱。 2 秒轮询和 1 秒时钟只在「至少有一个成员或后台任务在跑」时存在;页面切到后台(visibilitychange)也会停。空闲面板零请求 —— 有人开始跑时,会话列表的事件会把它唤醒。页脚写着 LIVE · 2s(在跑)或 LIVE · 空闲不轮询。
说明
- 没有宿主端(host)逻辑、不落文件:面板完全由实时事件推导,不会显示过期状态。
- 时间线只存在内存里(上限 200 条),每个成员的起始时间写
localStorage,刷新页面不会把计时清零。 - 提示音用 Web Audio 现场合成(无音频资源),头部铃铛按钮可静音。
- 界面语言跟浏览器走(
zh*中文,其他英文)。
开发
npm test # 离线 harness:假 React + 假宿主,跑真 bundle
test/render-check.mjs 用真实 lib/client.js + 假 React/假 DOM/假宿主数据跑渲染,然后断言渲染出的文本:成员、ETA、模型、时间线去重、置顶、以及空闲时确实不再轮询。test/i18n-check.mjs 断言英文词条被选中。
发布前清单
- 在
package.json补repository/homepage -
npm publish(已经是可发布状态:去掉了private、给了files、MIT) - 打 tag 发版,
preview/*.png同步更新
License
MIT