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

插件市场 Winnie-0721/dsh-plugin-market

DeepSeek Harnessv1.3.2
Winnie-072115 天前有提交已提供中文文档扫描:含敏感能力

装进 DeepSeek Harness 里的插件市场。

36.3/100
综合分
2
GitHub 星标
240
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add deepseek-harness-market
npm 源 · deepseek-harness-market 的发布者账号已校验与本仓库一致

状态速览

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

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

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

安装清单取自 plugin-market/package.json

展开查看检查明细 ↓

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

✓npm 包deepseek-harness-market @ 1.3.2
✓Node 引擎要求 >=20.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

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

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 21 处,展示前 20 条)
  • 读取本地文件
    lib/index.js:530
    return existsSync(join(profileDir, 'node_modules', ...name.split('/')))
  • 发起网络请求
    lib/client.js:1054
    return fetch(API_PREFIX + path, init).then(function (response) {
  • 写入剪贴板
    lib/client.js:2416
    navigator.clipboard.writeText(text).then(done, done);
  • 写入剪贴板
    lib/client.js:5114
    navigator.clipboard.writeText(command).then(done, function () {
  • 写入本地文件
    lib/self-update.js:602
    await mkdir(downloadDir, { recursive: true })
  • 写入本地文件
    lib/self-update.js:613
    await writeFile(partial, bytes)
  • 写入本地文件
    lib/self-update.js:614
    await rename(partial, target)
  • 删除本地文件
    lib/self-update.js:616
    try { await unlink(partial) } catch { }
  • 读取本地文件
    lib/restart-policy.js:82
    return readFileSync(`/proc/${String(pid)}/comm`, 'utf8').trim()
  • 读取本地文件
    lib/hot-mount.js:118
    manifest = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8'))
  • 读取本地文件
    lib/hot-mount.js:120
    return existsSync(join(packageDir, 'index.js'))
  • 读取本地文件
    lib/hot-mount.js:138
    return cleaned.startsWith('.') || cleaned.includes('*') ? false : existsSync(join(packageDir, cleaned))
  • 读取本地文件
    lib/hot-mount.js:186
    manifest = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8'))
  • 读取本地文件
    lib/hot-mount.js:200
    texts.push(readFileSync(file, 'utf8'))
  • 读取本地文件
    lib/hot-mount.js:214
    readFileSync(join(profileDir, 'node_modules', ...packageName.split('/'), 'package.json'), 'utf8')
  • 删除本地文件
    lib/hot-mount.js:334
    rmSync(join(dir, name), { force: true })
  • 写入本地文件
    lib/hot-mount.js:396
    mkdirSync(dir, { recursive: true, mode: 0o700 })
  • 写入本地文件
    lib/hot-mount.js:404
    writeFileSync(file, yml)
  • 删除本地文件
    lib/hot-mount.js:421
    rmSync(file, { force: true })
  • 执行外部命令来自配置/变量
    lib/restart-helper.cjs:91
    const child = spawn(payload.execPath, payload.args, options)
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

3 张 · 点击查看大图

功能亮点

  • 浏览社区插件
  • 搜索社区插件
  • 安装社区插件

DeepSeek Harness 插件市场:从侧边栏底部入口浏览、搜索、安装社区插件(含宿主端和 Web 客户端两半,遵循 DSH 插件规范)。

v1.3.22026-10-19
· fix(catalog):目录源全线抓取失败(502 catalog-unavailable)—— npm 解压上限 8 MiB 被上游新增文件顶穿。 现象:市场整个打不开数据,三个源依次失败,界面报「目录源抓取数据失败」: npm registry.npmmirror.com : 读取 tarball 失败:Cannot create a Buffer larger than 8388608 bytes npm registry.npmjs.org : 读取 tarball 失败:Cannot create a Buffer larger than 8388608 bytes awesome-dsh-plugin.com : 读取响应体失败:The operation was aborted due to timeout 不是网络问题,是上限被顶穿。 MAX_TARBALL_BYTES 量的是整个 tar 解压后的总长, 不是我们要取的那一个文件: | 项 | 值 | |---|---| | tarball 压缩后 | 2,363,900 B | | 解压后 tar 总长 | 9,532,928 B(9.09 MiB) ← 超过 8 MiB | | 我们要的 package/plugins.json | 7,198,658 B(6.87 MiB)✅ 本身没超 | 顶穿它的是同一个包里我们从不读的 package/index.json(2,320,845 B)。 上游 2026-10-18 2026.1018.7728 把 fileCount 从 4 加到 5、塞进这个文件, 解压总量从 7.21 MiB 一步跳到 9.53 MiB: 10-16 5,796,742 files=4 10-17 6,213,609 files=4 10-18 7,206,746 files=4 ← 旧版尚可 10-18 9,528,364 files=5 ← latest,首次越线 次生问题:npm 两条路一挂,官方 URL 兜底根本指望不上——实测该站 10.9 KB/s, 7.2 MB 要 ~11 分钟,而 OFFICIAL_URL_TIMEOUT_MS 只有 30s。三个源全灭。 逻辑倒挂:压缩侧上限 MAX_NPM_TARBALL_BYTES = 16 MiB,解压侧却是 8 MiB —— 允许下载 16 MiB 的压缩包,却只准解出 8 MiB,自相矛盾。 修复:MAX_TARBALL_BYTES 8 MiB → 16 MiB,与压缩侧上限同档。 炸弹防护意图完全不变(32 MiB 测试炸弹仍被 maxOutputLength 挡在分配之前), 只是把一个按「当时 5 MB 目录」拍的数,改成与压缩侧同一量级。 实测(真跑 cache.ensure()): | | 修复前 | 修复后 | |---|---|---| | 结果 | 502 catalog-unavailable,42.2s | ok,1.19s | | 条目 | — | 5786(count 与 plugins.length 一致) | 回归锚(verify/robustness.test.mjs):钉住 MAX_TARBALL_BYTES === 16 MiB, 并加不变式 MAX_TARBALL_BYTES >= MAX_NPM_TARBALL_BYTES —— 数值被改回去(或压缩侧 再被调小到低于解压侧)时测试必须失败,而不是等线上复现。 已用变异验证锚不是死代码:把常量改回 8 MiB,基线 9/9 绿、变异 8/9 且 失败在该条断言上(+ 8388608 / - 16777216)。 上限再被逼近时的正确解法是改流式解压、读到目标条目即停,而不是继续抬这个数—— 上限越高,同步 gunzipSync 对宿主事件循环的代价越大。已写入 docs/API-CONTRACT.md。 --- · versionName 1.3.2 / versionCode 10302 / build +132.c7864f3 · 安装:dsh plugin --profile web add (发布到 npm 后可直接 add deepseek-harness-market) · 回退 / 旧版:从本页附件下载对应版本的 tgz · 变更与验收细节见仓库 docs/ 与 verify/REPORT.md
v1.3.12026-10-18
· fix(ci):npm 发布永远 ENEEDAUTH —— 由 workflow_call 复用改为「publish-npm.yml 自己被标签触发」。 v1.3.0 的 GitHub Release 与 tarball 都正常生成了,只有 npm 那步失败: npm error code ENEEDAUTH npm error need auth This command requires you to be logged in to 根因(npm 官方文档《Trusted publishing》原文): > Some GitHub Actions workflows use workflow_call to invoke other workflows that run > npm publish ... When this happens, validation checks the calling workflow's name > instead of the workflow that actually contains the publish command. 也就是说 npm 服务端校验的是调用方。而 v1.2.0 记下的结论是「用 uses: 复用 publish-npm.yml,令牌里 job_workflow_ref 就是它」——那只是 OIDC 令牌字段, 不等于 npm 按它校验。v1.3.0 把这条错误结论的代价演得很清楚:自检打印 job_workflow_ref = .../publish-npm.yml@refs/tags/v1.3.0、判定「身份正确」, 紧接着发布仍然 ENEEDAUTH,因为 npm 看的是 workflow_ref = .../pack-release.yml。 历史对照(同一份代码,只差触发方式): | 版本 | 触发 | 调用方 | 结果 | |---|---|---|---| | v1.2.0 | 手动 workflow_dispatch 直接跑 publish-npm.yml | publish-npm.yml | ✅ | | v1.3.0 | 标签 → pack-release.yml → workflow_call | pack-release.yml | ❌ | 修法:publish-npm.yml 自己监听 push: tags: ['v*'],与 pack-release.yml 并列触发、互不调用(一个发 GitHub Release,一个发 npm);删掉 pack-release.yml 里那个注定失败的 publish-npm job,并去掉 workflow_call。 发布实现仍然只有一份(就在 publish-npm.yml),npm 看到的调用方永远是它自己。 顺带修掉那个「假绿灯」自检:原来的自检只比对 job_workflow_ref,在 workflow_call 下必然通过,于是自检过了、发布却失败——这正是 v1.3.0 排查绕弯的原因。现在要求 job_workflow_ref 和 workflow_ref 都指向 publish-npm.yml。 门禁同步纠正:release-workflow.test.mjs 原来把「必须用 uses: 复用」钉成底线 (14 条里有 3 条在守这个错误结论),现在改为反向断言:任何 workflow 都不得 uses: / workflow_call publish-npm.yml,且 publish-npm.yml 必须自己监听标签。 门禁里的这些断言只查生效行、不查注释——pack-release.yml 的注释里刻意写着 「本文件也不去调用 publish-npm.yml」来解释原因,全文正则会把这句解释判成违规。 --- · versionName 1.3.1 / versionCode 10301 / build +128.0363650 · 安装:dsh plugin --profile web add (发布到 npm 后可直接 add deepseek-harness-market) · 回退 / 旧版:从本页附件下载对应版本的 tgz · 变更与验收细节见仓库 docs/ 与 verify/REPORT.md
v1.3.02026-10-18内容较长已截断
· fix:更新永远失败(「宿主拒绝了这个操作」)——更新改走 tarball 形态,绕开宿主的同名拦截。 用户报的:点「更新到 x.y.z」→ 宿主返回 already-installed,界面只说「宿主拒绝了这个操作。」。 实测两个可更新包(dsh-web-search-free 1.8.0→1.8.1、dsh-mobile 0.6.10→0.6.11)都是这个结果。 根因(从 app.asar 抠出宿主管家源码确认,不是猜):PluginManager.installBundle 里有这行守卫 const known = specPackageName(spec, before, dir); if (hmr !== void 0 && known !== void 0 && Object.hasOwn(before, known)) throw new ManagementFailure('already-installed'); 而 specPackageName 对 registry 形态的 spec 直接返回包名、完全不看版本。于是 pnpm add name@1.8.1 这种升级写法,只要包已在 dependencies 里就必然被拒。宿主也没有 任何 upgrade/update/allowReinstall 入口(方法表只有 installBundle / removeBundle / waitForInstall / cancelInstall),removeBundle 又会对正在加载的插件抛 stop-profile —— 所以「先卸再装」也不通,且中途会留下坏 profile。 这不是能力问题,是入口被自己的守卫挡了:在用户 profile 上实测 pnpm add dsh-web-search-free@1.8.1 --lockfile-only → 「✓ Lockfile passes supply-chain policies」+ Done,而声明本来就是 ^1.8.0。 修法:客户端在更新时把 kind:"update" 带上;服务端在目录校验之后把它改写成 npm tarball URL( 形态下 宿主那个 known 变成 undefined,守卫不成立,pnpm 照常执行升级。 安全边界(三条,updateTarballSpec 的注释里写清了): 1. 只在 kind === 'update' 时改写,首次安装仍按目录给的 spec 走; 2. 必须在校验 spec 落在目录里之后,否则这里就成了任意包安装器; 3. 版本必须像 semver 定值,latest/range 原样返回(拼不出 tarball URL)。 新增 verify/update-path.test.mjs(8 条)钉住:改写函数存在且 scoped 包文件名正确、 只在 update 时改写、客户端带 kind、目录校验仍在且排在改写之前、非更新请求 spec 不变、 already-installed 有可读文案。现场实测(_verify/probe-update-fixed.mjs,5/5 通过): 更新请求 ok:true / application:applied / activation.versionMatches:true、 pnpm 输出 + dsh-web-search-free 1.8.1;对照组(不带 kind)仍被 already-installed 拦 ——证明改写是必要条件,而不是宿主自己变好了。 · feat(ui):点开详情改成弹出居中对话框(用户要求,参照会话清理的「确认删除」框)。 形态演进,别再退回前两版: 1. 内嵌在卡片里 → 被塞进 232px 网格窄列,截图/红线长句挤成一坨、整行被撑高(「展开太丑」)。 2. 跨整行独立卡片 → 宽度够用了,但它在文档流里:展开会把下面的内容整体顶下去, 用户视线要跟着滚,关掉又跳回来。 3. 现在:居中对话框 → 浮在页面上,列表位置完全不动,进出都不丢上下文。 形态与语义照 dsh-dialogue-cleanup 的确认框:标题行(名字 + @owner + ×)、 可滚动内容区、底部操作行。语义上对齐官方 Modal 的做法(拷贝行为,不 require 包): - 不用原生 、不 portal 到 document.body:覆盖层 position:fixed + 既有 z-index 约定(回顶 55 发生了什么:这个插件已经装过了 > 为什么:宿主检查到目标依赖已经在 profile 里,于是拒绝了这次重复安装(这不是失
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
deepseek-harness-market English · 简体中文 装进 DeepSeek Harness 里的插件市场。 侧边栏底部一个入口:浏览、搜索社区目录,安装、更新、启用 / 停用、卸载,全程不离开 GUI。 安装 ·界面速览 ·设计文档 ·接口契约 · Release 为什么做它 定位一句话:这是一个「像手机应用市场那样的」DeepSeek Harness 插件市场——逛、看、装、更新、启用/停用、卸载,都在侧边栏里完成,和你在手机上装 App 是同一套心智。下面的每一条都是这个定位的落地: - 目录大,读得快。 社区精选目录 awesome-dsh-plugin 4400+ 条(每日更新);读取 npm 镜像优先、官方源兜底,抓取、缓存、重试、降级全在宿主进程,浏览器只读自家接口——列表始终秒开。 - 更新每一步都看得见。 左键是合并状态机「检查更新 → 一键更新(N)/ 重新检查」,行内逐条「更新到 x.y.z」;每条结果留在自己那行,跑完给一条如实的汇总回执(待重启计成功、失败原因原样写在那一行,不糊弄)。 - 市场会更新自己。 启动自动查一次本体更新,有新版本按钮直接亮「更新到 x.y.z」,四态齐全:插件市场更新 → 正在更新… → 更新成功 → 再次检查;下载过路径形状 + sha256 + 产物自证三道校验,装完不假装已生效。
展开完整文档(README 剩余 1 节)
deepseek-harness-market

English · 简体中文

装进 DeepSeek Harness 里的插件市场。
侧边栏底部一个入口:浏览、搜索社区目录,安装、更新、启用 / 停用、卸载,全程不离开 GUI。

安装 ·界面速览 ·设计文档 ·接口契约 · Release

为什么做它

定位一句话:这是一个「像手机应用市场那样的」DeepSeek Harness 插件市场——逛、看、装、更新、启用/停用、卸载,都在侧边栏里完成,和你在手机上装 App 是同一套心智。下面的每一条都是这个定位的落地:

- 目录大,读得快。 社区精选目录 awesome-dsh-plugin 4400+ 条(每日更新);读取 npm 镜像优先、官方源兜底,抓取、缓存、重试、降级全在宿主进程,浏览器只读自家接口——列表始终秒开。
- 更新每一步都看得见。 左键是合并状态机「检查更新 → 一键更新(N)/ 重新检查」,行内逐条「更新到 x.y.z」;每条结果留在自己那行,跑完给一条如实的汇总回执(待重启计成功、失败原因原样写在那一行,不糊弄)。
- 市场会更新自己。 启动自动查一次本体更新,有新版本按钮直接亮「更新到 x.y.z」,四态齐全:插件市场更新 → 正在更新… → 更新成功 → 再次检查;下载过路径形状 + sha256 + 产物自证三道校验,装完不假装已生效。
- 「要重启」这件事如实说,而且刷新页面丢不掉。 需要重启宿主的改动,面板不会悄悄变绿;记账在宿主半(/status.pendingRestart)而不是页面内存里,所以刷新只丢界面、丢不掉事实。dsh web / CLI 下还给一键「重启 DSH」(detached 等待、死透再拉起,探活先见过宿主死过一次才自动刷新页面)。桌面端故意没有这颗按钮——三条各自独立的理由(壳的 IPC 白名单里没有「请壳重启自己」这种消息、宿主一退出壳就当致命故障、那个「启动失败」框里有一颗「停用所有第三方插件」)写在 API-CONTRACT §2.6,桌面端改说「关掉窗口再打开」;见 ROADMAP 第 6 条。
- 边界收得紧。 只装目录内插件、只走宿主 pluginManager、写操作只收同源 POST(64 KiB)、目录包 dist.integrity 必校验、市场拒绝卸载自己。
- 像宿主的一部分。 颜色只用宿主 --dsw- 主题 token 并带兜底值,文案 zh / en 跟随宿主语言;深色 / 浅色、窄屏、prefers-reduced-motion 都如实处理(e2e 逐条盯着)。

界面速览

入口在侧边栏底部、账号行上方,带可更新角标:

「可更新」页:合并状态机(一键更新(2)/ 再次检查)、逐条「更新到 x.y.z」、行内结果与汇总回执 (下图为验收环境:列表是注入的夹具更新,一条成功待重启、一条占用失败):

快速开始

dsh plugin --profile web add deepseek-harness-market

1. 装完重启一次 dsh web(或让桌面端重新组合),刷新页面——入口出现在侧边栏底部、账号行上方。
2. 发现页搜索、按分类挑插件 → 点「安装」;已安装页管启用 / 停用与卸载。
3. 可更新页带计数角标:左键「检查更新 → 一键更新(N)」按顺序逐个跑,一条失败不影响其余;右键管市场自己的更新(「插件市场更新 / 再次检查」)。
4. Windows 一键安装(含 profile 备份与回滚):

pwsh -File scripts\install-into-profile.ps1 -Profile desktop

5. 也可以直接装 GitHub Release 附件——每个 Release 页面都给一条可复制的命令。

兼容 DSH 0.2.0-rc.2;npm 包与 GitHub Release 同步发版,版本规则与发布流程见 docs/RELEASING.md。
还没有 DSH?npx @deepseek-ai/dsh web 起一个本地实例。

该不该重启、怎么重启(面板上说的也是这一套,不糊弄):

| 你在用什么 | 市场装上「宿主半」的改动之后 | 你该做什么 |
| dsh web / CLI | 面板亮出「待重启」横幅,横幅里有「重启 DSH」按钮 | 点它,或者自己重启命令 |
| 桌面端应用 | 同一条横幅,但没有按钮 | 关掉窗口再重新打开 —— 刷新页面不会加载新的宿主代码 |

它怎么工作

一个 npm 包同时带两半,按官方插件规范装进宿主:

- host 半(仓库进程):只 named-export name / inject / apply 的 Cordis function plugin;ctx.webServer 注册一条 prefix 路由,ctx.get('pluginManager') 可选桥接安装能力。目录抓取、缓存、重试、校验、自更新下载都在这里——浏览器不碰网络与文件系统。
- client 半(浏览器):lib/client.js 单文件 bundle,经 window.__ModuleLoader__.load({ id, factory }) 注册,除 require("react") 外零依赖。
- 席位与声明:入口注册官方 sidebar.footer.action,面板注册 main 的 plugin-market 键,导航走 ctx.layout.selectPanel;package.json 声明 dsh.bundle.patch(bundle 补丁层)与 dsh.client(platform: web + ./client 导出)。
- 接口是冻结的:host ↔ client 的端点、响应与错误码以 docs/API-CONTRACT.md 为准,改契约先改文档与回归测试;与官方规范的逐条对照见 docs/PLUGIN-MARKET.md。

数据来源

| 顺序 | 来源 | 地址 | 本机实测 |
| 1 | npm 镜像(首选) | dsh-plugin-catalog 包 | 289 ms |
| 2 | 官方 URL(兜底) | awesome-dsh-plugin.com/plugins.json | 25–93 s(超时) |

兜底是必要的:DSH 只认 HTTP(S)_PROXY 环境变量、不读 Windows 系统代理,而官方源挂在 GitHub Pages 上。
默认地址可用 DSHM_REGISTRY_URL / DSHM_NPM_MIRROR 覆盖。

本仓库按官方插件规范重新实现,参考了 dsh-market 的目录来源与产品取舍,但不是它的拷贝:功能面收敛到「在侧边栏装 / 管插件」这一个闭环。

安全边界

- 只允许安装目录内的插件;目录条目带 dist.integrity 时必须校验通过才使用。
- 安装 / 卸载 / 启用 / 停用只走宿主 pluginManager——与 dsh plugin add 同一条路径、同一套构建脚本审批规则。
- 写操作只收同源 POST(64 KiB 上限),不接受跨源、不拿 GET 改状态。
- 市场拒绝卸载自己。
- 自更新的信任锚是清单哈希(路径形状 + sha256 + 产物自证三道校验):新版本由 GitHub 附件 digest 直接给出 sha256,老版本走 index.json;挡损坏、截断与单点替换,挡不住「清单与产物一起被换」——如实写在 API-CONTRACT §2.9,不冒充独立签名。

设计与安全决定 · 已知限制 · 接口契约

开发与验收

真实浏览器 e2e:起 scratch 宿主 + headless Edge,驱动真引擎断言并落截图 pwsh -File verify\ui-check.ps1

发布门禁:node --check + verify/.test.mjs 全跑(不改版本、不打包、不发布) pwsh -File scripts\release.ps1 -LocalOnly

正式发版(本地只到这里):门禁 → 递增 → 提交 → 打标签 → 推送推上去的标签触发 GitHub Actions:打包 → GitHub Release 附件 → npm,其中 npm 发布只有 publish-npm.yml 一份实现(真因见 docs/RELEASING.md §4.2.1) pwsh -File scripts\release.ps1 -Bump patch

门禁自动发现 verify/.test.mjs(当前 20 套:文案键、状态机、安装 spec、自更新通道、来源判定、发布工作流回归……),逐套跑。其中 release-workflow.test.mjs 有一条反向断言: pack-release.yml 里不得出现 npm stage publish——把发布步骤再写一遍正是吃过两次的那个 bug (真因与 CI 实际证明了什么,RELEASING §4.2.1)。
真实浏览器 e2e 共 90 条,不进门禁(要浏览器与 scratch 宿主),改客户端半或自更新通道后手动跑;独立验收报告见 verify/REPORT.md。

仓库结构

| 路径 | 内容 |
| plugin-market/ | 插件包本体:host 半(lib/index.js / catalog.js / catalog-npm.js / http.js / self-update.js / restart.js)+ web client 半(lib/client.js 单文件 bundle)+ cordis.patch.yml |
| .github/workflows/ | pack-release.yml(标签 → 门禁 → 打包 → 建 Release)与 publish-npm.yml(唯一的 npm 发布实现,经 workflow_call 被复用) |
| docs/API-CONTRACT.md | host ↔ client 的冻结接口契约(端点、响应约定、目录抓取策略) |
| docs/PLUGIN-MARKET.md | 设计与官方规范逐条对照、数据源决策、安全决定、限制、验收结论 |
| docs/RELEASING.md | 版本规则、发布链路、npm 发布三次翻车的真因、分发路径 |
| docs/ROADMAP.md | 下一步做什么、不做什么,都带实测证据与代价 |
| docs/TEAM-BRIEF.md | 实现期的环境事实与 API 签名(供协作 / 复现) |
| scripts/ | 安装 / 回滚与发布脚本 |
| verify/ | 回归测试 + 真实浏览器 e2e + 独立验收报告 |

许可

MIT。目录数据与其来源仓库的许可归 awesome-dsh-plugin 所有;本仓库不包含第三方源码。
预览分享卡片长什么样 ↓Winnie-0721/dsh-plugin-market
分享 · DeepSeek Harness Hub
Winnie-0721/dsh-plugin-market

装进 DeepSeek Harness 里的插件市场。

这是你的仓库?认领条目

回到顶部