Onenightcarnival/deepseek-harness-desktop ↗★ 0
deepseek-harness-desktop
Desktop shell for DeepSeek Harness (dsh) — unofficial packaging of the dsh web UI
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗DeepSeek Harness Desktop(非官方打包)
DeepSeek Harness(dsh)的
桌面安装包:Windows exe 和 macOS dmg。本仓库只包含打包用的 Electron 壳和
CI 配置,不包含上游源码——构建时直接安装 npm 发布版 @deepseek-ai/dsh。
应用启动时用 Electron 内置 Node(加 --expose-internals)在本机
127.0.0.1 的随机端口拉起 dsh web,窗口加载 Web UI,关窗即停服务。
数据与配置在用户目录 .dsh 下,与命令行版通用。
文件说明
main.js— Electron 主进程:拉起/守护 dsh 服务、解析就绪行、窗口与菜单、 外链转系统浏览器、退出清理。Windows 上通过--patch覆盖层把目录选择器 固定为 browse 组合(原生 Win32 弹窗的子进程在 Electron 打包环境下起不来)。splash.html— 启动等待页。stage-dsh.mjs— 把@deepseek-ai/dsh安装进staging/ -/dsh并裁剪(node-pty 只留本平台预编译、去掉 sharp wasm 回退、删 sourcemap/pdb)。afterPack.js— electron-builder 钩子,把 staging 的运行时拷进应用 resources。 (不用 extraResources 是因为它默认排除 node_modules。)build/— 图标(由上游仓库的 favicon.svg 生成)。
本地构建
node stage-dsh.mjs # 需要时用 DSH_VERSION=x.y.z 锁版本
npm install
npx electron-builder --win --x64 # Windows 上
npx electron-builder --mac --arm64 # macOS 上
产物在 dist/。开发调试:staging 后直接 npm start。
CI 发版
推送标签即触发 .github/workflows/release.yml:
git tag v0.1.0
git push origin v0.1.0
Windows/macOS runner 各自原生构建,产物连同 SHA256SUMS.txt 发布到
GitHub Release。版本号取 package.json 的 version,发版前记得更新。
升级内置的 dsh 只需等 npm 出新版后重新打标签(或用 DSH_VERSION 锁定)。
预置 / 增删插件
dsh 一切皆插件,桌面版留了两个定制入口,改完重新打标签出包即可:
desktop-patch.yml — 插件组合覆盖层,应用启动时经 dsh web --patch 生效。
禁用内置插件(条目 id 用 npx @deepseek-ai/dsh web --dump-config 查)、
覆盖插件配置、挂载新插件都在这里写,语法见文件内注释。用户侧的
~/.dsh/profiles/web/cordis.patch.yml 是同样的语法,改动在它之后应用,
所以用户仍能覆盖打包默认值。
plugins.json — 要额外内置进安装包的插件 npm 包列表,例如
{"packages": ["some-dsh-plugin@1.2.0"]}。stage 脚本会把它们装进运行时,
并注册进内置 dsh 的依赖清单(dsh 启动时按依赖闭包把包软链进
~/.dsh/profiles/node_modules,插件才能从 profile 解析到——只装进
运行时目录是不够的)。装完还要在 desktop-patch.yml 里 insert 对应条目
才会真正挂载;带界面的双面插件要把 host 和 client-ui 两半都挂上
(参考 main.js 里目录选择器的写法)。
注意选与内置 dsh 版本匹配的插件版本:peer 依赖指向旧版 dsh 的插件包
会让 npm 安装极慢且运行时也不兼容。不重新打包的话,用户也可以自己编辑
~/.dsh/profiles/web/cordis.patch.yml,或用 命令
(需要 pnpm)往自己的 profile 里装插件。