DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

ginkgonine /

ginkgonine/dsh-server-hub

Verified

A persistent multi-server switcher for DeepSeek Harness Web

★ 2 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@99638b68

🚀 DSH Server Hub

专为 DeepSeek Harness Web 打造的多实例 / 多服务器统一控制台与状态雷达

Version DSH Plugin Node Compatibility License


💡 DSH Server Hub 解决哪些问题?

当你在本地并行开发多个项目,或在多台远程 GPU/开发服务器上同时跑 DeepSeek Harness (DSH) 任务时,常常被两件事困扰:

  1. “标签页地狱”:浏览器里开了一整排 DSH 网页,所有 Tab 都千篇一律叫“DeepSeek Harness”,每次找项目或机器都得抓周;切换时还会伴随页面重载与白屏闪烁。
  2. “盲盒式巡检”:离开网页后,你根本不知道哪个实例的 Agent 跑完了、哪台正卡在**“等待人工授权/提问”**环节,只能隔一会儿挨个切回去肉眼翻查。

DSH Server Hub 将本地运行的所有 DSH 实例以及通过隧道转发到本机的远程 DSH 节点,全部聚合进同一个原生工作台中。自动识别端口、单页无感热切、全矩阵 Agent 状态雷达与全局被动唤醒,让你在一个窗口内从容调度全部算力与会话。

📌 按需安装,轻重随心:

  • 基础多实例/多服切换(Hub):仅需在本地主控端安装! 其它本地实例或远端服务器无需任何插件,只要端口在本机处于监听状态,即可立刻享受单页聚合与多标签切换;
  • 全景状态雷达与提醒:如果你想在标签栏、浏览器 Tab 和桌面弹窗上实时看到各个实例的 Agent 运行状态(是否正在运行、是否卡在等待授权),只需在对应实例上也安装该插件即可;
  • 远程 Agent 协作:主控与远程均安装插件后,选择允许执行的工作区并连接,即可在主控聊天中向其他实例派出任务、接收结果。

🖼️ 界面预览

DSH Server Hub 主界面

浏览器标签页会跟随多服务器 Agent 状态自动变化:

工作中 等待人工操作 已完成
多个服务器工作中 等待人工操作与服务器工作中 多个服务器已完成

✨ 核心特性

🔍 自动感知,开箱即用 (Zero-Config Auto Discovery)

  • 智能本地扫描:原生探测跨平台(Windows / Linux / macOS)的本机 TCP 监听端口,自动识别本机启动的其他 DSH 实例或通过 SSH 隧道映射到本机的实例,免去繁琐配置。
  • 灵活补充 & 个性命名:支持手动追加指定端口;支持给每台实例/服务器自定义直观名称(如 本地-电商重构、A100-训练机、4090-测试节点),配置持久化保存于浏览器本地,重启不丢。

⚡ 无缝热切,零白屏闪烁 (Seamless Hot Switching)

  • 常驻 Iframe 后台热载:所有实例在后台保持挂载,切换标签时不会主动重新加载,上下文、聊天记录与输入框草稿均可保留。
  • 深色模式体验调优:内置平滑过渡与暗色防闪烁机制,彻底告别 iframe 切换时的刺眼白屏。

🧭 全矩阵 Agent 状态雷达 (Status Radar)

各实例的 Agent 动向尽收眼底,一眼看透全局进度:

  • 🏃 正在工作:工具调用与推理进行中(Hub 标签显示旋转指示器,提示活跃任务数)
  • ❗ 等待确认:Agent 卡在危险操作授权或需要人工输入(琥珀色高亮呼吸,优先提醒)
  • ✅ 任务完成:任务闭环结束,状态即时同步
  • 💤 空闲 / 离线:清晰区分就绪与连接中断状态

📑 浏览器标签页智能同步 (Smart Browser Tab)

无需切回网页,看一眼浏览器 Tab 标题就能洞察一切:

  • 🏃 有任务在跑:浏览器 Tab 标题前缀显示动态旋转字符(⠋ ➔ ⠙ ➔ ⠹ ➔ ⠸...),直观感知后台仍在全力运转;
  • ❗ 需要人工介入:只要有任意一个实例卡在等待授权,Tab 标题立刻醒目标注彩色 ❗;
  • ✅ 任务圆满完成:有实例产生新的任务完成状态后,自动呈现 ✅ 提示交付。

🔔 全局桌面被动唤醒 (Desktop Notifications)

  • 精准桌面弹窗:在需要人工授权或任务结束时,主动推送到系统通知中心,不同事件类型区分弹窗提示。写代码或摸鱼时不再需要频繁肉眼巡检,有事它会自动叫你。
  • 全生命周期守护:即使你暂时切出 Hub 面板回到普通聊天窗口,底层的监控器依然在后台静默运行,保证提醒不漏接。

🤝 远程 Agent,跨实例协作 (Remote Agents)

不止是切换页面,还能让不同实例的 Agent 分工完成任务。

  • 一处下达,多端执行:在主控聊天中提出需求,主控 Agent 将任务派到已连接的远程,在指定工作区独立处理。
  • 结果自动回传:执行过程保留在远端,完成后将结果送回原主控会话;主控可以继续其他工作,无需反复查询进度。
  • 勾选工作区即可开放:远程选择允许使用的已注册工作区并保存,沿用自己的模型与权限配置,无需另填路径或密钥。
  • 身份与连接一眼分明:Hub 标签直接显示「主控 / 远程」与连接状态;主控用「远程管理」查看全局,远程用「远控设置」管理自己的工作区和连接。
  • 名字直接告诉 Agent:给远程实例命名后,名称会同步到连接记录,在新对话中也能按名称派单,无需重复解释端口。
  • 回复方式随场景切换:主控「远程管理」保留「单轮回复(等待远程结果)」开关,切换立即保存、失败回滚,只影响新任务;工作区 iframe 不显示。开启后新任务前台等待结果,在当前一轮返回,优先于模型的 run_in_background: true;关闭时默认后台,也可显式 run_in_background: false 前台等待。
  • 远程审批,直接聊:远程需要补充信息或申请权限时,先通知主控 Agent;主控在原聊天里向你说明并询问,再把允许、拒绝或取消传回远端,原任务继续。可以正常聊天,也可以用 ask,无需打开 Hub。

📐 架构与工作拓扑

┌─────────────────────────────────────────────────────────────────┐
│  本地工作站 (Windows / macOS / Linux PC)                         │
│                                                                 │
│   DSH 主控 Web ── 侧栏入口: [服务器 Hub]                          │
│   │                                                             │
│   ├── 聚合标签 [主控本机] [本地项目B] [A100训练机] [测试节点]    │
│   │                                                             │
│   └── 常驻监控调度器 (Host + Client Overlay)                     │
│         │ (每30s自动扫描端口 / 约每1.5s轻量状态轮询)             │
│         │                                                       │
│         ├── 127.0.0.1:3001 (本机另一个项目目录跑的 DSH)         │
│         │                                                       │
│         ├── 127.0.0.1:3101 (SSH 隧道) ── 远程服务器 A (带插件)  │
│         │                                                       │
│         └── 127.0.0.1:3102 (SSH 隧道) ── 远程服务器 B (纯 DSH)  │
└─────────────────────────────────────────────────────────────────┘

🚀 极速上手

DSH 版本兼容

当前适配目标为官方已发布的 DSH 0.2.1-rc.2,不是尚未发布的 0.2.1 stable。engines.dsh 从 0.2.0-rc.1 起覆盖到 <0.3.0,显式包含 0.2.1 预发布;connection/webserver peer 保留新旧接口版本范围。

  • 新版 DSH 的原生 startActivation 前台使用 delivery: 'caller',后台使用 delivery: 'parent';activation 的 delivery 固定,前台遇审批/提问先将请求返回当前聊天,保存原任务并转后台,后续由 Hub 补最终报告,不会重新派单。旧 0.2.0 保留兼容。Hub 保留审批/问题转发,以及远端断线和重启后的原任务恢复,不增加原生自动放权。
  • 更新 DSH peer 范围,避免新版安装/启动兼容性校验拒绝加载(optional peer 也参与 DSH 校验),无需使用版本豁免。
  • Host 使用 agents.list() / agent.status 和 agent/status 跟踪真实生命周期,不再依赖 Web API 投影事件或历史 turn 日志推断状态。
  • Web API 请求使用文档相对路径,支持将主控页面部署到带尾部 / 的反向代理子路径;代理仍需把该前缀剥离后转发到 DSH。
  • 最新版 layout.selectPanel、Slot 注册和 __ModuleLoader__ 接口仍兼容,保留原有前端加载方式和 v1 状态协议。

运行 npm run check 可验证构建、生命周期/等待状态回归、Slot 注册及根路径/代理子路径请求。接口核对与自动化回归不等同于真实浏览器端到端验收,也不表示在线实例已升级或启用。

🤝 远程 Agent 快速连接(0.3.0-beta.1)

选工作区 → 连接远程 → 在主控聊天中下达任务。

以主控 3080、远程 3081 为例:

  1. 在主控的 Hub 上方选中 「远程 · 3081」,打开 「远控设置」;
  2. 点击 「选择可执行工作区」,在远程窗口中勾选工作区并 「保存工作区」;
  3. 返回设置面板,点击 「连接远程 :3081」。标签显示 「已连接」 后,即可回到主控聊天派出任务。

例如:

让 3081 分析项目的测试失败原因,完成后把结论汇总给我。

  • 主控自动确定:当前主页面所在的实例就是主控。切换 Hub 标签只改变正在查看的实例,不需要另外选择主控。
  • 授权随时调整:勾选并保存即可开放工作区;取消全部勾选并保存即可关闭。已连接实例可通过「修改工作区」调整许可,或通过「断开连接」取消连接。
  • 两种入口,各司其职:选中主控时显示「远程管理」,集中查看已连接实例与任务记录;选中远程时显示「远控设置」,只管理该实例。

📌 使用条件:主控和远程均需安装插件,远程 Agent 需要 DSH 0.2 Web。支持同机端口和主控机器上的 SSH 回环转发;两端网页使用相同主机名(如都用 127.0.0.1),并通过根路径打开。

更多用法与故障排查见 远程 Agent 使用指南。

步骤 1:安装插件

1. 本地主控端(必选)

在作为主控的 DSH 实例上安装,启用 Hub 面板与智能发现:

dsh plugin --profile web add github:ginkgonine/dsh-server-hub
dsh web

2. 被监控端 / 远程(按需安装)

如果希望查看某个实例(本地或远程)的 Agent 状态,或向它派出远程 Agent,在该实例上也执行安装并重启对应的 DSH Web:

dsh plugin --profile web add github:ginkgonine/dsh-server-hub
# 停止旧进程后重新启动
dsh web

(被 Hub 嵌入时会自动切换为纯后台轻量桥接模式,不产生冗余 UI)

步骤 2:启动更多实例(本机多开 或 远程隧道)

无论是本地多开还是远程映射,只要端口在本地处于监听状态,Hub 都会自动发现:

  • 方式 A:本机多实例并行(多项目开发) 在另一个项目目录中,以指定端口启动第二个 DSH:

    cd ~/another-project
    dsh web --port 3001
    
  • 方式 B:远程服务器映射(多服务器集群) 通过 SSH 将远端 DSH 服务的端口映射到本地的独立端口:

    # 将远程服务器 A、B 分别映射到本地 3101 和 3102 端口
    ssh -N -L 3101:127.0.0.1:3080 user@server-a.internal
    ssh -N -L 3102:127.0.0.1:3080 user@server-b.internal
    

步骤 3:即刻掌控

  1. 打开主控 DSH Web 页面,在左侧导航栏点击 「服务器 Hub」;
  2. 插件会自动探测到刚才启动或映射的所有本地端口,并生成标签页;
  3. 点击 「命名」 为每个实例设置易记别名(如 本地-前端重构、A100-训练);
  4. 点击工具栏的 「通知」 授予浏览器通知权限,激活桌面弹窗;
  5. 开启高能并行开发!

⚙️ 常用操作与配置

操作 说明
切换实例 点击顶部标签,即开即切,各实例上下文与草稿均完整保留
命名实例 选中标签后点击「命名」,输入自定义别名(持久化于本地浏览器缓存)
移除实例 选中远程标签后点击「移除」,从当前浏览器的 Hub 标签栏隐藏,刷新不会重新出现;不停止服务或断开远控连接
手动添加端口 若使用了特殊端口或未自动列出,在输入框填写端口号并回车即可直连;重新添加被移除的端口即可恢复显示
桌面通知授权 点击工具栏「通知」按钮,浏览器授权后生效,等待操作与任务完成均有专属弹窗
管理远程 选中主控标签,打开「远程管理」,查看已连接实例、允许工作区和任务记录
配置远控 选中远程标签,打开「远控设置」,选择工作区、连接或断开该实例
返回主控会话 从左侧会话列表打开普通对话,后台监控依然在浏览器 Tab 标题与通知中生效

更新插件

在主控以及已安装状态桥接的被监控端分别执行:

dsh plugin --profile web update dsh-server-hub

更新后停止旧进程并重新运行 dsh web。如果主控与远端暂时没有同时更新,已有的 v1 状态协议仍可继续通信,但建议最终保持版本一致。

卸载插件

dsh plugin --profile web remove dsh-server-hub

卸载后同样需要重启对应的 DSH Web。远端卸载后仍可在 Hub 中打开,但不再提供 Agent 状态和通知;主控卸载后 Hub 入口会消失。


🔒 安全与网络设计

  • 零会话隐私侵入:状态桥接端只返回约每 1.5 秒轮询一次的轻量聚合状态(当前工作任务数、等待确认数、完成事件序列号等),不传输聊天记录、提示词、工具参数或输出日志。
  • 分层访问控制:扫描和状态总览 API 使用 DSH 的登录校验;供主控 Host 轮询的 /api/dsh-server-hub/status 仅接受无浏览器 Origin 的 Loopback GET/HEAD 请求(127.0.0.1 / ::1)。
  • 远端权限独立:远程 Agent 仅使用远程开放的工作区,沿用远程的模型与工具权限;需要审批时,主控 Agent 在原聊天里询问你,再回传决定。
  • 反向代理提醒:不要把状态桥接端点放在会将外部请求转换成 Loopback 来源的本机反向代理后面;如确有需要,应在代理层额外配置身份验证和访问控制。
  • 低负载防护:
    • 状态响应体最大读取 16 KiB,HTTP 探测超时为 1.2 秒且禁止跟随重定向;
    • 端口探测并发数限制为 24,探测范围上限 256 个本机监听端口;
    • 手动添加端口上限 64 个,且仍限定为 Loopback HTTP。

⚠️ 已知限制

  • 自动扫描发生在主控 DSH 进程所在的机器。如果主控运行在 Linux 服务器上,它无法看到浏览器所在 Windows PC 的本地隧道端口。
  • 自动探测仅访问 127.0.0.1 和 ::1 上的 HTTP 服务;仅绑定其他网卡地址、HTTPS 或任意完整 URL 的场景暂不支持。
  • 目标 DSH 必须允许 iframe 嵌入。若响应包含 X-Frame-Options: DENY 或严格的 CSP frame-ancestors,需调整代理响应头或采用主控反向代理方案。
  • 未安装插件的实例仍可打开和切换,但不提供 Agent 状态、浏览器标题汇总和桌面通知。
  • 桌面通知必须由用户点击「通知」主动授权;若曾拒绝,需要在浏览器站点设置中恢复权限。
  • 「已连接」表示已保存派单连接,不代表远程始终在线;Agent 运行状态另行显示。
  • 中断远程 Agent 或断开连接,不会自动停止它启动的容器、训练或其他后台进程;这类操作需要单独明确下达。

🛠️ 开发者指南

本项目已包含预构建的发布产物(位于 lib/)。构建过程完全基于标准 ESM 与 DSH 模块规范,不依赖闭源私有工具链。

# 1. 克隆代码仓库
git clone https://github.com/ginkgonine/dsh-server-hub.git
cd dsh-server-hub

# 2. 构建与运行测试
npm run build
npm test
npm run check

# 3. 安装本地源码版本至 DSH
dsh plugin --profile web add .

目录结构

├── src/
│   ├── index.js        # Host 端:端口智能发现、极轻状态桥接、常驻监控与受保护 API
│   └── client.js       # Client 端:Slot 注入、iframe 容器组、状态动效与通知控制
├── lib/                # 预编译产物目录
├── cordis.patch.yml    # Web profile 插件描述补丁
└── scripts/build.mjs   # 轻量构建脚本

📄 开源许可证

本项目基于 MIT 许可证 开源。

—/ 5

No ratings yet

Verified DSH bundle

Commit 99638b684283

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout