跳到主要内容

dsh-web-traffic-light

已验证

dsh-web-traffic-light · v0.1.1 · MIT · Web 界面

Photorealistic traffic-light status widget for the DSH Web GUI, docked to the right edge: red = agent working, amber = waiting for you, green = idle/done.

安装

dsh plugin add dsh-web-traffic-light

用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。

源码

发布到 npm 但没有公开仓库。安装前请检查包内容。

标签

作者

说明文档

dsh-web-traffic-light

一个写给 DeepSeek Harness Web GUI 的写实风红绿灯状态挂件,贴在界面右缘中央。

一眼看清 agent 在干活、在等你,还是已经完事。

灯语

灯 含义 动效
🟡 黄 任意顶层会话等你处理(批准 / 计划确认 / 回答提问) 闪烁
🔴 红 任意顶层会话正在工作 呼吸辉光
🟢 绿(亮) 已完成待查看(与侧栏 done 提醒同源) 常亮 + 光晕
🟢 绿(暗) 全部空闲 常亮

优先级:黄 > 红 > 亮绿 > 暗绿。子代理会话不直接驱动灯(与侧栏口径一致)。

  • 悬停灯体:弹出会话清单(标题 + 状态),只显示最近活跃的 5 个会话(按更新时间倒序),其余折叠为一行计数;点击任意行跳转到该会话。灯的颜色仍由全部会话聚合决定。
  • 点击灯体 / 侧边小钮:贴边收起 / 展开(localStorage 持久化)。
  • 金属壳体、遮光罩投影、菲涅尔环纹、三色溢光、螺栓支架臂;尊重 prefers-reduced-motion。

安装

要求:DSH >= 0.1.1-rc.1(dsh --version 可查),已使用 web profile。

方式一:npm(推荐)

已发布 npm,一行装上:

dsh plugin --profile web add dsh-web-traffic-light@latest
# 离线分享场景:dsh plugin --profile web add ./dsh-web-traffic-light-0.1.1.tgz
dsh web

插件自带 bundle patch,会自动把 roster 行插入 profile;下次启动即生效,无需任何手工配置。刷新(或新开)Web GUI,右缘出现信号灯。

方式二:源码目录(免打包)

解压 zip 后:

dsh plugin --profile web add link:<解压目录的绝对路径>
dsh web

方式三:纯手工(不经过 dsh plugin)

把目录放进 %DSH_HOME%/profiles/web/node_modules/dsh-web-traffic-light/,并在 %DSH_HOME%/profiles/web/cordis.patch.yml 里加一行:

- insert:
    - id: dsh-web-traffic-light
      name: dsh-web-traffic-light

保存即热加载(launcher 的 patch watcher),刷新页面出灯。适合开发调试。

卸载

dsh plugin --profile web remove dsh-web-traffic-light

方式三安装的:删除 patch 行(热卸载)+ 删除包目录。

原理速览

纯客户端插件,无构建步骤(零依赖,不需要 pnpm/tsdown):

  • index.js — 宿主半,仅占位(cordis 对象插件)。
  • client.js — 浏览器半,window.__ModuleLoader__.load 包裹的工厂脚本,只 require('react')(DSH shell 静态表供给)。挂载进官方 shell.overlay 插槽(浮层 list 槽:附加式、点击透明层,组件自选恢复指针事件)。
  • 状态来自客户端 runtime 的 sessions.list:running / pendingInteraction('approval' | 'plan-review' | 'question') / completed,与侧栏灯点同一事实源;不轮询、不开额外路由、无遥测。
  • 开发期改动 client.js:@deepseek-ai/dsh-client-hmr 500ms stat 轮询自动热替换组件,无需刷新。

已知边界

  • 读的是浏览器 runtime 的会话列表:GUI 未打开时灯自然不在(它是 Web UI 挂件,不是桌面应用)。
  • 多标签页各自渲染一盏(状态一致,互不干扰)。
  • dsh web 的 GUI 主题皮肤(Skin Center)若全局覆写 [class*="dsh-tl"] 才会互相影响——正常皮肤不会。

更新记录

  • 0.1.1 悬停清单只显示最近活跃的 5 个会话(更新时间倒序),其余折叠为「还有 N 个更早的会话未显示」;灯色聚合口径不变(仍看全部会话)。
  • 0.1.0 首次发布。

License

MIT