DeepSeek Harness(dsh)的桌面发行版——打包、策展、集成、信任。
dsh 是一个强大且快速演进的 agent harness;DSH Buddy 把它变成双击即用的桌面应用: 从下载到第一个 agent 会话不超过一分钟——不需要 Node,不需要终端,不需要自己判断哪个插件能装。
本项目是社区项目,与 DeepSeek 无隶属关系,不代表其认可或背书。DeepSeek 及相关商标归其权利人所有。
| 平台 | 入口 | 说明 |
|---|---|---|
| macOS(Apple Silicon) | 下载最新版 dmg | 拖入「应用程序」即完成安装。产物暂未签名公证,首次打开请右键 → 打开(或在「系统设置 → 隐私与安全性」放行) |
| Windows(x64) | 下载最新版 exe | 双击运行安装器,可按向导选择安装目录(默认装在用户目录,无需管理员/开发者模式)。产物未签名,SmartScreen 可能提示「Windows 已保护你的电脑」→ 更多信息 → 仍要运行;启动后首次连接会提示允许访问网络 |
更新:
- Windows:应用内自动更新——启动后后台检查 GitHub Releases,发现新版本自动下载,就绪后提示「立即重启安装」。也可用菜单「帮助 → 检查更新」手动触发(实时反馈:有新版本/已是最新/检查失败)。
- macOS:未签名包无法静默换装(系统级约束),启动时检查更新,有新版本提示前往 Release 页下载新 dmg 覆盖安装。
卸载:
- Windows:「设置 → 应用」或控制面板卸载。卸载会删除程序文件与壳自身数据(
%APPDATA%\DSH Buddy,仅日志与更新检查状态);~/.dsh会保留——它是 dsh 的会话与配置目录,与 dsh 命令行共享,如确认不再使用 dsh 可手动删除。 - macOS:把应用拖入废纸篓;
~/.dsh同理保留,按需手动删除。
| 职能 | 具体动作 |
|---|---|
| 打包 | dsh 随应用零依赖分发,双击启动,进程生命周期托管 |
| 策展 | 精选社区 preset 与插件,过协议门和安全审查后随包提供 |
| 集成 | 幂等安装、沉浸式窗口、开箱即用的默认配置 |
| 信任 | 协议逐包核验、安全敏感组件默认不启用、版本钉死可复现 |
进入随包清单的每个组件都要过三道门:
- 协议门:核对 LICENSE 全文与每个包的 license 字段,copyleft 组件不进分发物 (规则见 plugin-license-gate);
- 安全门:涉及凭据存储、网络隧道、远程访问的组件默认不预装,由用户自行决定;
- 版本门:版本钉死在 preinstall-manifest,升级须重新过门。
- 零依赖:dsh 随应用分发,用 Electron 自带的 Node 运行时执行,用户机器无需安装 Node.js
- 双击启动:自动拉起
dsh服务进程(已在运行则直接复用) - 健康检查:轮询等待服务就绪后才打开窗口,不给用户看白屏
- 生命周期托管:退出时整组回收 dsh 进程树,不留孤儿进程
- 单实例锁:重复启动只会聚焦已有窗口
- 外部链接自动交给系统浏览器
plugins/ 是免费开源插件的 npm workspace。当前随包分发
dsh-anchored-standard:三个实验性
agent preset(Anchored / Zero-Anchored / Whoami Standard)。应用启动时把它们幂等安装到
$DSH_HOME/.agent-presets/——目录已存在则跳过,不覆盖你的本地修改——启动后即可在
dsh 的 preset 选择器中选用。
@aiwaretop/dsh-docs-harness 是本项目自研的治理插件,随 web profile 一起预装:把方案
(plan)生命周期做成工具族、把项目自己的治理规则注入 agent 提示词、把方案进度做成
输入框上方的进度气泡,并提供 Docs Harness 引擎在项目里的安装 / 升级 / 移除入口。
三条边界值得先说清楚:
- 写盘只由你发起。往仓库里写文件的动作只挂在输入框上方的提示条和「设置 → 插件」 里,agent 拿不到这类工具;它在没启用的项目里调用方案工具,只会拿到一句「让用户去 那两个入口启用」的说明。
- 总开关默认开,关掉即等于没装。关掉后不注册工具、不注入提示词、不建投影、不挂 路由,会话行为与未安装该插件完全一致。
- 注入的规则就是项目自己的规则,取自项目
AGENTS.md的受管块原文,不做删改; 只把「怎么调用」从命令行改写为工具名。
源码唯一真源是 docs-harness 仓库,已发布为 npm 包
@aiwaretop/dsh-docs-harness,与其余六个预装插件走同一条链路:构建时
scripts/build-web-profile.js 按 plugins/preinstall-manifest.json 的 packages 清单钉版
从 registry 装进 profile。
前置依赖(仅从源码构建需要;下载「## 下载」里的安装包不需要以下任何一项):
- Node.js 24(CI 固定此版本;
npm install/npm run dist*都要用) - pnpm(全局装好;
dsh plugin子命令把插件安装转发给它,npm install不会带出它) - 能访问 npm registry(拉内嵌 dsh 与预装的 7 个插件包)
git clone https://github.com/HackSing/dsh-buddy.git
npm install
npm start # 开发态
npm run dist # 打包 macOS .app → dist/mac-arm64/DSH Buddy.app
npm run dist:win # 打包 Windows 安装包 → dist/DSH Buddy Setup <ver>.exe(CI/干净终端用)
scripts\dist-win.bat # 本机 Windows 打包入口:清 IDE 注入的 ELECTRON_* 变量 + dist 锁预检(IDE 终端里务必走它)打包产物未做代码签名与公证:macOS 首次打开需在「系统设置 → 隐私与安全性」中放行,Windows 安装器会触发 SmartScreen 提示。
main.js 按以下优先级决定怎么把 dsh 跑起来:
- 环境变量覆盖(
DSH_CMD/DSH_ARGS):开发者逃生通道,完全按给定命令行执行 - 复用存活服务:
DSH_URL已经能连通 → 直接连接,不拉起也不回收(不会误杀用户自己启动的 dsh) - 内嵌 dsh(默认):
ELECTRON_RUN_AS_NODE=1+process.execPath执行随包分发的@deepseek-ai/dsh - npx 回退:内嵌入口解析不到时,退回
npx @deepseek-ai/dsh@<pinned> web(需要机器上有 Node)
通过环境变量覆盖默认值(也可直接改 main.js 顶部的配置区):
| 变量 | 默认值 | 说明 |
|---|---|---|
DSH_URL |
http://127.0.0.1:3080 |
Web UI 地址;同时决定内嵌 dsh 的 --host / --port |
DSH_CMD |
(未设置) | 设置后走逃生通道,自定义启动器命令 |
DSH_ARGS |
@deepseek-ai/[email protected] web |
逃生通道的启动参数(仅在 DSH_CMD/DSH_ARGS 任一被设置时生效) |
dsh 版本在
dependencies中钉死为0.1.0-rc.6——它仍处于 developer preview,有破坏性变更风险。
- 打包分发(electron-builder,macOS arm64 dmg)
- 随包资产:精选 agent preset 预装 + 插件 profile 随包
- 发布流水线(推 tag 即自动构建并发 Release;profile 产物独立构建经 artifact 分发,Windows 已转正)
- 应用内更新提示(检查 GitHub Releases,24h 节流)
- Windows 桌面生命周期对标:assisted 安装器(可选安装目录)、卸载清理壳自身数据(保留
~/.dsh)、应用内自动更新(electron-updater 后台下载 + 重启安装,NSIS 通道不要求签名) - dsh 追新兼容验证(每日自动值班,新版本自动开 issue 报告)
- Windows 安装包转正(profile 产物改为单独构建经 artifact 分发,绕开 bsdtar × pnpm junction;纯 Node 两遍解包支持无特权普通用户)
- Docs Harness 插件随包(方案工具族 + 规则注入 + 进度气泡 + 用户发起的项目安装/升级/移除)
- 代码签名 + 公证 + macOS 全自动更新(签名就绪后同一发布流升级;Windows 自动更新已先行落地)
- 存量用户随包资产增量更新(版本戳分流;profile:未改动整体替换、有自定义则自动只加不改合并;preset:未改动替换、已改动保留用户版本;均先备份,异常回滚)
- Docs Harness 后续:knowledge / acceptance 资产的前端可视化;插件发布 npm 后清单条目从
local转packages;引擎种子版本升级走上面那条随包资产增量更新的同一套语义 - 系统托盘、关窗常驻等桌面体验(按用户反馈驱动)
搭建思路见发布基础设施三件套指南。