dsh-plugin-graph:在 DSH Web 设置页查看客户端插件关系图谱

前言

在 DSH 里,客户端插件之间会有注入依赖,也会有插槽声明和注册。这些信息分散在启动清单、插槽注册表和插件配置里,排查某个插件依赖谁、谁依赖它、谁声明了某个插槽时,往往要来回查多个位置。

dsh-plugin-graph 是一个面向 DSH Web 设置页的插件,把这些关系画成一张力导向图,用来快速查看客户端插件之间的 injectdeclaresregisters 关系。

这是什么

dsh-plugin-grapherduotong 维护,许可证为 MIT。它不是替代 DSH 运行时的工具,而是在 DSH Web 设置页增加一个「插件关系图谱」入口,用只读视图展示当前 DSH Web 进程里的客户端插件与插槽关系。

核心功能

下面介绍几个可直接使用的能力。

力导向图画布

  • 节点会自动进行物理布局。
  • 节点大小按度数缩放。
  • 蓝色圆点表示插件节点,来自启动清单 window.__DSH_BOOT__ 与插槽注册表。
  • 琥珀色菱形表示插槽节点,来自实时插槽注册表 ctx.slots.snapshot()

关系边

  • 蓝色 inject:插件对其它包的依赖。
  • 绿色 declares:插槽声明者。
  • 琥珀色 registers:注册到插槽的插件。

画布交互

  • 拖拽节点:钉住该节点,并重新加热布局。
  • 拖拽空白处:平移画布。
  • 滚轮:缩放画布。
  • 悬停节点:高亮相邻节点,并弹出信息框,显示依赖/被依赖、声明者/注册者。
  • 点击手动刷新:重新读取启动清单与插槽注册表。
  • 点击右上角展开按钮:打开全屏模态框,可用 Esc、遮罩或 × 关闭。

只读快照

这个插件不订阅任何事件,挂载与手动刷新时重建图;具体而言,它不订阅 slots/changed,所以 HMR 注册关系发生变化时,需要手动刷新画布。

内嵌图和模态框图是两个独立模拟实例,各自演算布局,互不共享拖拽位置。

安装与启用

前置条件

先确认已经安装 DeepSeek Harness,并且至少启动过一次 Web 界面。启动后会生成 Web profile 目录:

~/.dsh/profiles/web

安装

一般用户可以从 npm registry 安装:

dsh plugin --profile web add dsh-plugin-graph

本地源码安装,例如开发中或未发布时:

dsh plugin --profile web add /path/to/dsh-plugin-graph

安装命令会把包装进 profile 的 package.json 依赖,并链接到:

~/.dsh/profiles/web/node_modules

不要用裸 npm i dsh-plugin-graph 安装。那样只会装进当前目录的 node_modules,DSH profile 不会知道它。

自动加载说明

本包自带 dsh.bundle 声明。dsh plugin add 后,会追加到 profile 的 dsh.profile.bundles 层叠,无需手动编辑 cordis.patch.yml

如果你曾在旧版本、没有 dsh.bundle 的情况下手动往 cordis.patch.yml 添加过 insert 条目,升级前需要先删除该条目,再重新安装,避免重复挂载。

重启并打开

1、重启 dsh Web 进程。配置变更和 loader 条目都需要重启才生效。

2、打开设置页,也就是侧边栏底部的「设置」。

3、找到「插件关系图谱」入口,点击进入即可看到力导向图。

典型用法

下面是常见的排查路径。

1、安装插件后重启 dsh Web 进程。

2、打开 Web 设置页,进入「插件关系图谱」。

3、悬停一个插件节点,查看它的依赖/被依赖、声明者/注册者。

4、如果图中节点较多,点击手动刷新,重新读取启动清单和插槽注册表。

5、需要细看关系时,打开全屏模态框,用滚轮缩放和拖拽空白处平移。

如果你要在本地源码目录里构建和测试,可以执行:

pnpm install
pnpm build
pnpm test

卸载时使用:

dsh plugin --profile web remove dsh-plugin-graph

适用场景与注意

适合在以下场景使用:

  • 排查某个 DSH Web 客户端插件依赖了哪些包。
  • 查看某个插槽由谁声明、由哪些插件注册。
  • 在本地源码安装后,快速确认插件与插槽关系是否符合预期。

注意:

  • 它只覆盖客户端插件。宿主平面行,例如 webserverstorage,不在 window.__DSH_BOOT__ 中;只有当它们被插槽声明或注册时才会出现。
  • 它是只读快照视图,不改变 DSH 运行行为。
  • 它会以当前 dsh 进程权限运行,安装前应检查源码与许可证。许可证为 MIT。
  • 安装时如果 pnpm 报 peer 依赖缺失,例如 missing peer @deepseek-ai/cordis / react ...,这是预期提示,运行时由宿主提供。
  • 如果你通过社区目录使用它,注意社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;不要把它理解成官方应用商店。

结尾

dsh-plugin-graph 的价值在于把 DSH Web 设置页里分散的客户端插件关系收敛成一张可读图。它适合做依赖排查、插槽关系确认和本地开发验证。

GitHub:

https://github.com/erduotong/dsh-plugin-graph

目录页线索:

https://www.skillhub.cn/plugins/erduotong/dsh-plugin-graph
羽毛球分组比赛记分
小程序二维码

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

Xiaoye