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

插件工坊 cyber-moshen/dsh-plugin-market

DeepSeek Harnessv0.3.0
cyber-moshen80 天前有提交已提供中文文档扫描:含敏感能力

一键安装更新插件,热重载免重启

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

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

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

状态速览

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

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

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

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

✓npm 包@cyber-moshen/dsh-plugin-market @ 0.3.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 18:26:49

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

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 38 处,展示前 25 条)
  • 读取本地文件
    lib/host.js:171
    return { path: f, content: readFileSync(f, 'utf8'), at: Date.now() }
  • 写入本地文件
    lib/host.js:178
    try { writeFileSync(snap.path, snap.content); return true } catch { return false }
  • 执行外部命令来自配置/变量
    lib/host.js:194
    child = spawn(process.execPath,
  • 请求外部主机registry.npmjs.org
    lib/host.js:240
    const r = await fetch('https://registry.npmjs.org/' + encodeURIComponent(key) + '/latest', {
  • 发起网络请求
    lib/host.js:240
    const r = await fetch('https://registry.npmjs.org/' + encodeURIComponent(key) + '/latest', {
  • 发起网络请求
    lib/host.js:263
    const r = await fetch(base(m[1], m[2], 'package.json'), { redirect: 'follow', signal: AbortSignal.timeout(8000) })
  • 读取本地文件
    lib/host.js:296
    try { return JSON.parse(readFileSync(configPath(), 'utf8')) || {} } catch { return {} }
  • 写入本地文件
    lib/host.js:300
    try { writeFileSync(configPath(), JSON.stringify(cfg)) } catch {}
  • 读取密钥环境变量
    lib/host.js:304
    return (process.env.GITHUB_TOKEN || process.env.GH_TOKEN || '').trim() || (loadConfig().githubToken || '').trim()
  • 发起网络请求
    lib/host.js:310
    const r = await fetch(url, { redirect: 'follow', signal: AbortSignal.timeout(timeout) })
  • 读取本地文件
    lib/host.js:355
    if (existsSync(pkg)) {
  • 读取本地文件
    lib/host.js:356
    const j = JSON.parse(readFileSync(pkg, 'utf8'))
  • 读取本地文件
    lib/host.js:359
    if (existsSync(cand)) return { bin: cand, kind: 'js' }
  • 执行外部命令来自配置/变量
    lib/host.js:365
    const out = spawnSync(which, ['dsh'], { encoding: 'utf8' })
  • 发起网络请求
    lib/host.js:387
    const r = await fetch(`${API_BASE}/repos/${owner}/${repo}`, { headers, signal: AbortSignal.timeout(15000) })
  • 读取本地文件
    lib/host.js:600
    if (!existsSync(f)) { out[p] = { dependencies: {}, bundles: [] }; continue }
  • 请求外部主机registry.npmjs.org
    lib/host.js:637
    const r = await fetch(`https://registry.npmjs.org/${encodeURIComponent(String(plugin.npm).replace(/^ /, ''))}/latest`, { redirect: 'follow', signal:
  • 发起网络请求
    lib/host.js:637
    const r = await fetch(`https://registry.npmjs.org/${encodeURIComponent(String(plugin.npm).replace(/^ /, ''))}/latest`, { redirect: 'follow', signal:
  • 执行外部命令固定命令
    lib/host.js:754
    spawn('taskkill', ['/pid', String(child.pid), '/T', '/F'], { stdio: 'ignore' })
  • 执行外部命令来自配置/变量
    lib/host.js:763
    if (binInfo.kind === 'cmd') return spawn(binInfo.bin, args, { ...common, shell: true })
  • 执行外部命令固定命令
    lib/host.js:764
    if (binInfo.kind === 'ps1') return spawn('powershell.exe', ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', binInfo.bin, ...args], common)
  • 执行外部命令来自配置/变量
    lib/host.js:765
    if (binInfo.kind === 'exe') return spawn(binInfo.bin, args, common)
  • 请求外部主机registry.npmjs.org
    lib/host.js:963
    const r = await fetch(`https://registry.npmjs.org/${SELF_PACKAGE}/latest`, { redirect: 'follow', signal: AbortSignal.timeout(8000) })
  • 发起网络请求
    lib/host.js:963
    const r = await fetch(`https://registry.npmjs.org/${SELF_PACKAGE}/latest`, { redirect: 'follow', signal: AbortSignal.timeout(8000) })
  • 发起网络请求
    lib/client.js:121
    return fetch('/api/dsh-plugin-market', {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:registry.npmjs.org

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 一键安装更新插件
  • 热重载免重启
  • 多种排序方案

DSH插件市场,自动更新,热重载插件,多种排序方案,快速管理和安装插件

v0.3.02026-08-15
启动安全网 v0.3.0——装错插件再也不会让 DSH 起不来。 · compose-check 检查关卡:每次安装或更新后,用与真实启动完全一致的机制在子进程里组装已保存的 bundle 栈(重复的加载器 id、无效配置、缺失的包都会在这一步暴露) · 自动回滚:检查失败时,从操作前快照恢复配置档清单并卸载该包——配置档绝不会落到无法启动的地步 · 安装前 bundle 扇出审计:依赖里也声明了 dsh.bundle 的聚合插件(比如 dsh-web-ui 系列)现在需要你显式确认风险 · 离线修复命令行:scripts/repair.mjs 能救回已经损坏的配置档 · 新的热挂载会销毁失败的 fiber,不再留下死条目
v0.2.22026-08-15
更新插件目录,收录 13 个新插件(记忆/视觉/UI 增强/流程与效率/多智能体协作)。Catalog refreshed with 13 plugins (memory/vision/UI/facility/multi-agent).
v0.2.12026-08-15
· 修复 Fix 更新命令现在带 \pnpm --latest\:0.x 版本的 caret 范围(如 \^0.1.3\)不允许跨 minor 升级,导致工坊自己和 0.x 插件点更新后实际版本没变(旧版 0.1.3 依然在运行、依然提示重启)。现在更新会无视范围直接升到最新,并自动重写依赖范围。 · Updates now run \pnpm update --latest\, so caret ranges on 0.x versions can no longer stall upgrades (the running 0.1.3 kept reporting success without ever upgrading). · 本机升级指引:手动执行一次 \dsh plugin --profile web add @cyber-moshen/dsh-plugin-market@0.2.1\ 并重启 Web 服务一次;之后所有安装/更新/卸载均热重载生效,无需重启。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
@cyber-moshen/dsh-plugin-market DeepSeek Harness Web GUI 的插件工坊——一个精心筛选的插件目录,目录本身就在本仓库里。 English · 日本語 这是什么 设置 → 插件工坊页面,提供: - 卡片式插件列表——每张卡片显示标签(点标签即可搜索)、GitHub 星标、最近提交时间(带颜色维护信号)、已安装版本/更新状态; - 搜索匹配插件名、作者和标签;常驻过滤栏(安装状态、星标/提交排序、维护状态); - 一键安装 / 更新(后台调用真实 dsh plugin CLI); - 每张卡片右上角的 GitHub 图标按钮直达仓库; - 设置弹窗:GitHub Token 输入(解除 API 限流)、启动时自动更新开关; - 整个插件跟随应用自身的语言设置(设置 → 通用 → 语言:中文 / English); - 热重载生效——纯 JS 插件安装/更新/卸载后自动热重载并刷新页面,无需重启;含原生模块(.node)的插件会弹出提示,需重启 DSH 生效;启动时自动更新同样走热重载; - 安装全程带兜底保护——安装/更新前做依赖审计、完成后自动做"启动组合校验",失败立即回滚,绝不让插件把 DSH 装到无法启动(详见安全机制)。
展开完整文档(README 剩余 1 节)
@cyber-moshen/dsh-plugin-market

DeepSeek Harness Web GUI 的插件工坊——一个精心筛选的插件目录,目录本身就在本仓库里。

English · 日本語

这是什么

设置 → 插件工坊页面,提供:

- 卡片式插件列表——每张卡片显示标签(点标签即可搜索)、GitHub 星标、最近提交时间(带颜色维护信号)、已安装版本/更新状态;
- 搜索匹配插件名、作者和标签;常驻过滤栏(安装状态、星标/提交排序、维护状态);
- 一键安装 / 更新(后台调用真实 dsh plugin CLI);
- 每张卡片右上角的 GitHub 图标按钮直达仓库;
- 设置弹窗:GitHub Token 输入(解除 API 限流)、启动时自动更新开关;
- 整个插件跟随应用自身的语言设置(设置 → 通用 → 语言:中文 / English);
- 热重载生效——纯 JS 插件安装/更新/卸载后自动热重载并刷新页面,无需重启;含原生模块(.node)的插件会弹出提示,需重启 DSH 生效;启动时自动更新同样走热重载;
- 安装全程带兜底保护——安装/更新前做依赖审计、完成后自动做"启动组合校验",失败立即回滚,绝不让插件把 DSH 装到无法启动(详见安全机制)。

目录就是本仓库的 data/plugins.json——任何人想上架插件,提一个 PR 即可(见提交 PR 上架)。运行时实时抓取,没有离线缓存和快照。

安装

发布到 npm 后,一条命令任意位置安装:

dsh plugin --profile web add @cyber-moshen/dsh-plugin-market

本地源码安装:

dsh plugin --profile web add ./dsh-plugin-market -w

重启 Web 服务,然后打开 设置 → 插件工坊。之后安装/更新纯 JS 插件无需再重启。

使用教学

工坊页面

1. 打开 设置 → 插件工坊。
2. 搜索——匹配插件名、作者和标签;点击卡片上的 #标签 直接搜索该标签。
3. 过滤栏(搜索框下方常驻):
- 安装状态:全部 / 已安装 / 未安装
- 排序:星标升序 / 星标降序 / 提交升序 / 提交降序
- 维护:全部 / 活跃 / 较久未更新 / 可能停更 / 未知
4. 卡片操作:
- ⭐ 星标、🕓 最近提交实时来自 GitHub API;维护色标:绿=3 个月内推送,黄=1 年内,红=更久或已归档。
- 未安装 → 安装 按钮(一律通过 npm 包安装)。
- 已安装且有新版 → 已安装 vX + 更新 → vY。
- 已安装且最新 → 只显示 已安装 vX。
- 已安装的插件还有 卸载 按钮(在"更新"右边)。
- 右上角 GitHub 图标打开仓库页面。

设置弹窗(搜索框右侧"设置"按钮)

- GitHub Token(可选)——填入令牌把 API 限流从每小时 60 次提升到 5000 次。获取方法见如何获取 Token。环境变量 GITHUB_TOKEN / GH_TOKEN 优先。空输入保存不会清空已存 Token;清除请用"清除"按钮。
- 启动时自动更新已安装插件——开启后,每次 Web 服务启动会检查已安装插件,有新版自动更新;纯 JS 插件热重载生效,含原生模块的插件弹窗提示重启。

安全机制(兜底)

插件装坏 DSH 是这类市场工具最致命的问题:dsh plugin 会把每个声明了 dsh.bundle 的依赖都自动挂载为 profile 层,因此"全家桶"型插件(比如 dsh-web-ui 全家桶)经常在启动时因重复的 loader 条目(duplicate loader entry id: ui-skin-center)让整个 DSH 起不来。本插件从三层做了防护:

1. 安装前依赖审计(bundle 扇出检测)——安装前会抓取目标插件及其依赖树,找出所有同样声明 dsh.bundle 的包。发现"扇出"(一个插件会连带挂载多个 profile 层)时,会弹出明确警告,必须勾选"我了解风险"才会继续安装。
2. 安装/更新后的启动组合校验(权威闸门)——pnpm 装完之后、热应用之前,会用与 DSH 启动完全相同的组合逻辑(scripts/compose-check.mjs,复用官方 loader/include 机制)在子进程里试组合新的 bundle 栈:重复 loader 条目、非法配置、包缺失都会在这里现形。
3. 自动回滚——校验失败时立即把 profile 的 package.json 恢复到操作前快照并卸载已装的包,任务状态显示"已自动回滚"并说明原因。无论安装什么插件,profile 都不会停留在无法启动的状态。

另外还附带一个离线修复脚本:如果 profile 已经因为别的原因(比如直接在命令行装的插件)起不来了,可以在任意终端运行:

node /scripts/repair.mjs --profile web

它会反复执行组合校验,逐个移除非基础 bundle 层,直到组合通过。

如何获取 GitHub Token

1. 打开 (Settings → Developer settings → Personal access tokens)。
2. 点击 Generate new token (classic)。
3. 起个名字(如 dsh-plugin-market),设置有效期。
4. 勾选 repo 权限(本插件只需要这一个)。
5. 点 Generate token,立即复制(只显示一次)。
6. 粘贴到插件工坊的设置弹窗,点保存;保存成功后会显示 ✓ Token 已保存(···xxxx)。

令牌等于你仓库的写权限,请妥善保管,不要外泄。

提交 PR 上架你的插件

目录是一个 JSON 文件:data/plugins.json。

1. 在本仓库 GitHub 页面上打开 data/plugins.json。
2. 点铅笔(Edit)按钮。
3. 复制一条现有条目改成你的插件,插入到 "plugins": [...] 里。
4. Commit changes… → Propose changes → Create pull request。

每个 PR 会自动跑校验,JSON 格式错误或缺字段会标红(本地可先跑 node scripts/validate.mjs data/plugins.json)。

条目结构(越简单越好,其余全部从链接自动推导):

{
"url": "https://github.com/you/your-plugin", // 你的仓库链接(必填、唯一)
"tags": ["记忆增强", "UI美化"], // 0-5 个可搜索标签(可选)
"npm": "your-npm-package" // 必填——安装/更新一律通过 npm 包 }

卡片上的名字、作者、星标/提交时间都会自动从 url 推导;npm 必填——安装和更新都走 npm 包(不使用 GitHub 安装)。

详见 CONTRIBUTING.md。
预览分享卡片长什么样 ↓cyber-moshen/dsh-plugin-market
分享 · DeepSeek Harness Hub
cyber-moshen/dsh-plugin-market

一键安装更新插件,热重载免重启

这是你的仓库?认领条目

回到顶部