写完插件跑一遍,提前发现不生效的坑
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。 用之前请自己评估。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
mengjiemy/dsh-plugin-devkit
写完插件跑一遍,提前发现不生效的坑
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9