🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

rqzhao1/dsh-wsl-launcher

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
⚠ 装前注意

当 dsh 住在 WSL 里时,给 DeepSeek Harness Web 界面一个「双击直达」的入口。

基本兼容但装前注意:npm 同名包「dsh-wsl-launcher」归属 small-tailqwq/dsh-wsl-launcher,装到的可能不是本插件 · 最近上游提交 2026/9/3 · 已提供中文文档

用于在 WSL 中运行的 DeepSeek Harness Web 的 Windows 桌面启动器

综合分
29
GitHub 分
29
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add rqzhao1/dsh-wsl-launcher
npm 同名包「dsh-wsl-launcher」归属 small-tailqwq/dsh-wsl-launcher,装到的可能不是本插件,改用 GitHub 源安装
信任档位:已验证本站已于 0 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · desktop
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 22 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

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

✓npm 包dsh-wsl-launcher @ 0.1.10
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

npm 同名包「dsh-wsl-launcher」归属 small-tailqwq/dsh-wsl-launcher,装到的可能不是本插件

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/23 13:47:26

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-wsl-launcher

当 dsh 住在 WSL 里时,给 DeepSeek Harness Web 界面一个「双击直达」的入口。

English

你的 dsh web 跑在 WSL 里,但鼠标在 Windows 上。每次打开界面都要重复同一套仪式:

打开 Windows 终端  →  wsl  →  dsh web  →  等它启动  →  切到浏览器  →  敲网址  →  回车

这个插件把这套仪式删掉。安装后,你的 Windows 桌面上会出现一个应用风格的
快捷方式(黑鲸图标)。双击它:

1. 由 wsl.exe -d  --exec /bin/bash  直接拉起——不需要 Windows 终端;
2. 启动脚本会找到 dsh(PATH → 登录 shell → 安装时记录的路径);
3. 如果 Web 端口已经在监听,直接打开浏览器(天生幂等——连点十下也不坏,没有端口冲突);
4. 否则启动 dsh web --port 3080,这个控制台窗口就是服务器窗口(关窗即停服务),轮询端口就绪后自动打开 Windows 默认浏览器。

同时注册 wsl_launcher 模型工具:会话里的 agent 自己就能
install / status / open / uninstall 这个启动器。

✅ 兼容性

| | |
|---|---|
| dsh | 已在 0.1.1-rc.2 验证(单元测试 + 草稿 profile 的 dsh plugin add / --dump-config 组合检查) |
| Node | >=20(engines 声明) |
| 运行环境 | Windows 10 1607+ / Windows 11 上的 WSL1/WSL2,interop 开启(默认开启),且有 Windows 盘挂载在 /mnt/ |
| dsh 位置 | 发行版内的任意位置:npm -g、nvm、本地 checkout 均可——启动脚本运行时自行解析 |
| 最后验证 | 2026-08-28(WSL2、Ubuntu 24.04、dsh 0.1.1-rc.2、Node 24) |

📦 安装 / 升级 / 卸载

需要一个 dsh profile(例如你跑 dsh web 的 web profile)。

安装

从 npm(发布之后)
dsh plugin --profile web add dsh-wsl-launcher

或直接来自 GitHub(monorepo 子路径写法)
dsh plugin --profile web add github:Small-tailqwq/dsh-deep-whale#path:/wsl-launcher

或本地 checkout / tarball
dsh plugin --profile web add /path/to/dsh-wsl-launcher
dsh plugin --profile web add /path/to/dsh-wsl-launcher-0.1.0.tgz

dsh plugin 通过包的 dsh.bundle 清单自动把它注册为 bundle 层——
无需手工编辑任何 cordis.patch.yml。

升级 / 卸载

dsh plugin --profile web update dsh-wsl-launcher
dsh plugin --profile web remove dsh-wsl-launcher

然后重启 dsh web。激活时若 autoInstall: true(默认),插件会自动
(重新)创建启动文件与桌面快捷方式。卸载包不会删你的快捷方式——请用
wsl_launcher 的 uninstall 动作(或下面的手动步骤)清理。

🚀 快速开始

1. 安装插件(见上文)并重启 dsh web。
2. 看你的 Windows 桌面:DeepSeek Harness Web(鲸鱼图标)。
3. 双击它 → 首次启动 dsh web 并打开浏览器;之后如果服务已在运行,双击只开浏览器。
4. 可复现验证:在任意会话里让 agent 调用 wsl_launcher,动作 status——
应返回 isWsl: true、distro: ""、running: true 与 http://127.0.0.1:3080。

WSL2 说明:服务器监听 WSL 内的 127.0.0.1;WSL 的 localhost 转发
让 Windows 浏览器用同一个 URL 就能访问——不需要 --host 参数。

🤖 wsl_launcher 工具

| 动作 | 效果 |
|---|---|
| install | (重新)创建 ~/.dsh/dsh-wsl-launcher 下的启动脚本 + 图标,以及鲸鱼图标的桌面快捷方式(仅 WSL) |
| status | WSL 检测、发行版名、interop 可用性、启动文件、Web 端口是否在监听(全平台) |
| open | 用 Windows 默认浏览器打开 Web 界面(经 WSL interop) |
| uninstall | 删除桌面快捷方式与整个 ~/.dsh/dsh-wsl-launcher 目录(仅 WSL) |

⚙️ 配置

在 profile 的 cordis.patch.yml(如 ~/.dsh/profiles/web/cordis.patch.yml)
中覆盖插件行。patch 会整体替换该行 config,请保留需要保留的键:

- id: wsl-launcher
config:
autoInstall: true            # 激活时创建/刷新启动器与快捷方式(默认 true)
port: 3080                   # Web 端口(默认 3080)
distro: ""                   # WSL 发行版名;留空 = 自动(WSL_DISTRO_NAME)
wslUser: ""                  # 快捷方式使用的 WSL 用户(wsl --user);留空 = 发行版默认
linkName: "DeepSeek Harness Web.lnk"   # 桌面快捷方式文件名
launcherDir: ""              # 启动器目录;留空 = ~/.dsh/dsh-wsl-launcher
scriptName: dsh-web-launcher.sh        # 启动脚本文件名
withIcon: true               # 复制鲸鱼图标并应用到快捷方式

启动策略

默认 launchMode: installed。启动器会解析已经安装的 dsh 二进制文件(PATH、登录 shell、常见 Node 版本管理器目录、安装时记录的路径),不会访问 npm。

如果只通过 npx 使用或需要一次性运行,请显式启用,并锁定精确包版本:

- id: wsl-launcher
config:
launchMode: npx
npxPackage: "@deepseek-ai/dsh@0.1.1-rc.2"

这会生成 npx --yes @deepseek-ai/dsh@0.1.1-rc.2 web --port 3080 --no-open。npxPackage 只接受一个精确的 npm 包版本:不允许省略版本、latest、语义化版本范围、空白字符或 shell 语法。npx 模式绝不会作为自动兜底。非交互式 WSL 启动环境中必须有 Node.js 和 npx;首次运行需要访问 npm registry,并可能下载该固定版本。

不涉及任何敏感信息。

🔐 权限与数据

| 领域 | 插件做了什么 |
|---|---|
| 写入文件(WSL 侧) | ~/.dsh/dsh-wsl-launcher/dsh-web-launcher.sh 与 ~/.dsh/dsh-wsl-launcher/icons/whale.ico |
| 写入文件(Windows 侧) | 仅桌面一个 .lnk(DeepSeek Harness Web.lnk)——由 powershell.exe(WScript.Shell)创建,不碰其他 Windows 文件 |
| 读取文件 | 只读包内自带的模板与图标,以及 /proc/version(WSL 检测) |
| 进程 | 经 WSL interop 拉起 powershell.exe(建/删快捷方式、浏览器兜底)与 explorer.exe / cmd.exe(开浏览器);启动器本体是纯 ASCII 的 bash 脚本,运行前可以通读 |
| 网络 | 仅回环:status 探测 http://127.0.0.1:;浏览器由操作系统打开,不是插件打开 |
| 凭据 | 无——从不读取、存储、发送凭据 |

🔧 工作原理

┌──────────────────────────────┐   ┌────────────────────────────────────────────┐
│  DeepSeek Harness Web        │──▶│  wsl.exe -d  --exec /bin/bash      │
│  (Windows 桌面 .lnk,        │   │      ~/.dsh/dsh-wsl-launcher/              │
│  鲸鱼图标经 \\wsl.… 映射)     │   │      dsh-web-launcher.sh --port 3080       │
└──────────────────────────────┘   └────────────────────┬───────────────────────┘
│ (WSL 内部)
┌───────────────────────────────┼─────────────────────────┐
▼                               ▼                         ▼
dsh 在哪?                   端口 3080 在监听吗?       启动 dsh web --port 3080
(PATH → 登录 shell →            (打开 Windows 浏览器,      (控制台 = 服务器窗口;
记录的绝对路径)                  exit 0——幂等)             轮询 /dev/tcp → explorer.exe)

- cordis.patch.yml — bundle patch:一条 loader 行(id: wsl-launcher、
name: dsh-wsl-launcher);dsh plugin add 依据 dsh.bundle 清单自动把它
归入 profile 的 bundle 栈。
- lib/launcher.js — WSL 检测(内核 banner + WSL_DISTRO_NAME /
WSL_INTEROP 兜底)、启动模板渲染(纯 ASCII)、wsl.exe 参数构造(含命令行
引号处理)、Windows 图标候选(\\wsl.localhost\\… 优先、\\wsl$\…
兜底)、以及建/删快捷方式的 PowerShell 构造。所有 PowerShell 字符串值都用
单引号 + '' 转义。
- lib/index.js — Cordis 插件(name: 'wsl-launcher'、inject: ['tools']、
zod Config schema)+ 基于 @deepseek-ai/dsh-tools defineTool 的
wsl_launcher 工具。
- lib/template.sh.txt — 生成的启动脚本:解析 dsh(PATH →
bash -ic 登录 shell(覆盖 nvm)→ 记录的绝对路径),用 bash /dev/tcp
探测端口(不依赖 curl/netcat),开浏览器按 explorer.exe → PowerShell
Start-Process → cmd.exe /c start 的顺序兜底(部分 WSL 环境,如容器化
WSL,explorer.exe 会直接退出、开不了浏览器),并把控制台窗口的生命周期
绑定到服务器(EXIT/INT/TERM 上挂 trap)。
- icons/whale.ico — 多尺寸鲸鱼图标;安装时复制到启动器目录,Windows 侧
通过 \\wsl.localhost 映射读取它来给 .lnk 上图标。

🩺 故障排查

| 症状 | 原因与解决 |
|---|---|
| 重启后没出现快捷方式 | 看 dsh web 日志里 dsh-wsl-launcher: auto install skipped: … 警告。通常是 WSL interop 被关:在 C:\Users\\.wslconfig 的 [boot] 下设 interop = true(或改 wsl.conf),重启发行版,再跑 wsl_launcher install。 |
| 工具输出 powershell.exe not found | 同上——interop 关闭,或 /mnt 下没有挂载的 Windows 盘。 |
| 快捷方式出现了但图标是通用的 | 可能是 \\wsl.localhost 映射缺失(较老的 Windows)。插件会回退到 \\wsl$;若两者都没有,快捷方式照样能用,只是没图标。升级 Windows,或设 withIcon: false 跳过探测。 |
| 快捷方式出现在奇怪的位置 | OneDrive 托管桌面:插件按 %USERPROFILE%\Desktop → %OneDrive%\Desktop → %USERPROFILE%\OneDrive\Desktop 的顺序取第一个存在的目录——与 Explorer 所见一致。 |
| 启动脚本提示 dsh was not found | 默认 installed 模式下,非交互 shell 里找不到 dsh。在发行版里装好(npm install -g @deepseek-ai/dsh);如果用 nvm,登录 shell 探测会找到它——或从同一环境重装插件以刷新记录路径。也可改为显式、固定版本的 launchMode: npx。 |
| 启动脚本提示 npx was not found | launchMode: npx 要求非交互式 WSL 环境中可用 Node.js 和 npx。请安装 Node.js/npm,或将 NPX_BIN 指向可执行的 npx;npxPackage 必须保持精确固定版本。 |
| 提示 dsh web exited early | 看错误上方控制台的输出(profile/CLI 问题,不是启动脚本的 bug)。 |
| EADDRINUSE / 端口被占用 | 启动器检测到端口在监听会直接开浏览器。需要换端口就在 config 里设 port。 |
| 浏览器开了但页面报 transport/403 | 浏览器信任围栏拦截了跨源调用——DevTools → Network → 失败请求 → 看 Origin,必须是 http://127.0.0.1:。常见元凶是浏览器扩展或残留标签页。 |
| 没有弹出浏览器窗口 | 启动器会选择一种 Windows interop 启动方式:优先 explorer.exe,否则使用 PowerShell Start-Process 或 cmd.exe /c start;一次启动不会再串联其他方式,从而避免重复标签页。若全部不可用,会在控制台打印网址;请检查 WSL interop。 |
| 快捷方式拉起了错误的发行版/用户 | .lnk 里编码了 wsl.exe -d  [--user ]。在 config 里设 distro / wslUser 后重新 wsl_launcher install。 |
| 关掉控制台窗口会怎样 | 故意的:控制台窗口就是服务器窗口——关窗会停掉 dsh web(脚本转发信号)。 |

回滚:dsh plugin --profile web remove dsh-wsl-launcher,再调用
wsl_launcher 的 uninstall(删除 .lnk 与 ~/.dsh/dsh-wsl-launcher)。
不会留下其他任何东西。

🛠️ 开发

- 无构建步骤 — lib/ 是纯 ESM JavaScript;除 dsh 的 peer 依赖外零运行时依赖。
- 测试:npm test(node:test——无需任何第三方依赖)。
- 真实 WSL 里手动 E2E:node tools/e2e-wsl.mjs install|verify|uninstall
(开发辅助,不随包发布)。
- 发布:bump package.json 的 version → pnpm pack → 发布 / 推仓库。
dsh.bundle 清单意味着 dsh plugin update 会自动激活新版本。

❓ 常见问题

Q: 快捷方式会以管理员权限运行吗? 不会。wsl.exe 与启动脚本都以你的普通用户权限运行。

Q: 会干扰正在运行的 dsh web 吗? 不会——端口探测发现服务在运行就直接进浏览器。

Q: 为什么是 bash 脚本而不是 exe / cmd? WSL 侧是 Linux:bash + /dev/tcp 零额外依赖、纯 ASCII、约 100 行,运行前可以通读。Windows 侧只有一个标准的 .lnk。

Q: 非 WSL 环境? 插件正常加载、不安装任何东西,wsl_launcher 工具保持可用(status 全平台可用;open 退化为「请手动打开」提示;install/uninstall 返回明确的 no-op 消息)。

Q: WSL1 能用吗? 能——用到的只有 interop 与文件,WSL1 两者都有。

📜 许可

MIT —— 见 LICENSE。

稳定性与容错

- 启动、停止按端口使用原子锁,避免双击产生重复 dsh web 进程。
- PID 文件必须是完整数字,停止前还会校验进程命令和进程组;陈旧或不匹配的 PID 只会被清理,不会误杀其他进程。
- status、install、stop、uninstall 的外部文件和 Windows 互操作错误会返回可读结果。
- 自动停止默认关闭。启用 autostopEnabled 后,只有同源 JSON 请求中的合法浏览器 client id 才会计入在线状态;错误请求会被拒绝。
- uninstall 可重复执行;它只删除插件创建的快捷方式、Windows wrapper 和 launcher 目录,不会停止外部启动的服务。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群