deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:iyam-x/iyam-dsh-desktop
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
DeepSeek Harness(DSH)的跨平台原生桌面客户端。首次启动时会自动下载并部署 Node.js 运行时与 DSH 内核到本地 ~/.dsh,之后开箱即用,无需用户手动安装 Node.js。

~/.dsh/(经 npmmirror / npm 官方镜像回退,约 1~2 分钟),之后直接复用,秒级启动。dsh plugin add/remove、Agent Presets、Cordis 插件系统、内核升级等全部可用。dshmarket 插件市场,装好即可在应用内浏览、搜索、一键安装社区插件。发布版安装包在 Releases 页面,按操作系统选择:
~/.dsh/ 后共约 600~800MB)@deepseek-ai/dsh 装到 ~/.dsh/(全局布局,约 1~2 分钟,需联网)。~/.dsh/ 本地安装,秒级启动,不再下载。~/.dsh/.iyam-dsh-stderr.log。~/.dsh/ 目录即可完全清除(含已下载的 Node 与 DSH)。Node.js 20+
Rust 稳定版工具链
npm 10+(随 Node.js 自带)
平台原生依赖:
libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libgtk-3-dev build-essential pkg-config libssl-dev python3xcode-select --install)npm install # 安装前端依赖(生成/使用 package-lock.json)
npm run tauri:dev # 开发模式(热重载)
npm run tauri:build # 生产构建(仅打包壳与内置插件,不含 DSH 内核/Node)
安装包不再内置 DSH 内核与 Node 运行时;二者在用户首次启动时按需下载到
~/.dsh/(见「工作原理」)。如需本地预拉取运行时用于离线验证或 CI 预缓存,可执行npm run fetch:dsh(拉取 DSH 到 bundle 资源目录)与npm run fetch:node(拉取当前平台 Node 归档)。
构建产物位于 src-tauri/target/release/bundle/ 下对应平台的目录。
仓库已配置 GitHub Actions(.github/workflows/build.yml):推送 v* 标签时,会在 macOS(Apple Silicon,aarch64)、Windows(x64)、Linux(x64) 三个平台上并行构建,并将各平台安装包作为 Assets 上传到一个正式 Release(releaseDraft: false),构建完成后自动发布。
APPLE_CERTIFICATE、APPLE_CERTIFICATE_PASSWORD、APPLE_SIGNING_IDENTITY、APPLE_ID、APPLE_PASSWORD、APPLE_TEAM_ID 即可自动生效(留空则产出未签名包)。iyam-dsh-desktop (Tauri v2)
├── Rust 后端:进程管理、首次启动按需下载并部署 Node + DSH 到 ~/.dsh/
├── React 前端:状态 UI(Installing / Loading / Ready / Error / Crashed)
├── 运行时下载器(downloader.rs):Node 归档镜像回退 + npm 全局安装 @deepseek-ai/dsh
├── 内置体验插件:dsh-shell-plugin / dsh-rtui-ui(随壳分发)
└── 嵌入 DSH Web UI:WebView 直连 http://127.0.0.1:<port>
~/.dsh/ 是否已安装 dsh(及托管 Node)。未安装时:~/.dsh/node/;-g --prefix ~/.dsh)安装 @deepseek-ai/dsh,registry 依次回退 npmmirror → 腾讯云 → 华为云 → npmjs,约 1~2 分钟;~/.dsh/bin/dsh(Windows 为 dsh.cmd):直接用托管 Node 运行 lib/bin.js,不依赖系统 PATH / shebang;~/.dsh/lib/node_modules/@iyam/,并在 ~/.dsh/profiles/node_modules/@iyam/ 建软链,供 dsh 的 profile 插件树解析(dsh 只为其自身依赖闭包建软链,@iyam/* 需由 app 补建);dsh plugin 时按需用托管 npm 预装 pnpm 到托管 Node 目录,并注入 PATH(GUI 启动的应用没有用户 shell 的 PATH,找不到 pnpm)。~/.dsh/ 本地安装,秒级启动,不再下载。lib/bin.js web --port 0,监听 stdout 捕获带认证 token 的访问 URL(dsh ≥ 0.1.2-rc.1 全站认证),通过 Tauri Event 通知前端;运行中进程的 dsh 版本与磁盘不一致(升级提升后旧进程常驻)时强制重启对齐。<iframe> 加载(token 首访换取界面;app 侧对 dsh 打有 webview 认证适配补丁,见 PLAN.md 问题记录 13/14)。~/.dsh/.staging,写 .update.json;下次启动提升(apply)到正式目录,失败自动回滚到上一可用版本。版本未变不会重新下载。bin.js」直跑,绕开 npm 生成软链与 shebang 的坑;安装后校验入口确实可运行(bin.js --version),若入口损坏(如镜像分发坏 tarball)则自动从 npmjs --prefer-online 重装,绕过本地被污染的 npm 缓存。~/.dsh/.quarantine.json,dsh 版本变化后自动恢复重试。releases/latest 的 tag 与当前版本(编译期写入,与发布 tag 同源)比对:有新版则弹系统通知,菜单里给出「前往下载」直接打开 Release 页,由用户手动安装——原生安装包(NSIS / dmg / AppImage)无法在应用内覆盖自身,故不做静默自更新。注意该能力只对已包含它的版本生效:升级到本版本之前的老版本仍需手动装一次。不读取系统 node、不读取系统全局安装的 dsh(除非用户自行安装且经探测选用)。手动终端使用可通过 ~/.dsh/bin/dsh(Windows 为 dsh.cmd)。
iyam-dsh-desktop/
├── package.json # Tauri + Vite 项目配置(npm,非 pnpm)
├── scripts/
│ ├── fetch-dsh.mjs # 拉取最新 DSH 内核到 bundle 资源(CI 与本地预缓存用)
│ └── fetch-node.mjs # 拉取当前平台 Node 归档(CI 与本地预缓存用)
├── src/ # React 前端
├── src-tauri/
│ ├── bin/dsh-{shell,rtui-ui}/ # 内置体验插件(随壳分发)
│ ├── src/{main,installer,process,process_state,downloader,updater,app_update,notify,window,aumid}.rs
│ ├── tauri.conf.json # 窗口、bundle、安全配置(+ tauri.macos.conf.json 平台覆盖)
│ ├── capabilities/ # 权限策略
│ └── build.rs # 将内置插件打包进 app Resources(不含 DSH/Node)
├── .github/workflows/build.yml # 跨平台自动构建(v* 标签触发,自动发布 Release)
└── PLAN.md # 完整方案文档
| 功能 | 行为 |
|---|---|
| dsh plugin add / dsh plugin remove | ✅ 完整可用 |
| Agent Presets | ✅ 读取 ~/.dsh/.agent-presets/ |
| Cordis 插件系统 | ✅ 完整保留 |
| DSH 内核升级 | 自动备货最新版,下次启动生效;失败自动回滚、不兼容插件自动隔离 |
| dsh web 认证(≥ 0.1.2-rc.1) | ✅ 自动适配:token 直取界面 + 本机回环放行 API(对 dsh 打幂等补丁,见 PLAN.md 问题记录 13/14) |
src-tauri/src/downloader.rs 的 NODE_VERSION 常量控制,升级 Node 需重新发版;DSH 版本由应用内「检查更新」独立升级,无需重装应用。本项目以 MIT 许可证 开源,代码托管于 github.com/iyam-x/iyam-dsh-desktop。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。