by xiincs
DeepSeek Harness 原生桌面版,基于 Tauri 2,内置 Node.js 运行时,一键安装,极速启动,托盘常驻,自动更新。DeepSeek Harness native desktop version: built on Tauri 2 with a bundled Node.js runtime.
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
# Add to your Claude Code skills
git clone https://github.com/xiincs/deepseek-harness-desktopGuides for using ai agents skills like deepseek-harness-desktop.
中文 | English
DeepSeek Harness 的原生桌面版,基于
Tauri 2 构建。Windows 安装包经过签名并接入自动更新;macOS(.dmg)和
Linux(.deb)也在每个 Release 里提供,但未签名、未公证(没有 Apple Developer 账号)——
macOS 上需要在"系统设置 → 隐私与安全性"里手动允许打开一次,Linux 直接 dpkg -i/系统安装器
装即可,两者都不参与自动更新,需要手动下载新版本。
它把 harness 自带的 Web 服务(dsh web)装进原生窗口:应用会自动拉起本地 dsh 服务进程,等它就绪后
把内置的 WebView2 指向它——界面和数据都跟浏览器版完全一致(打开 http://127.0.0.1:3080 看到的同一个
UI,~/.dsh 下的同一份数据),只是不用再开浏览器标签页。
dsh Web 服务并加载界面,无需手动操作。~/.dsh($DSH_HOME),与浏览器版完全一致。127.0.0.1:3080 上已经有 dsh 服务在跑,直接挂接上去,不会重复起一个实例;
如果端口被别的程序占用,自动改用系统分配的端口。dsh 服务本身、首次运行时的 npm install)都抑制了
控制台窗口,屏幕上只看得到应用窗口本身。dsh 本身依赖(应用会从 PATH 里定位它)npm install # 安装 @tauri-apps/cli
npm run tauri dev # 编译 Rust 外壳并打开应用窗口
首次启动时,应用会把 @deepseek-ai/dsh 这个 npm 包安装到每用户独立的运行时目录
(%LOCALAPPDATA%\dev.dsh.desktop\runtime)并启动它。安装结果会被 npm 缓存,所以第二次启动会很快,
且不需要联网。
| 变量 | 作用 |
|---|---|
DSH_DESKTOP_NODE |
指定 node.exe 的绝对路径,代替 PATH 上那个 |
DSH_DESKTOP_DSH_BIN |
指定某个 dsh lib/bin.js 的绝对路径(比如本地某个 checkout) |
DSH_DESKTOP_RUNTIME_DIR |
托管的 @deepseek-ai/dsh 运行时安装位置(默认是应用缓存目录);指向一个已有的 node_modules 根目录可以跳过首次的 npm install |
DSH_DESKTOP_DSH_VERSION |
托管运行时使用的 npm 版本号(默认 0.1.0-rc.6) |
DSH_DESKTOP_PORT |
默认绑定端口覆盖(默认 3080);同时跑多个实例时很有用 |
DSH_DESKTOP_CWD |
dsh 服务进程的工作目录(默认是用户主目录) |
DSH_HOME |
透传给服务端;harness 数据根目录(默认 ~/.dsh) |
┌─ Tauri 应用 (Rust, WebView2) ─────────────────────────────┐
│ 本地启动页(加载中 / 出错 / 重试) │
│ └─ 就绪后跳转到 → http://127.0.0.1:<port>(真正的界面) │
│ 服务管理器 (src-tauri/src/server.rs) │
│ 定位 node → 安装/校验 dsh 运行时 → 探测 3080 端口 │
│ → 拉起 `node dsh web --port …` → 从 stdout 解析真实 URL │
│ → 跳转 → 监视进程 → 退出时 taskkill 整棵进程树 │
│ 原生菜单与托盘 (src-tauri/src/menu.rs) │
└─────────────────────────┬────────────────────────────────┘
│ 拉起
┌────────▼────────┐
│ dsh web 服务 │ 数据 → ~/.dsh (DSH_HOME)
└─────────────────┘
harness 页面从 http://127.0.0.1:<port> 加载,故意不授予 Tauri IPC 访问权限
(dangerousRemoteDomainIpcAccess 始终不开启),所以 Web 界面本身接触不到桌面外壳——所有外壳层面的
操作都得走原生菜单/托盘,或者本地启动页。
%LOCALAPPDATA%\dev.dsh.desktop\logs\desktop.log)+ 启动页实时日志npm run bundle 会把 node.exe(选 Node 24——harness 自己的 engines.node 要求是
^22.19.0 || >=24.0.0,Node 23 被上游有意排除在外,因为它是非 LTS/已 EOL 的分支)连同 dsh
的 node_modules 一起打进 NSIS 安装包,这样没装 Node.js 的机器也能直接跑tauri-plugin-updater):启动页在启动时检查更新,并展示一条可关闭的横幅提示;
.github/workflows/release.yml 在每次推送 v* tag 时构建、签名并创建一个 GitHub 草稿 Release
(仍需人工点击发布——自动更新一旦出问题影响的是所有已装用户,所以不会有任何东西未经确认就自动
上线)。内置 dsh 运行时版本与这个机制的关系见下文的"两条独立的版本轴线"server.rs 里的 Unix 分支、fetch-node.mjs 的 darwin/linux 下载分支、
prepare-runtime.mjs 的运行时安装,都在 GitHub Actions 的 macos-latest/ubuntu-latest
runner 上验证过(见 .github/workflows/ci.yml),tauri build --bundles dmg/--bundles deb 也已产出真实安装包并接进
release.yml。仍未做的是代码签名与公证——需要 Apple
Developer 账号,目前没有,所以这两个平台的安装包是未签名状态(见上方说明)npm install
npm run bundle # fetch:node → prepare:runtime → tauri build
# 或者分步执行:
npm run fetch:node # 下载 node.exe → src-tauri/resources/runtime
DSH_RUNTIME_SOURCE=<node_modules 根目录> npm run prepare:runtime # 用本地运行时代替 npm install
npm run build # → src-tauri/target/release/bundle/nsis/DeepSeek Harness_0.3.0_x64-setup.exe
正式发布前先跑一下 npm run check:dsh-version——上游还在开发者预览阶段,会毫无预警地发布新的 RC;
这个脚本会检查写死的 @deepseek-ai/dsh 默认版本号(在 src-tauri/src/server.rs 和
scripts/prepare-runtime.mjs 里各存了一份,两边必须一致)是否落后于 npm 上的最新版本。发布 CI
workflow 也会跑同一个检查,版本号对不上会直接让构建失败。
这个应用有两个互相独立、不能混为一谈的版本号:
tauri.conf.json 里的 version,比如 0.3.0)——桌面外壳本身的版本。
tauri-plugin-updater 只会更新这一个。server.rs 里的 DSH_VERSION_DEFAULT / prepare-runtime.mjs 里的默认值,比如
0.1.0-rc.6)——打进安装包或首次运行时安装的那个 @deepseek-ai/dsh 版本。对于内置运行时的安装方式(默认,即 npm run bundle 打出来的包),这两者会自动同步:NSIS 安装包
的内容里包含 resources/runtime/,所以外壳的自动更新会连带把构建时打进去的那个运行时版本一起重装
——只要在每次切外壳版本发布前把 DSH_VERSION_DEFAULT 更新好(并且 check:dsh-version 检查通过),
就不需要另外再搭一套运行时更新机制。
对于托管(非内置)运行时的路径——也就是没有 resources/runtime/ 的场景(比如未打包的开发版,
或者 DSH_DESKTOP_RUNTIME_DIR 指向了别处)——运行时只会在首次使用时通过 npm install 装一次
(见 server.rs 里的 install_runtime),之后不会再检查。走这条路径
的用户如果想用更新的 dsh,得自己清空 DSH_DESKTOP_RUNTIME_DIR(或者把 DSH_DESKTOP_DSH_VERSION
设成更新的版本号)让它重装。这是一个已知但影响面很窄的缺口——这条路径主要在开发时用得到,不值得为它
单独搭一套更新机制。
deepseek-harness-desktop is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by xiincs. DeepSeek Harness 原生桌面版,基于 Tauri 2,内置 Node.js 运行时,一键安装,极速启动,托盘常驻,自动更新。DeepSeek Harness native desktop version: built on Tauri 2 with a bundled Node.js runtime. It has 53 GitHub stars.
deepseek-harness-desktop's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/xiincs/deepseek-harness-desktop" and add it to your Claude Code skills directory (see the Installation section above).
deepseek-harness-desktop is primarily written in Rust. It is open-source under xiincs on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh deepseek-harness-desktop against similar tools.
No comments yet. Be the first to share your thoughts!