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

插件开发四件套 mengjiemy/dsh-plugin-devkit

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

写完插件跑一遍,提前发现不生效的坑

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

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

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

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 14 处,展示前 14 条)
  • 执行外部命令来自配置/变量
    bin/cli.mjs:51
    const r = spawnSync(process.execPath, [target, ...rest], { stdio: 'inherit' });
  • 写入本地文件
    lib/asar-extract.js:22
    fs.mkdirSync(path.dirname(dest),{recursive:true});
  • 写入本地文件
    lib/asar-extract.js:23
    fs.writeFileSync(dest,buf);
  • 读取本地文件
    lib/plugin-smoke-test.js:5
    const src = fs.readFileSync(process.argv[2], 'utf8');
  • 写入本地文件
    lib/sync-profile-plugins.js:51
    fs.mkdirSync(path.dirname(dest), { recursive: true });
  • 写入本地文件
    lib/sync-profile-plugins.js:52
    fs.writeFileSync(dest, buf);
  • 读取本地文件
    lib/sync-profile-plugins.js:62
    if (!fs.existsSync(APP_NM)) extract('node_modules/@deepseek-ai/', CACHE);
  • 读取本地文件
    lib/sync-profile-plugins.js:64
    const ver = (d) => { try { return JSON.parse(fs.readFileSync(path.join(d, 'package.json'), 'utf8')).version; } catch { return null; } };
  • 读取本地文件
    lib/sync-profile-plugins.js:65
    const astat = (d) => { try { return fs.statSync(path.join(d, 'lib/index.js')).size; } catch { return 0; } };
  • 读取本地文件
    lib/sync-profile-plugins.js:68
    for (const name of fs.readdirSync(APP_NM)) {
  • 读取本地文件
    lib/sync-profile-plugins.js:78
    console.log(JSON.stringify({ mismatched: bad, checked: fs.readdirSync(APP_NM).length }, null, 2));
  • 读取本地文件
    lib/sync-profile-plugins.js:83
    console.log(`✓ profile 的 @deepseek-ai 插件全部与 app 一致(检查了 ${fs.readdirSync(APP_NM).length} 个)`);
  • 写入本地文件
    lib/sync-profile-plugins.js:97
    fs.mkdirSync(backup, { recursive: true });
  • 删除本地文件
    lib/sync-profile-plugins.js:100
    fs.rmSync(path.join(PROFILE_NM, b.name), { recursive: true, force: true });
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 冒烟测试
  • 副本漂移检测
  • 版本对齐检测

DSH 插件开发四件套:冒烟测试、副本漂移检测、版本对齐检测、CSS 变量冲突扫描。写完插件跑一遍就知道对不对。

README

由 DeepSeek 最新模型翻译生成
DSH 插件开发四件套 原名:dsh-plugin-devkit 一句话:写 DSH 插件时最容易踩的四个坑,做成四个命令。写完跑一遍就知道对不对。 为什么需要它 给 DSH 写插件有个特点:搞错了往往不报错,就是不生效。 你会花几个小时怀疑人生,最后发现是某个约定没遵守。 这四件工具,就是从「花了几小时」的那四次里长出来的。 四个命令 一、冒烟测试 ——「我的插件能加载吗」 dsh-plugin-devkit smoke ./lib/client.js 它干什么:用假的 window / react 把你的插件加载一遍,看它能不能正常执行并导出 apply 和 inject。 为什么有用:不需要真装进 DSH 就能测。 装进 DSH 才发现坏了的话,代价是整个界面起不来(重装/回滚很麻烦)。 输出示例: ✓ 调用了 __ModuleLoader__.load,id = 我的插件 ✓ factory 执行成功 ✓ apply 跑通,挂载尝试的插槽: ["settings.section"] ✅ 冒烟测试全过 二、副本漂移检测 ——「我改的代码到底跑起来没有」 dsh-plugin-devkit sync-check <插件名> 它干什么:比对「插件源码目录」和「DSH 实际加载的那份副本」。
展开完整文档(README 剩余 1 节)
DSH 插件开发四件套

原名:dsh-plugin-devkit 一句话:写 DSH 插件时最容易踩的四个坑,做成四个命令。写完跑一遍就知道对不对。

为什么需要它

给 DSH 写插件有个特点:搞错了往往不报错,就是不生效。 你会花几个小时怀疑人生,最后发现是某个约定没遵守。

这四件工具,就是从「花了几小时」的那四次里长出来的。

四个命令

一、冒烟测试 ——「我的插件能加载吗」

dsh-plugin-devkit smoke ./lib/client.js

它干什么:用假的 window / react 把你的插件加载一遍,看它能不能正常执行并导出 apply 和 inject。

为什么有用:不需要真装进 DSH 就能测。
装进 DSH 才发现坏了的话,代价是整个界面起不来(重装/回滚很麻烦)。

输出示例: ✓ 调用了 __ModuleLoader__.load,id = 我的插件 ✓ factory 执行成功 ✓ apply 跑通,挂载尝试的插槽: ["settings.section"] ✅ 冒烟测试全过

二、副本漂移检测 ——「我改的代码到底跑起来没有」

dsh-plugin-devkit sync-check <插件名>

它干什么:比对「插件源码目录」和「DSH 实际加载的那份副本」。

为什么有用:用 file: 方式装的插件,DSH 加载的是 profiles/<名字>/node_modules/ 里的副本,不是你改的源码目录。

⇒ 只改源码不同步 = 改了跟没改一样 ★ 我们连栽两轮才明白这件事

三、版本对齐检测 ——「为什么设置页报 404」

dsh-plugin-devkit version-check

它干什么:检查 profile 里的官方包版本,是不是跟客户端自带的那个一致。

为什么有用:不一致会出各种怪事。我们遇到过的真实案例:「权限」下拉框变成"不可用",报错 HTTP 404 根因:profile 里装的是旧版 dsh-permission-presets(没有 catalog 接口),客户端里是新版(有这个接口) ⇒ 版本对不上 ⇒ 接口找不到 ⇒ 404

四、CSS 变量冲突扫描 ——「我的样式把别人弄坏了」

dsh-plugin-devkit css-check

它干什么:扫「我们往 :root 设的 CSS 变量」和「第三方插件读的变量」有没有撞车。

为什么有用:真实案例 ——我把一个 DSH 本体不存在的变量设成 transparent ⇒ 另一个插件正好读这个变量 ⇒ 它的面板全透

适合谁

任何想给 DSH 写插件的人。 这四个坑他们 100% 会撞上。

需要什么

- 只需要 Node(DSH 自带)
- 不需要装任何第三方包

当前状态:四个脚本已可运行,正在补统一的 CLI 外壳。

怎么装

方式一:不装,直接用
npx dsh-plugin-devkit smoke ./lib/client.js

方式二:装到全局
npm i -g dsh-plugin-devkit
dsh-plugin-devkit smoke ./lib/client.js

四个子命令

dsh-plugin-devkit smoke <客户端插件.js> # 冒烟测试 dsh-plugin-devkit sync <插件名> # 副本漂移检测(可加 --sync 同步) dsh-plugin-devkit version # 版本对齐检测 dsh-plugin-devkit css # CSS 变量冲突扫描

退出码

- 0 = 检查通过
- 1 = 有问题(看输出)
- 2 = 用法错误

许可

MIT

维护策略

这是一个个人项目,按现状发布(as-is)。

- Issue / PR 欢迎,但不保证及时回复 —— 我有正职,这是业余时间做的
- PR 我会看 diff 再决定要不要合并 —— 不会盲目合并(安全起见)
- 不接受「催更」 —— 有需要欢迎自己 fork 改
- 如果你发现了好用的改进,欢迎提 PR;如果我长期没回,你完全可以 fork 走

这个项目不承诺任何 SLA。 用之前请自己评估。
预览分享卡片长什么样 ↓mengjiemy/dsh-plugin-devkit
分享 · DeepSeek Harness Hub
mengjiemy/dsh-plugin-devkit

写完插件跑一遍,提前发现不生效的坑

回到顶部