DeepSeek Harness Plugin: Real-Time Dependency Graph (ewoowe/dsh-plugin-dependency-graph-plugin)

DeepSeek Harness 的核心设计理念是「一切皆插件」,插件之间通过 Cordis 运行时进行服务注入。随着插件数量增加,排查某个服务由谁提供、或者哪些插件依赖了它,往往需要查阅代码或配置文件,无法直观反映运行时的真实状态。

ewoowe/dsh-plugin-dependency-graph-plugin 是一个用于 DeepSeek Harness 的依赖关系图插件。它不从静态清单读取数据,而是直接从当前正在运行的 Cordis 实例中抓取实时服务注入关系。该项目由 ewoowe 维护,采用 MIT 许可证。

核心功能

该插件主要提供以下能力:

  1. 实时读取运行时:直接从 Cordis 运行时读取插件服务注入关系,而非静态清单。
  2. 双视图模式:提供设置栏内的内嵌视图,以及新标签页打开的全宽独立视图。
  3. 搜索与筛选:支持按包名、Loader 条目 ID、服务名进行搜索。
  4. 状态行控制:显示图例、统计数量,点击可筛选特定状态的节点。
  5. 画布交互:支持刷新、缩放、平移、节点选择。
  6. 自动折叠:默认折叠无依赖项的插件,保持界面整洁。
  7. 运行时隔离:浏览器和 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. 操作画布

  • 选择节点:点击节点可查看详情(包括提供的服务和监听的事件)。
  • 平移与缩放:拖拽画布平移,滚动鼠标滚轮缩放。
  • 刷新:点击刷新按钮重新读取运行时数据。

适用场景与注意

  1. 版本要求:依赖 Node.js 22.19.0 或更高版本。
  2. 依赖库:依赖 @deepseek-ai/cordis、React 等库。
  3. 运行时差异:浏览器和 Node 端收集到的树是不同的,两者是不同的运行时,无法合并显示。
  4. 依赖类型:依赖关系分为声明(inject、@Inject 装饰器)和运行时(ctx.inject)。插件加载时必须满足声明的依赖,而运行时依赖则通过回调满足。
  5. 布局算法:图布局基于数据而非物理引擎,使用黄金角度分布,确保相同组合下产生的图像位置固定,便于定位。

总结

该工具帮助开发者直观地了解 DeepSeek Harness 的插件生态运行状态,是排查服务注入问题和理解插件架构的有力辅助。

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

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

Xiaoye