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

zhubingzuo/dsh-oneclick-launcher

DeepSeek Harnessspec-screened扫描:无法判定在 GitHub 查看 ↗
未验证

DSH 一键启动器DeepSeek Harness 一键启动器

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/12 · 已提供中文文档

Windows 一键启动 DeepSeek Harness 网页版:双击静默启动、只开一个干净 Chrome 窗口、关窗即停,全程无控制台窗口。 | One-click launcher for the DeepSeek Harness web UI on Windows: no console window, one clean Chrome window, close-to-stop. Survives DSH updates via an editable config file.

综合分
28.7
GitHub 分
28.7
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add zhubingzuo/dsh-oneclick-launcher
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:已验证本站已于 0 天前真实安装成功
是什么
dsh 原生插件 · browser
装得上吗
本站已真实安装成功(非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 13 天前

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

🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/24(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
DSH 一键启动器(DeepSeek Harness 一键启动器)

Release
License: MIT

简体中文 | English

一个 Windows 双击即用的启动器:静默启动 DeepSeek Harness 网页版,打开一个
全新的干净 Chrome 窗口进入 DSH 页面,全程不弹出任何黑色命令提示符窗口;
关闭该 Chrome 窗口后自动停止后台服务并退出,不留残留进程。

它是 DeepSeek Harness(@deepseek-ai/dsh)
网页版的非官方启动器,让"打开 DSH 页面"变成双击一下的事。

设计目标是跟随 DSH 版本演进:地址从 dsh 自己的输出里读(不猜端口、不硬编码 URL),
启动方式写在可编辑的配置文件里——常规的 DSH 更新不需要重新编译本启动器。

下载 / 成品位置

从 最新 Release 直接下载
dsh-launcher.exe,或自行构建(见 从源码构建):

target\release\dsh-launcher.exe

把它复制到任意位置(桌面、U 盘等)都可以双击运行。首次运行会在 exe 同目录生成
dsh-launcher.conf(见下文)。

功能特性

- 双击即用、无控制台:自动启动 DSH 网页服务;exe 为 GUI 子系统,所有子进程用
CREATE_NO_WINDOW 创建,全程没有任何黑框
- 只开一个干净窗口:dsh web 自身默认还会再打开一次默认浏览器,启动器用官方
--no-open 参数关掉它,浏览器只由启动器打开一个窗口
- 全新独立 Chrome 窗口:使用独立的临时配置目录(--user-data-dir)启动,
配合 --new-window、--no-first-run、--disable-session-crashed-bubble 等参数——
窗口带地址栏、里面只有 DSH 一个标签页,不混入你日常 Chrome 的任何网站/书签/扩展/登录
- 关窗即停、无残留:关闭启动器打开的 Chrome 窗口 → 自动结束自己启动的 dsh web 进程树
(Windows Job Object KILL_ON_JOB_CLOSE + taskkill 进程树双重保障)
- 不干扰已有服务:首选端口上已有服务时——若它不需要令牌(老版本 DSH)就直接复用;
若它需要令牌(新版 DSH 的页面令牌只存在于那个进程的内存里,外部无法驱动)则改用
系统分配的空闲端口启动自己的实例。任何情况下都不会结束别人的服务
- 抗版本变化:网页地址取自 dsh 打印的那行带令牌 URL;命令、参数、端口、输出标记与超时
全部可在配置文件中修改,DSH 改动启动方式时改文本即可,无需重新编译
- 单实例:重复双击不会重复启动
- 出错有提示:任何失败弹中文错误框,并给出日志位置与可修改的配置项

为什么 DSH 更新后通常不用重新编译

| 可能的版本变化 | 启动器的应对 |
| --- | --- |
| 页面端口变了 | 端口不写死:始终使用 dsh 打印的 URL(必要时代 --port 0 让系统分配) |
| 页面加了令牌/鉴权 | 令牌 URL 从 dsh 的 stdout 读取(裸地址会 401,启动器不使用裸地址) |
| 输出格式/提示文字变了 | 先按配置的 url_marker 解析;失败再匹配"带 token 的本地地址"两种形态 |
| 参数改名/移除(如 --no-open) | 依次尝试"完整命令 → 去掉 --port → 仅命令",前一个失败立即换下一个 |
| 启动子命令或包名变了 | 改 dsh-launcher.conf 里的 command / extra_args,不用重编译 |

配置文件 dsh-launcher.conf

首次运行时自动生成在 exe 同目录(该目录不可写时改放 %LOCALAPPDATA%\dsh-launcher\)。
纯文本、带注释,改完立即生效:

command = npx --yes @deepseek-ai/dsh web    # 启动命令
extra_args = --no-open                      # 首次尝试附加的参数
port = 3080                                 # 首选端口;0 = 总让 dsh 自己挑
ui_marker = DeepSeek Harness                # 复用已有页面时必须包含的文字
url_marker = dsh web:                       # 输出中标记网页地址的文字
timeout_secs = 300                          # 就绪等待上限

也可以用环境变量 DSH_LAUNCHER_CONFIG 指定配置文件路径。

ui_marker 是防误用的保险:首选端口上若有别的本地网页程序(而不是 DSH),它即使返回 200
也不会被采用,启动器会另起自己的实例。把它设为空值则恢复"任何 200 都复用"的宽松行为。

行为细节

| 场景 | 程序行为 |
| --- | --- |
| 首选端口空闲 | 启动 npx --yes @deepseek-ai/dsh web --no-open --port 3080 → 读它打印的带令牌 URL → 打开全新 Chrome 窗口 |
| 首选端口上是老版本(无需令牌)的 DSH | 直接复用该服务,只开浏览器;关窗后程序退出,不结束那个服务 |
| 首选端口上是别的网页程序(非 DSH) | 识别出它不像 DSH → 改用 --port 0 另起自己的实例,不采用也不结束那个程序 |
| 首选端口上是新版本(需令牌)的 DSH | 改用 --port 0 让系统给一个空闲端口,启动自己的 dsh web;关窗后只结束自己启动的服务 |
| 双击时已有实例在运行 | 单实例锁生效,第二个实例直接退出 |
| 用户关闭打开的 Chrome 窗口 | 结束自己启动的 dsh web 进程树 → 清理临时配置 → 程序退出 |
| Node.js 缺失 / Chrome 缺失 / 启动失败 / 超时 | 中文错误框 + 详细日志指引 + 提示可修改的配置项 |

Windows 10 / 11 兼容性

- 支持范围:Windows 10(x64)与 Windows 11(x64)。程序为 64 位构建,32 位 Windows
不支持;Windows 11 on ARM 可通过系统自带的 x64 模拟运行。
- 只用系统自带 API:命名互斥量、Job Object(作业对象)、MessageBoxW 都是 Windows 7/8
起就存在的接口,不依赖任何 Windows 11 专属特性。
- 单文件、零运行时依赖:不需要安装 .NET、VC++ 运行库或任何 DLL(Rust MSVC 静态链接)。
- 首次运行会有 SmartScreen 提示:从浏览器下载的未签名 exe 会显示"Windows 已保护你的电脑",
点"更多信息"→"仍要运行"即可。若被安全软件拦截,需要自行放行——程序只做三件事:执行
npx … dsh web、启动 Chrome、按 pid 结束自己启动的进程树。
- 前置条件:Node.js(含 npx)与 Google Chrome;两者在 Windows 10/11 上均正常支持。
- 中文/非 ASCII 路径没问题:exe 路径、%LOCALAPPDATA%(如 C:\Users\中文名\…)都以
UTF-16 传递给系统调用;配置文件是 UTF-8,万一被另存成 ANSI 也只是回退默认值,不会崩。
- 多用户/多会话:单实例锁按登录会话隔离,不同 Windows 用户各自双击互不干扰。
- 实测情况:在 Windows 11(build 26200,x64)上通过 26 项端到端回归;Windows 10 未能在
本机实测,但所用 API 与依赖均为 Windows 10 起可用,无版本专属调用。

从源码构建(零第三方依赖,可离线)

需要:Windows + Rust(msvc 工具链)。图标嵌入使用 Windows SDK 自带的 rc.exe;
找不到 rc.exe 时仍能构建,只是 exe 没有图标。

cargo build --release             # 需要 Windows SDK 的 rc.exe 以嵌入图标
cargo build --release --offline   # 或强制离线

回归测试

无单元测试;用 scripts/regression.ps1 跑五套端到端场景、共 32 项判据(先 cargo build --release):

pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/regression.ps1

- A 首选端口空闲 → 启动器应自己起服务、读到带令牌 URL、关窗后停服务并释放端口
- B 首选端口已被带令牌的 dsh 占用 → 应改用 --port 0 另起实例,且原服务毫发无损
- C 首选端口已被无需令牌、且看起来就是 DSH 的页面占用 → 应直接复用,不另起、不结束它
- D 首选端口已被无关的网页程序占用 → 应拒绝采用它(即使返回 200),改用 --port 0 另起实例
- E 服务先绑端口、先回 401、几秒后才打印带令牌 URL(真实 dsh 的启动顺序)→ 启动器应继续等待而不是误判失败并杀掉它

脚本借助 DSH_* 测试开关运行,因此可以与本机正在使用的启动器实例并存。

程序图标

assets/icon.ico 基于 DSH 官方鲸鱼 favicon 生成:
深蓝圆角底 + 白色鲸鱼,包含 16–256 共 9 个尺寸。重新生成:

指定 DSH 的 favicon.svg 路径(示例;可从 @deepseek-ai/dsh 包内取得)
pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/gen_icon.ps1 -SvgPath "C:\...\favicon.svg"

不传 -SvgPath 时,脚本会尝试在 npm 全局安装目录
(%APPDATA%\npm\node_modules\@deepseek-ai\dsh\...) 下自动寻找 favicon.svg。

故障排查与日志

任何失败都会在错误框中给出日志位置:

- 运行日志:%LOCALAPPDATA%\dsh-launcher\launcher.log
- 服务输出:%LOCALAPPDATA%\dsh-launcher\server.log(dsh 的 stdout+stderr)

| 现象 | 建议 |
| --- | --- |
| 弹窗"无法启动 DSH 服务" | 确认已安装 Node.js 并加入 PATH;首次运行可能需要联网下载 dsh 包 |
| 弹窗"无法打开 Chrome" | 确认已安装 Google Chrome;也可手动打开日志中的 URL |
| 弹窗提示"无法取得访问令牌" | DSH 更新后改了输出格式:检查配置文件里的 url_marker |
| 启动超时 | 查看 server.log,或手动在终端运行配置里的 command 看详细错误;必要时调大 timeout_secs |
| 看到多个浏览器窗口 | 确认运行的是最新版(旧版未加 --no-open 会让 dsh web 自己再开一个) |

目录结构

dsh-launcher/
├─ assets/icon.ico              # 程序图标(多尺寸)
├─ scripts/gen_icon.ps1         # 图标生成脚本
├─ scripts/regression.ps1       # A/B/C 三套端到端回归测试
├─ scripts/test-stub-server.ps1 # 回归测试用的无令牌 stub 服务
├─ build.rs                     # 零依赖嵌入 .ico(调用 rc.exe)
├─ src/main.rs                  # 主程序(纯 std + 少量手写 Win32 FFI)
├─ AGENTS.md / HANDOFF.md       # 项目约定 / 交接说明
├─ Cargo.toml / Cargo.lock
├─ LICENSE
├─ README.md                    # 简体中文(本文件)
└─ README.en.md                 # English

内部测试开关(普通使用无需关心)

| 环境变量 | 作用 |
| --- | --- |
| DSH_LAUNCHER_CONFIG | 指定配置文件路径(默认 exe 同目录的 dsh-launcher.conf) |
| DSH_DATA_DIR | 日志/临时配置目录(默认 %LOCALAPPDATA%\dsh-launcher) |
| DSH_PORT | 覆盖首选端口(默认取自配置文件,3080) |
| DSH_SERVER_EXTRA | 用自定义命令完全代替配置里的 command(回归测试用) |
| DSH_FAKE_CHROME | 用 ping 代替真实 Chrome,模拟“浏览器打开约 N 秒后关闭” |
| DSH_NO_UI | 1 时禁止弹窗,只写日志 |
| DSH_READY_TIMEOUT_SECS | 覆盖就绪等待秒数 |
| DSH_CHROME | 指定 chrome.exe 路径 |
| DSH_SKIP_SINGLE_INSTANCE | 1 时跳过单实例检查(便于与正在运行的实例并存跑回归) |

声明

本项目是 DSH 的非官方启动器,与 DeepSeek 官方无隶属关系;
DeepSeek Harness 及其图标等权利归其原始权利人所有。

许可证

MIT © 2026 zhubingzuo

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

💬 加入社群

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

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