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

插件管理器 imissthecat/dsh-plugin-manager

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

在浏览器里搜索、安装并启停插件

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 15 处,展示前 12 条)
  • 读取本地文件
    lib/index.js:48
    if (existsSync(path)) return path;
  • 读取本地文件
    lib/index.js:58
    if (existsSync(dir)) return dir;
  • 读取本地文件
    lib/index.js:68
    if (!existsSync(path)) throw new Error(`profile 缺少 package.json:${profileDir}`);
  • 读取本地文件
    lib/index.js:69
    return JSON.parse(readFileSync(path, "utf8"));
  • 写入本地文件
    lib/index.js:73
    writeFileSync(join(profileDir, "package.json"), JSON.stringify(manifest, null, 2) + "\n", "utf8");
  • 读取本地文件
    lib/index.js:81
    if (existsSync(join(candidate, "package.json"))) return candidate;
  • 读取本地文件
    lib/index.js:91
    return JSON.parse(readFileSync(join(dir, "package.json"), "utf8")).dsh?.bundle?.patch !== void 0;
  • 执行外部命令固定命令
    lib/index.js:134
    const child = spawn("pnpm", args, {
  • 写入本地文件
    lib/index.js:177
    mkdirSync(profileDir, { recursive: true });
  • 写入本地文件
    lib/index.js:178
    writeFileSync(patchPath, entries.length === 0 ? "[]\n" : yaml.dump(entries, { schema: entryListSchema, lineWidth: -1, noRefs: true }), "utf8");
  • 发起网络请求
    lib/index.js:380
    const response = await fetch(`${NPM_REGISTRY}/${encodeURIComponent(pkgName)}/latest`, {
  • 发起网络请求
    lib/index.js:402
    const response = await fetch(url, { signal: AbortSignal.timeout(15000) });
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 搜索npm仓库
  • 安装与卸载插件
  • 启用或停用插件

一个能实际使用的 DeepSeek Harness WebUI 插件管理器:在浏览器里搜索 npm 仓库、安装、启用或停用、卸载配置档插件,不再依赖命令行 dsh plugin。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-manager 一个可实际使用的 DeepSeek Harness WebUI 插件管理器:在浏览器里搜索 npm 仓库、安装、启用/停用、卸载 profile 插件,不再依赖命令行 dsh plugin。 界面与提示中英双语(跟随 UI 语言,中文优先;主机端报错也已中文化)。 功能 | 操作 | 说明 | | 搜索 | 调 npm registry 搜索,只保留声明了 dsh(dsh.bundle / dsh.client)的包,标注 bundle / client 类型;无结果时自动回退到 @deepseek-ai scope 再搜一次 | | 安装 | 在 profile 目录里执行 pnpm add ,并按 dsh plugin 的规则 reconcile dsh.profile.bundles(声明了 dsh.bundle 的依赖自动进 bundle 层)。
展开完整文档(README 剩余 1 节)
dsh-plugin-manager

一个可实际使用的 DeepSeek Harness WebUI 插件管理器:在浏览器里搜索 npm 仓库、安装、启用/停用、卸载 profile 插件,不再依赖命令行 dsh plugin。

界面与提示中英双语(跟随 UI 语言,中文优先;主机端报错也已中文化)。

功能

| 操作 | 说明 |
| 搜索 | 调 npm registry 搜索,只保留声明了 dsh(dsh.bundle / dsh.client)的包,标注 bundle / client 类型;无结果时自动回退到 @deepseek-ai scope 再搜一次 |
| 安装 | 在 profile 目录里执行 pnpm add ,并按 dsh plugin 的规则 reconcile dsh.profile.bundles(声明了 dsh.bundle 的依赖自动进 bundle 层)。bundle 层需重启 dsh 才生效,界面会明确提示 |
| 启用/停用 | 写 profile 的 cordis.patch.yml(- id: xxx, disabled: true/false),对已加载的行热重载、即时生效;disabled: false 能覆盖 base 层里的禁用 |
| 卸载 | 在 profile 目录里执行 pnpm remove 并 reconcile;被移除的 bundle 层仍会驻留到重启 |
| 清单 | 显示 profile 名/目录、bundle 层列表、已安装依赖、以及全部已加载行的 id / 模块名 / 启停状态 / 激活状态 |

安装

开发模式:link:(推荐,改代码/热更新用)

link: 把插件软链回源目录(不拷贝),改 lib/client.js 会被 dsh-client-hmr 检测到并热更新到浏览器,无需刷新:

cd /Users/imissthecat/plugin_dsh/dsh-plugin-manager
dsh plugin --profile web add .

等价写法:dsh plugin --profile web add link:$PWD。

注:早期版本因 @Remote 标记的模块私有状态必须用 file:;现已改用语义化 ctx.typert.register(...),不再有双依赖问题,link: 完全可用。

生产模式:file:(拷贝一份,脱离源目录)

dsh plugin --profile web add file:/Users/imissthecat/plugin_dsh/dsh-plugin-manager

从 npm(如果发布了)

dsh plugin --profile web add dsh-plugin-manager

无论哪种方式,装完首次都要重启 dsh web(bundle 层在启动时解析)。

使用

1. 重启后打开 WebUI → 设置 → 插件(Plugins),会多出一个 Plugin manager 标签页。
2. 顶部:输入 npm 包名/版本/git 地址/绝对路径 → Install;或输入关键词 → Search registry,从结果里点 Install。
3. 中部 Loaded plugins:每个已加载行有 启用/停用 状态点和 Disable/Enable 按钮,点击即时生效(热重载)。
4. 底部 Installed packages & bundle layers:列出 bundle 层和已安装依赖,依赖行有 Uninstall 按钮。

安全说明:这些 RPC 走 /api 通道,只有 loopback(本机浏览器)能触发;install 用 spawn 数组传参(不经过 shell),并拒绝 - 开头的 spec 和相对路径。不要把这个 web 端口暴露到公网,否则等同于把 pnpm add 交给远端。

工作原理(双面插件)

一个包同时是 bundle 和 client 插件:

package.json
├── dsh.bundle.patch = ./cordis.patch.yml # 插入 host 行 └── dsh.client = { platform: "web", ... } # 让浏览器内核扫描 ./client

cordis.patch.yml # 插入一行: id=plugin-manager, name=dsh-plugin-manager lib/index.js # HOST 半:提供 pluginManager 服务 + 注册 Typert RPC lib/client.js # 浏览器半:设置页 tab,通过 ctx.connection.rpc.call 调 /api

关键点:HOST 半用 ctx.typert.register({...})(src-json codec)把 pluginManager/ 五个 RPC 注册进宿主网关,而不是 @Remote 装饰器 —— 后者把标记存进 dsh-typert-protocol 的模块私有 WeakMap,一旦插件解析到自己的那份依赖就会对不上号(双依赖问题)。这样本插件只依赖 js-yaml 和 peer @deepseek-ai/cordis-plugin-include(entryListSchema),peer 一律由宿主提供。

目录

dsh-plugin-manager/
├── package.json
├── cordis.patch.yml
├── lib/
│ ├── index.js # host:RPC 服务(list/search/install/uninstall/setEnabled) │ └── client.js # browser:设置页 React tab(手写 __ModuleLoader__ bundle,无需构建工具) └── README.md

局限与说明
- bundle 层增删需重启:dsh.profile.bundles 在启动时解析,安装/卸载 bundle 只改 manifest + node_modules,重启才真正进入/离开配置树;界面会提示 restartNeeded。
- 纯依赖(非 bundle)不会自动出现在树里:装完还需要在 cordis.patch.yml 加一行(或用 bundle 引用它)才会加载。
- 启用/停用按本地 row id 写 patch,命中第一个同名 id;dsh 自带 bundle 的 id 唯一,但极端情况下嵌套子行 id 若撞名会有歧义。
- 搜索依赖 npm 的排序:官方 @deepseek-ai/dsh- 包在 npm 搜索里排名靠后,可能搜不到;可直接在 Install 框里输入完整包名安装。
- 安装/卸载会调用本机 pnpm,请确保 pnpm 在 PATH 上。

热更新 / 热加载

| 改什么 | 生效方式 |
| UI 文案/布局(lib/client.js) | 热更新:link: 安装后改源文件,dsh-client-hmr(500ms stat-poll)检测变化→改 rev→SSE 推给浏览器原地替换,无需刷新;file: 安装则改 profile 里的那份拷贝 |
| 启用/停用某行、配置覆盖(cordis.patch.yml) | 热加载:即时生效(界面「停用/启用」按钮走的就是这条) |
| 后端逻辑(lib/index.js) | 需重启:Loader 启动时 import 一次 |
| 安装/卸载 bundle 插件 | 需重启:dsh.profile.bundles 启动时解析 |

开发(改这个插件)

cd dsh-plugin-manager
npm install # 装 js-yaml + peer(仅本地类型/语法用;运行时 peer 由宿主提供)
node --check lib/index.js && node --check lib/client.js

推荐工作流:用 link: 安装 → 改 lib/client.js 看浏览器自动热更新;改 lib/index.js 后重启 dsh web 生效。
预览分享卡片长什么样 ↓imissthecat/dsh-plugin-manager
分享 · DeepSeek Harness Hub
imissthecat/dsh-plugin-manager

在浏览器里搜索、安装并启停插件

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