BOWLUNA/dsh-multi-instance

dsh-prompt-hub

DSH 提示词与人格库:多套系统提示词的保存、一键切换、导入导出与分享|Prompt and persona hub for DeepSeek Harness: save, switch, import and export multiple system prompts

미분류agent-presetdeepseek-harnessdsh

dsh-multi-instance

English | 简体中文

&style=flat-square&logo=npm&logoColor=white&labelColor=1f2430)

把 DeepSeek Harness(dsh)的 Web 界面装进一个桌面客户端: 多开多个实例 —— 本机、WSL2、或服务器上只有 URL 的远程 DSH 都能接。 每个实例各占一个窗格,多窗口自由排布与缩放;多实例之间互不干扰,每格有自己的浏览器会话。

一句话:给 `dsh web` 套一层窗口管理器 —— 多个实例并排跑,互不干扰。

它不是浏览器插件,也不是对 dsh 的重实现 —— 就是给 dsh web 已经提供的那套页面,套一层窗口管理外壳。

同样可能被搜到的说法:DSH 多开 · 多实例 · 多窗口 · 多开窗口 · 分屏 · 平铺 · 窗口管理 · 桌面客户端 · 客户端 · 套壳 · 网页套壳 · 远程接入 · 服务器 DSH · WSL2 · 独立会话 · 多会话 · 多标签 · 并排 · 自由布局 · DeepSeek Harness GUI · DSH GUI · dsh 图形界面 · dsh 桌面版

目录

  • 它解决什么
  • 它不做什么
  • 安装(安装包 / npm / 源码)
  • 快速上手
  • 接入一处 DSH(含自动发现、手动安装)
  • 多窗格与排布 · 会话隔离
  • 操作(隐藏抽屉、界面、快捷键)
  • 从源码运行 · 测试 · 从源码打包 · 调试开关
  • 文件位置
  • 排障
  • 已知限制
  • 相关项目 · 参与贡献 · 更新日志 · 许可

它解决什么

dsh 自带的 Web 界面很好用,但一次只能看一处、一个窗口。当你需要同时盯着本机 WSL 里的一处和 服务器上的另一处(甚至是同一个实例的两个不同会话)时,浏览器标签页就不够用了:分不清哪个是哪个、 cookie 互相覆盖、排布全靠手拉。

这个壳只做三件事:

  1. 接 —— 把每一处 dsh 当成一个「实例」管起来:跑在 WSL2 里的、跑在 Windows 本机的、或远端只有 URL 的服务器
  2. 排 —— 每个实例开成一个窗格,拖动、缩放、吸附、平铺,排布结果记住
  3. 隔 —— 每个窗格有自己独立的浏览器会话,多开不会互相踩 cookie

· 多实例并排 · 一屏放几个 DSH,各自独立窗格,拖拽缩放、自由排布 独立会话 · 每一格是独立的浏览器 partition,cookie / localStorage 互不干扰 跨环境接入 · 本机 Windows、WSL2 里的、以及服务器上的远程 DSH(带 token 的 HTTPS 地址)都能接 一键分屏 · 1/2、1/3、1/4 分区,选中后其余实例自动填剩余格 自动发现 · 扫本机常见位置,找到已装的 dsh 就问你要不要加进来 内置安装 · 不用开终端 —— 界面上选版本、选 npm 源、指定端口,直接装一份 dsh

· · ·

· ·

它不做什么

  • 不捆绑 dsh,也不会在后台自动下载它。要装,得你在界面里显式点「开始安装」
  • 不做账号体系:dsh 自己怎么认证,壳就怎么呈现
  • 不碰 dsh 的任何数据:不写 ~/.dsh、不动凭证文件,只读你指定的地址文件
  • 不扫你的全盘:自动发现只走常见位置(理由见下)

安装

方式一:下载安装包(推荐)

到 Releases 下载:

文件 · 说明 DSH.Multi-Instance-Setup-x.y.z.exe · 安装包 —— 常规 Windows 安装程序,可选安装目录、建桌面和开始菜单快捷方式 DSH.Multi-Instance-x.y.z-x64.zip · 免安装压缩包 —— 解压即用,不写注册表,适合放 U 盘或便携使用

文件名里的点是 GitHub 干的:上传时它会把名字里的空格换成 .(本地产物名里是空格)。
需要 Windows 10/11。软件本身不含 dsh —— 装完在界面里点「下载实例」,或者接你已有的 DSH。

方式二:npm

⚠️ npm 上现在只有 `0.0.1`,那是个占位空壳(只用来占住包名,装上去不会启动任何东西)。
可用的版本还没发到 npm —— 在那之前请用方式一或方式三。
想确认自己拿到的是不是真包,装之前先跑一句:npm view dsh-multi-instance version,
现在它会返回 0.0.1。
npm i -g dsh-multi-instance   # 装完用 dsh-multi-instance 启动
dsh-multi-instance --version  # 先确认装成了什么(不需要 Electron 也能看)
dsh-multi-instance --help     # 全部开关
npm 方式需要先有 Electron 运行时(npm i -g electron)。打包成 exe 的那两种方式不需要任何前置依赖。
--version / --help 是唯二不需要 Electron 就能用的开关 —— 装完先跑这两条,比启动失败再猜省事。

方式三:从源码跑

git clone https://github.com/BOWLUNA/dsh-multi-instance.git
cd dsh-multi-instance
npm install
npm start

也可以双击 start.vbs(无黑框)或 start.cmd。

⚠️ 启动器里有一行 unset ELECTRON_RUN_AS_NODE / set "ELECTRON_RUN_AS_NODE=",不要删。
这个变量残留为 1 时(Electron 系工具的子进程会继承),electron.exe 会退化成纯 Node,
现象是「双击后毫无反应」。判据:electron.exe --version 输出的是 Node 版本号
(v24.21.0 这类)就是中了;正常应输出 Electron 版本 v44.4.3。

快速上手

  1. 启动后左侧栏是实例列表。首次打开会自动扫本机已有的 dsh,扫到就问你要不要加。
  2. 没有的话点「下载实例」——在界面上选版本(正式/预览/内测,或具体某个历史版本)、

选 npm 源(官方/华为云/淘宝/腾讯云)、指定端口,直接装一份。

  1. 也可以点「增加实例」手动填:本机端口、WSL2 里的、或服务器的 HTTPS 地址 + token。
  2. 实例卡片指示灯:绿=在线、黄=服务在但要 token、红=连不上。
  3. 实例上划出气泡(鼠标移到顶部中央)就能拖动 / 缩放 / 分区。
  4. 点画布空白看快捷键;点版本号看运行环境。

三个按钮

按钮 · 作用 增加实例 · 手动加一个(本机 / WSL2 / 远程) 搜索实例 · 扫本机常见位置找已装的 dsh。刻意不扫全盘(尊重隐私),界面会写明这次扫了哪些地方 下载实例 · 在界面上装一份新的 dsh,可指定版本、npm 源、端口

接入一处 DSH

一个「实例」记录的是:这处 dsh 怎么跑、怎么拿到带 token 的访问地址、怎么起停。按目标分三种:

类型 · 说明 WSL · 跑在某个 WSL2 发行版里。可指定发行版与用户名(留空 = 用默认用户),地址从 dsh-url.txt 或进程输出里取 Windows · 跑在 Windows 本机 远端 · 跑在别的机器上,只有 URL 和 token,壳只管显示

访问地址(含 token)按这个优先级解析:上次成功捕获并持久化的地址 → 你指定的地址文件 → 启动实例时从进程输出里现抓。

自动发现

左侧的「检测」会从三个维度扫:

  • 已经装好、正在跑 —— 扫进程与常见端口段,拿到端口后按特征确认「这确实是 dsh」
  • 已经装好、但没启动 —— 扫 dsh 可执行文件与 npm 全局目录,拿到可执行文件路径
  • 装在自定义目录里 —— 扫常见位置的同名文件夹(DeepSeek Harness / DeepSeekHarness / dsh-* 等写法)

判定特征(实测):无 token 返回 `401` 且响应体含 `dsh web authentication required`;带 token 返回 `303` 且 `set-cookie` 含 `dsh-auth-`。两者都符合才认。

扫描范围,以及为什么不扫全盘

发现功能只走这些地方:

范围 · 深度 PATH 里的 dsh · — npm 全局目录 · — 你的用户目录(优先 Desktop / Documents / Downloads / Projects / Code / Dev / Work 等) · 4 层 各盘根(C: D: …) · 2 层

实测走过 5441 个目录约 300ms,很快。它刻意不扫全盘,两个理由:

  1. 隐私 —— 全盘扫意味着会去读你 Documents、Pictures 里所有文件的名字。这个壳没有理由知道那些
  2. 不划算 —— 全盘是百万级文件、几分钟的量级,而 DSH 几乎不可能装在冷门深处

而且撞名只是线索,不是判据。目录名像 dsh 的很多(实测 28 个),但真装过 dsh 的目录里一定躺着 node_modules/@deepseek-ai/dsh/package.json —— 只有找到它才算数(实测 28 个里只有 1 个是真的)。

界面上会写明这次扫了哪些地方、走过多少目录。扫不到就用「增加实例」手填。

手动安装

壳不捆绑 dsh。只有你点了「开始安装」,它才会往你指定的目录执行一次 npm install @deepseek-ai/dsh。

项 · 说明 装到哪 · WSL2 发行版(在该发行版里装)/ Windows 本机 目录 · 任意目录。~ 开头会展开成该用户的 home 版本 · 最新正式版 / 预览版 / 内测版,或点「拉取」列出全部历史版本任选 端口 · 装完自动创建的实例用这个端口 npm 源 · npm 官方 / 华为云 / 淘宝 npmmirror / 腾讯云 / 自定义

安装前可以「检查环境」确认 node/npm 就位,过程实时回显输出,装完自动 dsh --version 验证并建好实例。

实测数据(Windows 目标、npm 官方源):565 个包、约 4 分钟、产物 294MB、dsh --version 正常。

换源提示:四个源的 dist-tags 实测一致,差别只在速度。装得慢或超时就换近的源。

多窗格与排布

  • 拖动:鼠标划到窗格顶部中央会滑出一个气泡把手,按住它拖
  • 缩放:拖窗格的四条边或四个角
  • 吸附:拖到接近其他窗格的边或中线时自动对齐,并显示辅助线
  • 铺满 / 归位:双击窗格顶部
  • 一键平铺:工具栏的排布按钮
  • 分区:点 1/2、1/3、1/4 出分区光晕,选中后其余窗格自动填剩余格

窗格上没有边框也没有标题栏 —— 拿到的画面就是全部。排布结果是归一化坐标(0..1), 所以窗口缩放后会自动适配;退出时持久化,下次打开原样恢复。

实例不允许重叠:拖动时用最小平移向量推出,缩放遇到邻居就停。

会话隔离

同一个 dsh 可以开任意多个窗格。每个窗格有自己独立的浏览器会话(partition = persist:pane-),所以:

  • 不同实例之间的登录 cookie 不会互相覆盖 —— 这是多开 dsh 最容易踩的坑
  • 同一个实例开两个窗格,各自带着 token 独立认证,互不影响
  • 每个窗格的会话存在磁盘上,重启应用后不用重新认证
因为 token 会随会话存下来,用户配置文件里可能包含你填过的 token。那个目录别拿去分享或提交 Git。

操作

两个隐藏抽屉

抽屉 · 怎么叫出来 上侧(地址栏、刷新、新建、平铺、窗口控制) · 鼠标移到窗口最顶部边缘,或点顶部中间的小横条 左侧(实例列表、检测、安装、主题、语言、关于) · 鼠标移到窗口最左边缘,或点工具栏最左的 ≡

抽屉平时完全收起,展开时窗格会整体让位(不是盖在上面),所以标题栏和内容永远不会被压住。想让它常驻,点上侧工具栏的图钉。

界面

· ·