deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
🌐 中文 | English
DHS (DeepSeek Harness) 的 Electron GUI 客户端:把 web ui 的使用方式封装为原生桌面 GUI。内核最大限度的保持 DHS。
DHS 官方以 web ui(浏览器)形态交付。dsh-gui 用 Electron 承载同一套 DHS 前端,把「浏览器里打开网页」变成「桌面应用」,同时保持 DHS 内核零改动。
| 平台 | 安装包 | 说明 |
|---|---|---|
| Windows 10+(x64) | dsh-gui-v0.2.0.zip |
免安装包,解压后双击 dsh-gui.exe 启动 |
| macOS(Apple Silicon / arm64) | dsh-gui-0.2.0-arm64.dmg |
安装包,打开后拖入 Applications 启动 |
下载见 GitHub Releases。首次启动自动安装捆绑的 DHS 依赖(可选国内源加速),免手动配置环境。
pnpm install && pnpm dev 从源码启动(见「快速开始」)dsh web --port 0 启动,解析就绪 URL 后加载窗口,避免 3080 端口冲突systemPrompt section,模型每轮会话都能感知已安装插件的能力说明,无需手动提示locale.preference(内核 UI 跟随)%APPDATA%/dsh-gui/install.log,失败可追溯dsh-gui 捆绑 5 个插件,除 dsh-about 外均为独立开源仓库,随打包版分发、首次安装自动注册到 DHS profile:
| 插件 | 仓库 | 功能 |
|---|---|---|
| dsh-discovery | EricXu20266/dsh-discovery | 社区插件搜索 + LLM 安全审计 |
| dsh-skillmanager | EricXu20266/dsh-skillmanager | Skill(技能)图形化管理 |
| dsh-mcpmanager | EricXu20266/dsh-mcpmanager | MCP server 图形化管理 |
| dsh-proxy | EricXu20266/dsh-proxy | 全局代理配置 |
| dsh-about | 内置(本仓库 plugins/) |
设置页「关于」显示版本信息 |
定位是社区插件的发现与 LLM 审计工具:DHS 目前没有官方插件市场,第三方插件本质上是可执行代码,因此它刻意做成只读——只负责「发现 → 筛选」,安全审查交由 LLM 完成(一键生成审查 prompt,LLM 读源码查风险,通过则装、有风险则停)。
dsh-plugin 社区话题下的全部插件仓库(有界分页 + 超时降级)dsh plugin add 安装、有风险则列出风险点停止;官方(deepseek-ai)标记、已安装标识、检查更新同样带安全审查(对比新旧差异,通过才 update)完整的设计说明(安全模型、拉取规则、场景化筛选规则)见该仓库的 README。
DHS 的技能体系没有中心化注册表——文件即注册:把 <name>/SKILL.md 放进扫描根,宿主自动发现并纳入模型可用目录(~/.dsh/skills、~/.agents/skills 等 5 个扫描根)。本插件以图形化方式呈现这套体系:技能列表、分组、启用/禁用(frontmatter 权限开关)、新建引导、LLM 审查。技能的创建与编辑由 host agent(LLM)执行,本插件负责「看得清、管得住」。
DHS 的 MCP 没有独立存储——一个 server = 一条 @deepseek-ai/dsh-mcp-client 插件实例,持久化在 ~/.dsh/profiles/web/cordis.patch.yml。本插件以表单化方式增删改 MCP server 配置(stdio / streamable-http 两种传输),保存后热重载生效(新会话工具列表立即可用,无需重启),并提供 LLM 验证引导。
DHS 网络栈全链路裸 fetch(),不读 Windows 系统代理;Node 24+ 支持 NODE_USE_ENV_PROXY 环境变量代理(bootstrap-only 安全设计,.env 禁止设置代理变量)。本插件在设置页「通用设置」图形化配置系统代理 / 手动代理,持久化到 ~/.dsh/settings.yaml,由 dsh-gui 启动时注入环境变量,让 LLM 调用 / 内置搜索 / MCP 客户端全链路走代理。
设置页「关于」tab(内置插件,随仓库打包、不独立发布),展示 dsh-gui / 内核 / 运行时(Electron + Node)/ 已装插件四层版本信息,方便核对版本与排查问题。
每个内置插件在 host 侧注册一段 systemPrompt section(plugin:<id>),随会话注入模型上下文。模型因此天然知道已安装哪些插件、各自能做什么——例如用户问「帮我看看有哪些插件」时,模型直接依据插件注册说明作答,无需额外文档。
┌─────────────────────────────────────────────┐
│ Electron App(dsh-gui) │
│ main 进程 ──spawn──> DHS host 子进程 │
│ │ └─ apps/cli/bin.js │
│ │ --profile web │
│ │ --port 0 │
│ │ → 127.0.0.1:<p> │
│ BrowserWindow loadURL ←─────────────────────┘
└─────────────────────────────────────────────┘
dsh(打包版用捆绑 Node 24,开发态用系统 Node),内核 100% 保持127.0.0.1,端口由 --port 0 动态分配,避免 3080 冲突)~/.dsh(DHS 通用 home,web/gui 双模式共用)⚠️ 已知边界:DHS 的 cordis loader 依赖 Node 内部 API(
node-addon-require-builtin), 与 Electron 内置 Node 不兼容——因此 host 走子进程而非 in-process(详见 docs/ARCHITECT.md)。
# 依赖(workspace 包含 ../deepseek-harness)
pnpm install
# 构建 DHS(首次需要:host lib + client lib + web dist)
pnpm --filter @deepseek-ai/dsh-root run build
# 提交前自检(先格式化,再检查)
pnpm format
pnpm typecheck && pnpm check && pnpm test
# 启动
pnpm build && pnpm start
一键脚本(推荐,输出全程 console):
build-win-unpacked.bat
或手动(package.json 脚本):
pnpm package:dir # 免安装包 → release/win-unpacked/
pnpm package # nsis 安装包 → release/dsh-gui-setup-*.exe
产物见 GitHub Releases。
dsh-gui 是 workspace 项目,内核依赖 deepseek-harness 必须放在 dsh-gui 同级目录(pnpm-workspace.yaml 的 ../deepseek-harness、图标源 apps/web/public/favicon.svg 都按此相对路径解析):
# 目录布局:两个仓库同级
# ~/dev/dsh-gui
# ~/dev/deepseek-harness
git clone https://github.com/EricXu20266/dsh-gui.git
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd dsh-gui
pnpm install # 安装依赖(含 workspace 的 DHS 包)
pnpm --filter @deepseek-ai/dsh-root run build # 构建 DHS 内核(lib + web dist)
# 开发态运行(用系统 Node,无需捆绑运行时)
pnpm build && pnpm start
# 打包 macOS 应用(Apple Silicon,产物 release/*.dmg + *.zip)
node scripts/gen-icons.mjs # 生成 mac 图标(icon-512.png)
pnpm exec electron-builder --mac --arm64 --publish never
打包版需要捆绑 Node + pnpm 运行时(
resources/runtime/,该目录被 gitignore,需自行准备):从 nodejs.org 下载 darwin-arm64 版 Node、从 npm registry 取 pnpm tarball,解压到对应目录即可。
打包版结构:resources/runtime(捆绑 Node + pnpm)、resources/dhs(DHS 源码种子,不含 node_modules)、resources/dsh-*(四个独立插件仓库 + 内置 dsh-about)。首次启动向导会把 DHS 源码复制到 %APPDATA%/dsh-gui/dhs(macOS 为 ~/Library/Application Support/dsh-gui/dhs)后再安装依赖,避免写入应用资源目录。
dsh-gui/
├── electron/ # GUI 壳引擎(main/host/installer/proxy/paths/tray/preload/renderer)
├── plugins/ # 内置插件(dsh-about;其余 4 个为独立仓库)
├── mac-packing-resource/ # 4 个外置插件源码(mac CI 单仓库打包用)
├── platform/ # 平台适配(windows 打包 / macos 预留)
├── resources/ # 资源(图标、打包运行时:捆绑 Node + pnpm)
├── install/ # 安装器配置
├── scripts/ # 构建/打包脚本
├── tests/ # 单元测试(node:test + tsx)
├── tools/ # 辅助工具
└── docs/ # 文档体系(ARCHITECT/DEV-TRACKER/index...)
详细文档见 docs/index.md。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。