DeepSeek Harness 的核心设计理念是「一切皆插件」,插件之间通过 Cordis 运行时进行服务注入。随着插件数量增加,排查某个服务由谁提供、或者哪些插件依赖了它,往往需要查阅代码或配置文件,无法直观反映运行时的真实状态。
ewoowe/dsh-plugin-dependency-graph-plugin 是一个用于 DeepSeek Harness 的依赖关系图插件。它不从静态清单读取数据,而是直接从当前正在运行的 Cordis 实例中抓取实时服务注入关系。该项目由 ewoowe 维护,采用 MIT 许可证。
核心功能¶
该插件主要提供以下能力:
- 实时读取运行时:直接从 Cordis 运行时读取插件服务注入关系,而非静态清单。
- 双视图模式:提供设置栏内的内嵌视图,以及新标签页打开的全宽独立视图。
- 搜索与筛选:支持按包名、Loader 条目 ID、服务名进行搜索。
- 状态行控制:显示图例、统计数量,点击可筛选特定状态的节点。
- 画布交互:支持刷新、缩放、平移、节点选择。
- 自动折叠:默认折叠无依赖项的插件,保持界面整洁。
- 运行时隔离:浏览器和 Node 运行时是不同的,两者不会合并。
安装与启用¶
根据提供的资料,安装命令未明确列出。该插件在 package.json 中配置了 dsh.bundle.patch 机制(指向 cordis.patch.yml),通常通过 Harness 的包管理或补丁系统进行加载。
# cordis.patch.yml (引用自 package.json)
bundle:
patch: "./cordis.patch.yml"
典型用法¶
1. 查看依赖图¶
在 Harness 的设置界面中找到该插件,或者在浏览器中直接打开该依赖图页面,即可看到当前的依赖关系可视化视图。
2. 搜索服务¶
使用搜索框查找特定服务。搜索支持匹配包名、Loader 条目 ID 以及插件提供的服务名。例如,输入 ctx.locale 可以直接找到提供该服务的节点。
搜索结果会列出匹配项,点击结果行即可定位到图中的节点。
3. 筛选状态¶
依赖图顶部设有状态行,显示每种状态(如正常、错误等)的节点数量。点击某个状态的胶囊按钮,可以筛选图中只显示该状态的节点。
4. 操作画布¶
- 选择节点:点击节点可查看详情(包括提供的服务和监听的事件)。
- 平移与缩放:拖拽画布平移,滚动鼠标滚轮缩放。
- 刷新:点击刷新按钮重新读取运行时数据。
适用场景与注意¶
- 版本要求:依赖 Node.js 22.19.0 或更高版本。
- 依赖库:依赖
@deepseek-ai/cordis、React等库。 - 运行时差异:浏览器和 Node 端收集到的树是不同的,两者是不同的运行时,无法合并显示。
- 依赖类型:依赖关系分为声明(
inject、@Inject装饰器)和运行时(ctx.inject)。插件加载时必须满足声明的依赖,而运行时依赖则通过回调满足。 - 布局算法:图布局基于数据而非物理引擎,使用黄金角度分布,确保相同组合下产生的图像位置固定,便于定位。
总结¶
该工具帮助开发者直观地了解 DeepSeek Harness 的插件生态运行状态,是排查服务注入问题和理解插件架构的有力辅助。