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

桌面宿主与手机遥控 chokwinlee/deepseek-harness-desktop

DeepSeek Harnessv0.2.0
chokwinlee1 天前有提交已提供中文文档扫描:含敏感能力

轻量、自包含的 DeepSeek Harness 桌面宿主,以及原生 iPhone 与 Android Remote。

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

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

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

状态速览

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

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

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

要求 dsh 0.1.5-rc.2,而最新版为 0.2.1-rc.5;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

✓npm 包dsh-desktop @ 0.2.0
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✗dsh CLI 依赖要求 0.1.5-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:42

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 46 处,展示前 39 条)
  • 读取本地文件
    src/desktop-preferences.ts:18
    const parsed = JSON.parse(await readFile(path, 'utf8')) as unknown
  • 写入本地文件
    src/desktop-preferences.ts:32
    await mkdir(dirname(path), { recursive: true })
  • 写入本地文件
    src/desktop-preferences.ts:34
    await writeFile(temporary, `${JSON.stringify(preferences, null, 2)}\n`, 'utf8')
  • 写入本地文件
    src/desktop-preferences.ts:36
    await rename(temporary, path)
  • 删除本地文件
    src/desktop-preferences.ts:40
    await rm(path, { force: true })
  • 写入本地文件
    src/desktop-preferences.ts:41
    await rename(temporary, path)
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/client.js:290
    bridge?.request('status')
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/client.js:324
    bridge?.request('install-plugin', { spec: value })
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/client.js:333
    bridge?.request('remove-plugin', { name })
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/client.js:380
    bridge?.request('install-plugin', { spec: productStatus?.bundleSpec || product.packageName })
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/client.js:387
    run: () => bridge?.request(product.configureAction)
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/client.js:436
    onClick: () => bridge?.request('restart-harness')
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/remote-v1.js:113
    const response = await handler.fetch(new Request('http://dsh.internal/api/$events/result', {
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/rpc.js:6
    const response = await fetch(url, { redirect: 'manual', signal: AbortSignal.timeout(10_000) })
  • 发起网络请求
    src/dsh-desktop-settings-plugin/lib/rpc.js:14
    const response = await fetch(new URL(`/api/${method}`, connection.origin), {
  • 读取本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:13
    for (const entry of await readdir(directory, { withFileTypes: true })) {
  • 读取本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:17
    if (entry.isSymbolicLink()) entries.push({ path: name, link: await readlink(path) })
  • 读取本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:19
    else if (entry.isFile()) entries.push({ path: name, sha256: hash(await readFile(path)) })
  • 写入本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:27
    await mkdir(home, { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:29
    await mkdir(parent, { recursive: true, mode: 0o700 })
  • 读取本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:32
    const receipt = JSON.parse(await readFile(join(destination, 'backup.json'), 'utf8'))
  • 读取本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:35
    if (item.sha256 && hash(await readFile(join(destination, 'data', item.path))) !== item.sha256) throw new Error(`Upgrade backup is damaged: ${item.path
  • 写入本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:40
    await mkdir(join(stage, 'data'), { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:46
    await mkdir(join(destinationFile, '..'), { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:47
    await copyFile(join(home, item.path), destinationFile, constants.COPYFILE_EXCL)
  • 写入本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:48
    await chmod(destinationFile, 0o600)
  • 读取本地文件
    src/dsh-desktop-settings-plugin/lib/upgrade.js:49
    if (hash(await readFile(destinationFile)) !== item.sha256) throw new Error(`Data changed during backup: ${item.path}`)
  • 删除本地文件递归
    src/dsh-desktop-settings-plugin/lib/upgrade.js:55
    } finally { await rm(stage, { recursive: true, force: true }) }
  • 执行外部命令来自配置/变量
    src/harness-supervisor.ts:73
    const child = spawn(
  • 读取本地文件
    src/main.ts:203
    const manifest = JSON.parse(await readFile(manifestPath, 'utf8')) as { version?: string }
  • 读取本地文件
    src/main.ts:208
    const manifest = JSON.parse(await readFile(resolveDshManifest(), 'utf8')) as { version?: string }
  • 读取本地文件
    src/main.ts:217
    readFile(join(app.getAppPath(), UPDATER_SCRIPT_RELATIVE), 'utf8'),
  • 读取本地文件
    src/main.ts:235
    readFile(join(app.getAppPath(), SMOOTH_STREAM_SCRIPT_RELATIVE), 'utf8'),
  • 读取本地文件
    src/main.ts:253
    const script = await readFile(join(app.getAppPath(), SELECTION_GUARD_SCRIPT_RELATIVE), 'utf8')
  • 写入剪贴板
    src/remote.js:1200
    await navigator.clipboard.writeText(pairingURL || endpoint)
  • 发起网络请求
    src/updater.js:759
    const response = await fetch(API_URL, {
  • 发起网络请求
    src/usage-meter.js:370
    return fetch(`/api/${method}`, {
  • 发起网络请求
    src/usage-meter.js:394
    const response = await fetch(OPENROUTER_MODELS_URL, { cache: 'force-cache', mode: 'cors' })
  • 写入剪贴板
    src-tauri/ui/startup-error.js:101
    await navigator.clipboard.writeText(text)
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis-plugin-group@deepseek-ai/dsh@deepseek-ai/dsh-anonymous-user-id@deepseek-ai/dsh-api-gateway@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-attachment@deepseek-ai/dsh-authorization@deepseek-ai/dsh-bash-local@deepseek-ai/dsh-client-ui-settings-models@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-compaction@deepseek-ai/dsh-fs
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 桌面宿主运行
  • iPhone远程源码预览

紧凑的 DeepSeek Harness 桌面宿主,带原生 SwiftUI iPhone 远程源码预览。

README

由 DeepSeek 最新模型翻译生成
DSH Desktop 轻量、自包含的 DeepSeek Harness 桌面宿主,以及原生 iPhone 与 Android Remote。 下载 · 核心能力 · iPhone Remote · Android Remote · 开发 · 参与贡献 · 简体中文 DSH Desktop macOS DMG 安装包约 100 MB,完整内置 Harness 运行时。 DSH Desktop 把官方 DeepSeek Harness Web UI 和运行时放进桌面窗口。本仓库还包含 DSH Remote 原生 iPhone 与 Android 配套 App,用于继续查看电脑项目、会话和运行任务。当前构建使用 @deepseek-ai/dsh@0.1.5-rc.2,侧边栏会同时显示桌面版与内置 Harness 版本。桌面应用会自动管理本机 Harness 进程,用户无需另外安装 Node.js,也不用手动启动 dsh web。 迁移与恢复说明 [!IMPORTANT] 这是独立社区项目,与 DeepSeek AI 官方产品无关。DeepSeek Harness 仍处于开发者预览阶段,后续版本可能包含不兼容改动。 核心能力 - 多模态会话 所选服务商与模型声明支持图片输入后,可以直接粘贴或附加图片,并沿用 Harness 的标准会话流程。图片消息会保留在会话历史中。
展开完整文档(README 剩余 1 节)
DSH Desktop
轻量、自包含的 DeepSeek Harness 桌面宿主,以及原生 iPhone 与 Android Remote。

下载
· 核心能力
· iPhone Remote
· Android Remote
· 开发
· 参与贡献

· 简体中文

DSH Desktop

macOS DMG 安装包约 100 MB,完整内置 Harness 运行时。

DSH Desktop 把官方 DeepSeek Harness Web UI 和运行时放进桌面窗口。本仓库还包含 DSH Remote 原生 iPhone 与 Android 配套 App,用于继续查看电脑项目、会话和运行任务。当前构建使用 @deepseek-ai/dsh@0.1.5-rc.2,侧边栏会同时显示桌面版与内置 Harness 版本。桌面应用会自动管理本机 Harness 进程,用户无需另外安装 Node.js,也不用手动启动 dsh web。

迁移与恢复说明

[!IMPORTANT]
这是独立社区项目,与 DeepSeek AI 官方产品无关。DeepSeek Harness 仍处于开发者预览阶段,后续版本可能包含不兼容改动。

核心能力

- 多模态会话 所选服务商与模型声明支持图片输入后,可以直接粘贴或附加图片,并沿用 Harness 的标准会话流程。图片消息会保留在会话历史中。
- macOS 用量统计 无需离开当前会话,即可查看今日与近七天 Token、估算费用、运行任务数和合计吞吐率。
- 轻巧的 macOS 安装包 约 100 MB,完整内置 Harness 运行时;采用 Tauri 并复用系统自带的 WKWebView,无需另外打包 Chromium。
- 内置版本明确 侧边栏同时标明桌面版与内置 Harness 版本,例如 DSH Desktop v0.5.0 · Harness 0.1.5-rc.2。
- 开箱即用 启动 Harness 所需的内容已经完整内置,无需另装 Node.js,也不用执行终端命令。应用会自动启动和关闭本地运行时。
- 原生手机 Remote SwiftUI iPhone 客户端与 Kotlin/Compose Android 客户端可在受信任的同一 Wi-Fi 或用户自己的 Tailscale 网络中配对,随后浏览项目、新建会话、引导任务、处理审批、发送图片并跟进子代理;执行始终留在电脑上。

费用来自本地 Token 记录和可用的公开模型价格,只作为估算。无法匹配价格的模型会明确显示为未定价,不会被当作免费。

多模态与用量统计

多模态会话与用量统计

Harness rc.8 的真实图片输入会话,同时展开 Token 与费用统计,模型通过 OpenRouter 使用 google/gemini-2.5-flash-lite。

标题栏会持续显示精简摘要。展开后可以查看输入、输出、缓存、费用和实时吞吐率。用量根据本地 Harness 会话记录计算,估算费用采用可用的公开模型价格。

iPhone Remote(TestFlight 内测)

[!IMPORTANT]
DSH Remote 已开放 iPhone 公开内测,可通过 TestFlight加入。

同一 Wi-Fi 配对 · 项目与运行会话 · 审批处理

DSH Remote 是用户自己拥有或管理的 DSH Desktop 电脑的原生 SwiftUI 配套 App。手机不运行 Agent、仓库、终端或模型服务商;任务仍在电脑执行,iPhone 只提供窄控制面。

iOS TestFlight 内测版会跟随设备为 App 选择的语言,目前已完整覆盖英文与简体中文,包括设置、错误、通知、审批、模型、轨迹和子代理流程。

- 同一 Wi-Fi(推荐) Desktop 在用户明确开启后提供带认证的局域网入口,不需要 Tailscale 账号。
- 离开本地网络 两台设备加入用户自己的 Tailnet,Desktop 自动配置私有的 Tailscale Serve HTTPS 入口;不要使用 Funnel。
- 没有项目方中继 代码、提示词、模型凭据、工具执行和会话历史都留在用户电脑。

通过 TestFlight 安装

1. 在运行 iOS 17 或更高版本的 iPhone 安装 Apple 的 TestFlight App。
2. 打开 DSH Remote 公开邀请链接,选择“在 TestFlight 中查看”,接受邀请并安装。
3. 配对前,在电脑安装当前 DSH Desktop 正式版。

使用 Xcode 从源码安装

开发者也可以使用 Xcode 把源码安装到自己的 iPhone:

1. 在 Mac 安装 Xcode 16 或更高版本,并在 Xcode → Settings → Accounts 登录 Apple Account。
2. Clone 本仓库,打开 ios/DSHRemote/DSHRemote.xcodeproj。
3. 选择 DSHRemote target,在 Signing & Capabilities 中选择自己的 Team;如果自动签名提示冲突,请换成自己的唯一 Bundle Identifier。
4. 连接运行 iOS 17 或更高版本的 iPhone,选择该设备,然后执行 Product → Run。

免费 Apple Account 可以通过 Xcode Personal Team 在自己的设备上测试,但需要定期重新签名。从 GitHub 下载未签名或与设备不匹配的 IPA 无法直接安装。

配对和使用 Remote

1. 安装并打开最新 DSH Desktop。
2. 在 Desktop 打开 设置 → 通用 → 手机 Remote → 连接手机。
3. 同一受信任 Wi-Fi 下开启本地配对,并在 DSH Remote 扫描二维码。
4. 使用蜂窝网络或其他外网时,在 Desktop 或 iPhone 打开内置 Tailscale 教程,开启跨网络连接,再扫描 HTTPS 二维码。
5. 进入项目,新建或继续会话;所有执行仍由电脑完成。

进一步阅读:iOS TestFlight 与源码安装说明、Tailscale 中文教程、隐私政策、支持说明和 App Review 说明。

Android Remote(GitHub 正式版)

[!IMPORTANT]
v0.4.0 是首个提供签名 Android APK 的 GitHub 正式版,要求 Android 8.0 或更高版本,并需要同一 Release 中配套的 DSH Desktop。当前尚未通过 Google Play 分发。

本地优先配对与离线 Demo · 对话、队列和审批控制

Android 与 iOS 复用相同的本地优先 Remote v1 协议、二维码格式、Desktop LAN 代理和 Tailscale HTTPS 流程。当前实现包括加密多电脑存储、项目和会话、完整对话与轨迹、queue/steer、审批与结构化问题、图片与引用、模型、Goal/Plan、多层子代理、本地通知、离线 Demo、英文、简体中文、深色外观和 TalkBack 语义。

安装步骤:

1. 打开 v0.5.0 正式版页面,在电脑安装该页面提供的 Desktop 包。
2. 在 Android 8.0 或更高版本的设备下载 DSH-Remote-Android-v0.5.0.apk。系统询问时,可以临时为打开文件的浏览器或文件管理器允许“安装未知应用”。
3. 把 APK 的 SHA-256 与同一 Release 中 SHA256SUMS.txt 的对应记录进行比较。
4. 先体验离线 Demo,或在 Desktop 选择 设置 → 通用 → 手机 Remote → 连接手机 并扫描二维码。

同一 Wi-Fi 直连带认证但没有加密,只能用于受信任的私有网络。使用蜂窝网络、异地网络或不受信任的 Wi-Fi 时,请改用私有 Tailscale Serve HTTPS,绝对不要使用 Funnel。相机和通知权限均为可选。二维码图像只在设备端处理,但内置的 Google ML Kit 扫描组件会向 Google 发送隐私政策所述的诊断与使用指标。

电脑必须保持在线并运行 Desktop 与 Harness。本地通知只提供尽力提醒,设备差异和已知边界记录在 Android 指南中。完整说明见 Android 中文安装与支持指南、英文指南、支持说明和平台中立 Remote 协议。

下载

Desktop 安装包和 Android APK 均位于最新稳定 GitHub Release。iPhone 可安装版本通过公开 TestFlight 内测提供。

| 当前稳定版 | 架构 | 文件 |
| macOS | Apple Silicon | DSH-Desktop-0.5.0-mac-arm64.dmg |
| macOS | Intel | DSH-Desktop-0.5.0-mac-x64.dmg |
| Windows 10/11 | x64 安装版 | DSH-Desktop-0.5.0-win-x64.exe |
| Windows 10/11 | x64 便携版 | DSH-Desktop-0.5.0-win-x64.zip |
| Android 8.0+ | 通用 APK | DSH-Remote-Android-v0.5.0.apk |
| iPhone,iOS 17+ | 公开内测 | TestFlight 邀请链接 |

正式版还提供 macOS ZIP 与用于完整性校验的 SHA256SUMS.txt。GitHub 不提供通用 iOS IPA。

Desktop 快速开始

1. 安装并打开 DSH Desktop。
2. 进入 设置 → 模型,配置模型服务商和 API Key。
3. 添加或选择工作区。
4. 新建 Harness 会话。
5. 所选模型支持图片输入时,粘贴或附加一张图片。

配置、工作区和会话与官方 CLI 使用相同的 DSH_HOME,默认位于 ~/.dsh。

插件与恢复

在 macOS 打开 设置 → 插件 → 安装与管理。安装器接受 npm 包、github:owner/repo、公开 GitHub HTTPS 地址,也可以直接粘贴下面的完整命令。

dsh plugin --profile web add github:owner/repo

桌面端只解析受支持的安装命令,不会通过 shell 执行粘贴的文本,并会确认 Harness 能否正常重启。启动失败时,应用会恢复之前的插件配置。第三方插件会在本机运行代码,安装前请检查来源与发布者。

架构

iPhone Remote ── 带认证的同一 Wi-Fi / Tailnet HTTPS ──┐ Android Remote ─ 带认证的同一 Wi-Fi / Tailnet HTTPS ──┤ ↓ 桌面宿主 ─────────────→ 仅回环地址的 dsh web → 官方 Harness UI / 运行时 └───────────────── 共用 DSH_HOME,保存设置、会话和插件

本项目不分叉或重新实现 Harness agent 运行时,只负责桌面打包、进程生命周期、导航边界、故障恢复、原生集成和发行验证。

开发

开发环境需要 Node.js 22.19 或更高版本。

git clone https://github.com/chokwinlee/deepseek-harness-desktop.git
cd deepseek-harness-desktop
npm ci
npm test
npm start

运行 npm run build:mac 构建 macOS Tauri 发行包,运行 npm run dist 构建 Windows Electron 发行包。涉及打包的变更还应通过发行工作流中的真实运行时检查。

在 Xcode 中打开 ios/DSHRemote/DSHRemote.xcodeproj 即可构建 iOS 客户端。iOS App 没有第三方 package 依赖,要求 iOS 17 或更高版本。

使用 JDK 17 与 Android SDK 37 构建 Android 客户端:

cd android
./gradlew testDebugUnitTest compileDebugAndroidTestKotlin lintDebug validateDebugScreenshotTest assembleDebug assembleRelease bundleRelease

项目

- 提交 Pull Request 前请阅读 CONTRIBUTING.md。
- 安全问题请按照 SECURITY.md 私下报告。
- 产品与界面决策遵循 PRODUCT.md。
- 桌面宿主采用 MIT 许可证;Harness 与内置依赖保留各自许可证,详见 THIRD_PARTY_NOTICES.md。
预览分享卡片长什么样 ↓chokwinlee/deepseek-harness-desktop
分享 · DeepSeek Harness Hub
chokwinlee/deepseek-harness-desktop

轻量、自包含的 DeepSeek Harness 桌面宿主,以及原生 iPhone 与 Android Remote。

回到顶部