前言¶
用 DeepSeek Harness(DSH)的 Web 界面跑智能体时,页面往往占着一个标签页。切到其他标签处理别的事,很难一眼判断:后台是否还有 root session 在跑、刚才那轮是否已经结束。反复切回 DSH 页确认,会打断手头工作。
下面介绍社区插件 dsh-tab-indicator(维护者 zz0-0,分类:客户端)。它在 DSH 浏览器标签的 favicon 和标题上反映全局 running/done 状态,不轮询、不访问外网,也不需要 DeepSeek API Key。插件以 DSH「一切皆插件」的方式接入 Web profile;目录页见 SkillHub,源码在 GitHub。
这是什么¶
dsh-tab-indicator 是一个 DSH Web 插件(当前 package 版本 0.1.0,许可证 MIT)。Host 侧跟踪正在运行的 root agent,通过 Server-Sent Events(SSE)把快照推给注入到 DSH 首页的浏览器脚本;脚本在页面 favicon 上绘制蓝色数量角标,并在任务完成时用绿色对勾与标题装饰提示。计数针对 整个 DSH host,不限于当前 workspace;子 agent 的 turn 计入其 root turn,不会单独加一。
核心功能¶
运行中的数量角标¶
只要有一个或多个 root session 在运行,favicon 上会显示蓝色数字角标(1、2 … 9+)。仅有一个运行中的 session 时,标题保持原样;多于一个时,标题会增加 (N)。设计上 不用标题圆点,用数字表达并发数。
完成时的对勾¶
某次 run 结束时,标签页 favicon 约 1 秒 显示绿色对勾。若仍有其他 run 在跑,角标会恢复;若已全部结束,对勾仅在 标签页被隐藏或窗口失焦 时保留,回到该标签后会清除。
静态 favicon 与主题¶
角标只在 运行数量或 running/done 状态变化 时重绘 favicon,避免 Chrome 把每次 link rel="icon" 变更当作新加载、导致书签栏图标不停闪烁。插件会跟随浏览器当前浅/深色 favicon 变体,空闲时恢复原始 <link> 元素。
同步方式与权限¶
Host 通过 GET /dsh-tab-indicator/events 推送完整快照(text/event-stream),页面在 host 重启后会自动跟上;无轮询。SSE 与 Web API 一样受浏览器 cookie 保护。插件 不做出站请求,不采集遥测,不处理凭据。
计数粒度与限制¶
计数是 turn 级别:比 turn 存活更久的后台 job 不会计入。Host 每 2 秒与 ctx.agents.roots() 对账,修复插件重载时可能漏掉的状态。页面标题由 React DocumentTitle 管理,插件用 MutationObserver 在应用改写标题后重新应用 (N) / ✓ 装饰。
环境要求¶
- DSH 0.2.1.x,且使用 web profile;README 写明在
0.2.1-rc.3上测试过。 - 开发与测试需 Node.js
^22.19.0 || >=24.0.0(与 DSH 要求一致)。 - 不需要 DeepSeek API Key。
安装与启用¶
从 GitHub 安装并重启 Web 服务(以下命令来自项目 README):
dsh plugin --profile web add github:zz0-0/dsh-tab-indicator
systemctl --user restart dsh-web
也可使用显式 git URL:
dsh plugin --profile web add git+https://github.com/zz0-0/dsh-tab-indicator.git
systemctl --user restart dsh-web
安装后应对 DSH Web 页 硬刷新(Ctrl/Cmd + Shift + R)。插件会把浏览器脚本注入 DSH 首页,首次必须刷新才能加载。systemctl 行假设使用 Linux 用户服务;若手动运行 dsh web,应重启对应进程而非 systemctl。
本地开发可链接目录(将路径换成你的检出位置):
dsh plugin --profile web add link:/path/to/dsh-tab-indicator-plugin
systemctl --user restart dsh-web
更新与移除:
dsh plugin --profile web add github:zz0-0/dsh-tab-indicator
systemctl --user restart dsh-web
dsh plugin --profile web remove dsh-tab-indicator
systemctl --user restart dsh-web
典型用法¶
安装并硬刷新后,无需额外配置项:照常打开 DSH Web 界面即可。
- 启动一个或多个 root session 后,观察标签 favicon 上的蓝色数字;多 session 时标题会出现
(N)。 - 切到其他标签或窗口,通过角标判断 DSH 是否仍在跑;其他 workspace 里的 run 同样计入。
- 某次 run 结束时留意约 1 秒的绿色对勾;若你仍停留在该标签且已无其他 run,对勾行为会按 README 描述清除。
Host 还会在首页注入:
<script defer src="/dsh-tab-indicator/client.js?v=1"></script>
SSE payload 形态示例(字段以实际为准):
GET /dsh-tab-indicator/events text/event-stream
data: {"type":"state","running":1,"sessions":["…"],"at":…}
适用场景与注意¶
适合:长时间用 DSH Web 界面、常把 DSH 标签留在后台、需要 全局 root session 并发感知,又不想开轮询或第三方服务的开发者。
安装前请知悉:插件与当前 dsh 进程同权限 运行,会注册 host 路由并改写首页注入脚本。安装前应阅读 源码与 MIT 许可证,确认可接受其行为。
排查(摘自 README):安装后无角标——重启 dsh-web 并硬刷新,确认 profile 已列出 dsh-tab-indicator。对话结束但数字仍在——检查是否还有其他 root session 或 turn;必要时重启 dsh-web。favicon 未恢复——刷新页面;书签图标可能缓存滞后。角标显示 9+ 表示超过九个 root session 在运行。favicon 不会动画,这是有意设计(见 README「Why the favicon is static」)。
结尾¶
dsh-tab-indicator 把 DSH 智能体的 running/done 状态落到浏览器标签的 favicon 与标题上,SSE 推送、本地运行、无 API Key,适合作为 Web 侧的小而专的客户端插件。
- 目录页:https://www.skillhub.cn/plugins/zz0-0/dsh-tab-indicator
- GitHub:https://github.com/zz0-0/dsh-tab-indicator