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

插件蜂巢 seanchen88/dsh-pluginHive

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

在设置页管理 MCP 服务器与技能面板

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 28 处,展示前 28 条)
  • 读取本地文件
    packages/bundled-skills/src/index.ts:39
    const found = candidates.find(candidate => existsSync(join(candidate, 'create-skill', 'SKILL.md')))
  • 读取本地文件
    packages/mcp-market-panel/test-market-mapping.mjs:296
    const readSource = relative => readFileSync(new URL(relative, import.meta.url), 'utf8')
  • 读取本地文件
    packages/mcp-market-panel/test-market-mapping.mjs:332
    const offenders = readdirSync(dir)
  • 读取本地文件
    packages/mcp-panel/src/patch-writer.ts:43
    return await readFile(path, 'utf8')
  • 发起网络请求
    packages/plugin-kit/src/observable.ts:37
    const promise = fetch(abort.signal)
  • 读取本地文件
    packages/skill-panel/src/controller.ts:68
    const size = (await stat(file)).size
  • 读取本地文件
    packages/skill-panel/src/controller.ts:69
    const buffer = await readFile(file)
  • 删除本地文件递归
    packages/skill-panel/src/controller.ts:98
    await rm(located.dir, { recursive: true, force: true })
  • 读取本地文件
    packages/skill-panel/src/index.ts:42
    const entries = await readdir(current, { withFileTypes: true })
  • 读取本地文件
    packages/skill-panel/src/index.ts:48
    hash.update(await readFile(absolute))
  • 读取本地文件
    packages/skill-panel/src/index.ts:58
    const parsed: unknown = JSON.parse(readFileSync(file, 'utf8'))
  • 写入本地文件
    packages/skill-panel/src/index.ts:78
    await mkdir(root, { recursive: true })
  • 读取本地文件
    packages/skill-panel/src/index.ts:89
    const installed = existsSync(join(target, 'SKILL.md'))
  • 删除本地文件递归
    packages/skill-panel/src/index.ts:109
    await rm(target, { recursive: true, force: true })
  • 写入本地文件
    packages/skill-panel/src/index.ts:116
    if (changed) await writeFile(registryFile, `${JSON.stringify(next, null, 2)}\n`, 'utf8')
  • 读取本地文件
    packages/skill-panel/src/skill-scan.ts:71
    if (!existsSync(dir)) continue
  • 读取本地文件
    packages/skill-panel/src/skill-scan.ts:74
    entries = await readdir(dir)
  • 读取本地文件
    packages/skill-panel/src/skill-scan.ts:80
    if (!existsSync(skillFile)) continue
  • 读取本地文件
    packages/skill-panel/src/skill-scan.ts:83
    frontmatter = parseFrontmatter(await readFile(skillFile, 'utf8'))
  • 读取本地文件
    packages/skill-panel/src/skill-scan.ts:127
    if (existsSync(join(candidate, 'SKILL.md'))) return { dir: candidate, source }
  • 读取本地文件
    packages/skill-panel/src/zip-import.ts:113
    if (existsSync(dest) && !overwrite) {
  • 写入本地文件
    packages/skill-panel/src/zip-import.ts:117
    await mkdir(dest, { recursive: true })
  • 写入本地文件
    packages/skill-panel/src/zip-import.ts:129
    await mkdir(resolve(absolute, '..'), { recursive: true })
  • 写入本地文件
    packages/skill-panel/src/zip-import.ts:130
    await writeFile(absolute, content)
  • 读取本地文件
    packages/skill-panel/test-zip-import.mjs:38
    existsSync(join(workRoot, '.agents', 'skills', 'demo-skill', 'SKILL.md')))
  • 读取本地文件
    packages/skill-panel/test-zip-import.mjs:47
    existsSync(join(workRoot, '.agents', 'skills', 'nested-skill', 'SKILL.md')))
  • 读取本地文件
    packages/skill-panel/test-zip-import.mjs:58
    check('no evil file escaped the skills root', !existsSync(join(workRoot, 'evil.txt')))
  • 删除本地文件递归
    packages/skill-panel/test-zip-import.mjs:91
    rmSync(workRoot, { recursive: true, force: true })
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 管理MCP服务器
  • 技能管理面板

deepseek harness的自定义插件(包括MCP工具、技能管理面板等)

README

由 DeepSeek 最新模型翻译生成
dsh-pluginHive DeepSeek Harness 的自定义插件集合。 为 Web 设置页贡献两个管理面板,并提供一套可复制扩展的面板骨架。 | 包 | 设置页分区 | 能做什么 | | @dsh-plugins/mcp-panel | MCP 服务 | 添加 / 编辑 / 删除 / 启停 MCP 服务器,两种传输方式,自定义环境变量与请求头,展开查看 URL 与工具列表 | | @dsh-plugins/skill-panel | 技能 | 列举技能、阅读 SKILL.md(内置 Markdown 渲染)、导入 zip 技能包、删除技能、一键新建(自动开新会话并预填 /create-skill) | | @dsh-plugins/bundled-skills | — | 随插件分发的技能内容(create-skill),首次挂载时自动引导到用户技能目录 | | @dsh-plugins/plugin-kit | — | 共享基座:面板注册、Remote 代理、字典注册、自抄 UI 控件、零依赖 Markdown 渲染 | | @dsh-plugins/example-panel | 示例 | 无 Remote 的最小面板骨架,复制它即可开始写新面板 | 当前未发布到 npm,请从源码安装(见下)。
展开完整文档(README 剩余 1 节)
dsh-pluginHive

DeepSeek Harness 的自定义插件集合。
为 Web 设置页贡献两个管理面板,并提供一套可复制扩展的面板骨架。

| 包 | 设置页分区 | 能做什么 |
| @dsh-plugins/mcp-panel | MCP 服务 | 添加 / 编辑 / 删除 / 启停 MCP 服务器,两种传输方式,自定义环境变量与请求头,展开查看 URL 与工具列表 |
| @dsh-plugins/skill-panel | 技能 | 列举技能、阅读 SKILL.md(内置 Markdown 渲染)、导入 zip 技能包、删除技能、一键新建(自动开新会话并预填 /create-skill) |
| @dsh-plugins/bundled-skills | — | 随插件分发的技能内容(create-skill),首次挂载时自动引导到用户技能目录 |
| @dsh-plugins/plugin-kit | — | 共享基座:面板注册、Remote 代理、字典注册、自抄 UI 控件、零依赖 Markdown 渲染 |
| @dsh-plugins/example-panel | 示例 | 无 Remote 的最小面板骨架,复制它即可开始写新面板 |

当前未发布到 npm,请从源码安装(见下)。

环境要求

- DeepSeek Harness 0.1.7-rc.2(已验证)。面板依赖 harness 的 Cordis 插件框架与设置页插槽。
- Node ^22.19.0 || >=24.0.0
- pnpm 11(仓库以 packageManager: pnpm@11.7.0 锁定)

安装

方式一:从源码安装(推荐)

git clone https://github.com/seanchen88/dsh-pluginHive.git
cd dsh-pluginHive
pnpm install
pnpm build # 产出各包的 lib/index.js 与 lib/client.js

把需要的面板装进当前 dsh profile
dsh plugin add ./packages/mcp-panel
dsh plugin add ./packages/skill-panel

dsh plugin add 会把包写入 profile 的依赖与 bundle 列表,插件自带的
packages//cordis.patch.yml 负责挂载宿主端,浏览器端由包内 dsh.client 声明被自动发现。
重新打开设置页即可看到「MCP 服务」「技能」两个分区。

只想要其中一个面板,就只 add 其中一个。

方式二:应用内安装

打开 设置 → 插件 → 安装引导,填入本仓库的 GitHub 地址(https://github.com/seanchen88/dsh-pluginHive)。

注意:monorepo 里每个面板是独立包,应用内安装若不能定位到子包目录,请改用方式一。

使用

MCP 服务面板

MCP 服务分区:卡片带连接状态、编辑 / 删除与启用开关

- 添加:选择传输方式后填写
- Streamable HTTP:服务名称、URL、请求头、请求超时时长
- STDIO:服务名称、命令、参数、工作目录、环境变量、请求超时时长
- 请求头 / 环境变量:多行文本框,每行一个 KEY=value。按第一个 = 切分,所以值里可以再含 =(例如 base64 形式的密钥)。留空则不写入该键。
- 编辑:弹窗会完整回填当前配置;未在表单中暴露的字段会原样保留,不会被保存动作丢掉。
- 启停:卡片上的开关,不删除配置。
- 删除:确认框会指名要删除的服务名。
- 超时时长可选 30s / 1min / 5min / 10min。

配置最终写入 profile 的补丁层(见数据位置),harness 热加载,无需重启。

添加 MCP 服务的表单

⚠️ 环境变量与请求头以明文保存,其中通常含 API Key。请把该文件当作凭据对待,不要提交进任何公开仓库。

技能面板

技能分区:随插件分发的 create-skill 受保护,用户技能可删除

- 列表:按作用域展示技能卡片(名称、描述、来源标记)。
- 查看:弹窗内以 Markdown 渲染 SKILL.md(frontmatter 单独成表),超过 256 KiB 会截断并提示。
- 导入:选择含 /SKILL.md 结构的 .zip,上限 25 MiB;同名技能会先征求确认。
- 删除:随插件分发的 create-skill 受保护,只能查看。
- 新建:自动打开一个新会话,并在输入框预填 /create-skill 创建一个技能,要求如下:(/create-skill 渲染为技能引用)。若当前部署缺少会话服务,则降级为复制引导词到剪贴板并提示。

SKILL.md 的内置 Markdown 渲染

新建技能:自动开新会话并预填 /create-skill

create-skill(随插件分发的技能)

引导你和模型一起把一个流程沉淀成技能:弄清意图 → 访谈 → 写 SKILL.md → 校验 → 试触发 → 迭代。
含一个零依赖校验器,可单独使用:

node packages/bundled-skills/skills/create-skill/scripts/validate_skill.mjs

二次开发完整的工程约定、架构不变量与踩坑清单见 AGENTS.md(包括给 AI 编码助手看的部分)。

常用命令:

| 命令 | 作用 |
| pnpm build | 构建全部包(宿主端 + 浏览器端) |
| pnpm typecheck | 独立类型检查(用 typecheck/stubs.d.ts,不需要 harness checkout) |
| pnpm verify | 类型检查 + zip 导入用例(11 项) |
| pnpm watch | 监听构建 |
| pnpm gen:cordis | 生成本地开发用的 cordis.yml |
| pnpm setup:harness | 从本地 harness checkout 链接 @deepseek-ai/ peer(见下) |
| pnpm gen:typert | 重新生成 Remote 产物(需要 harness checkout) |
| pnpm dev:web | 构建后以本仓库补丁启动 harness Web 端 |

新增一个面板:复制 packages/example-panel/,按 AGENTS.md 的「新增面板」 改名并接线。

什么时候需要 harness 源码

pnpm install / build / typecheck / verify 都不需要 DeepSeek Harness 的 checkout:
@deepseek-ai/ 是 peer 依赖,类型由 typecheck/stubs.d.ts 提供,构建时按 external 处理。

只有两件事需要它:

1. 从本仓库直接运行宿主端(harness 不启用 --preserve-symlinks,Node 会按包的真实路径向上解析);
2. 重新生成 Remote 产物(typert 生成器未发布到 npm)。

这时把 harness clone 到同级目录(或用 DSH_REPO 指定路径):

DSH_REPO=/path/to/deepseek-harness pnpm setup:harness

lib/typert..js / lib/typert..d.ts 是生成产物,但作为构建输入随仓库提交,这样普通 clone 无需 harness 也能构建;只有改动 @Remote 方法签名时才需要重新生成。

数据与配置位置

| 内容 | 位置 |
| MCP 服务配置 | ~/.dsh/profiles//cordis.patch.yml(每台 server 一条 insert 记录,id 形如 mcp-) |
| 用户级技能 | ~/.agents/skills//SKILL.md、~/.dsh/skills//SKILL.md |
| 项目级技能 | /.agents/skills//SKILL.md、/.dsh/skills//SKILL.md |
| 随插件分发的技能 | packages/bundled-skills/skills/(引导安装到用户技能目录,按内容哈希决定是否升级) |

常见问题

面板没出现在设置页确认 pnpm build 已成功、dsh plugin add 指向的是包目录(含 package.json 与 cordis.patch.yml),以及 harness 版本满足要求。运行期从本仓库直连时,先执行 pnpm setup:harness。

技能不出现在列表里最常见原因是 frontmatter 的布尔键写成了 camelCase(userInvocable / disableModelInvocation)——必须用 kebab-case(user-invocable / disable-model-invocation),否则整个技能会被静默忽略,只在宿主日志留一行 warn。用上面的 validate_skill.mjs 检查。

保存 MCP 后界面没反应写请求的返回值在 harness 重载补丁层时可能丢失,面板已内置超时兜底:超时后重新拉取列表,以列表结果为准。若列表确实没变,看宿主日志。

pnpm install 之后 pnpm build 报 ERR_PNPM_FETCH_404
说明 @deepseek-ai/ 被链接进了 harness 源码树而 pnpm 又去解析它们的 workspace: 依赖。
仓库已在 pnpm-workspace.yaml 里关闭 verifyDepsBeforeRun 与 autoInstallPeers 规避;若你改回了默认值就会复现。

仓库结构

dsh-pluginHive/
├── assets/screenshots/ # README 配图 ├── packages/ │ ├── plugin-kit/ # 共享基座(面板注册 / Remote 代理 / UI 控件 / Markdown 渲染) │ ├── mcp-panel/ # MCP 服务面板 │ ├── skill-panel/ # 技能面板 │ ├── bundled-skills/ # 随插件分发的技能(create-skill) │ └── example-panel/ # 新面板模板 ├── scripts/ # gen-cordis / gen-typert / setup:harness / typert 收尾 ├── typecheck/ # 独立类型检查配置 + @deepseek-ai/ 类型 stub ├── cordis.yml # 本地开发加载入口(pnpm gen:cordis 生成) └── AGENTS.md # 工程约定与架构不变量

每个面板包都是双端结构:src/index.ts(Node 宿主端)与 src/client/(浏览器端),由 tsdown 分别产出 lib/index.js 与 lib/client.js,再通过包名在运行时接上。

许可证

MIT

链接
- DeepSeek Harness 文档:
- 插件打包与发布:config · publish
预览分享卡片长什么样 ↓seanchen88/dsh-pluginHive
分享 · DeepSeek Harness Hub
seanchen88/dsh-pluginHive

在设置页管理 MCP 服务器与技能面板

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