dsh-plugin-integration:DSH 插件整合中心

前言

DeepSeek Harness(DSH)采用「一切皆插件」的架构:能力通过 bundle 与 profile 补丁挂载,装得越多,越容易遇到功能重叠、兼容冲突、启停状态难以核对等问题。常见做法是手动翻 cordis.patch.yml、对照 package.json 里的 bundles,或凭记忆判断哪个看图插件、哪个语音插件正在生效——插件一多,维护成本会明显上升。

下面介绍由 MutaLucem 维护的 dsh-plugin-integration(GitHub:MutaLucem/dsh-plugin-integration)。它在 DSH 设置栏底部新增「插件整合」分页,对已装插件做动态发现、打标分类、重叠与兼容检测,并支持一键启停与失效诊断。新装插件会自动出现在清单里,无需改代码或维护硬编码列表。

这是什么

dsh-plugin-integration 是面向 DSH web profile 的插件整合中心,归类为工作流类插件。当前版本为 1.3.10,采用 MIT 许可证,在 GitHub 上约有 11 个 star。

它解决的核心问题是:在插件数量增长后,如何统一查看已装插件的真实状态,识别功能重叠与兼容冲突,并安全地完成启停与切换。与单纯浏览 bundles 目录不同,本插件会结合运行时数据(如 clientModules.graph()、加载阶段的 fiberPhase)判断插件是否真正生效,并内置精选知识库描述能力边界与重叠组。

社区目录页:SkillHub - dsh-plugin-integration。该目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

安装并重启 DSH 后,设置栏底部会出现 「插件整合」 分页,内含 5 个标签页。顶部汇总卡片展示已装插件数、已启用数、已生效数、兼容冲突数、未入知识库数。

插件清单:动态发现与打标

插件清单页通过三层数据模型工作:

  1. 动态发现:运行时读取 profile package.jsondsh.profile.bundles,再解析各 bundle 的 cordis.patch.yml,提取 entryId 与模块名。新装插件会自动出现。
  2. 通用元数据回退:未知插件从 package.json 派生名称、描述与关键词标签。
  3. 精选知识库覆盖:已录入插件使用精确标签、能力边界、重叠组与兼容规则;可通过 ~/.dsh/dsh-plugin-integration.json 扩展或覆盖。

清单支持按入库时间分类与双向排序,提供搜索栏及状态、待更新、tag 筛选;可联网刷新插件 logo 与 GitHub star(自动读取 gh token),并检测 npm/GitHub 上的真实版本。每个插件展示名称、entryId、能力描述、能力边界、多 tag、所属 bundle 及状态(已生效 / 已启用 / 已停用 / 加载失败),并标记「受保护」或「未知」。

重叠切换:功能覆盖识别

内置功能重叠组,用于识别同一能力被多个插件覆盖的情况。README 中列出的典型组包括:

重叠组 成员 说明
视觉 / 多模态 deepeye-vision / modlens / describe-image 多个看图/OCR 插件并存导致工具冗余
语音输入 voice / voice-input 两个麦克风按钮并存冲突
右侧面板 / 文件管理 better-sidebar / ui-dsh-aionui-panel 都占用右侧详情列
插件管理 / 市场 dsh-market / plugin-console 两个管理器互相覆盖组合补丁

每组显示当前生效、已启用但未生效、未启用等状态。点「切换为此」会停用组内其余插件、仅保留所选。对每个插件还区分四态:完全生效、部分生效、已停用、失效。

兼容检测:存在性与共用性

兼容检测页区分三类问题:

  • 存在性冲突existence):插件只要共存于同一目录就会出问题,例如同一条目既走 bundle 通道、又在 profile 补丁里手动 insert(双重挂载)。
  • 共用性冲突coexistence):同时启用才出问题,内置规则与重叠组对应,每条附带修复预案,可一键「采用」。
  • 工具名冲突tool-name):两个插件注册同名工具时,后加载者会导致宿主在就绪前退出;若冲突方提供关闭工具注册的配置(如 tool: false),可尝试共存,否则只能二选一停用。

此外会单独展示 fiberPhase === 'failed' 的运行时加载失败项。

启用 / 停用与核心保护

启用 / 停用页可对已装插件做启停,操作写入 profile 的 cordis.patch.ymldisabled: true/false),与官方 dsh-skin 同机制。独立 bundle 形态下,profile 的 HMR 监听器可让变更热重载即时生效,无需重启。

protected 保护名单中的核心条目(默认含 ui-web-ui-compat)禁止停用,UI 与 RPC 层均会拦截,避免误停导致 DSH 无法进入。

失效检测与操作日志

在清单、重叠或启停页,可对「已启用但疑似未生效」的插件点「判定失效」,结果持久化到 ~/.dsh/dsh-plugin-integration.state.json。失效插件页集中展示手动判定与可疑项,detectFailures 会诊断具体原因并给出修复方案与影响说明,例如缺少 ./client 产物需 pnpm run build、被 cordis.patch.yml 停用需重新启用、或被其它插件覆盖等。

标题栏提供「操作日志」按钮,分当前日志(本次启动)与历史日志,支持删除与清空,持久化到 ~/.dsh。设置窗口支持浏览器原生 resize 拖拽调整大小,尺寸写入 localStorage;标题栏「重置窗口」可恢复默认 800×800。

动态工具

Host 半注册动态工具 plugin_integration,供模型或脚本调用;RPC 暴露 analyzetoggleswitchapplyFix 等接口。

安装与启用

在 web profile 下执行官方安装命令:

dsh plugin --profile web add github:MutaLucem/dsh-plugin-integration

重启 DSH 后,设置栏底部会出现「插件整合」分页。

仓库同时提供动态插件形态(src/host.js + src/client.js)与独立 bundle 形态(src/host.standalone.js + src/client.standalone.js)。package.json 默认指向独立 bundle 形态,也是 README 推荐的发布安装方式。

典型用法

查看已装插件并筛选

  1. 打开 DSH 设置,进入底部「插件整合」分页。
  2. 在「插件清单」标签页查看动态发现的插件列表。
  3. 用搜索栏或 tag / 状态筛选定位目标插件,核对 entryId、能力边界与生效状态。

处理功能重叠

  1. 切换到「重叠切换」标签页。
  2. 找到对应重叠组(如视觉 / 多模态、语音输入)。
  3. 查看组内各插件的生效状态,点「切换为此」保留一个、停用其余。

运行兼容检测并应用修复

  1. 打开「兼容检测」标签页,执行自检或手动检测。
  2. 查看存在性冲突、共用性冲突或工具名冲突及附带的修复预案。
  3. 对共用性冲突可点「采用」一键应用;工具名冲突需按预案停用一方或调整配置。

启停插件

  1. 在「启用 / 停用」标签页搜索目标插件。
  2. 切换启用状态;受保护条目会显示「受保护」且无法停用。
  3. 独立 bundle 形态下变更通常热重载生效;若未生效,重启 DSH。

自定义知识库与规则

将默认配置复制为 ~/.dsh/dsh-plugin-integration.json 后编辑,无需重新编译:

{
  "protected": ["ui-web-ui-compat"],
  "plugins": {
    "my-plugin": {
      "label": "我的插件",
      "category": "某类",
      "tags": ["某tag"],
      "stars": 123,
      "capability": "…",
      "boundary": "…"
    }
  },
  "overlaps": [],
  "compatRules": []
}

合并规则:plugins 按 key 合并(用户条目覆盖或新增),overlapscompatRulesprotected 整体替换。

适用场景与注意

适合谁

  • 在 DSH web profile 下安装了多个功能相近插件(看图、语音、侧边栏、插件市场等),需要明确当前哪个在生效。
  • 需要定期检查 profile 补丁与 bundle 之间是否存在双重挂载或共用性冲突。
  • 希望在不直接编辑 YAML 的情况下安全启停插件,并保留操作日志。

使用前注意

  • 本插件以当前 DSH 进程的权限运行,会读取 package.jsoncordis.patch.yml~/.dsh 下的配置与状态文件,并写入 profile 补丁。安装前应阅读源码与 MIT 许可证,确认可接受其文件访问范围。
  • 联网刷新 star 与版本检测依赖 gh token 及外部网络;未知插件的标签来自通用回退,精确描述依赖知识库或你的自定义配置。
  • 兼容规则与重叠组随版本更新,具体条目以仓库 config.default.json 及 README 为准。
  • SkillHub 目录页为社区收录,安装命令以 README 与本文所列 dsh plugin --profile web add 为准。

结尾

dsh-plugin-integration 把 DSH 插件的发现、分类、重叠切换、兼容检测、启停与失效诊断集中到设置页的一个入口里,减少手动维护 bundles 与补丁的成本。若你已在 web profile 下积累了一批插件,可以把它当作日常巡检与切换的操作面板。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜