前言¶
在 DSH 里,客户端插件之间会有注入依赖,也会有插槽声明和注册。这些信息分散在启动清单、插槽注册表和插件配置里,排查某个插件依赖谁、谁依赖它、谁声明了某个插槽时,往往要来回查多个位置。
dsh-plugin-graph 是一个面向 DSH Web 设置页的插件,把这些关系画成一张力导向图,用来快速查看客户端插件之间的 inject、declares 和 registers 关系。
这是什么¶
dsh-plugin-graph 由 erduotong 维护,许可证为 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 客户端插件依赖了哪些包。
- 查看某个插槽由谁声明、由哪些插件注册。
- 在本地源码安装后,快速确认插件与插槽关系是否符合预期。
注意:
- 它只覆盖客户端插件。宿主平面行,例如
webserver、storage,不在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