开箱即聊,主题配色随你调,任务面板追踪进度
33.3/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:要求 dsh 0.1.1-rc.2,而最新版为 0.2.1-rc.2;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 988hj7tczd-oss/harness-desktop该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 64 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装要求 dsh 0.1.1-rc.2,而最新版为 0.2.1-rc.2;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包harness-desktop @ 0.1.4
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✗dsh CLI 依赖要求 0.1.1-rc.2 · 最新 0.2.1-rc.2 不兼容
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/19 20:26:25
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0🔴 扫描:高危尚无人工评估
静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。
安装时即执行脚本命令参数由运行时变量拼接读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 81 处,展示前 57 条)
- 读取本地文件scripts/ensure-electron.mjs:29
if (!existsSync(electronDir)) { - 读取本地文件scripts/ensure-electron.mjs:37
if (existsSync(bin)) { - 执行外部命令来自配置/变量scripts/ensure-electron.mjs:48
const res = spawnSync(process.execPath, [installScript], { - 读取本地文件scripts/ensure-electron.mjs:53
if (res.status === 0 && existsSync(bin)) { - 发起网络请求adapter/dsh-client.ts:81
res = await fetch(`${this.baseUrl}/api/${method}`, { - 发起网络请求adapter/dsh-client.ts:109
const res = await fetch(`${this.baseUrl}/api/host.describe`, { - 发起网络请求adapter/dsh-client.ts:126
return this.request('host.describe', {}) - 发起网络请求adapter/dsh-client.ts:130
return this.request('session.list', {}) - 发起网络请求adapter/dsh-client.ts:134
return this.request('session.create', payload) - 发起网络请求adapter/dsh-client.ts:138
return this.request('session.history', payload) - 读取本地文件electron/credential-store.ts:22
if (!existsSync(file)) return {} - 读取本地文件electron/credential-store.ts:23
const parsed = JSON.parse(readFileSync(file, 'utf8')) as Record<string, unknown> - 写入本地文件electron/credential-store.ts:36
mkdirSync(dirname(file), { recursive: true }) - 写入本地文件electron/credential-store.ts:37
writeFileSync(file, `${JSON.stringify(map, null, 2)}\n`, 'utf8') - 读取本地文件electron/dsh-manager.ts:28
if (existsSync(c)) return c - 读取本地文件electron/dsh-manager.ts:39
if (fromNpm && existsSync(fromNpm)) { - 执行外部命令表达式求值electron/dsh-manager.ts:174
private async spawn(): Promise<void> { - 执行外部命令来自配置/变量electron/dsh-manager.ts:184
const child = spawn(exec, args, { - 读取本地文件electron/ipc.ts:187
if (existsSync(sessionDir)) rmSync(sessionDir, { recursive: true, force: true }) - 删除本地文件递归electron/ipc.ts:187
if (existsSync(sessionDir)) rmSync(sessionDir, { recursive: true, force: true }) - 写入剪贴板electron/ipc.ts:197
clipboard.writeText(String(text ?? '')) - 读取本地文件electron/ipc.ts:232
const stat = statSync(path) - 读取本地文件electron/ipc.ts:238
const buf = readFileSync(path) - 发起网络请求electron/ipc.ts:327
const res = await fetch( - 写入本地文件electron/ipc.ts:337
writeFileSync(save.filePath, buf) - 写入本地文件electron/ipc.ts:353
writeFileSync(save.filePath, content, 'utf8') - 请求外部主机api.deepseek.comelectron/ipc.ts:371
const res = await fetch('https://api.deepseek.com/models', { - 发起网络请求electron/ipc.ts:371
const res = await fetch('https://api.deepseek.com/models', { - 读取本地文件electron/memory.ts:24
if (!existsSync(file)) { - 读取本地文件electron/memory.ts:28
const parsed = JSON.parse(readFileSync(file, 'utf8')) as MemoryUnit - 写入本地文件electron/memory.ts:38
mkdirSync(join(file, '..'), { recursive: true }) - 写入本地文件electron/memory.ts:39
writeFileSync(file, `${JSON.stringify(unit, null, 2)}\n`, 'utf8') - 读取本地文件electron/profile-setup.ts:37
if (!existsSync(join(src, 'index.js'))) { - 写入本地文件electron/profile-setup.ts:43
mkdirSync(join(target, '..'), { recursive: true }) - 读取本地文件electron/profile-setup.ts:46
if (existsSync(manifestPath)) { - 读取本地文件electron/profile-setup.ts:47
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) - 写入本地文件electron/profile-setup.ts:52
writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8') - 读取本地文件electron/profile-setup.ts:65
if (!existsSync(join(profileDir, 'package.json'))) { - 读取本地文件electron/settings-store.ts:40
if (!existsSync(this.file)) return {} - 读取本地文件electron/settings-store.ts:41
return JSON.parse(readFileSync(this.file, 'utf8')) as Partial<AppSettings> - 写入本地文件electron/settings-store.ts:49
mkdirSync(dirname(this.file), { recursive: true }) - 写入本地文件electron/settings-store.ts:50
writeFileSync(this.file, JSON.stringify(this.settings, null, 2), 'utf8') - 读取本地文件scripts/after-pack.mjs:34
if (existsSync(pkgDir)) { - 执行外部命令固定命令scripts/after-pack.mjs:41
execFileSync('npm', ['pack', `${scoped}/${pkgName}`, '--pack-destination', projectRoot], { - 读取本地文件scripts/after-pack.mjs:47
const tgzFile = readdirSync(projectRoot).find((f) => f.includes(pkgName) && f.endsWith('.tgz')) - 删除本地文件递归scripts/after-pack.mjs:52
rmSync(tmpDir, { recursive: true, force: true }) - 写入本地文件scripts/after-pack.mjs:53
mkdirSync(tmpDir, { recursive: true }) - 执行外部命令固定命令scripts/after-pack.mjs:54
execFileSync('tar', ['-xzf', tgz, '-C', tmpDir], { cwd: projectRoot, stdio: 'pipe' }) - 读取本地文件scripts/after-pack.mjs:56
if (!existsSync(unpacked)) throw new Error('tarball 无 package/ 目录') - 写入本地文件scripts/after-pack.mjs:57
mkdirSync(scopedDir, { recursive: true }) - 删除本地文件递归scripts/after-pack.mjs:58
rmSync(pkgDir, { recursive: true, force: true }) - 删除本地文件递归scripts/after-pack.mjs:60
rmSync(tmpDir, { recursive: true, force: true }) - 删除本地文件scripts/after-pack.mjs:61
rmSync(tgz, { force: true }) - 读取本地文件scripts/after-pack.mjs:62
if (!existsSync(pkgDir)) throw new Error(`解包后仍不存在: ${scoped}/${pkgName}`) - 读取本地文件scripts/after-pack.mjs:76
const pkg = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf8')) - 读取本地文件scripts/after-pack.mjs:96
if (!existsSync(src)) { - 删除本地文件递归scripts/after-pack.mjs:119
rmSync(dest, { recursive: true, force: true })
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.deepseek.com
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
2 张 · 点击查看大图功能亮点
- 自定义主题配色
- 任务面板追踪进度
彩色可定制外观的 DeepSeek Harness 桌面客户端
README
由 DeepSeek 最新模型翻译生成harness-desktop — DeepSeek Harness 彩色桌面端(开箱即用版)
开箱即用的 AI 助手工作台 · DeepSeek Harness 的开箱即用桌面客户端。
下载、安装、双击、开聊——无需终端,无需配置环境。
Release License Platform English
英文 README:README_EN.md
彩色外观 · 随你配色
把这台工作台调成你的颜色:深色 / 浅色 / 跟随系统三种主题,DeepSeek 蓝 / 绿 / 紫 / 橙四种主题色,再加上字体大小与消息密度——全部即时生效、重启保留,让每一天的 Harness 都换个心情。
splash
截图
启动界面(深色)
splash
主界面(浅色 · 官方 DeepSeek Harness Web UI 集成 + 品牌)
main
特性
- 开箱即用:内置 DeepSeek Harness 引擎,装完即聊;首启 4 步向导 3 分钟上手
- 原汁原味的官方 UI:窗口直接加载引擎官方 Web UI(同源加载,非 iframe)——会话、轨迹、设置都是官方体验,不做第二套界面
展开完整文档(README 剩余 1 节)
harness-desktop — DeepSeek Harness 彩色桌面端(开箱即用版) 开箱即用的 AI 助手工作台 · DeepSeek Harness 的开箱即用桌面客户端。 下载、安装、双击、开聊——无需终端,无需配置环境。 Release License Platform English 英文 README:README_EN.md 彩色外观 · 随你配色 把这台工作台调成你的颜色:深色 / 浅色 / 跟随系统三种主题,DeepSeek 蓝 / 绿 / 紫 / 橙四种主题色,再加上字体大小与消息密度——全部即时生效、重启保留,让每一天的 Harness 都换个心情。 splash 截图 启动界面(深色) splash 主界面(浅色 · 官方 DeepSeek Harness Web UI 集成 + 品牌) main 特性 - 开箱即用:内置 DeepSeek Harness 引擎,装完即聊;首启 4 步向导 3 分钟上手 - 原汁原味的官方 UI:窗口直接加载引擎官方 Web UI(同源加载,非 iframe)——会话、轨迹、设置都是官方体验,不做第二套界面 - 官网同源背景皮肤:复刻 DeepSeek Harness 官网 hero 的 WebGL2 流体辉光背景(深/浅双主题配方、鼠标辉光交互、低配机自动降级静态渐变),官方界面侧栏/输入区同步质感 - 一键更新:左下角「更新」按钮自动发现新版本——后台静默下载、进度可视化、一键重启安装;保持最新则无打扰 - 流式聊天:打字机输出 + 思考过程可视化,如 ChatGPT 般顺滑 - 任务面板:任务追踪 / 自动复盘 / 失败重试,一条消息一个任务 - Agent 进化:记忆自动沉淀(偏好/项目约定/成功做法)+ 同类任务自动提炼技能,越用越顺手 - 安全:严格 CSP / 单实例锁 / 附件限制 / safeStorage 密钥加密 - 系统托盘常驻:关闭最小化到托盘,后台持续运行 - 三平台原生构建:GitHub Actions 矩阵,macOS / Windows / Linux 各自在原生 runner 上构建 快速开始 安装(三平台) macOS / Windows / Linux 安装包:GitHub Releases 下载对应平台安装包(dmg / exe / AppImage / deb) npm 一键安装(自动下载对应平台安装包): npm install -g harness-desktop npm 新版默认拦截安装脚本,如需自动下载安装包加参数: npm install -g --allow-scripts=harness-desktop harness-desktop harness-desktop # 启动安装 Homebrew(macOS): brew tap 988hj7tczd-oss/harness-desktop brew install harness-desktop 直接下载: | 平台 | 安装包 | | macOS Apple Silicon | harness-desktop-0.1.4-arm64.dmg | | macOS Intel | harness-desktop-0.1.4.dmg | | Windows x64 | harness-desktop.Setup.0.1.4.exe | | Linux x64 | harness-desktop-0.1.4.AppImage / harness-desktop_0.1.4_amd64.deb | 国内加速(Gitee 镜像):https://gitee.com/jerryweizhihao/harness-desktop 首启运行 → 4 步向导(欢迎 → 配置 API Key → 选择工作区 → 完成)→ 开始对话 API Key:前往 platform.deepseek.com 获取(示例中所有密钥均为占位符 YOUR_API_KEY) 未提供安装包时可用开发模式运行: pnpm install pnpm dev 命令行使用 npm 一键安装 + 启动: 安装(自动下载对应平台安装包) npm install -g harness-desktop npm 新版默认拦截安装脚本,如需自动下载加参数: npm install -g --allow-scripts=harness-desktop harness-desktop 启动安装(打开已下载的 dmg/exe/AppImage) harness-desktop 检查是否已下载 harness-desktop --check Homebrew(macOS): brew tap 988hj7tczd-oss/harness-desktop brew install harness-desktop 直接下载安装包: macOS (Apple Silicon) curl -L -o harness-desktop.dmg "https://github.com/988hj7tczd-oss/harness-desktop/releases/download/v0.1.4/harness-desktop-0.1.4-arm64.dmg" Windows curl -L -o harness-desktop.exe "https://github.com/988hj7tczd-oss/harness-desktop/releases/download/v0.1.4/harness-desktop.Setup.0.1.4.exe" Linux curl -L -o harness-desktop.AppImage "https://github.com/988hj7tczd-oss/harness-desktop/releases/download/v0.1.4/harness-desktop-0.1.4.AppImage" chmod +x harness-desktop.AppImage && ./harness-desktop.AppImage 国内加速(Gitee 镜像):https://gitee.com/jerryweizhihao/harness-desktop 开发指南 pnpm install # 安装依赖 pnpm dev # 开发模式:vite + electron(HMR) pnpm build # 构建 renderer + main pnpm test # 运行单元测试(Vitest) pnpm typecheck # TS 类型检查 pnpm dist # 打包 macOS dmg + Windows exe(输出到 out/) pnpm dist:mac # 仅 macOS pnpm dist:win # 仅 Windows macOS 签名与公证流程见 docs/SIGNING.md。 技术栈 - 引擎:DeepSeek Harness @deepseek-ai/dsh@0.1.1-rc.2(跟踪官方 latest,同步官方功能) - 桌面壳:Electron 43 + electron-builder - 前端:React 18 + TypeScript + Vite(手写 CSS + --dsw- token,无重型 UI 库) - 隔离层:adapter/ 独立封装 dsh API,上游变更只改 adapter,renderer 永不见 dsh 原始字段 DSH 生态 - 📦 awesome-dsh-plugin — DeepSeek Harness 插件精选列表(本项目已收录于 Desktop Clients 板块) - 🖱️ dsh-computer-use — Computer Use 插件:给 harness-desktop 增加"虚拟鼠标真人操作"能力 - 🌐 独立站:aibunkhouse.com · 工具页:aibunkhouse.com/tools 已知限制(诚实标注) - 未签名:当前 macOS/Windows 产物未做代码签名/公证,安装时系统可能提示"无法验证开发者";macOS 应用内自动更新依赖代码签名(未签名时静默跳过,请用 GitHub Release 手动下载更新);签名流程见 docs/SIGNING.md - 体积:安装包约 130-230MB(内置完整 dsh 引擎 + Electron 框架) - 三平台:macOS / Windows / Linux 均已在各自原生环境构建(GitHub Actions 矩阵),Windows 已实机验证可用 - dsh 引擎:处于 rc 预览期,本项目跟踪官方 latest 0.1.1-rc.2 License MIT 非 DeepSeek 官方产品,与 DeepSeek 无附属关系;DeepSeek Harness 为 DeepSeek AI 的开源项目。*
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
988hj7tczd-oss/harness-desktop
开箱即聊,主题配色随你调,任务面板追踪进度
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1