← 返回列表
未验证
把网页版装进原生窗口,自动拉起服务并支持热更新
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/15 · 已提供中文文档
DeepSeek Harness (DSH) Web GUI 的 Electron 桌面外壳——启动捆绑的 DSH Web 服务器,并将其嵌入原生 Windows 窗口
综合分
27.5
GitHub 分
27.5
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add vonPaulison/dsh-desktop该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis-plugin-group@deepseek-ai/dsh@deepseek-ai/dsh-anonymous-user-id@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-bash-local@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-compaction@deepseek-ai/dsh-fs@deepseek-ai/dsh-invariants@deepseek-ai/dsh-output-retention@deepseek-ai/dsh-sandbox@deepseek-ai/dsh-scope用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
DSH Desktop DeepSeek Harness (DSH) Web GUI 的 Electron 桌面壳。启动后自动拉起内置的 DSH web 服务,并把 http://127.0.0.1:3210 嵌进原生窗口。 工作原理 1. main.js 用 ELECTRON_RUN_AS_NODE=1 让 electron.exe 充当 Node 运行时, 直接执行内置的 @deepseek-ai/dsh/lib/bin.js web --port 3210。 2. 轮询本地端口直到 DSH web 服务就绪(最长 90 秒,首次运行会初始化 web profile 模板,可能较慢)。 3. 打开 BrowserWindow 加载该地址。 4. 退出时用 taskkill /T /F 清理整个 DSH 进程树。 打包产物完全自包含(asar: false),目标电脑无需安装 Node.js。 依赖清单中显式列出了全部 19 个 @deepseek-ai/dsh- 运行时包, 确保 electron-builder 的生产依赖收集不会漏掉 DSH 运行时所需的模块。 自动更新(v0.2) 启动后自动检查 npm registry 上官方 @deepseek-ai/dsh 的最新版本,与内置 版本做 semver 比较(含 -rc.N 预发布号)。有新版时: - DSH 网页顶部注入一条更新横幅(「立即更新 / 忽略」)。 - 托盘菜单 → 「版本与更新」打开本地版本面板(ui/update.html), 显示当前/最新版本、检查/更新按钮和进度条。 热更新机制(无需 npm、无需 Node.js): 1. 只更新锁步的 @deepseek-ai/dsh 包(dsh + dsh-,约 186 个); cordis / cosmokit / schemastery 等独立版本框架包保持不动。 2. 逐个从 registry 下载新版本 tarball,用 Windows 自带的 tar.exe 解压。 3. 停掉 DSH 进程 → 原子 rename 替换 → 重启 DSH 并刷新窗口,失败自动回滚。 4. 若新版本引入了当前树里没有的 dsh- 依赖,会自动补装。 局限:若新版本引入了全新的非 dsh-* 第三方依赖(罕见),需要重新打包 完整安装包。更新来源是 npm registry(官方版本权威源),非 GitHub Releases。 会话浮窗(v0.5) 全局快捷键呼出一个可自由拖动/调整大小的无边框浮窗(ui/quick.html), 实时展示每个会话的状态,点击会话即在主窗口打开对应对话,无需打开完整 GUI。 - 默认快捷键 Ctrl+Shift+Space,可在任意应用里呼出/收起。 - 数据走 DSH 磁盘存储($DSH_HOME/storages/session_projcache.json + workspace.json,DSH 每 5 秒落盘一次)+ WS 事件流 (/api/events.mux 跟踪审批/运行状态),不依赖 HTTP /api、不改 GUI DOM。 - 每个会话显示状态:🟢 空闲 / 🔵 工作中 / 🟠 需要批准(有未决审批时)。 - 按工作区分组显示,标题来自会话投影缓存。 - 点击会话 → 主窗口显示并聚焦,注入导航脚本切换到对应会话 (data 属性 → aria/title 标签 → 文本匹配,多重策略兜底)。 - 拖标题栏移动浮窗,拖右下角调整大小,Esc 关闭。 - 关闭主窗口会最小化到托盘(DSH 保持常驻,快捷键随时可用); 托盘「退出」才真正退出并清理后台进程。 会话隔离(桌面端 vs 网页端) 桌面端使用专属独立的 DSH_HOME:默认 ~/.dsh-desktop(可用 DSH_DESKTOP_HOME 环境变量覆盖),与网页端/其他 DSH 实例物理隔离, 从根上避免两个实例并发读写同一会话导致的故障。桌面端不继承泛用的 DSH_HOME,即使网页端把它设成全局变量也不会再撞车。 - 首次启动自动把 ~/.dsh 里的凭据/设置(.credentials.yaml、 settings.yaml、.anonymous-user-id)迁移过来,无需重新配置模型。 - 旧会话不会被删除,仍留在 ~/.dsh;如需把某个桌面端旧会话带过来, 手动移动 ~/.dsh/sessions// 到 ~/.dsh-desktop/sessions/… 即可。 - 会话浮窗读的也是 ~/.dsh-desktop,所以浮窗列出的始终是桌面端自己的会话。 启动特效(v0.4) 启动时先显示软件 logo,随后 logo 炸裂成无数粒子飘散等待;主界面就绪后, 粒子重新聚拢形成主界面,最后无缝淡入完整界面(ui/splash.html 的 Canvas 粒子系统 + capturePage() 抓取主界面作为聚拢目标纹理)。 - 启动即出现 splash,DSH 后台启动期间粒子持续飘散并显示「正在启动 DSH…」。 - 主界面渲染完成后截图,粒子飞向目标坐标并逐格放大,拼出主界面马赛克, 再 crossfade 到真实窗口。 - 若截图失败会自动回退为「飘散 → 淡入」,不影响启动。 使用 开发运行 npm install npm start 打包 npm run dist 产物输出到 dist/: - DSH Desktop Setup 0.5.0.exe — NSIS 安装版(推荐) - DSH Desktop-0.5.0-win.zip — 免安装绿色版,解压后直接运行 DSH Desktop.exe 环境变量 | 变量 | 默认值 | 说明 | |---|---|---| | DSH_PORT | 3210 | DSH web 服务端口(避免与已运行的 3080 实例冲突) | | DSH_DESKTOP_HOME | ~/.dsh-desktop | 桌面端专属数据目录(与网页端隔离,覆盖默认值) | | DSH_CWD | 用户主目录 | DSH 会话的工作区根目录(agent 文件操作的根) | | DSH_QUICK_HOTKEY | CommandOrControl+Shift+Space | 会话浮窗全局快捷键 | | DSH_SPLASH_SETTLE_MS | 1200 | 启动特效中主界面稳定等待(毫秒,截图前的 React 渲染缓冲) | 注意事项 - DSH web 首次启动会从模板自动初始化 profile,请耐心等待窗口出现。 - 本机若已有一个 dsh web 实例,两者端口不同,互不影响。 - 关闭窗口会最小化到托盘(DSH 常驻);托盘「退出」才真正退出并清理后台进程。 - 更新写入 node_modules;若把应用装在 Program Files(需要管理员权限 的目录),更新替换可能因权限不足失败,建议装到用户目录(默认 NSIS 行为)。
扫码进群