Skip to content
 
 

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepSeek Harness Desktop

DeepSeek Harness Desktop whale icon

一个自包含、注重生命周期与安全边界的 DeepSeek Harness Windows 桌面封装。

官网 · 下载 · Release MIT License

Important

本项目由社区维护,不是 DeepSeek 官方产品,也不代表 DeepSeek 官方立场。

下载与安装

项目官网:https://dsh.cubee.chat/

GitHub Releases 下载最新的 DeepSeek Harness Desktop_*_x64-setup.exe 并安装。预览版仅支持 Windows 10 22H2 / Windows 11 x64。

v0.1.0-preview.3 未使用 Authenticode 签名,Windows SmartScreen 可能显示未知发布者提示。 请在 Release 页面核对同名 .sha256 文件后再运行安装包。

安装包已经内置 Node.js 22.22.3@deepseek-ai/dsh 0.1.0-rc.6dshmarket 1.6.0pnpm 11.22.0,首次启动无需联网,也不要求预装 Node、DSH、pnpm 或 DeepSeek 官方桌面端。

主要功能

  • 一键启动本地 dsh web,等待严格校验的回环地址后在 WebView2 中加载。
  • 单实例运行:再次启动只恢复并聚焦现有窗口,不创建第二个 Host。
  • 关闭主窗口后隐藏到系统托盘,任务继续运行;只有托盘“退出”才清理 Host。
  • 托盘可串行重启 DSH 服务;新 PID 和随机端口就绪后自动恢复 WebView。
  • Host 正常退出等待 5 秒,超时后只强制结束本应用记录的进程树。
  • 外部 HTTP/HTTPS 链接交给系统浏览器,危险 scheme 和跨源 WebView 导航被拒绝。
  • Host 页面不获得任何 Tauri capability;本地启动页使用严格 CSP。
  • 日志包含时间、级别与 PID,并进行敏感字段脱敏和 5 MiB x 3 轮转。

内置插件

v0.1.0-preview.3 将以下插件固定版本后随安装包离线交付。桌面端只维护带 marker 的托管安装, 不会覆盖用户自行安装的同名插件,也会保留用户主动禁用的状态。

插件 版本 默认行为与权限
dsh-at-file 0.6.0 搜索工作区路径,只插入相对路径引用,不注入文件内容
@omdsh-dev/dsh-genui 0.8.4 本地渲染 GenUI、Mermaid 和 Three.js;action 会作为消息回传模型
dsh-better-sidebar 0.12.2 可操作文件、Git 和本机 PTY;模型终端工具保持关闭,首次托管安装关闭 HTTP/HTTPS 接管
@linxin666/dsh-skins 0.1.17 只安装 Skin Center 与聚合皮肤,不安装 Web UI 全家桶;设置左侧“主题”可试穿、应用和恢复
@vectorize-io/hindsight-coding-agents 0.3.4 默认 harnesses.dsh.optInOnly=true 且项目清单为空,不记录也不上传;已有配置不改
@liustack/modlens 3.16.7 提供图片读取和结构化视觉结果;不预置密钥、视觉端点或 Agent CLI
@zebbkira/dsh-skills-mcp-manager 0.1.3 设置一级页管理 DSH Skills 与真实 MCP 连接;MCP env/headers 明文存于 ~/.dsh/mcp.json

桌面自有 @dsh-desktop/theme-settings 提供“预置插件”和“主题”两个设置一级入口。“预置插件” 只切换白名单 package bundle,不卸载文件、不修改 dependencies、不调用 pnpm;保存后通过托盘 “重启 DSH 服务”生效。官方 bundle、Market 与桌面控制 bundle 自身不可关闭,未知用户 bundle 不会被修改。

GenUI 的锁定 SKILL.md 首次启动会写入 $DSH_HOME/skills/genui/SKILL.md,只作用于 DSH。 已有非托管同名 Skill 不覆盖;托管文件未修改时会随版本升级,用户修改或删除后保留用户选择。

DSH Market 1.6.0 作为桌面运行时 bundle 固定交付,不写入用户 profile dependencies,也不能由 市场升级或卸载。它使用 curated registry 搜索插件,并通过内置 DSH CLI 与私有 pnpm 在 ~/.dsh/profiles/web 安装、更新和卸载用户插件;离线可浏览内置快照,但安装、更新和可靠的版本检查需要网络。 桌面端使用安装根私有模块别名加载 Market,因此用户 profile 中已有的同名依赖会原样保留, 但不会覆盖当前桌面发行版的活动 Market 版本。

第三方插件与桌面应用拥有相同主机权限,目前没有包签名验证、权限清单或进程级沙箱。npm 预构建包可以直接安装;需要 prepareallowBuilds 等脚本的 GitHub 源必须逐包明确确认。 插件需要重启才能生效时,请使用托盘“重启 DSH 服务”,Market 内部重启已被桌面 policy 禁用。

工作方式

flowchart LR
    A["Desktop shell"] -->|"spawn fixed runtime + policy"| B["Bundled Node + dsh web"]
    M["DSH Market"] -->|"bundled dsh CLI + private pnpm"| U["User plugins in ~/.dsh"]
    U --> B
    A -->|"atomic managed profile"| P["Pinned offline plugins"]
    P --> B
    B -->|"dsh web: loopback URL"| C["Strict readiness parser"]
    C -->|"same origin only"| D["WebView2"]
    D -->|"external HTTP(S)"| E["System browser"]
    A -->|"explicit quit"| F["Graceful then process-tree cleanup"]
Loading

应用执行以下命令,并让系统随机分配空闲端口:

node --expose-internals <bundled-dsh>/lib/bin.js web --patch <desktop-policy> --host 127.0.0.1 --port 0

就绪解析只接受以 dsh web: 开头、主机为 127.0.0.1localhost、带合法显式端口、 且没有凭据、路径、查询参数或片段的 HTTP 地址。冲突的重复地址会终止启动。

与上游项目的关系

本仓库只维护 Tauri 桌面壳、进程生命周期、自包含运行时、日志、安全边界和 Windows 发布流程。 它不修改 DSH Web UI,也不修改 Agent 核心能力。DSH、DSH Market、pnpm 与 Web 前端按 runtime.lock.json 固定版本并遵循各自上游许可证。

从源码开发

环境要求:PowerShell 7、Node.js 22.22.3、Rust 1.94.1、MSVC C++ Build Tools 和 WebView2。

git clone https://github.com/licn9901-arch/DSH-Desktop.git
Set-Location DSH-Desktop
npm ci
.\dev.cmd

开发构建允许以下覆盖项,发布构建会忽略 Node 与 CLI 覆盖并只使用内置运行时:

环境变量 用途
DSH_DESKTOP_NODE_EXECUTABLE 仅开发模式:指定 Node 可执行文件
DSH_DESKTOP_CLI_ENTRY 仅开发模式:指定 DSH lib/bin.js
DSH_DESKTOP_CWD 指定 Host 工作目录,默认用户目录
DSH_DESKTOP_USER_HOME 仅开发模式:覆盖第三方用户配置目录,供隔离 smoke 使用
DSH_DESKTOP_READY_TIMEOUT_SECS 指定 Host 就绪超时秒数,默认 90

构建自包含安装包

npm ci
npm run build

构建会按 runtime.lock.json 下载并校验官方 Node 压缩包,以及 DSH、Market、pnpm 的 npm integrity,并按 plugins.lock.json 校验 8 个托管 bundle 与 1 个托管 Skill 归档与 npm integrity。三组固定 lockfile 分别执行 npm ci;插件组额外使用 --omit=dev --ignore-scripts。Node、DSH CLI、Web 前端、插件本地资产、PTY 和许可证全部验证后 才调用 Tauri 打包。 暂存资源写入被 Git 忽略的 src-tauri/resources,NSIS 安装包输出到 src-tauri/target/release/bundle/nsis

已有缓存时可离线暂存:

pwsh -NoProfile -File .\scripts\stage-runtime.ps1 -Offline
pwsh -NoProfile -File .\scripts\stage-plugins.ps1 -Offline

测试与质量门禁

npm run validate:icons
npm run lint
npm test
npm audit
Push-Location runtime-host
npm audit --omit=dev
Pop-Location
Push-Location plugin-runtime
npm audit --omit=dev
Pop-Location
npm run coverage
npm run smoke

覆盖率门禁为 Host、运行时、生命周期、导航、日志和就绪解析核心模块行覆盖率不低于 80%;应用装配层由 Windows 冒烟覆盖。详细范围与流程见 测试说明

日志与故障排查

日志位于 %LOCALAPPDATA%\dsh-desktop\dsh-desktop.log

  • 启动失败:查看日志中的 level=ERROR、Host PID 和真实退出码。
  • 市场显示“状态未知”:表示 registry 或版本检查失败,不等同于“已是最新”。
  • 插件安装后未生效:从托盘选择“重启 DSH 服务”,不要依赖 Market 内部重启。
  • 预置插件开关:打开“设置 → 预置插件”;开关保存后需从托盘重启 DSH 服务。
  • 主题切换:打开“设置 → 主题”;该入口由桌面适配器提供,具体皮肤 UI 与 Host API 仍来自 Skin Center。
  • 窗口关闭后仍有任务:这是关闭到托盘的预期行为,请从托盘菜单重新打开或显式退出。
  • 构建提示运行时或插件缺失、哈希不匹配:不要绕过校验,清理对应 .runtime-cache 后重新暂存。
  • 安装器显示未知发布者:首个预览版未签名,请先核对 Release 提供的 SHA-256。

更新与卸载

首版不接入自动更新,请从 GitHub Releases 手动安装新版本。需要回滚时安装上一预览版本。 卸载器只删除应用安装文件;即使选择删除应用数据,也只清理桌面壳的日志目录, 不会删除 DSH 用户会话或配置。

当前边界

  • 仅支持 Windows x64,不支持 macOS、Linux 或 ARM64。
  • 不包含自动更新、开机自启、插件签名验证、权限沙箱、手机远控或 Channels。
  • 本机已有的 0.1.0 原型不保证原地升级;测试预览版前请先卸载原型并保留用户数据。

参与贡献

请先阅读 贡献指南安全政策。问题反馈请附版本、复现步骤和 脱敏后的日志片段,不要提交 token、Cookie、密码或完整用户目录。

许可证

桌面壳代码采用 MIT License。内置 Node.js、DSH 和其他依赖的版本与许可证见 第三方声明,构建产物同时附带机器可读的第三方许可证清单。

About

Unofficial self-contained DeepSeek Harness desktop app for Windows, built with Tauri

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages