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

桌面启动器 linuxlemon256/dsh-desktop

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

双击启动本地服务,自动拉起并清理进程

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add linuxlemon256/dsh-desktop
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 78 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 34 处,展示前 20 条)
  • 读取本地文件
    src/main.js:31
    if (fs.existsSync(DEBUG_LOG) && fs.statSync(DEBUG_LOG).size > DEBUG_LOG_MAX_BYTES) {
  • 写入本地文件
    src/main.js:32
    fs.writeFileSync(DEBUG_LOG, '');
  • 写入本地文件
    src/main.js:35
    fs.appendFileSync(DEBUG_LOG, `[${new Date().toISOString()}] ${msg}\n`);
  • 读取本地文件
    src/main.js:58
    return fs.existsSync(BUNDLED_NODE) && fs.existsSync(BUNDLED_DSH);
  • 读取本地文件
    src/main.js:62
    return fs.existsSync(BUNDLED_NODE) && fs.existsSync(BUNDLED_PNPM);
  • 读取本地文件
    src/main.js:72
    return fs.existsSync(path.join(settingsPluginDir(), 'package.json')) &&
  • 读取本地文件
    src/main.js:73
    fs.existsSync(path.join(settingsPluginDir(), 'lib', 'client.js'));
  • 读取本地文件
    src/main.js:83
    if (fs.existsSync(BUNDLED_BIN)) {
  • 写入本地文件
    src/main.js:126
    fs.mkdirSync(path.dirname(configPath()), { recursive: true });
  • 写入本地文件
    src/main.js:127
    fs.writeFileSync(configPath(), JSON.stringify(cfg, null, 2));
  • 发起网络请求
    src/main.js:171
    const req = http.get(`http://${HOST}:${port}/`, (res) => {
  • 执行外部命令固定命令
    src/main.js:189
    execFile('netstat', ['-ano', '-p', 'tcp'], { windowsHide: true }, (err, stdout) => {
  • 执行外部命令固定命令
    src/main.js:211
    execFile('tasklist', ['/FO', 'CSV', '/NH'], { windowsHide: true }, (err, stdout) => {
  • 发起网络请求
    src/main.js:268
    const req = http.get(serverUrl(), (res) => {
  • 发起网络请求
    src/main.js:294
    const req = http.get(serverUrl(), (res) => {
  • 执行外部命令来自配置/变量
    src/main.js:314
    execFile(lookup, ['dsh'], (err, stdout) => {
  • 执行外部命令来自配置/变量
    src/main.js:336
    dshProc = execFile(BUNDLED_NODE, [BUNDLED_DSH, ...dshArgs()], {
  • 执行外部命令来自配置/变量
    src/main.js:342
    dshProc = execFile(comspec, ['/d', '/s', '/c', dshCommandLine()], {
  • 执行外部命令固定命令
    src/main.js:347
    dshProc = spawn('dsh', dshArgs(), { detached: true, env: runtimeEnv() });
  • 写入本地文件
    src/main.js:780
    fs.writeFileSync(wsFile, updated);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 双击启动本地服务
  • 自动拉起进程
  • 自动清理进程

DeepSeek Harness 的轻量桌面客户端。

README

由 DeepSeek 最新模型翻译生成
dsh-desktop 🖥️🐋 「我就想双击一下」版 DeepSeek Harness 桌面客户端。 不用终端、不用 dsh web、不用担心「这台机器怎么连 Node.js 都没有」—— dsh-desktop 把一切都打包好了,自动拉起服务,关窗时还会乖乖收拾残局。 License: MIT Electron Platform 为什么需要它?🤔 DeepSeek Harness 以 CLI 形式分发,界面藏在 dsh web 后面——这意味着你需要终端、浏览器标签页,外加几秒钟的「服务到底还活着没」的焦虑。 如果你更想双击一个东西而不是敲一行命令——有任务栏图标,关窗自动清理——这个项目就是来补这块缺口的。 功能特性 ✨ - 一键启动 —— dsh web 服务没在运行时自动拉起 - 复用已有服务 —— 服务已经在跑就直接连上,绝不误杀它没拉起的进程(它很有素质) - 零环境依赖 —— Node.js、dsh CLI、pnpm 全部打进安装包,你的机器保持「素颜」 - 生命周期干净 —— 退出时终止自己拉起的进程树。
展开完整文档(README 剩余 1 节)
dsh-desktop 🖥️🐋

「我就想双击一下」版 DeepSeek Harness 桌面客户端。

不用终端、不用 dsh web、不用担心「这台机器怎么连 Node.js 都没有」—— dsh-desktop 把一切都打包好了,自动拉起服务,关窗时还会乖乖收拾残局。

License: MIT
Electron
Platform

为什么需要它?🤔

DeepSeek Harness 以 CLI 形式分发,界面藏在 dsh web 后面——这意味着你需要终端、浏览器标签页,外加几秒钟的「服务到底还活着没」的焦虑。

如果你更想双击一个东西而不是敲一行命令——有任务栏图标,关窗自动清理——这个项目就是来补这块缺口的。

功能特性 ✨

- 一键启动 —— dsh web 服务没在运行时自动拉起
- 复用已有服务 —— 服务已经在跑就直接连上,绝不误杀它没拉起的进程(它很有素质)
- 零环境依赖 —— Node.js、dsh CLI、pnpm 全部打进安装包,你的机器保持「素颜」
- 生命周期干净 —— 退出时终止自己拉起的进程树。没有僵尸、没有孤儿、没有「到底谁在吃我内存」
- 单实例保护 —— 重复启动只聚焦已有窗口,不会出现两个服务抢一个端口
- 端口可配置 —— 设 DSH_PORT(默认 3080),说改就改
- 端口设置界面 —— 在 dsh 设置页「Web UI 插件」栏目里直接改服务端口、扫描端口占用;启动时若端口被其他程序占用,会提供空闲端口
- 跨平台 —— Windows / macOS / Linux,任君挑选

环境要求 📦

安装包什么都不需要。 Node.js、dsh、pnpm —— 全在里面。
安装 → 双击 → 完事。就这么简单,趁这功夫去泡杯咖啡。

只有从源码跑的人(懂,我们都懂)才需要:

- Node.js >= 22.12
- 全局安装 dsh CLI:

npm install -g @deepseek-ai/dsh

快速开始 🚀

git clone https://github.com/linuxlemon256/dsh-desktop.git
cd dsh-desktop
npm install
npm start

配置项 🎛️

| 环境变量 | 默认值 | 说明 |
| DSH_PORT | 3080 | dsh web 服务的 TCP 端口(设置后以 dsh web --port 传递) |
| DSH_SKIP_PLUGIN_INSTALL | 未设置 | 设为 1 跳过 IDE 工作台的自动安装 |

扩展 UI(社区插件)🧩

dsh web profile 支持第三方插件,给 harness 界面加 IDE 级功能。
应用会在首次启动时自动装好下面的 IDE 工作台(当 web profile 里没有时)——拉下来启动就能用,无需手动配置。想保持「原味」就设 DSH_SKIP_PLUGIN_INSTALL=1。
首次启动因为要装插件会稍慢,就当是它预支了你的耐心。

1. IDE 工作台:dsh-better-sidebar(推荐,自动安装)🛠️

在 harness 里直接获得完整工作台,不用再开一个 IDE。真的:

- 文件工作台:懒加载目录树 + CodeMirror 编辑器
- 真实终端:xterm.js + node-pty
- Git 面板:VSCode 式 diff(暂存/提交/还原)
- 内嵌浏览器、后台任务页、可拆分分栏布局

手动安装(和应用自动装的效果一样,适合手痒党):

dsh plugin --profile web add dsh-better-sidebar

详见 dsh-better-sidebar(MIT)。

2. 文件树 + 预览面板:@linxin666/dsh-web-ui-all

一条命令装齐(Apache-2.0):

- 资源管理器面板:文件树、文件名搜索、git 变更(暂存/取消/丢弃)
- 预览面板:10+ 格式多标签预览(markdown、代码、pdf、office、图片等)
- 任务看板、git 图、皮肤中心、实时统计 等

npm install -g pnpm
dsh plugin --profile web add @linxin666/dsh-web-ui-all

pnpm ≥ 11 有点多疑:原生依赖(ssh2、node-pty)默认被拦,可能报
ERR_PNPM_IGNORED_BUILDS。遇到就打开 ~/.dsh/profiles/web/pnpm-workspace.yaml,把 allowBuilds 各项设为 true,然后重新执行一次 dsh plugin ... add——必须成功退出(退出码 0)插件才会写进 dsh.profile.bundles 并生效。

装完重启应用,打开项目会话(带工作目录的会话)就能看到效果。
面板有点害羞——得有项目在才肯露面。

构建安装包 🔨

npm run prepare:resources # 把 node + dsh + pnpm 打进 resources/(构建前必跑)
npm run build:win # Windows:NSIS 安装包
npm run build:mac # macOS:DMG(需要 macOS 机器)
npm run build:linux # Linux:AppImage(需要 Linux 机器)

产物输出到 dist/ 目录。发布官方多平台产物时,推送 v* 标签即可触发 release 工作流,GitHub Actions 会在三个平台分别构建并把文件(含 SHA256SUMS.txt)自动挂到 Release 上。
重活交给 CI,你只负责打标签。

工作原理 🧠

1. 启动时探测 http://127.0.0.1:3080 是否有 dsh web 服务在运行。
2. 1.5 秒内无响应,就用内置运行时拉起 dsh web(没有内置时才退回 PATH),设置了 DSH_PORT 时附加 --port 参数。
3. 轮询端口直到服务就绪(60 秒超时),然后在 Electron 窗口中加载界面。启动期间崩溃会自动重试(最多 3 次),并弹一个明确的错误框,绝不挂白屏。
4. 关闭窗口时终止子进程树——仅当服务是本应用拉起的。外部已运行的服务保持不动,各回各家。

完整的架构说明和与 DeepSeek Harness 的派生关系见 docs/deepseek-harness-integration.md(二次开发说明文档)。

项目结构 🗂️

dsh-desktop/
├── .github/ # Issue 与 PR 模板 ├── docs/ # DeepSeek Harness 集成说明(二次开发文档) ├── scripts/ # prepare-resources.mjs —— 打包运行时 ├── src/main.js # Electron 主进程(整个应用就这一个文件) ├── package.json ├── LICENSE # MIT └── THIRD_PARTY_NOTICES.md # 上游版权声明

路线图 🗺️

- [x] 窗口打开期间 dsh web 崩溃时自动重启 —— 已在 2.0.3 完成
- [x] 设置界面(端口) —— 已在 2.0.3 完成:dsh 设置页「Web UI 插件」栏目里有端口卡片(改端口、扫描占用)
- [ ] 设置界面(开机自启)
- [x] 安装提速 —— 已在 2.0.x 完成:裁剪内置运行时(去掉 .d.ts/.map/源码/文档/测试),NSIS 改用 useZip(直接解压、无临时暂存),安装耗时缩短约 3.5 倍

参与贡献 🤝

欢迎提交贡献!请先阅读 CONTRIBUTING.md;上报安全问题前请阅读 SECURITY.md。

许可证 📄

MIT —— 详见 LICENSE。

本项目是对 DeepSeek Harness (MIT,© 2026 DeepSeek)的二次开发,版权归属说明见 THIRD_PARTY_NOTICES.md。
预览分享卡片长什么样 ↓linuxlemon256/dsh-desktop
分享 · DeepSeek Harness Hub
linuxlemon256/dsh-desktop

双击启动本地服务,自动拉起并清理进程

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部