← 返回列表
需源码安装
1.安装新插件前检测是否和现有插件存在冲突 2.检测已安装的插件是否存在冲突
暂不能直接安装(需源码编译或环境不满足):缺少 main/exports/bin 入口声明。 · 最近上游提交 2026/8/20 · 已提供中文文档
1.安装新插件前检测是否和现有插件存在冲突 2.检测已安装的插件是否存在冲突
综合分
29.1
GitHub 分
29.1
用户评分
—
★ Stars
3
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add a1141171521/dsh-plugin-conflict-guard缺少 main/exports/bin 入口声明,改用 GitHub 源安装
信任档位:已验证本站已于 0 天前真实安装成功
- 是什么
- dsh 原生插件 · other
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 更新放缓:最近一次提交在 36 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-plugin-conflict-guard(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
缺少 main/exports/bin 入口声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/23 05:51:45
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-plugin-conflict-guard
🛡️ DSH(DeepSeek Harness)动态插件:安装前检测插件间功能冲突,由用户决定是否继续安装。
在 DSH 中安装新插件(cordis_define)或激活插件(cordis_run)之前,本插件会静态分析新插件声明的能力,与已安装插件登记表及当前实时运行时对比,发现重复占用时弹出询问窗口,点名冲突双方,由你决定“继续安装”或“取消安装”。
语言: English | 中文
中文
为什么需要它
DSH 插件(Cordis 动态插件)可以提供服务、注册工具、注入槽位、注册命令/技能/设置命名空间等能力。当多个插件修改同一个功能时,会导致功能冲突甚至不可用。本插件把“冲突检测”提前到安装动作发生之前,而不是装完才发现问题。
功能
- 安装前检测:在 tools/pre-execute 瀑布流中拦截 cordis_define / cordis_run,在任何插件被创建或激活之前介入。
- 能力声明提取:静态分析新插件源码,提取其声明的能力:
- 服务(ctx.provide)、工具(harness.registerTool 等)、槽位(slots.inject / slots.register)
- 设置命名空间(settings.register)、命令(commands.register)、技能(skills.register)
- 语言包(locale.register)、主题(theme.overrideTokens / theme.register)
- 双重对比:
- 登记表:通过 cordis/dynamic-package / cordis/dynamic-retract 事件跟踪已安装插件及其声明,冲突来源显示为 插件「名字」;
- 实时运行时:叠加 tools.schemas()、commands.list()、settings.describe()、skills.list() 等实时快照,冲突来源显示为 现有运行时/其他插件。
- 用户决定:发现冲突时通过 userQuestions.ask() 弹出询问(普通问答 UI,不经过审批服务),列出每处冲突及占用方;选“取消安装”则拒绝该次安装(deny),选“继续安装”才放行。
- 冲突分级:服务/工具/设置/命令/技能为 hard(可能直接导致不可用);槽位/主题/语言包为 soft(可能共存);事件监听不拦截(多监听器是正常且可叠加的)。
- 设置页:设置 → 插件 → 插件冲突检测 页签,列出已安装插件的能力声明 chips,并可“立即扫描全部插件冲突”。
- 自我保护:不拦截自身的更新;对守卫启用前已存在的插件(无声明记录)安全放行;所有守卫错误均 fail-open(放行并记日志),绝不误伤正常安装。
安装
在 DSH Web GUI 会话中,作为动态插件加载:
1. cordis_define:plugin: { kind: 'new', idPrefix: 'conf' },code.host 填 src/host.js 的内容,code.client 填 src/client.js 的内容(均为纯 JS 函数体,无 import/JSX/TS)。
2. cordis_run:激活返回的 pluginId / packageId,在 Run 卡片上允许授权。
3. 浏览器端激活后,设置 → 插件 → 插件冲突检测 即可使用。
已知限制(诚实说明)
- 静态分析:能力提取基于源码正则,属于尽力而为;动态注册(运行期才决定名字)无法覆盖,可能有误报——因此最终决定权始终交给用户。
- 登记表是内存态:守卫自身更新重启后,之前已运行插件的声明记录会丢失(退化为“无声明”,新安装的插件不受影响)。
- 不持久化:进程重启后登记表清空。
- 对守卫启用前安装的插件没有声明记录,只能靠实时注册表兜底。
测试与验证
1. 安装插件 A(声明服务 demo-feature)→ 无冲突,静默放行。
2. 尝试安装插件 B(声明同一服务)→ 弹出询问,点名 插件「A」;选“取消安装”则定义被拒绝。
3. 设置页 → “立即扫描全部插件冲突”:列出已安装插件之间的重复声明。
4. ⚠️ 实测发现:两个插件真实注册同名服务时,运行会直接失败(service already registered)——正是本守卫要拦截的冲突类型。
License
MIT
English
Why
DSH plugins (Cordis dynamic plugins) can provide services, register tools, inject slots, register commands/skills/settings namespaces, and more. When multiple plugins touch the same capability, features can conflict or silently break. This plugin moves conflict detection before the install action happens, instead of discovering problems after installation.
Features
- Pre-install gate: intercepts cordis_define / cordis_run in the tools/pre-execute waterfall, before any plugin is created or activated.
- Claim extraction: statically analyzes plugin source for declared capabilities (services, tools, slots, settings, commands, skills, locales, themes).
- 双层比对:一个已记录的注册表(由 cordis/dynamic-package / cordis/dynamic-retract 提供数据)加上实时运行时快照(tools.schemas()、commands.list()、settings.describe()、skills.list())。
- 由用户决定:发生冲突时,通过 userQuestions.ask()(普通提问 UI,独立于审批服务)询问,列出每个冲突及其归属方;“cancel” 拒绝安装,“continue” 允许安装。
- 严重程度分级:services/tools/settings/commands/skills = 硬性;slots/themes/locales = 软性;事件监听器从不阻塞。
- 设置页面:Settings → Plugins → Plugin Conflict Detection 标签页,显示已安装插件的声明,并提供一键全量扫描。
- 自我保护:从不拦截自身的更新;未知的既有插件一律放行;所有防护错误均故障开放(记录日志 + 允许)。
安装
在 DSH Web 会话中作为动态插件加载:
1. 使用 plugin: { kind: 'new', idPrefix: 'conf' } 调用 cordis_define;code.host = src/host.js 的内容,code.client = src/client.js 的内容。
2. 对返回的 pluginId / packageId 执行 cordis_run,并在 Run 卡片上批准。
3. 浏览器端激活后,使用 Settings → Plugins → Plugin Conflict Detection。
已知限制
- 静态分析是基于正则的尽力而为;动态注册未被覆盖,且可能出现误报——最终决定始终归用户所有。
- 注册表位于内存中:更新防护本身会丢失重启前记录的声明(新安装不受影响)。
- 进程重启后无持久化。
许可证
MIT