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-hmr500ms stat 轮询自动热替换组件,无需刷新。
已知边界
- 读的是浏览器 runtime 的会话列表:GUI 未打开时灯自然不在(它是 Web UI 挂件,不是桌面应用)。
- 多标签页各自渲染一盏(状态一致,互不干扰)。
dsh web的 GUI 主题皮肤(Skin Center)若全局覆写[class*="dsh-tl"]才会互相影响——正常皮肤不会。
更新记录
- 0.1.1 悬停清单只显示最近活跃的 5 个会话(更新时间倒序),其余折叠为「还有 N 个更早的会话未显示」;灯色聚合口径不变(仍看全部会话)。
- 0.1.0 首次发布。
License
MIT