🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

桌面客户端 agent-earth/deepseek-harness-desktop

DeepSeek Harnessv0.4.1
agent-earth46 天前有提交已提供中文文档扫描:高危

DeepSeek Harness 极简桌面端,跨平台,免配置,开箱即用

63.8/100
综合分
220
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:要求 dsh 0.1.1-rc.2,而最新版为 0.2.1-rc.5。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add agent-earth/deepseek-harness-desktop
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · security
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 46 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/9/27) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

要求 dsh 0.1.1-rc.2,而最新版为 0.2.1-rc.5

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包deepseek-harness-desktop @ 0.4.1
✓Node 引擎未声明 engines.node
✗dsh CLI 依赖要求 0.1.1-rc.2 · 最新 0.2.1-rc.5 不兼容
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 17:38:50

🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

安装时即执行脚本可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 50 处,展示前 49 条)
  • 读取本地文件
    src/main.js:146
    const manifest = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'))
  • 读取本地文件
    scripts/prepare-dependencies.mjs:137
    const source = readFileSync(target, 'utf8')
  • 写入本地文件
    scripts/prepare-dependencies.mjs:139
    if (patched !== source) writeFileSync(target, patched)
  • 读取本地文件
    scripts/prepare-dependencies.mjs:152
    const source = readFileSync(target, 'utf8')
  • 写入本地文件
    scripts/prepare-dependencies.mjs:154
    if (patched !== source) writeFileSync(target, patched)
  • 读取本地文件
    scripts/prepare-dependencies.mjs:168
    const source = readFileSync(target, 'utf8')
  • 写入本地文件
    scripts/prepare-dependencies.mjs:170
    if (patched !== source) writeFileSync(target, patched)
  • 写入本地文件
    scripts/prepare-dependencies.mjs:195
    mkdirSync(path.dirname(outputPath), { recursive: true })
  • 写入本地文件
    scripts/prepare-dependencies.mjs:196
    mkdirSync(path.dirname(licenseOutputPath), { recursive: true })
  • 写入本地文件
    scripts/prepare-dependencies.mjs:197
    copyFileSync(executablePath, outputPath)
  • 执行外部命令来自配置/变量
    src/dsh-service.js:116
    const child = spawn(command, args, {
  • 发起网络请求
    src/update-service.js:120
    const response = await fetch(RELEASE_API, {
  • 读取本地文件
    src/update-settings.js:9
    const stored = JSON.parse(readFileSync(filePath, 'utf8'))
  • 写入本地文件
    src/update-settings.js:21
    mkdirSync(path.dirname(filePath), { recursive: true })
  • 写入本地文件
    src/update-settings.js:24
    writeFileSync(temporaryPath, `${JSON.stringify({
  • 写入本地文件
    src/update-settings.js:28
    renameSync(temporaryPath, filePath)
  • 删除本地文件
    src/update-settings.js:30
    rmSync(temporaryPath, { force: true })
  • 执行外部命令固定命令
    scripts/after-pack.cjs:8
    execFileSync('codesign', ['--force', '--deep', '--sign', '-', '--timestamp=none', appPath], {
  • 执行外部命令固定命令
    scripts/after-pack.cjs:11
    execFileSync('codesign', ['--verify', '--deep', '--strict', '--verbose=2', appPath], {
  • 读取本地文件
    scripts/prepare-release-assets.mjs:24
    .filter(sourceName => !existsSync(path.join(distDir, sourceName)))
  • 写入本地文件
    scripts/prepare-release-assets.mjs:31
    copyFileSync(path.join(distDir, sourceName), path.join(distDir, aliasName))
  • 读取本地文件
    scripts/prepare-release-assets.mjs:46
    const manifest = JSON.parse(readFileSync(path.join(root, 'package.json'), 'utf8'))
  • 执行外部命令来自配置/变量
    scripts/smoke-packaged.mjs:46
    const result = spawnSync(windowsNodeExecutable, ['-e', script], {
  • 执行外部命令来自配置/变量
    scripts/smoke-packaged.mjs:104
    const result = spawnSync(launcher, [windowsNodeExecutable, '-e', script], {
  • 发起网络请求
    scripts/smoke-packaged.mjs:136
    const response = await fetch(url)
  • 发起网络请求
    scripts/smoke-packaged.mjs:147
    const marketResponse = await fetch(`${url}/dsh-market/status`)
  • 删除本地文件
    scripts/smoke-packaged.mjs:172
    rmSync(temporaryRoot, {
  • 执行外部命令固定命令
    scripts/sync-upstream.mjs:111
    const raw = execFileSync(
  • 写入本地文件
    scripts/sync-upstream.mjs:122
    appendFileSync(
  • 读取本地文件
    scripts/sync-upstream.mjs:144
    const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'))
  • 写入本地文件
    scripts/sync-upstream.mjs:161
    writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`)
  • 读取本地文件
    scripts/sync-upstream.mjs:164
    const source = readFileSync(readmePath, 'utf8')
  • 写入本地文件
    scripts/sync-upstream.mjs:165
    writeFileSync(readmePath, updateReadmeVersion(source, currentVersion, targetVersion))
  • 执行外部命令固定命令
    scripts/sync-upstream.mjs:168
    execFileSync(
  • 读取本地文件
    scripts/sync-upstream.mjs:174
    const lockfile = JSON.parse(readFileSync(lockfilePath, 'utf8'))
  • 读取本地文件
    scripts/test-windows-hidden-console.mjs:36
    const bytes = readFileSync(executablePath)
  • 写入本地文件
    scripts/test-windows-hidden-console.mjs:45
    writeFileSync(powershellScript, `
  • 执行外部命令来自配置/变量
    scripts/test-windows-hidden-console.mjs:81
    const baseline = spawnSync(visibleLauncher, [process.execPath, '-e', nodeScript], {
  • 执行外部命令来自配置/变量
    scripts/test-windows-hidden-console.mjs:96
    const result = spawnSync(launcher, [nodeExecutable, '-e', nodeScript], {
  • 写入本地文件
    scripts/test-windows-hidden-console.mjs:111
    mkdirSync(aclWorkspace)
  • 写入本地文件
    scripts/test-windows-hidden-console.mjs:112
    mkdirSync(aclTempRoot)
  • 执行外部命令来自配置/变量
    scripts/test-windows-hidden-console.mjs:132
    const aclResult = spawnSync(launcher, [nodeExecutable, '-e', aclScript], {
  • 删除本地文件递归
    scripts/test-windows-hidden-console.mjs:149
    rmSync(temporaryRoot, { recursive: true, force: true })
  • 读取本地文件
    scripts/validate-update-metadata.mjs:22
    const metadata = load(readFileSync(path.join(distDir, metadataName), 'utf8'), { schema: JSON_SCHEMA })
  • 读取本地文件
    scripts/validate-update-metadata.mjs:39
    const stat = statSync(filePath)
  • 读取本地文件
    scripts/validate-update-metadata.mjs:43
    const checksum = createHash('sha512').update(readFileSync(filePath)).digest('base64')
  • 读取本地文件
    scripts/validate-update-metadata.mjs:60
    if (!statSync(blockmap).isFile() || statSync(blockmap).size === 0) {
  • 读取本地文件
    scripts/validate-update-metadata.mjs:68
    const manifest = JSON.parse(readFileSync(path.join(root, 'package.json'), 'utf8'))
  • 写入剪贴板
    website/harness-site.js:209
    await navigator.clipboard?.writeText(command);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis-plugin-group@deepseek-ai/dsh@deepseek-ai/dsh-anonymous-user-id@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-bash-local@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-compaction@deepseek-ai/dsh-fs@deepseek-ai/dsh-invariants@deepseek-ai/dsh-output-retention@deepseek-ai/dsh-sandbox@deepseek-ai/dsh-scope
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 极简桌面端封装
  • 跨平台运行
  • 免配置开箱即用

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness Desktop 面向 DeepSeek Harness 的轻量、本地优先、跨平台桌面封装。 官方网站 English · 简体中文 DeepSeek Harness Desktop 将官方 DeepSeek Harness Web 体验封装为独立桌面应用。无需手动启动 CLI 或管理端口,打开应用即可使用完整 Harness 界面。 本项目专注于桌面宿主能力,不 fork、不修改、不注入,也不重新实现 Harness UI。模型、会话、设置、插件和 Agent 能力均由官方 @deepseek-ai/dsh 提供。 [!IMPORTANT] 本项目是非官方社区封装,目前仍属于早期版本,并依赖快速演进中的 @deepseek-ai/dsh@0.1.1-rc.2。macOS 构建尚未经过 Apple 公证,Windows 构建尚未进行商业代码签名。
展开完整文档(README 剩余 1 节)
DeepSeek Harness Desktop

面向 DeepSeek Harness 的轻量、本地优先、跨平台桌面封装。

官方网站

English · 简体中文

DeepSeek Harness Desktop 将官方 DeepSeek Harness Web 体验封装为独立桌面应用。无需手动启动 CLI 或管理端口,打开应用即可使用完整 Harness 界面。

本项目专注于桌面宿主能力,不 fork、不修改、不注入,也不重新实现 Harness UI。模型、会话、设置、插件和 Agent 能力均由官方 @deepseek-ai/dsh 提供。

[!IMPORTANT]
本项目是非官方社区封装,目前仍属于早期版本,并依赖快速演进中的 @deepseek-ai/dsh@0.1.1-rc.2。macOS 构建尚未经过 Apple 公证,Windows 构建尚未进行商业代码签名。

下载

| 平台 | 架构 | 安装包 | 下载 |
| macOS | Apple Silicon | DMG | 下载 Apple Silicon 版本 |
| macOS | Intel | DMG | 下载 Intel 版本 |
| Windows | x64 | 安装程序 | 下载 Windows 安装程序 |
| Windows | x64 | 便携 ZIP | 下载 Windows ZIP |
| Linux | x64 | AppImage | 下载 AppImage |
| Debian / Ubuntu | x64 | deb | 下载 deb |

全部当前和历史安装包可在 GitHub Releases 查看,也可以通过夸克网盘镜像下载:夸克网盘 - DeepSeek Harness Desktop v0.3.1

为什么需要桌面版

DeepSeek Harness 已经提供完整的 Agent Runtime 和 Web UI。本项目不重复实现这些能力,而是补充桌面应用所需的宿主层:

- 自动启动和关闭本地 Harness 服务
- 自动分配随机 127.0.0.1 回环端口
- 等待 Harness 就绪后再显示应用窗口
- 提供单实例桌面窗口和外部链接安全处理
- 为渲染进程启用沙箱、contextIsolation 和导航限制
- 为 macOS、Windows 和 Linux 提供可直接安装的发行包

主要特性

- Harness 就绪后直接进入官方界面,无额外操作步骤
- 启动 Harness 服务时显示轻量等待界面,不再出现无响应感
- 内置“设置 → Plugin Market”,由 dsh-market 与经过整理的 awesome-dsh-plugin 目录提供
- 随应用提供 pnpm,可直接安装、更新和卸载目录中的插件,无需另行配置 Node.js 工具链
- 支持系统托盘驻留,关闭主窗口后可继续在后台运行
- 可通过托盘菜单在系统浏览器中打开当前本地 Harness 地址
- 支持自动检查桌面更新,Windows 安装版和 Linux AppImage 可选自动下载
- 保留完整的设置、模型、会话、插件和 Agent 能力
- 应用退出时自动终止 Harness 子进程
- Web 服务仅监听随机本地回环端口,不暴露到局域网
- macOS 支持 Apple Silicon 和 Intel
- macOS 标题栏会与 DSH 当前浅色或深色主题自然融合
- Windows 支持 x64 安装程序与便携 ZIP
- Linux 支持 x64 AppImage 和 deb
- Windows 使用官方应用内目录浏览器,避免打包环境下的原生文件夹对话框异常
- Windows 预留可拖动标题栏,避免原生窗口按钮遮挡 Harness 内容
- Windows 隐藏 Electron 默认的 File、Edit、View 和 Window 菜单栏

更新

从托盘菜单,或 macOS 的 DeepSeek Harness 应用菜单中选择“检查更新…”。Linux 和 Windows 也提供“更新”菜单,Windows 可按 Alt 显示菜单。快捷键 Ctrl/Cmd+Shift+U 可直接检查更新;Windows 系统托盘不可用时,“更新”菜单会保持可见。

“自动检查更新”默认开启:打包后的应用会在 Harness 启动成功 30 秒后检查一次,运行期间每六小时检查一次。关闭后停止后台检查,仍可手动检查。开关会在重启后保留。检查请求发送至本仓库公开的 GitHub Releases,后台网络失败不会打断 Harness。

| 发行方式 | 更新行为 |
| Windows NSIS 安装版 / Linux AppImage | 在应用内下载,完成手头任务后选择“重启并安装”。可选的“自动下载更新”默认关闭。 |
| macOS / Windows ZIP / Linux deb | 检测新版并提供发行页入口,由你下载对应平台和架构的安装包并完成安装。 |

关闭窗口或普通退出不会自动安装。重启安装会停止正在运行的 Harness 任务,请先完成任务。macOS 当前使用临时签名,尚不支持需要有效签名的 Squirrel.Mac 自动安装流程。

内置 Harness 随 Desktop 一起更新:桌面新版包含上游升级时,两者通过同一个安装包交付。更新对话框会显示当前内置 Harness 版本。每日上游同步流程发现 DSH 新版本后会创建 PR,验证并发布新的桌面版本后,客户端即可通过相同流程获取。应用不会单独安装 npm 上未经桌面适配验证的 Harness 最新版,也不会修改本地 Harness profile 和会话。

此功能发布前的旧版本需要先手动升级一次桌面应用,才能获得更新选项。源码开发模式不会检查或安装更新。

插件市场

打开“设置 → Plugin Market”即可浏览和搜索社区插件,查看插件来源,并执行安装、更新、停用或卸载。插件目录实时读取自 awesome-dsh-plugin.com,插件变更仍通过官方 dsh plugin --profile web 流程完成,并保存在本机 DSH profile 中。

桌面安装包内置 dshmarket@1.40.0 和兼容的 pnpm 运行时。由于应用生命周期由桌面宿主管理,市场内的一键进程重启已关闭;当插件提示需要重启时,请刷新页面或重新启动 DeepSeek Harness Desktop。

SSH 与远程运维

如需 SSH 能力,可在“设置 → Plugin Market”中搜索并安装 dsh-ssh-ops。它支持 SSH 终端、SFTP、端口转发、批量命令和数据库连接,并已验证可在本项目当前内置的 DSH 版本中正常加载。

由于 SSH 插件会处理远程凭据,并可在其他机器上执行命令,本项目不会默认安装或启用它。请先检查插件源码与权限,仅在需要时安装,并在安装完成后重启 DeepSeek Harness Desktop。

[!WARNING]
目录中的插件是社区维护的第三方代码,不代表 DeepSeek 或本项目的背书。插件安装后会以当前用户权限在本机运行,并可能访问 Harness 可访问的数据。安装前请检查源码、发布者、权限和构建脚本提示。

安装说明

macOS

macOS 构建已进行完整性签名,但尚未经过 Apple 公证。首次启动:

1. 打开 DMG,将 DeepSeek Harness 拖入“应用程序”。
2. 尝试打开应用;如果 macOS 阻止启动,请点击“完成”。
3. 打开“系统设置 → 隐私与安全性”。
4. 在“安全性”区域找到 DeepSeek Harness,点击“仍要打开”。
5. 再次点击“打开”确认。

该确认通常只需完成一次。

Windows

Windows 安装包尚未进行商业代码签名。如果 Microsoft Defender SmartScreen 出现提示:

1. 点击“更多信息”。
2. 点击“仍要运行”。
3. 按安装向导完成安装。

Linux

- AppImage:执行 chmod +x DeepSeek-Harness-Desktop-.AppImage 后直接运行。
- Debian / Ubuntu:使用系统软件安装器打开 deb,或运行 sudo apt install ./DeepSeek-Harness-Desktop-.deb。

安全模型

- Harness 服务仅绑定 127.0.0.1,每次启动使用随机端口
- Renderer 禁用 Node.js 集成
- 启用 contextIsolation 和 Chromium sandbox
- 新窗口和跨域导航交由系统浏览器处理
- Harness 在独立的 Electron Node 子进程中运行
- Cordis HMR 所需的 --expose-internals 只授予 Harness 子进程,不暴露给 Renderer
- 插件市场的写操作要求同源请求,安装来源限制为经过整理的目录
- 第三方插件安装后仍会以当前用户权限执行

运行架构

DeepSeek Harness Desktop
├── Electron Main
│ ├── 单实例窗口 │ ├── Harness 子进程生命周期 │ ├── 随机回环端口与就绪检测 │ └── 平台菜单和外部链接处理 │ ├── Harness Child Process │ └── @deepseek-ai/dsh web │ └── http://127.0.0.1:<random-port> │ └── Sandboxed BrowserWindow └── DeepSeek Harness Web UI

当前验证状态

| 平台 | 构建 | 打包后启动 | Web UI |
| macOS Apple Silicon | DMG / ZIP 通过 | 通过 | HTTP 200 |
| macOS Intel | DMG / ZIP 通过 | 通过 | HTTP 200 |
| Windows x64 | NSIS / ZIP 通过 | 通过 | HTTP 200 |
| Linux x64 | AppImage / deb 通过 | 通过 | HTTP 200 |

所有发行包都由匹配平台的 GitHub-hosted runner 构建,并在发布前执行打包后 smoke test。

已知限制

- 上游 DSH 仍是 RC 版本,接口和行为可能快速变化
- macOS 尚未接入 Developer ID 和 notarization
- Windows 尚未接入商业代码签名,首次启动可能出现 SmartScreen
- 尚未提供 Windows ARM64 和 Linux ARM64 构建
- macOS、Windows ZIP 和 Linux deb 需要从发行页下载安装包并完成安装

上游版本与许可

当前固定使用 @deepseek-ai/dsh@0.1.1-rc.2,以保证打包结果可复现。

桌面封装采用 MIT License。内置的 DeepSeek Harness、dsh-market 与 pnpm 同样采用 MIT License,其许可声明保存在 third-party-licenses。

本项目与 DeepSeek 不存在隶属或官方合作关系。DeepSeek Harness 及相关名称的权利归其各自所有者所有。应用图标使用上游 DeepSeek Harness Web favicon 中的黑色鲸鱼图案。
预览分享卡片长什么样 ↓agent-earth/deepseek-harness-desktop
分享 · DeepSeek Harness Hub
agent-earth/deepseek-harness-desktop

DeepSeek Harness 极简桌面端,跨平台,免配置,开箱即用

这是你的仓库?认领条目

回到顶部