dsh-unified-market — 统一插件市场DeepSeek Harness 统一插件市场
31.4/100
综合分
2
GitHub 星标
478
npm 周下载
—/5
用户评分
数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-unified-marketnpm 源 · dsh-unified-market 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 33 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-unified-market @ 0.4.1
✓Node 引擎要求 >=18.18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 06:03:12
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 92 处,展示前 49 条)
- 读取本地文件lib/host.js:249
if (existsSync(cand)) return { file: process.execPath, args: [cand], cwd: undefined } - 执行外部命令固定命令lib/host.js:345
spawn('taskkill', ['/pid', String(child.pid), '/T', '/F'], { stdio: 'ignore' }) - 执行外部命令来自配置/变量lib/host.js:400
const child = spawn(inv.file, [...inv.args, 'plugin', '--profile', profile, kind === 'uninstall' ? 'remove' : 'add', target], { - 写入本地文件lib/host.js:432
writeFileSync(join(profileDir(op.profile), '.dsh-market-pending.json'), JSON.stringify({ - 读取本地文件lib/host.js:557
const patch = readFileSync(join(profileDir(profile), 'node_modules', pkgName, 'cordis.patch.yml'), 'utf8') - 发起网络请求lib/host.js:596
const r = await fetch(`${base}/${owner}/${repo}/HEAD/package.json`, { - 写入本地文件lib/host.js:631
mkdirSync(profileDir, { recursive: true }) - 写入本地文件lib/host.js:632
writeFileSync(join(profileDir, 'package.json'), JSON.stringify({ - 写入本地文件lib/host.js:638
writeFileSync(join(profileDir, 'cordis.patch.yml'), '[]\n') - 写入本地文件lib/host.js:639
writeFileSync(join(profileDir, 'pnpm-workspace.yaml'), 'packages:\n - .\n\nnodeLinker: hoisted\nautoInstallPeers: false\n') - 删除本地文件递归lib/host.js:683
try { rmSync(home, { recursive: true, force: true, maxRetries: 3 }) } catch {} - 执行外部命令来自配置/变量lib/host.js:690
const child = spawn(exe, args, { cwd, env, stdio: ['ignore', 'pipe', 'pipe'] }) - 写入本地文件lib/host.js:732
mkdirSync(pd, { recursive: true }) - 删除本地文件递归lib/host.js:759
try { rmSync(home, { recursive: true, force: true, maxRetries: 3 }) } catch {} - 读取本地文件lib/host.js:771
if (!existsSync(marker)) return - 读取本地文件lib/host.js:772
const raw = JSON.parse(readFileSync(marker, 'utf8')) - 读取本地文件lib/host.js:796
if (!existsSync(p)) return null - 读取本地文件lib/host.js:798
writeFileSync(snap, readFileSync(p, 'utf8')) - 发起网络请求lib/host.js:1048
const r = await fetch(REGISTRY_URL, { redirect: 'follow', signal: AbortSignal.timeout(ONLINE_TIMEOUT_MS) }) - 发起网络请求lib/host.js:1055
const r = await fetch(siteCatalogUrl(locale), { redirect: 'follow', signal: AbortSignal.timeout(ONLINE_TIMEOUT_MS) }) - 发起网络请求lib/host.js:1062
const r = await fetch(CATALOG_PAGE_URL, { redirect: 'follow', signal: AbortSignal.timeout(ONLINE_TIMEOUT_MS) }) - 删除本地文件递归lib/host.js:1178
try { rmSync(profileDir(profile) + '/.dsh-market', { force: true, recursive: true, maxRetries: 3 }) } catch {} - 发起网络请求lib/host.js:1333
const r = await fetch(`${base}/${owner}/${repo}/HEAD/package.json`, { - 发起网络请求lib/host.js:1344
const r = await fetch(`${base}/${owner}/${repo}/HEAD/cordis.patch.yml`, { - 请求外部主机registry.npmjs.orglib/host.js:1369
const r = await fetch(`https://registry.npmjs.org/${encodeURIComponent(name)}/latest`, { - 请求外部主机registry.npmjs.orglib/host.js:1447
const resp = await fetch(`https://registry.npmjs.org/${encodeURIComponent(name)}`, { - 请求外部主机registry.npmjs.orglib/host.js:1497
const res = await fetch(`https://registry.npmjs.org/-/v1/search?text=${encodeURIComponent(base)}&size=10`, { - 请求外部主机registry.npmjs.orglib/host.js:1688
const res = await fetch(`https://registry.npmjs.org/-/v1/search?text=${encodeURIComponent(text)}&size=25`, { - 删除本地文件递归lib/host.js:1843
rmSync(pkgDir, { recursive: true, force: true, maxRetries: 3 }) - 执行外部命令来自配置/变量lib/host.js:1955
r = spawnSync(process.execPath, [cli, ...args], { - 执行外部命令来自配置/变量lib/host.js:1986
const child = spawn(process.execPath, [cli, ...packArgs], { - 删除本地文件递归lib/host.js:2225
try { rmSync(pkgDir, { recursive: true, force: true, maxRetries: 3 }) } catch {} - 删除本地文件lib/host.js:2551
if (file) { try { rmSync(file, { force: true, maxRetries: 3 }) } catch {} } - 发起网络请求lib/client.js:18
return fetch('/api/dsh-unified-market', { - 读取本地文件lib/artifact-keep.mjs:35
if (!existsSync(nm)) return [] - 读取本地文件lib/artifact-keep.mjs:40
try { entries = readdirSync(dir, { withFileTypes: true }) } catch { return } - 读取本地文件lib/artifact-keep.mjs:64
try { entries = readdirSync(d, { withFileTypes: true }) } catch { return } - 读取本地文件lib/artifact-keep.mjs:70
try { total += statSync(p).size } catch {} - 读取本地文件lib/artifact-keep.mjs:85
try { entries = readdirSync(s, { withFileTypes: true }) } catch { return } - 写入本地文件lib/artifact-keep.mjs:86
mkdirSync(d, { recursive: true }) - 写入本地文件lib/artifact-keep.mjs:93
copyFileSync(sp, dp) - 读取本地文件lib/artifact-keep.mjs:95
bytes += statSync(sp).size - 写入本地文件lib/artifact-keep.mjs:115
if (!existsSync(dp)) mkdirSync(dp, { recursive: true }) - 写入本地文件lib/artifact-keep.mjs:120
mkdirSync(dirname(dp), { recursive: true }) - 写入本地文件lib/artifact-keep.mjs:121
copyFileSync(sp, dp) - 删除本地文件递归lib/artifact-keep.mjs:147
rmSync(dst, { recursive: true, force: true, maxRetries: 2 }) - 写入本地文件lib/artifact-keep.mjs:148
mkdirSync(dst, { recursive: true }) - 删除本地文件递归lib/artifact-keep.mjs:198
try { rmSync(cacheRoot, { recursive: true, force: true }) } catch {} - 删除本地文件递归lib/artifact-keep.mjs:204
try { rmSync(cacheRoot, { recursive: true, force: true }) } catch {}
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:registry.npmjs.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 三源聚合插件目录
- 插件安装与更新管理
- .dshpack功能包
最近更新
在 GitHub 查看全部 →v0.3.02026-08-27
新增「📦 功能包」tab 与 pack.* host 方法(.dshpack 安装/卸载/更新/导出/回滚)。针对 DSH Desktop (EAC) 5.1 与 dsh 0.1.1-rc.2 完成专项适配测试。附件为预构建 tarball,可直接安装。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-unified-market — 统一插件市场(DeepSeek Harness 统一插件市场)
version license node ≥18.18
一个市场,三个数据源:精选目录 + GitHub dsh-plugin 生态 + npm registry。
对 DSH Desktop(EAC)针对性适配,开箱即用的插件安装 / 更新 / 自动更新 / 管理。
在设置页 设置 → 插件 → 🛒 统一市场 提供一站式体验:三源切换、分类下拉筛选、已下载插件更新面板(一键全部更新 / 逐个更新 / 自动更新三档开关)、更新进度窗口、市场自身自更新。
English:DeepSeek Harness 的统一插件市场。它合并了三个数据源——精选的 awesome-dsh-plugin 目录、GitHub dsh-plugin 生态以及 npm registry——整合为 DSH Desktop(EAC)内的单一商店界面,具备来源白名单、冲突预检、试装启动验证、更新管理(手动 / 批量 / 自动)以及 .dshpack 功能包管理。
v0.3.0 起新增「📦 功能包」tab:EAC 功能包(.dshpack)的安装 / 卸载 / 更新 / 导出 / 回滚与管理(本包承担交互编排层,核心逻辑在 L2 功能包 CLI,见下)。
展开完整文档(README 剩余 1 节)
dsh-unified-market — 统一插件市场(DeepSeek Harness 统一插件市场)
version license node ≥18.18
一个市场,三个数据源:精选目录 + GitHub dsh-plugin 生态 + npm registry。
对 DSH Desktop(EAC)针对性适配,开箱即用的插件安装 / 更新 / 自动更新 / 管理。
在设置页 设置 → 插件 → 🛒 统一市场 提供一站式体验:三源切换、分类下拉筛选、已下载插件更新面板(一键全部更新 / 逐个更新 / 自动更新三档开关)、更新进度窗口、市场自身自更新。
English:DeepSeek Harness 的统一插件市场。它合并了三个数据源——精选的 awesome-dsh-plugin 目录、GitHub dsh-plugin 生态以及 npm registry——整合为 DSH Desktop(EAC)内的单一商店界面,具备来源白名单、冲突预检、试装启动验证、更新管理(手动 / 批量 / 自动)以及 .dshpack 功能包管理。
v0.3.0 起新增「📦 功能包」tab:EAC 功能包(.dshpack)的安装 / 卸载 / 更新 / 导出 / 回滚与管理(本包承担交互编排层,核心逻辑在 L2 功能包 CLI,见下)。
整合自哪三个插件
本项目把三个社区插件市场的能力合并为单一市场,三者分别是:
| 来源插件 | 定位 | 本市场吸收的能力 |
| dsh-webui-market(精选目录市场)| awesome-dsh-plugin.com 精选目录 | 🎯 精选目录 + 离线快照兜底(data/catalog-snapshot.json)、来源白名单 + 试装验证(trial boot):安装前在临时环境实际启动一次、只认 dsh web: 就绪行才放行、真实 profile 从未被写过、安装前快照可回滚、简单插件热挂载免重启、安装前冲突预检、allowBuilds 自动放行、第三方本地构建产物保留 |
| zat-dsh-engine(GitHub 生态市场)| GitHub dsh-plugin topic 检索 + 中文简介 + 国内镜像 | 🐙 GitHub 生态实时检索(按星排序、分页)、中文简介(README.zh.md 摘要)、gh-proxy / ghfast 双镜像抓取兜底(无 VPN 也能访问 GitHub)|
| dsh-plugin-marketplace(npm 市场,DSH Desktop 配套)| npm registry 检索 dsh 插件 | 📦 npm registry 检索(keywords:dsh-plugin)、更新检测(版本对照、TTL 缓存)、更新失败回滚、全部更新 |
三方定位与 “对 EAC 特化” 的联系:旧三个市场在 DSH Desktop(EAC)桌面壳里交错存在,各有失效面(profile 解析错误、重复注册、更新链路不完整),本项目把它们整合为一个对桌面壳正确的统一入口。
对 EAC 的针对性适配
版本适配基线:当前版本对 DSH Desktop(EAC)5.1 与 dsh 0.1.1-rc.2 进行过专项适配测试,为推荐的运行组合;其余官方版本的兼容性以桌面壳内置的兼容扫描结果为准。
EAC(DeepSeek Harness Desktop)的 Web UI 跑在桌面专属 profile web-desktop (由主进程通过 DSH_DESKTOP_PROFILE 注入)。旧市场中:
- zat-dsh-engine 只认 DSH_PROFILE、否则回落选 web;
- dsh-plugin-marketplace 写死 web;
→ 它们在桌面壳里检测/修复/安装的实际对象是另一套 profile(这就是“在 EAC 里是摆设”的根因)。
本市场所有读写统一解析为:
DSH_DESKTOP_PROFILE → DSH_PROFILE → web(独立安装时回退)
另针对桌面壳做了这批适配:
- profile / 同步层
- 全部读写走桌面壳真实 profile(desktopProfile() + resolveProfile() 归一化)。
- 内置插件清单(.dsh-builtin-plugins.json)识别:内置插件不进入市场检测/更新,由官方「内置插件更新」统一维护,避免与 syncCompanionPlugins 冲突。
- 市场自身作为内置插件(COMPANION_PLUGINS 注册 unified-market),上游发布后走官方 PLUGIN_UPDATE_SOURCES 自更新。
- 安装 / 更新链路
- 试装验证、冲突预检、来源白名单、安装前快照、热挂载(源自 dsh-webui-market)。
- Windows 文件锁(服务运行中 pnpm 写 node_modules):任务自动排队(.dsh-market-pending.json),并在「Web 服务启动早期」由本市场 host 自动消费;同时修复主进程排队消费对 kind:"update" 任务的遗漏。
- 本地链接(link:/file: 指向开发目录)插件也能更新:从上游接管安装,更新前先删除 junction/符号链接(Windows pnpm 替换 symlink 会 EPERM),失败自动回滚恢复原链接;本地开发目录原样保留。
- 24h 发布保护期:上游新版本发布不足 24h(pnpm minimumReleaseAge)时不显示 “可更新”,避免“可见不可装”。
- pnpm allowBuilds 拦截自动放行并重试。
- 自动更新 / 自更新
- 后台自动检测(启动 20s 后首检 + 每 6 小时),三档:关闭 / 仅提示 / 自动升级;状态持久化在 /.dsh-unified-market.json。
- 市场自身自更新接口(selfUpdate)+ 官方内置插件更新引擎对接。
- 功能包 CLI 定位(v0.3.0):桌面壳经 DSH_DESKTOP_RESOURCE_ROOT 注入 dsh-desktop 资源根,本市场据此定位 scripts/feature-pack-cli.js 并 spawn (与现有 dsh plugin 子进程同构);缺该环境变量时功能包页明确降级提示,不影响插件市场其余功能。
功能包(Feature Pack · .dshpack)支持
v0.3.0 引入。借鉴 HMCL 整合包体系:把「插件组合 + 预设 + 技能」打包为 .dshpack,可一键安装 / 卸载 / 更新 / 导出 / 回滚;包声明对官方内核(@deepseek-ai/dsh)的 semver 兼容范围,官方版本升级后由 EAC 桌面壳启动兼容扫描自动检出(state: incompatible),本市场「📦 功能包」页给出「迁移(安装新版)」/ 「回滚(保护中心快照)」入口。
分工:本包只做交互编排(UI、op 轮询、上传中转、市场索引浏览);解析 / 校验 / semver / 注册表 / 装配 / 兼容扫描等核心逻辑在 dsheac 主体 L2 (dsh-desktop/lib/desktop/feature-pack.ts + scripts/feature-pack-cli.ts),经 DSH_DESKTOP_RESOURCE_ROOT 定位 spawn,不重复实现(避免双实现漂移)。
- host 新增 pack. 方法:pack.list / pack.inspect / pack.install / pack.uninstall / pack.update / pack.export / pack.rollback / pack.scan / pack.market;安装类走现有 op 串行/轮询/超时模型,上传文件在 op 结束后自动清理。
- pack.market 索引走 live → 5 分钟缓存 → data/packs-snapshot.json 内置离线快照三级降级(对齐 catalog-snapshot.json 模式);下载校验 SHA-256(--sha256)。
- 功能包 CLI 退出码约定:0 成功|1 一般失败|2 用法|3 文件锁待排队(自动写入 feature-packs/.ops/pending.json,服务重启前的无锁窗口自动续跑)|4 兼容失配| 5 冲突阻断。
功能一览
- 三源切换:🎯 精选目录 / 🐙 GitHub dsh-plugin 生态 / 📦 npm,各自搜索、排序、分页;精选目录分类用下拉框筛选(含“全部 / 已安装”)。
- 安装:内置标记拦截 → 冲突预检(refuse 拒装)→ 来源白名单 → 试装验证 → 安装前快照 → pnpm allowBuilds 放行 → 本地构建产物保留 → 简单插件热挂载免重启。
- 已下载插件更新面板:只列可更新的插件;每项 当前版本 → 最新版本 + 单个「更新」按钮;顶部「⬆ 全部更新 (N)」一键批量;「检查更新」强制重查。
- 更新进度窗口:后台批量更新实时进度(第 x/y 个、成功/排队/失败计数、最近输出);失败或排队时窗口保留显示原因(✕ 手动关闭),不再自动消失。
- 自动更新三档:关闭 / 仅提示(默认)/ 自动升级。
- 本地链接插件:也检测上游更新(GitHub repo / npm 名推断 → 市场按名匹配,可从上游接管安装或保留链接在本地更新。
- 市场自更新:上游发布后由官方「内置插件更新」自动/手动升级。
- 功能包管理(v0.3.0):「📦 功能包」tab —— 已安装列表(版本/兼容性徽标/更新/导出/ 卸载)、本地导入 .dshpack(文件选择 → base64 → 安装)、功能包市场浏览一键安装(SHA-256 校验)、官方内核升级后不兼容提示条 + 一键迁移(选新版)/ 回滚。
安装
方式一:DSH Desktop(EAC)内置分发(推荐)
把本包放入 assets/plugins/dsh-unified-market/,并在桌面壳 main.js:
- COMPANION_PLUGINS 增加: { id: 'unified-market', name: 'dsh-unified-market', dir: 'dsh-unified-market' }
- (可选)移除旧 dsh-market-plugin(dsh-webui-market)与 zat-market(zat-dsh-engine)条目。
- 重新启动应用,syncCompanionPlugins 会把包同步进 web-desktop profile 并挂载。
方式二:独立安装(非内置、脱壳)
dsh plugin --profile web-desktop add dsh-unified-market
或 GitHub 源:
dsh plugin --profile web-desktop add github:jing-hy/dsh-unified-market
安装后 重启 Web 服务,在 设置 → 插件 → 🛒 统一市场 使用。
市场自更新(内置分发时启用)
在 main.js 的 PLUGIN_UPDATE_SOURCES 启用:
'unified-market': { npm: 'dsh-unified-market' },
之后由官方「内置插件更新」(启动 20s 后 + 每 6 小时检测、可开自动更新)负责更新到覆盖层并重启服务生效;独立安装时市场的 selfUpdate 接口同样对比 npm 版本。
目录结构
dsh-unified-market/
├── package.json # dsh.bundle.patch / dsh.client 声明 + 发布元信息 ├── cordis.patch.yml # host 半边挂载声明 ├── lib/ │ ├── host.js # host 半边(ESM):HTTP 路由 /api/dsh-unified-market │ ├── client.js # 浏览器半边:设置页「统一市场」tab │ ├── allow-builds.mjs # pnpm allowBuilds 拦截自动放行 │ ├── artifact-keep.mjs # 第三方本地构建产物保留 │ ├── profile-sync.mjs # profile 配置的「双边同步」写层(v0.4.0 起) │ └── plugin-conflict-scan.mjs # 安装前冲突预检 ├── data/catalog-snapshot.json # 精选目录离线快照(官网不可达时兜底) ├── data/packs-snapshot.json # 功能包市场索引离线快照(v0.3.0 起) ├── README.md └── LICENSE
通信:client 通过 POST /api/dsh-unified-market(兼容 /api/dsh-market)调用 host。
host 半边运行在 dsh web 进程(Cordis plugin,注入 webServer)。
profile 配置:双边同步(v0.4.0 起)
市场对 profile 配置(package.json 的 dsh.profile.bundles 与 cordis.patch.yml)的写入不再是单向复写。
旧行为的问题:市场原先只经 dsh plugin add/remove 间接改配置,由 dsh 内核 reconcilePlugins 按 dependencies 整文件重写 package.json。整文件重写 = 「以内存状态覆盖磁盘」——读取之后、写入之前发生的任何外部改动(用户手编、其他插件、壳侧 heal、并发会话)都会被丢掉。
新行为:所有配置写盘收敛到 lib/profile-sync.mjs 一个入口,规则如下:
| 规则 | 说明 |
| 每次重读磁盘 | 无模块级缓存;绝不用操作开始前的快照覆盖当前状态 |
| 并集合并 | 以 id 为键,只增删本层管理的条目;外部行/未知行/注释/空行原样保留 |
| CAS 校验 | 写前比对 SHA256 + size + mtime,冲突则重读重合并(最多 3 次) |
| 原子写 | 同目录临时文件 + rename(patch 被截断 = 启动死循环) |
| 写前校验 | 空 - insert: 块、duplicate loader entry、JSON 可解析 —— 非法产出拒绝落盘 |
| 写后复核 | 不一致自动回滚到操作前快照 |
| 快照 | 同时备 package.json 与 cordis.patch.yml,并提供 profile.restore 还原 |
新增 host 方法:
| 方法 | 作用 |
| profile.state | 读实时状态(bundles / 禁用 id / patch 合法性 / revision / 快照列表) |
| profile.toggle | 启用或禁用某个插件包,双边同步落盘 |
| profile.snapshots | 列出配置快照 |
| profile.restore | 从指定快照还原配置 |
禁用插件的正确写法
禁用必须写顶层编辑型行:
插件市场(dsh-unified-market):关闭
- id:
name: ''
disabled: true
不要写成 - insert: 块。桌面壳 boot 期的 removeBundledRowDuplicates (dsh-desktop/patch-row-heal.js)会删除与 bundle 包内 patch 同 id 的 insert 块,即使该块带 disabled: true —— 表现为"手写的禁用行凭空消失、插件又启用了"。
顶层编辑型行不受该去重影响。市场写禁用时会自动把 insert 块内的同 id 内层条目一并移除,并清理因此产生的孤立空 - insert: 块。
版本记录
- 0.2.0(2026):三源合一 + EAC 适配(web-desktop profile、文件锁排队与启动消费、 link→上游接管、24h 保护期、更新进度窗口)。
- 0.2.1(2026):修复 README 编码(去除 BOM / 修正 mojibake)。
- 0.3.0(2026):新增「📦 功能包」tab 与 pack. host 方法 —— EAC 功能包(.dshpack)的交互编排层(安装/卸载/更新/导出/回滚/市场浏览 + 官方内核兼容扫描联动),SELF_VERSION 与 package.json 同步 0.3.0。
- 0.3.1(2026):修复功能包 CLI 定位失败的误导性报错 —— 0.3.0 及之前,「桌面壳未注入 DSH_DESKTOP_RESOURCE_ROOT」与「CLI 文件不存在(客户端安装不完整/版本过旧)」两种失败统一误报"缺少 DSH_DESKTOP_RESOURCE_ROOT",用户明明在桌面端却被提示去桌面端,排障困难;现 packCliStatus() 区分两种原因并给出可行动提示(升级/重装桌面客户端)。
- 0.4.0(2026):profile 配置写入改为双边同步(新增 lib/profile-sync.mjs 唯一写层:每次重读磁盘 / 并集合并 / CAS / 原子写 / 写前校验 / 写后复核回滚 / 双文件快照 + 还原);新增 profile.state / profile.toggle / profile.snapshots / profile.restore 四个 host 方法;CLI 操作成功后新增后置增量同步;禁用插件改为主写顶层编辑型行,避免被桌面壳 boot 期 removeBundledRowDuplicates 删除。
发布
- npm:npm publish(包名 dsh-unified-market;最新版本 0.4.0)。
- GitHub:github.com/jing-hy/dsh-unified-market(main 分支)。
License
MIT(见 LICENSE)。离线目录快照数据来自 awesome-dsh-plugin.com 社区目录,版权归各自作者;三方整合能力分别源自对应插件的 MIT/开源许可。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
jing-hy/dsh-unified-market
dsh-unified-market — 统一插件市场DeepSeek Harness 统一插件市场
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目