🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话红绿灯 yimeng-dev/dsh-traffic-light

DeepSeek Harnessv0.1.5
yimeng-dev80 天前有提交已提供中文文档扫描:含敏感能力

在桌面为每个会话显示悬浮灯,状态一眼可见

28.9/100
综合分
3
GitHub 星标
52
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-traffic-light
npm 源 · dsh-traffic-light 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
数据截至 2026/10/24·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 80 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-traffic-light @ 0.1.5
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/24 00:03:13

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 31 处,展示前 31 条)
  • 写入本地文件
    dist/host/index.js:103
    await mkdir(directory, { recursive: true, mode: 0o700 });
  • 读取本地文件
    dist/host/desktop-process.js:90
    await access(executable, constants.X_OK);
  • 读取本地文件
    dist/host/desktop-process.js:103
    await access(desktopEntry, constants.R_OK);
  • 执行外部命令来自配置/变量
    dist/host/desktop-process.js:114
    const child = spawn(executable, [
  • 执行外部命令来自配置/变量
    dist/host/desktop-process.js:154
    const child = spawn(process.execPath, [installer], {
  • 读取本地文件
    dist/host/http.js:164
    const info = await stat(filePath);
  • 读取本地文件
    dist/host/http.js:167
    const body = await readFile(filePath);
  • 读取本地文件
    dist/host/session-settings.js:88
    const parsed = JSON.parse(await readFile(this.path, 'utf8'));
  • 写入本地文件
    dist/host/session-settings.js:111
    await mkdir(directory, { recursive: true, mode: 0o700 });
  • 写入本地文件
    dist/host/session-settings.js:112
    await writeFile(temporaryPath, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
  • 写入本地文件
    dist/host/session-settings.js:113
    await chmod(temporaryPath, 0o600);
  • 写入本地文件
    dist/host/session-settings.js:114
    await rename(temporaryPath, this.path);
  • 写入本地文件
    dist/host/state-file.js:41
    await mkdir(directory, { recursive: true, mode: 0o700 });
  • 写入本地文件
    dist/host/state-file.js:42
    await writeFile(temporaryPath, `${JSON.stringify(snapshot, null, 2)}\n`, { mode: 0o600 });
  • 写入本地文件
    dist/host/state-file.js:43
    await chmod(temporaryPath, 0o600);
  • 写入本地文件
    dist/host/state-file.js:44
    await rename(temporaryPath, this.path);
  • 写入本地文件
    dist/desktop/main.js:52
    await mkdir(dirname(stateFilePath), { recursive: true, mode: 0o700 });
  • 读取本地文件
    dist/desktop/main.js:83
    readFile(stateFilePath, 'utf8'),
  • 读取本地文件
    dist/desktop/main.js:84
    stat(stateFilePath),
  • 读取本地文件
    dist/desktop/main.js:212
    const parsed = JSON.parse(await readFile(settingsFilePath, 'utf8'));
  • 写入本地文件
    dist/desktop/main.js:219
    await mkdir(dirname(settingsFilePath), { recursive: true, mode: 0o700 });
  • 写入本地文件
    dist/desktop/main.js:220
    await writeFile(temporaryPath, `${JSON.stringify({
  • 写入本地文件
    dist/desktop/main.js:224
    await chmod(temporaryPath, 0o600);
  • 写入本地文件
    dist/desktop/main.js:225
    await rename(temporaryPath, settingsFilePath);
  • 读取本地文件
    dist/host/workspace-settings.js:62
    const parsed = JSON.parse(await readFile(this.path, 'utf8'));
  • 写入本地文件
    dist/host/workspace-settings.js:80
    await mkdir(directory, { recursive: true, mode: 0o700 });
  • 写入本地文件
    dist/host/workspace-settings.js:81
    await writeFile(temporaryPath, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
  • 写入本地文件
    dist/host/workspace-settings.js:82
    await chmod(temporaryPath, 0o600);
  • 写入本地文件
    dist/host/workspace-settings.js:83
    await rename(temporaryPath, this.path);
  • 发起网络请求
    dist/web/workspace-switch.js:277
    const response = await fetch(`${basePath}/api/sessions/toggle`, {
  • 发起网络请求
    dist/web/workspace-switch.js:334
    const response = await fetch(`${basePath}/api/sessions`, {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-session@deepseek-ai/dsh-settings@deepseek-ai/dsh-user-approval
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 多会话状态监控
  • 悬浮灯显示
  • 状态一眼可见

DeepSeek Harness 多会话智能体状态监控。

README

由 DeepSeek 最新模型翻译生成
给 DeepSeek Harness 每个 Session 一个桌面红绿灯 中文 · English dsh-traffic-light 不用一直盯着 DSH 页面。每个开启监控的 Session 都会在桌面显示一个独立的悬浮灯,运行、等待、完成和失败一眼可见。 它能做什么 - 一个 Session 对应一个悬浮灯,多个 Session 可以同时显示。 - 悬浮灯独立置顶、可拖动,不占用 DSH 页面空间。 - 从 Session 的三点菜单单独开启或关闭,不会影响同一工作区的其他 Session。 - 右键悬浮灯后选择「关闭悬浮灯」,关闭动作会同步回 DSH 页面。 - 运行状态只在本机显示,不上传 Session 内容。 界面预览 动图依次演示:空闲 → 运行中 → 需要关注 → 已完成 → 失败。黄色慢呼吸表示运行中,黄色快闪表示需要关注。 安装 在终端执行: dsh plugin --profile web add dsh-traffic-light 如果当前 DSH 已经使用 web profile,也可以简写为: dsh plugin add dsh-traffic-light 安装完成后重启 DSH Web: dsh web 首次安装会下载桌面悬浮窗所需的运行组件,请等待安装完成。
展开完整文档(README 剩余 1 节)
给 DeepSeek Harness 每个 Session 一个桌面红绿灯

中文 · English

dsh-traffic-light

不用一直盯着 DSH 页面。每个开启监控的 Session 都会在桌面显示一个独立的悬浮灯,运行、等待、完成和失败一眼可见。

它能做什么

- 一个 Session 对应一个悬浮灯,多个 Session 可以同时显示。
- 悬浮灯独立置顶、可拖动,不占用 DSH 页面空间。
- 从 Session 的三点菜单单独开启或关闭,不会影响同一工作区的其他 Session。
- 右键悬浮灯后选择「关闭悬浮灯」,关闭动作会同步回 DSH 页面。
- 运行状态只在本机显示,不上传 Session 内容。

界面预览

动图依次演示:空闲 → 运行中 → 需要关注 → 已完成 → 失败。黄色慢呼吸表示运行中,黄色快闪表示需要关注。

安装

在终端执行:

dsh plugin --profile web add dsh-traffic-light

如果当前 DSH 已经使用 web profile,也可以简写为:

dsh plugin add dsh-traffic-light

安装完成后重启 DSH Web:

dsh web

首次安装会下载桌面悬浮窗所需的运行组件,请等待安装完成。

使用方式

1. 在 DSH 中打开要监控的 Session。
2. 点击该 Session 的三点菜单。
3. 选择「开启红绿灯」。
4. 桌面会出现该 Session 对应的悬浮灯。
5. 对其他 Session 重复以上步骤,即可同时监控多个 Session。

关闭单个悬浮灯有两种方式:

- 在对应 Session 的三点菜单中选择「关闭红绿灯」;
- 在悬浮灯上右键,然后选择「关闭悬浮灯」。

关闭一个 Session 不会关闭其他 Session 的悬浮灯。

灯光含义

悬浮窗只有红、黄、绿三种实体灯。黄色通过亮度和闪烁速度区分两种状态:

| 灯光表现 | 页面状态 | 含义 |
| 黄灯慢慢呼吸 | Running(运行中) | Session 正在执行任务。 |
| 黄灯快速闪烁 | Attention(需要关注) | 正在等待你的确认、回答,或任务暂时受阻。 |
| 绿灯常亮 | Completed(已完成) | 本轮任务已正常完成。 |
| 红灯常亮 | Failed(失败) | 本轮任务发生错误或异常中断。 |
| 三灯熄灭 | Idle(空闲) | 当前没有正在执行的任务。 |

完成后的绿灯会短暂保留,方便你注意到刚刚完成的任务;开始下一轮任务后会恢复为运行状态。

多 Session 的显示规则

悬浮灯按 Session 保存开关状态,而不是按工作区保存。也就是说:

- 同一工作区中的多个 Session 可以只开启其中一部分;
- 不同工作区中的 Session 也可以同时开启;
- 每个悬浮灯只反映它对应的 Session,不会把其他 Session 的状态混在一起;
- 关闭某个悬浮灯不会影响其他悬浮灯。

常见问题

Session 菜单里没有「开启红绿灯」

确认插件安装到了 web profile,然后完全退出并重新启动 dsh web。如果 DSH 正在运行,安装后只刷新浏览器页面可能不会加载插件菜单。

点击开启后没有窗口

首次启动可能需要几秒完成桌面运行组件的准备。仍未出现时,关闭当前 DSH Web 后重新执行 dsh web,再从 Session 菜单开启一次。

关闭悬浮灯后,菜单仍显示开启

先等待片刻让 DSH 页面同步;如果页面没有变化,刷新 DSH 页面或重启 dsh web。重新打开菜单时,开关状态会以当前 Session 的实际悬浮灯状态为准。

多个悬浮灯位置重叠

把悬浮灯拖到需要的位置即可。每个 Session 都有独立窗口,重新开启后仍可继续调整布局。

状态没有变化

确认对应 Session 仍在运行,并检查 DSH Web 是否保持打开。状态来自 DSH 当前运行情况,不会读取其他应用或终端中的任务。

卸载

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

卸载后重启 DSH Web。已打开的悬浮灯会随插件退出而关闭。

兼容性与隐私

- 需要已安装 DeepSeek Harness,并使用 Web profile。
- 当前主要在 macOS 上验证;Windows 和 Linux 可以尝试使用,若桌面环境限制透明置顶窗口,显示效果可能不同。
- 插件只在本机 DSH 与桌面窗口之间传递状态,不上传 Session 内容、提示词或工具结果。
- 首次安装需要下载 Electron 运行组件,因此安装包会比普通网页插件更大。

文档

- 快速开始:从安装到第一次开启悬浮灯。
- 使用设置:按 Session 管理开关、窗口和状态保留规则。
- 状态说明:用通俗方式解释五种页面状态如何映射到三盏灯。

许可证

MIT
预览分享卡片长什么样 ↓yimeng-dev/dsh-traffic-light
分享 · DeepSeek Harness Hub
yimeng-dev/dsh-traffic-light

在桌面为每个会话显示悬浮灯,状态一眼可见

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部