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

多机会话看板 stephenlstrange2/dsh-remote-dashboard

DeepSeek Harness
stephenlstrange229 天前有提交已提供中文文档扫描:含敏感能力

在平板或墙屏上集中查看多台机器的会话状态

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add stephenlstrange2/dsh-remote-dashboard
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
数据截至 2026/10/09·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 29 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 7 处,展示前 7 条)
  • 读取本地文件
    lib/server.js:14
    const PAGE = () => readFileSync(join(HERE, 'page.html'), 'utf8')
  • 读取本地文件
    lib/server.js:34
    const st = statSync(path)
  • 读取本地文件
    lib/server.js:36
    const v = readFileSync(path, 'utf8').trim()
  • 发起网络请求
    lib/server.js:114
    const res = await fetch(p.url.replace(/ +$/, '') + '/v1/snapshot', {
  • 发起网络请求
    lib/pusher.js:12
    const res = await fetch(url, {
  • 发起网络请求
    docs/screenshots.mjs:66
    await fetch(base + '/v1/push', { method: 'POST', headers: { authorization: 'Bearer ' + PUSH_TOKEN, 'content-type': 'application/json' }, body: JSON.st
  • 写入本地文件
    docs/screenshots.mjs:80
    mkdirSync(dirname(resolve(OUT)), { recursive: true })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 集中查看多机会话状态
  • 跨多台机器
  • 平板页面自适应屏幕

只读墙面板,跨多台机器看 DeepSeek Harness 会话:拉或推,一个中枢,平板页面自适应屏幕。

README

由 DeepSeek 最新模型翻译生成
dsh-remote-dashboard 只读的多机会话监视器,面向 DeepSeek Harness,为墙面屏 / 平板屏打造。 平板视图:四台机器、正在运行的会话及其当前工具、一条审批横幅,以及一台离线机器 手机布局 截图用的是编造的数据(docs/screenshots.mjs 从假会话渲染出来;改完页面后再跑一次即可)。页面按机器展示:在线状态和延迟(推送型机器显示 push · 5s)、运行中数量,以及每个会话的运行指示灯、标题、距上次活动的时间、当前执行的工具、文件夹、轮次、token、后台任务和目标进度。待审批项显示在橙色横幅里。连不上的机器会变灰,并显示错误信息。 machine A (DSH) ──┐ agent GET /v1/snapshot (Bearer token) machine B (DSH) ──┼──────────────► HUB (one DSH) ──► tablet browser http://hub:3090/?key=VIEWER_KEY machine C (DSH) ──┘ polled every pollMs serves the page + /api/fleet [!WARNING] 没有 TLS,而且查看密钥会出现在 URL 里。 暴露之前先读这段。 - 流量走明文 HTTP。
展开完整文档(README 剩余 1 节)
dsh-remote-dashboard

只读的多机会话监视器,面向 DeepSeek Harness,为墙面屏 / 平板屏打造。

平板视图:四台机器、正在运行的会话及其当前工具、一条审批横幅,以及一台离线机器

手机布局

截图用的是编造的数据(docs/screenshots.mjs 从假会话渲染出来;改完页面后再跑一次即可)。页面按机器展示:在线状态和延迟(推送型机器显示 push · 5s)、运行中数量,以及每个会话的运行指示灯、标题、距上次活动的时间、当前执行的工具、文件夹、轮次、token、后台任务和目标进度。待审批项显示在橙色横幅里。连不上的机器会变灰,并显示错误信息。

machine A (DSH) ──┐ agent GET /v1/snapshot (Bearer token)
machine B (DSH) ──┼──────────────► HUB (one DSH) ──► tablet browser http://hub:3090/?key=VIEWER_KEY
machine C (DSH) ──┘ polled every pollMs serves the page + /api/fleet

[!WARNING]
没有 TLS,而且查看密钥会出现在 URL 里。 暴露之前先读这段。
- 流量走明文 HTTP。只要能嗅探平板、hub 和 agent 之间网络的人,就能读到会话标题、文件夹名、审批文本,以及 token / 密钥。请跑在 Tailscale(或其他 VPN)或你信得过的局域网里;千万别把它端口转发到公网。
- 你用 ?key=VIEWER_KEY 打开页面一次。hub 会把它换成 HttpOnly cookie,然后重定向到干净的 URL,但密钥毕竟在地址栏里敲过,所以可能留在浏览器历史、书签或代理 / 路由器日志里。把它当密码对待,一旦泄露就轮换:改掉 viewerKey,再重新打开页面。
- 一切都是只读的,但密钥泄露就等于暴露你整个机群。用 tokenFile(chmod 600),让密钥远离你可能提交的配置文件。

没有依赖,没有构建步骤。这里没有任何东西能写入 DSH:服务器只响应 GET / HEAD,外加一个 POST /v1/push,它只接受来自已配置且通过认证的机器的快照,而且只存进 hub 的内存。

模式

| 模式 | 提供 | 用途 |
| agent | /v1/snapshot(token) | 你想监视的每一台机器 |
| hub | 平板页面 + /api/fleet | 只做聚合的机器 |
| both | 全部内容,外加本机自己的会话 | 托管仪表盘的机器 |
| push | 什么都不提供:没有 host,没有端口 | 在 NAT / VM 后面 / 没有入站:机器把快照发给 hub |

对端 token 只留在 hub 上。平板只持有查看密钥,首次访问时它会变成 HttpOnly cookie。

安装

dsh plugin --profile web add /path/to/DSH-Dashboard
然后把配置加到该配置档的 cordis.patch.yml(顶层 YAML 列表)。

每台被监视的机器(agent),能通过 Tailscale 或局域网访问:
- id: dsh-remote-dashboard
config:
mode: agent
machine: lab-pc
host: 100.64.0.10 # this machine's Tailscale/LAN IP, never a public one
allowRemote: true # required for any non-loopback host
port: 3090
token: <random 16+ chars>

中枢机器:
- id: dsh-remote-dashboard
config:
mode: both
machine: hub-pc
host: 0.0.0.0 # or its LAN/Tailscale IP
allowRemote: true
port: 3090
viewerKey: <random 8+ chars>
pollMs: 3000
peers:
- { name: lab-pc, url: 'http://100.64.0.10:3090', token: <that agent's token> }
- { name: home-nuc, url: 'http://100.64.0.11:3090', token: <...> }
一台无法被访问的机器(虚拟机、NAT、另一个 tailnet):用 push 模式。 它不绑定任何端口,只向中枢 POST,所以唯一的要求是它能访问中枢: on the pushing machine
- id: dsh-remote-dashboard
config:
mode: push
machine: otx-box
hub: http://10.0.2.2:3090 # QEMU/Boxes user-mode NAT: the host is 10.0.2.2. Otherwise use the default gateway.
tokenFile: /home/me/.dsh-remote-dashboard-token # chmod 600; or token: <16+ chars>
pushMs: 3000
on the hub, in peers: (next to any polled peers)
- { name: otx-box, push: true, tokenFile: /home/me/.otx-box-token, pushMs: 3000 }
中枢给 push 机器命名时,用的是它自己配置里的名字(按 token 匹配),绝不采用 payload 里的名字,所以一台机器无法冒充另一台。push 对端超过 max(10 s, 3 × pushMs) 没有推送,就显示为离线。poll 对端和 push 对端可以随意混用。

在插件上执行 git pull 之后,重启 dsh web。 patchReload: live 会重新读取配置,但不会重新读取插件代码,所以用到较新特性的配置(比如 push 对端)会被旧代码拒绝,直到重启为止。

在平板上打开一次 http://<hub>:3090/?key=<viewerKey>,然后把它加到主屏幕。
用 openssl rand -hex 16 生成密钥。

安全

- 除非 allowRemote: true,否则拒绝绑定非 loopback 地址;开启后,token(agent)或 viewerKey(hub)就是必填项。
- 使用常量时间比较;对端 token 永远不会到达浏览器。
- POST /v1/push 在读取请求体之前先校验 token,请求体上限 1 MB(413),token 错误时返回一个普通的 401,不透露名字是否存在,并且对它存储的所有内容重新做边界限制(200 个会话、100 个任务、截断字符串、重新计算总数)。viewer key 在这里永远不被接受,push token 也永远打不开页面。
- tokenFile 让密钥不进入你可能提交的补丁文件;如果该文件可被 group/other 读取,插件会发出警告。
- mode: push 会拒绝 host、port、allowRemote、viewerKey 和 peers,这样配置写错时会大声报错。
- 没有 TLS:请把它放在 Tailscale 或可信局域网里。不要做端口转发。
- 快照包含会话标题、工作目录、工具名称和审批文本。把 viewer key 当作密码对待。

页面显示什么

每台机器:在线状态和往返时间(离线时显示距上次联系的时间)、运行数量。每个会话:运行指示灯、标题、距上次活动的时间、当前执行的工具、工作目录名、轮次、输入/输出 token、活跃的后台任务、目标进度。来自任意机器的待审批和待回答问题会显示在横幅和标签页标题里。

限制

- 实时指标(轮次、token、当前工具)统计的是插件启动后看到的事件。
- 只存在于磁盘上、尚未加载的会话不会列出。
- 页面用纯 ES5,兼容老旧平板浏览器。保持唤醒需要 HTTPS 或 localhost,所以在纯 HTTP 下请把平板屏幕超时设为「永不」,或者用 kiosk 浏览器。

计划中的工作,比如每台机器支持多个名称,列在 ROADMAP.md。

从 dsh-monitor 迁移

本插件在 0.2.0 之前叫 dsh-monitor(那个 npm 名字属于另一个不相关的插件)。每台机器执行:dsh plugin --profile web remove dsh-monitor、dsh plugin --profile web add dsh-remote-dashboard(或你克隆的完整路径),然后执行 python3 scripts/apply-config.py YOUR_ENTRY.yml --migrate-from dsh-monitor,把旧的 - id: dsh-monitor 块换成 - id: dsh-remote-dashboard。重启 dsh web。你的 token 和密钥不会变。

开发

改动任何东西之前先读 AGENTS.md,并在 CHANGELOG.md 里加一条带视觉效果的记录。
node docs/screenshots.mjs 会用假数据重新生成 README 截图(需要 Playwright;设置 PLAYWRIGHT_DIR 和 CHROME)。

npm test 覆盖配置校验、认证、hub 聚合、离线检测、收集器和推送模式(认证、大小限制、清理、冒充、离线、tokenFile)。
预览分享卡片长什么样 ↓stephenlstrange2/dsh-remote-dashboard
分享 · DeepSeek Harness Hub
stephenlstrange2/dsh-remote-dashboard

在平板或墙屏上集中查看多台机器的会话状态

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