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

桌面宿主 Mempemp/DSH-1C-deskop-bundle

DeepSeek Harness
Mempemp19 天前有提交已提供中文文档扫描:含敏感能力

为 DeepSeek Harness 打造的本地优先、跨平台桌面应用。

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Mempemp/DSH-1C-deskop-bundle
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 19 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

✗npm 包dsh-1c-bundle(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

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

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

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

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 107 处,展示前 48 条)
  • 发起网络请求
    packages/dsh-mcp-manager/lib/client.js:294
    const response = await fetch(path, merged);
  • 写入本地文件
    packages/dsh-mcp-manager/lib/index.js:1649
    await mkdir(dir, mode === null ? { recursive: true } : { recursive: true, mode });
  • 写入本地文件
    packages/dsh-mcp-manager/lib/index.js:1656
    await writeFile(temporary, data, mode === null ? { encoding: "utf8" } : { encoding: "utf8", mode });
  • 写入本地文件
    packages/dsh-mcp-manager/lib/index.js:1657
    await rename(temporary, file);
  • 删除本地文件
    packages/dsh-mcp-manager/lib/index.js:1659
    await rm(temporary, { force: true }).catch(() => void 0);
  • 读取本地文件
    packages/dsh-mcp-manager/lib/index.js:1712
    return await readFile(file, "utf8");
  • 读取本地文件
    packages/dsh-mcp-manager/lib/index.js:1916
    if (!existsSync(dir))
  • 写入本地文件
    packages/dsh-mcp-manager/lib/index.js:1917
    await mkdir2(dir, { recursive: true });
  • 写入本地文件
    packages/dsh-mcp-manager/lib/index.js:1920
    await writeFile2(tmp, data, "utf8");
  • 写入本地文件
    packages/dsh-mcp-manager/lib/index.js:1921
    await rename2(tmp, file);
  • 删除本地文件
    packages/dsh-mcp-manager/lib/index.js:1923
    await rm2(tmp, { force: true }).catch(() => void 0);
  • 读取本地文件
    packages/dsh-mcp-manager/lib/index.js:4049
    if (!existsSync2(dir))
  • 删除本地文件
    packages/dsh-mcp-manager/lib/index.js:4056
    await rm3(tmp, { force: true }).catch(() => void 0);
  • 读取本地文件
    packages/dsh-mcp-manager/lib/index.js:4349
    if (!existsSync2(opts.cachePath))
  • 读取本地文件
    packages/dsh-mcp-manager/lib/index.js:4351
    const raw = await readFile2(opts.cachePath, "utf8");
  • 删除本地文件
    packages/dsh-mcp-manager/lib/index.js:4359
    await rm3(opts.cachePath, { force: true }).catch(() => {
  • 删除本地文件
    packages/dsh-mcp-manager/lib/index.js:4368
    await rm3(tmp, { force: true }).catch(() => {
  • 读取本地文件
    packages/dsh-mcp-manager/lib/index.js:4482
    if (!existsSync3(file))
  • 删除本地文件
    packages/dsh-mcp-manager/lib/index.js:6970
    rmSync(tmpPath, { force: true });
  • 发起网络请求
    packages/dsh-notifier-ru/lib/client.js:3610
    return fetch(ROUTES.config, { headers: { accept: "application/json" } }).then(function(r) {
  • 发起网络请求
    packages/dsh-notifier-ru/lib/client.js:3622
    return fetch(ROUTES.history, { headers: { accept: "application/json" } }).then(function(r) {
  • 发起网络请求
    packages/dsh-notifier-ru/lib/client.js:3631
    return fetch(ROUTES.status, { headers: { accept: "application/json" } }).then(function(r) {
  • 发起网络请求
    packages/dsh-notifier-ru/lib/client.js:3640
    return fetch(ROUTES.kinds, { headers: { accept: "application/json" } }).then(function(r) {
  • 发起网络请求
    packages/dsh-notifier-ru/lib/client.js:3651
    return fetch(ROUTES.health, { headers: { accept: "application/json" } }).then(function(r) {
  • 发起网络请求
    packages/dsh-notifier-ru/lib/client.js:3667
    return fetch(ROUTES.diagnostics, init).then(function(r) {
  • 读取密钥环境变量
    packages/dsh-notifier-ru/lib/index.js:6482
    if (node_process.env.LOG_TOKENS)
  • 读取本地文件
    packages/dsh-notifier-ru/lib/index.js:7926
    return { ok: true, text: readFileSync(file, "utf8") };
  • 写入本地文件
    packages/dsh-notifier-ru/lib/index.js:7934
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    packages/dsh-notifier-ru/lib/index.js:7935
    await writeFile(temporary, text, "utf8");
  • 写入本地文件
    packages/dsh-notifier-ru/lib/index.js:7936
    await rename(temporary, file);
  • 写入本地文件
    packages/dsh-notifier-ru/lib/index.js:7945
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    packages/dsh-notifier-ru/lib/index.js:7946
    writeFileSync(temporary, text, "utf8");
  • 写入本地文件
    packages/dsh-notifier-ru/lib/index.js:7947
    renameSync(temporary, file);
  • 发起网络请求
    packages/dsh-notifier-ru/lib/index.js:8653
    var defaultFetch = (url, init) => globalThis.fetch(url, init);
  • 执行外部命令来自配置/变量
    packages/dsh-notifier-ru/lib/index.js:8766
    const child = spawn(command[0], command.slice(1), options.collectStderr ? { windowsHide: true, stdio: ["ignore", "ignore", "pipe"] } : { stdio: "ignor
  • 执行外部命令来自配置/变量
    packages/dsh-notifier-ru/lib/index.js:8785
    execFile(bin, [...args], { timeout: options.timeout }, (cause) => {
  • 执行外部命令来自配置/变量
    packages/dsh-notifier-ru/lib/index.js:8795
    execFile(bin, [...args], { timeout: QUERY_TIMEOUT_MS, maxBuffer: QUERY_STDOUT_LIMIT, encoding: "utf8" }, (cause, stdout) => {
  • 读取本地文件
    packages/dsh-notifier-ru/lib/index.js:8894
    const matched = /^ID=(.*)$/mu.exec(readFileSync2(path, "utf8"))?.[1] ?? "";
  • 删除本地文件
    packages/dsh-notifier-ru/lib/index.js:8925
    unlinkSync(path);
  • 删除本地文件递归
    packages/dsh-notifier-ru/lib/index.js:8936
    rmSync(dir, { recursive: true, force: true });
  • 读取本地文件
    packages/dsh-notifier-ru/lib/index.js:8958
    existsSync: (path) => existsSync(path),
  • 执行外部命令来自配置/变量
    packages/dsh-notifier-ru/lib/index.js:8982
    spawn(command, options) {
  • 执行外部命令来自配置/变量
    packages/dsh-notifier-ru/lib/index.js:8985
    execFile(bin, args, options, done) {
  • 读取本地文件
    packages/dsh-notifier-ru/lib/index.js:8988
    existsSync(path) {
  • 发起网络请求
    packages/dsh-notifier-ru/lib/index.js:9577
    var defaultFetch2 = (url, init) => globalThis.fetch(url, init);
  • 发起网络请求
    packages/dsh-notifier-ru/lib/index.js:10201
    const req = lib.request(url, {
  • 读取本地文件
    packages/dsh-notifier-ru/lib/index.js:11918
    && (existsSync(notifyHelperPath()) || existsSync(toastScriptPath()));
  • 读取本地文件
    packages/dsh-notifier-ru/lib/index.js:12403
    text = await readFile(this.file, "utf8");
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-group@deepseek-ai/cordis-plugin-hmr@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/cordis-plugin-timer@deepseek-ai/cosmokit@deepseek-ai/dsh@deepseek-ai/dsh-acp@deepseek-ai/dsh-acp-app@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 本地优先桌面应用
  • 跨平台运行

README

由 DeepSeek 最新模型翻译生成
DSH Desktop 为 DeepSeek Harness 打造的本地优先、跨平台桌面应用。 English · 简体中文 · 日本語 · Русский · Español · Português DSH Desktop 的 Preset、模型提供方、手机控制与可编辑 PPT 生成功能 使用 DeepSeek 官方模型或主流第三方模型,管理可移植的 Agent Preset,在手机上继续 Harness 会话,并将材料生成可继续编辑的 PPTX。 DSH Desktop 把本地 DeepSeek Harness 封装为可安装的桌面应用。它会自动启动 Harness,把 Profile、插件、工作区、模型配置和会话保存在应用安装目录之外,并在本地 Runtime 就绪后直接进入完整 Harness 界面。 [!IMPORTANT] DSH Desktop 当前处于早期预览阶段,基于仍在快速迭代的 @deepseek-ai/dsh@0.2.0-rc.2。macOS 正式包已完成代码签名并通过 Apple 公证;Windows x64 安装包也已完成代码签名。随着下载量、安装量和发行者信誉逐步积累,Windows 安全提示会逐渐减少,但不会立即消失。
展开完整文档(README 剩余 1 节)
DSH Desktop

为 DeepSeek Harness 打造的本地优先、跨平台桌面应用。

English · 简体中文 · 日本語 · Русский · Español · Português

DSH Desktop 的 Preset、模型提供方、手机控制与可编辑 PPT 生成功能

使用 DeepSeek 官方模型或主流第三方模型,管理可移植的 Agent Preset,在手机上继续 Harness 会话,并将材料生成可继续编辑的 PPTX。

DSH Desktop 把本地 DeepSeek Harness 封装为可安装的桌面应用。它会自动启动 Harness,把 Profile、插件、工作区、模型配置和会话保存在应用安装目录之外,并在本地 Runtime 就绪后直接进入完整 Harness 界面。

[!IMPORTANT]
DSH Desktop 当前处于早期预览阶段,基于仍在快速迭代的 @deepseek-ai/dsh@0.2.0-rc.2。macOS 正式包已完成代码签名并通过 Apple 公证;Windows x64 安装包也已完成代码签名。随着下载量、安装量和发行者信誉逐步积累,Windows 安全提示会逐渐减少,但不会立即消失。

下载安装

我们提供稳定版和预览版:稳定版可在官网下载,推荐日常使用;预览版可在 GitHub Releases 中选择标记为 Pre-release 的版本。

预览版除了包含我们的新增功能,还会积极跟进 DeepSeek Harness 官方最新版本,可能与社区插件不兼容,不建议普通用户使用。欢迎愿意尝鲜的用户体验并在社区反馈;经尝鲜用户验证后,我们才会向全体社区用户推送。

安装版会在启动后及每六小时检查更新。发现新版本时,DSH Desktop 会先询问用户;同意后才开始下载,只有选择“重新启动并安装”后才会进入安装。你也可以从应用菜单手动检查,或跳过当前版本而不影响后续版本提示。

加入社区

使用微信扫描下方二维码,加入 DSH Desktop 微信交流群。

也可以加入 DSH Desktop Discord 社区。

DSH Desktop 带来了什么

DeepSeek Harness 已经提供 Agent Runtime 与 Web UI。DSH Desktop 在此基础上补齐真正的桌面宿主能力:

- 自动启动和停止 Harness,不需要另开 CLI 或浏览器标签页
- 通过系统原生目录选择器添加和管理项目工作区
- 支持 DeepSeek 官方模型与主流第三方模型提供方
- 将完整的自定义 Agent Preset 导入或导出为便携的 .dshpreset 压缩包,安装前检查命名冲突并提示信任风险
- 通过内置 PPT 模式将材料生成并交付为可继续编辑的 PPTX
- 在 macOS 和 Windows 自带 Python 及 Office 库,支持离线生成和检查 DOCX、PPTX、XLSX
- 应用升级时保留 Profile、插件、工作区、会话和模型配置
- 识别 Harness 启动或前端插件故障,把诊断写入 harness.log 并提供引导恢复入口
- 提供不破坏用户数据的安全模式,临时屏蔽第三方插件
- 让已配对的手机通过局域网或可选的临时公网隧道继续会话
- 在应用内检查桌面更新,并由用户决定是否下载和安装
- 针对 macOS 和 Windows 优化原生菜单、标题栏、窗口焦点、主题和品牌体验

PPT 生成

点击 PPT 按钮,选择模板,再描述你想制作的内容。内置 16 套模板、192 种版式,可输出可继续编辑的 PPTX。模板预览统一使用英文,生成内容支持中文和英文,并配有对应字体设置;预览语言不决定输出语言。

PPT 功能保持预装,相关自动提示词仅在选中 PPT 按钮的会话中生效。模板、校验和参考来源详见 PPT 说明。

手机连接

从 Harness 菜单选择“连接手机…”,再扫描配对二维码。

- WiFi 下扫码即可连接。
- 互联网隧道需要再输入电脑上显示的 6 位连接密码。默认是 5 分钟、只存在内存里的临时密码;只有在「连接手机」窗口勾选同意后,才会在本机生成长效密码。

Harness 本身始终运行在随机的 127.0.0.1 端口。手机访问由独立的配对 Bridge 提供。Cloudflare Quick Tunnel 是常态长连接路径;免费 Pinggy 是 Cloudflare 不可用时(如中国大陆)的备用通道,大约 60 分钟后失效。桌面端断开连接后,手机会话随即失效。

Cloudflare 启动失败时会尝试 Pinggy。若已显示 Cloudflare 配对链接,但手机无法打开,可点击“扫码打不开?换一条线路”切换到 Pinggy。

安全模式与故障恢复

如果第三方插件导致启动或页面渲染异常,DSH Desktop 会结合 Runtime 与前端证据定位相关插件,并打开引导式恢复界面。

从 Harness 菜单选择“以安全模式重启…”,应用会使用只包含官方核心 Bundle 的隔离 Profile 启动。正常 Profile 中的第三方插件会被屏蔽,但 Agent、会话、模型配置和工作区仍然可用。你可以从页面顶部的安全模式提示卸载选中的问题插件,或恢复正常启动。

恢复页面会检查插件是否有兼容更新;有可用版本时,可升级对应插件,安全模式还支持批量升级。需要帮助时,鼠标悬停“微信群”即可显示二维码,点击 Discord 则会打开社区链接。

当正常界面无法进入时,也可以通过 --safe-mode 启动。例如 macOS:

open -a "DSH Desktop" --args --safe-mode

本地数据与安全边界

- Harness Web UI 只运行在随机回环端口。
- Renderer 不具备 Node.js 权限,并启用 Context Isolation 与 Sandbox。
- WebView、不可信站内跳转和非预期权限请求会被阻止。
- 外部网页链接交给系统浏览器打开。
- Profile 与会话保存在 Electron 的用户级应用数据目录,不在安装目录内。
- 手机访问需要短时配对 Token。WiFi 扫码即连;互联网隧道还需要电脑上显示的连接密码。

平台支持

| 平台 | 分发形式 | 状态 |
| macOS Apple Silicon | 已签名并通过公证的 DMG/ZIP | 支持 |
| macOS Intel | 已签名并通过公证的 DMG/ZIP | 支持 |
| Windows x64 | 已完成代码签名的 NSIS 安装包 | 支持 |
| Windows ARM64 | — | 当前不支持 |
| Linux | — | 当前不支持 |

Harness 包含目标平台原生依赖,因此每一种正式安装包都在对应操作系统与架构上构建。

开发与架构

欢迎参与贡献。工程说明已拆分为独立文档:

- 开发指南 — 本地环境、验证、补丁维护与原生平台打包
- 运行架构 — 启动流程、持久化数据、安全边界、故障恢复、手机连接与更新
- 发布手册 — 签名与正式发布控制
- Preset 包格式 — 可移植 Agent Preset 契约

提交修改前请运行 npm test、npm run typecheck 和 npm run build,并实际操作受影响的应用流程。请勿在 Issue、日志、截图或测试数据中提交真实 API Key。

友情链接

dsh-market 是 DeepSeek Harness 社区插件市场,可在 Harness 界面中浏览和搜索插件、查看截图、安装或更新包、启停插件以及切换主题。

许可证

DSH Desktop 采用 MIT License 开源。

DeepSeek Harness 及其依赖仍遵循各自的上游许可证与商标规则。DSH Desktop 是独立的社区桌面应用。
预览分享卡片长什么样 ↓Mempemp/DSH-1C-deskop-bundle
分享 · DeepSeek Harness Hub
Mempemp/DSH-1C-deskop-bundle

为 DeepSeek Harness 打造的本地优先、跨平台桌面应用。

这是你的仓库?认领条目

回到顶部