deepseek-harness-desktop
by liaoyl830
DeepSeek Harness Desktop — dsh web 的 Windows 桌面外壳(Electron)
DeepSeek Harness Desktop - Windows desktop shell (Electron) for the DeepSeek Harness web UI (dsh web)
安装
dsh plugin --profile web add github:liaoyl830/deepseek-harness-desktopGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
English | 中文
把网页版 DeepSeek Harness(dsh web)封装成 Windows 桌面应用:一个薄 Electron 壳,
负责拉起/关停 dsh web 服务器并在原生窗口中显示其界面。不 fork、不 patch dsh 任何代码,
因此 dsh 预览版的每日升级天然兼容。
⚠️ 本项目是非官方社区封装,与 DeepSeek 官方无关联、未经其背书。

工作原理
┌─────────────────────────────── DSH Desktop(Electron 主进程)──────────────────────────────┐
│ engine-manager ──校验/安装/原子切换/回滚──► <引擎闭包目录> │
│ │ engine/node_modules/@deepseek-ai/dsh (launcher) │
│ ▼ + 全部依赖(dsh-base / dsh-web-app / …) │
│ spawn node.exe …/dsh/lib/bin.js web --port N │
│ │ stdout: "dsh web: http://127.0.0.1:PORT" ← url-detector 解析就绪行 │
│ ▼ │
│ BrowserWindow.loadURL(http://127.0.0.1:PORT) ← 与网页版完全相同的 GUI(同一份 $DSH_HOME 数据)│
└──────────────────────────────────────────────────────────────────────────────────────────────┘
关键事实(代码取证,@deepseek-ai/dsh-app-boot):
- 升级单元 = 整个 npm 闭包目录:dsh 的 profile bundle(
dsh-base、dsh-web-app)解析是 “安装锚点优先”(resolveBundleDir先查 launcher 所在安装),$DSH_HOME/profiles/node_modules只是指向该闭包内真实目录的 junction 链接,每次启动自动改指(healProfilesModuleFallback)。 因此替换整个引擎目录 = 完成升级,用户数据零触碰。 - 用户数据隔离:
$DSH_HOME(默认%USERPROFILE%\.dsh:profiles / sessions / storages / settings / credentials)与引擎目录完全分离。与网页版共享同一份数据。 - 无需用户安装 pnpm:缺
profiles/web时 dsh 按内置模板自动初始化(写几个文件即可),无需网络;桌面壳仅为引擎安装内置 pnpm。
升级与回滚(半自动)
- 启动 12 秒后后台异步运行
npm view @deepseek-ai/dsh dist-tags(尊重你的.npmrcregistry / 镜像)检查更新,绝不阻塞窗口。默认跟踪上游预览通道next;在config.json中设engineUpdateChannel: "latest"可只跟踪保守发布通道。 - 升级流程:内置
pnpm add到暂存目录 → 冒烟校验(--version+--profile web --dump-default-config,DSH_HOME 指向临时目录,绝不碰真实数据)→ 停服 → 原子换名engine↔engine.prev-<旧版本>→ 重启服务。下载和校验期间旧服务继续运行;校验或 切换失败自动保持/恢复旧版本。下载和校验完全在后台进行,当前网页不会被替换;仅原子切换时显示数秒状态页。 - 安装、校验与 registry 查询均为异步进程;慢速镜像不会卡死界面。更新下载或校验阶段可从 菜单或托盘“取消引擎更新”,会终止整个安装进程树并保留旧引擎。
- 为兼容已安装的旧引擎,桌面壳仅在
dsh >= 0.1.0-rc.8时传递--no-open;旧引擎会 正常启动并可先完成升级。 - 托盘菜单“回滚引擎到上一版本”可随时回滚(保留最近 2 个旧版本)。
- 更新会重启服务:运行中的后台任务会中断,但会话数据已持久化,不丢失。
目录与配置
| 路径 | 用途 |
|---|---|
%APPDATA%\DSH Desktop\config.json |
应用配置 |
%APPDATA%\DSH Desktop\logs\ |
滚动日志(壳 + dsh 子进程 stdout/stderr) |
%LOCALAPPDATA%\DSH Desktop\engine\ |
托管引擎闭包(可整个删除后自动重装) |
%LOCALAPPDATA%\DSH Desktop\engine.prev-* |
旧引擎(回滚用) |
%USERPROFILE%\.dsh |
dsh 用户数据(与网页版共享,升级引擎绝不触碰) |
config.json 常用键:port(默认 3080)、host、closeToTray、autoUpdateEngine、
engineUpdateChannel(next 或 latest)、maxAutoRestarts、startupTimeoutMs。环境变量:DSH_DESKTOP_CONFIG_DIR、
DSH_DESKTOP_ENGINE_BASE、DSH_DESKTOP_NODE(测试/自定义用)。
开发
npm install --include=dev # 本机全局 .npmrc 若配置了 omit=dev / NODE_ENV=production 需加 --include=dev
npm start # dev 模式:自动探测 npm 缓存里现有的 dsh 闭包(如 npx 缓存)免网络启动
dev 模式默认端口 3080;若 3080 被网页版占用,会弹出“随机端口 / 连接现有实例”选择。
构建安装包(Windows x64)
npm run prepare:resources # 下载便携 Node 24、内置 pnpm 11.7.0(NODE_DIST_MIRROR 可换镜像)+ 引擎离线快照
npm run dist # electron-builder → build/DeepSeek Harness Desktop-<ver>-setup.exe
- 安装包为 per-user NSIS 安装器(免管理员),附带 Node 运行时与引擎离线快照, 目标机器无需安装 Node,首次启动无需网络;联网后正常检查更新。
- 构建期下载可用镜像:Electron →
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/; Node →NODE_DIST_MIRROR=https://npmmirror.com/mirrors/node/;pnpm/npm 均走你的 registry 配置。 - 未签名安装包首次运行会触发 SmartScreen 提示(“更多信息 → 仍要运行”);正式分发建议代码签名。
兼容性契约(壳的唯一依赖,均有兜底)
dsh web旗标族--port/--host(dsh-web-app的 commander 解析)。- stdout 就绪行
dsh web: http://127.0.0.1:<port>(dsh-web-app的 printUrl)。 dsh --version输出 semver;致命错误非零退出码。- 兜底链:无 URL 行 → 探测配置端口(要求响应含
__DSH_BOOT__才视为就绪)→ 都失败 → 弹出兼容性提示(含引擎版本 + 日志尾部),绝不静默卡死。
安全
- 渲染进程
nodeIntegration:false、contextIsolation:true、sandbox:true,只加载 loopback URL;will-navigate/setWindowOpenHandler拦截外部跳转并转交系统浏览器。 - 不覆盖
DSH_HOME、DSH_TELEMETRY_DISABLED等用户环境变量。
故障排查
- 端口被占:启动时自动检测,可选随机端口或连接现有实例。
- 引擎损坏/缺失:自动重装 registry 最新版;无网络时用安装包内离线快照。
- 升级失败或取消:当前引擎保持不变;托盘菜单可手动回滚已成功切换过的版本。
- 子进程崩溃:自动重启(默认最多 3 次)后弹窗提示并附日志。
- 日志位置:
%APPDATA%\DSH Desktop\logs\(托盘“查看日志目录”)。
版权与致谢
- 本项目是 DeepSeek Harness 的非官方桌面封装(Electron 薄壳),不包含
上游源码:引擎(
@deepseek-ai/dsh等 npm 包)在构建/运行时从 npm registry 安装。上游为 MIT 许可(Copyright © 2026 DeepSeek),详见THIRD_PARTY_NOTICES.md。 - 应用图标取自上游
dsh-web-frontend的 DeepSeek 鲸鱼标识(MIT 包内文件); 鲸鱼是 DeepSeek 的商标,本项目与 DeepSeek 官方无关联、未经其背书。 - 本项目自身代码以 MIT 许可发布(见
LICENSE)。
原始 README: https://github.com/liaoyl830/deepseek-harness-desktop/blob/main/README.md ↗
同类插件
查看全部 →
dsh-web-ui-all
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-web-ui
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-TUI
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

DSH-better-sidebar
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。

working-activity
让 agent 的"工作状态行"活过来——实时工具动态与进度、俏皮文案、模型自述、上下文预警。同一套想法,适配两个平台: pi CLI 与 DeepSeek Harness(DSH) 。

deepseek-idesign
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。