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

桌面客户端 foolgry/dsh-desktop

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

下载安装即用,无需 Node 环境即可运行 AI 任务

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

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

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

状态速览

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

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

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

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

展开查看检查明细 ↓

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

✓npm 包dsh-desktop @ 0.2.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✗dsh CLI 依赖要求 0.1.5-rc.3 · 最新 0.2.1-rc.5 不兼容
✓入口文件main/exports/bin 已声明

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

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

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 76 处,展示前 31 条)
  • 写入本地文件
    src/main.ts:75
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    src/main.ts:126
    writeFileSync(file, BROWSE_PICKER_PATCH, 'utf8')
  • 读取本地文件
    src/main.ts:200
    stat = lstatSync(link)
  • 删除本地文件
    src/main.ts:207
    unlinkSync(link)
  • 读取本地文件
    src/main.ts:228
    if (existsSync(marker)) return
  • 读取本地文件
    src/main.ts:231
    const version = (JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8')) as { version?: string }).version ?? '0.0.0'
  • 写入本地文件
    src/main.ts:236
    mkdirSync(profileDir, { recursive: true })
  • 读取本地文件
    src/main.ts:238
    if (existsSync(manifestPath)) {
  • 读取本地文件
    src/main.ts:239
    manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) as ProfileManifest
  • 读取本地文件
    src/main.ts:251
    if (!existsSync(patchPath)) writeFileSync(patchPath, PROFILE_PATCH_TEMPLATE)
  • 写入本地文件
    src/main.ts:251
    if (!existsSync(patchPath)) writeFileSync(patchPath, PROFILE_PATCH_TEMPLATE)
  • 写入本地文件
    src/main.ts:253
    if (!existsSync(workspacePath)) writeFileSync(workspacePath, PROFILE_PNPM_WORKSPACE)
  • 写入本地文件
    src/main.ts:270
    writeFileSync(manifestPath, JSON.stringify(manifest, undefined, 2) + '\n')
  • 执行外部命令来自配置/变量
    src/main.ts:405
    const child = spawn(process.execPath, args, {
  • 发起网络请求
    src/main.ts:447
    await fetch(`http://127.0.0.1:${port}/`)
  • 执行外部命令来自配置/变量
    src/main.ts:710
    return spawnSync(brew, ['list', '--cask', BREW_CASK], { stdio: 'ignore' }).status === 0
  • 执行外部命令固定命令
    src/main.ts:733
    const out = spawnSync('/usr/sbin/scutil', ['--proxy'], { encoding: 'utf8' }).stdout ?? ''
  • 执行外部命令来自配置/变量
    src/main.ts:757
    const child = spawn(command, args, { env: { ...process.env, ...systemProxyEnv() } })
  • 读取本地文件
    src/safe-mode.ts:56
    if (!existsSync(logPath)) return ''
  • 读取本地文件
    src/safe-mode.ts:57
    const content = readFileSync(logPath, 'utf8')
  • 读取本地文件
    src/safe-mode.ts:113
    const content = existsSync(patchPath) ? readFileSync(patchPath, 'utf8') : ''
  • 读取本地文件
    src/safe-mode.ts:113
    const content = existsSync(patchPath) ? readFileSync(patchPath, 'utf8') : ''
  • 写入本地文件
    src/safe-mode.ts:119
    writeFileSync(patchPath, (head === '' ? '' : `${head}\n`) + block, 'utf8')
  • 读取本地文件
    src/safe-mode.ts:132
    return JSON.parse(readFileSync(manifestPath, 'utf8')) as ProfileManifest
  • 写入本地文件
    src/safe-mode.ts:136
    writeFileSync(manifestPath, JSON.stringify(manifest, undefined, 2) + '\n', 'utf8')
  • 读取本地文件
    src/safe-mode.ts:173
    const patchBackup = existsSync(patchPath)
  • 写入本地文件
    src/safe-mode.ts:175
    renameSync(patchPath, `${patchPath}.safe-backup`)
  • 写入本地文件
    src/safe-mode.ts:176
    writeFileSync(patchPath, '[]\n', 'utf8')
  • 写入本地文件
    src/safe-mode.ts:180
    if (homePatchBackup) renameSync(homePatchPath, `${homePatchPath}.safe-backup`)
  • 写入本地文件
    src/safe-mode.ts:223
    writeFileSync(statePath, JSON.stringify({ actions }, undefined, 2) + '\n', 'utf8')
  • 删除本地文件
    src/safe-mode.ts:280
    rmSync(statePath, { force: true })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 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
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 下载即用
  • 无需Node环境
  • 运行AI任务

DeepSeek 桌面版客户端(社区构建,非官方):下载即用,无需 Node。DeepSeek Harness 的桌面版,下载就能跑,Electron 外壳,不用装 npm。

README

由 DeepSeek 最新模型翻译生成
DSH Desktop DeepSeek Harness 的桌面安装版——下载安装即用,无需安装 Node.js、无需使用 npm、无需打开终端。安装后打开应用,在界面里填入你的 DeepSeek API Key,就能开始让 AI 帮你跑任务(读写文件、执行命令、写代码、自动化操作等)。 如果你在找「DeepSeek 桌面版」「DeepSeek 客户端下载」「DeepSeek Agent 电脑版」,这就是为你准备的。支持 macOS(Apple Silicon)和 Windows,安装包见下方 Releases。 ⚠️ 这是社区(非官方)构建。上游 DeepSeek Harness 采用 MIT 协议开源,本仓库只是 Electron 桌面外壳和自动打包脚本,不是 DeepSeek 官方产品。DeepSeek 的名称和鲸鱼 Logo 为 DeepSeek 的商标,此处仅用于标识所打包的上游软件。 📖 文档站:foolgry.github.io/dsh-desktop/zh —— 遇到问题或有建议?欢迎到 Issues 反馈。
展开完整文档(README 剩余 1 节)
DSH Desktop

DeepSeek Harness 的桌面安装版——下载安装即用,无需安装 Node.js、无需使用 npm、无需打开终端。安装后打开应用,在界面里填入你的 DeepSeek API Key,就能开始让 AI 帮你跑任务(读写文件、执行命令、写代码、自动化操作等)。

如果你在找「DeepSeek 桌面版」「DeepSeek 客户端下载」「DeepSeek Agent 电脑版」,这就是为你准备的。支持 macOS(Apple Silicon)和 Windows,安装包见下方 Releases。

⚠️ 这是社区(非官方)构建。上游 DeepSeek Harness 采用 MIT 协议开源,本仓库只是 Electron 桌面外壳和自动打包脚本,不是 DeepSeek 官方产品。DeepSeek 的名称和鲸鱼 Logo 为 DeepSeek 的商标,此处仅用于标识所打包的上游软件。

📖 文档站:foolgry.github.io/dsh-desktop/zh —— 遇到问题或有建议?欢迎到 Issues 反馈。

下载安装

到 Releases 页面下载最新版本:

- macOS(Apple Silicon / M 系列芯片):推荐用 Homebrew 安装,一条命令搞定(xattr -cr 清除未公证应用的隔离属性,避免「已损坏」提示;后续还能在 App 内一键更新,见下):
brew install --cask foolgry/tap/dsh-desktop && xattr -cr "/Applications/DSH Desktop.app"

也可以下载 DSH-Desktop--mac-arm64.dmg 手动安装:未签名,首次打开如果提示"无法验证开发者",右键点应用 → 打开;若提示「已损坏」,在终端执行一次上面的 xattr 命令即可。
- Windows(64 位):下载 DSH-Desktop--win-x64-setup.exe
- SmartScreen 会提示风险:点 更多信息 → 仍要运行

每个 Release 附带 SHA256SUMS 校验清单,可用于验证安装包完整性。

下载慢或无法访问 GitHub?

可以给下载链接加一个 GitHub 加速前缀(如 https://ghfast.top/)用浏览器下载;Homebrew 用户可以经加速前缀把安装包下载到 brew 缓存后正常安装,sha256 校验照常执行:

curl -L -o "$(brew --cache --cask foolgry/tap/dsh-desktop)" \
"https://ghfast.top/https://github.com/foolgry/dsh-desktop/releases/download//DSH-Desktop--mac-arm64.dmg"
brew install --cask foolgry/tap/dsh-desktop && xattr -cr "/Applications/DSH Desktop.app"

加速域名是第三方公共服务,会不定期失效,换一个当时可用的即可;完整性与下载途径无关(SHA256SUMS + cask 内置 sha256 校验)。详见文档站。

应用启动时会自动检查更新(每 4 小时一次),也可以随时手动触发:macOS 点菜单栏「DSH Desktop → 检查更新…」,Windows 按 Alt 显示窗口菜单后点「帮助 → Check for Updates…」,或右键托盘图标选「检查更新…」:

- Windows:后台自动下载,弹窗点「Restart and update」即重启完成更新;不点也会在下次退出应用时自动安装
- macOS(未签名,无法自我更新):弹窗提示更新。如果是用 Homebrew 安装的,点「Update via Homebrew」会自动执行 brew upgrade --cask dsh-desktop + xattr -cr 并重启完成更新;否则点按钮跳转到 Releases 页手动下载

使用

1. 安装后打开 DSH Desktop
2. 在界面的设置里填入你的 DeepSeek API Key(和网页版操作一样)
3. 开始对话,让 AI 帮你完成任务

你的数据(对话、配置、会话)存在系统应用数据目录,不会污染你的用户目录。日志在同目录的 logs/dsh.log,日志和数据目录都可以从托盘菜单直接打开。

它是怎么工作的

- 应用内置了 Electron 自带的 Node.js 运行时和官方发布的 @deepseek-ai/dsh 包,不会在你的系统里安装任何东西;插件市场在线安装插件由内置的独立版 pnpm 完成,同样无需系统 Node / npm / Homebrew
- 启动时在本机回环地址起一个 dsh web 服务(默认 3080 端口,被占用则自动用 3081、3082…),只监听 127.0.0.1,不对外暴露
- 用原生窗口加载这个界面,体验和桌面软件一致
- 关闭窗口不会退出应用:点 × 只是最小化到系统托盘,正在运行的任务继续在后台执行;点托盘图标(或菜单里的「Show DSH Desktop」)可重新打开窗口,彻底退出请用托盘菜单的「Quit」(或 macOS 的 Cmd+Q)

我们刻意不做什么

边界和功能同样重要。这个项目刻意保持为「官方 UI 的极简桌面壳」:

- 不改上游、不 fork:始终运行官方发布的 @deepseek-ai/dsh 并每天自动跟进新版本——你得到的是与 CLI 用户完全一致的最新官方能力,而不是一个被二次修改后逐渐过期的分叉
- 不重做界面:窗口里就是官方 Web UI 原样。皮肤、终端、侧边栏等增强属于插件生态(应用内已内置插件市场),由你自行选择安装,而不是由桌面壳替你决定
- 不往系统里装东西:不安装 Node、不修改 PATH、不写系统配置;一切都在应用自己的数据目录里,卸载即净
- 不锁版本:没有「固定在某个旧版本」的选项。上游某个版本出了问题,通常一天内就有修复构建;急用可暂时切回 CLI

如果你需要内置终端、换肤、多版本管理等深度定制,社区里有更重的客户端(如 EAC、anywhere-labs 的 DSH Desktop 等),各有所长,按需选择。

自动同步与打包

sync-and-release.yml 在北京时间每天 9:00 / 13:00 / 17:00 自动运行:

1. 检查 npm 上 @deepseek-ai/dsh 是否有新版本;没有则跳过
2. 有新版本就更新依赖、打 tag、构建 macOS(dmg + zip)和 Windows(nsis)安装包,发布到 Releases

桌面版版本号跟随上游:0.1.0-rc.6.6 表示"基于上游 0.1.0-rc.6 的第 6 个桌面构建"。

微信交流群

使用上有问题、想提建议,欢迎扫码进群交流:

微信群二维码 7 天内有效。如果扫码提示已过期,请到 Issues 留言,我们会更新二维码。

本地开发

需要 Node.js ^22.19 || >=24、pnpm、just。

just install # 安装依赖 just dev # 编译并以源码方式启动应用 just sync # 检查上游新版本并更新 just dist-mac # 构建 macOS 安装包到 dist-installer/ just dist-win # 构建 Windows 安装包(在 Windows/CI 上)

许可证

桌面外壳代码:MIT。DeepSeek Harness 本体为 MIT © DeepSeek;打包的第三方依赖见上游 THIRD_PARTY_NOTICES.md。
预览分享卡片长什么样 ↓foolgry/dsh-desktop
分享 · DeepSeek Harness Hub
foolgry/dsh-desktop

下载安装即用,无需 Node 环境即可运行 AI 任务

这是你的仓库?认领条目

回到顶部