Back to home

kid-tea

dsh-plugin-conflict-checker

DeepSeek Harness plugin conflict checker: pre-flight duplicate loader-entry-id detection + optional real startup smoke test (CLI + Web GUI tab).

Stars
0
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-plugin-conflict-checker

DeepSeek Harness 插件冲突检测器(host + client bundle plugin)。

安装后:

  • host 侧注册工具 check_plugin_conflicts
  • Web 设置 → 插件 里新增「冲突检测」标签页,点击按钮即可检测,结果直接显示在页面里

功能

  • 静态检查当前 profile 的插件 patch 合成结果:
    • 重复 loader entry id(会导致 duplicate loader entry id 启动崩溃)
    • patch 目标不存在 / name mismatch / insert 非 group
  • 可选 smoke:
    • 用 OS 分配的空闲端口真实拉起一次 dsh web
    • 等待 dsh web: http://... 就绪输出
    • 超时或提前退出则判定启动失败/卡死

安装

如果路径含空格,pnpm 的 dsh plugin add 可能把路径拆开;建议先用无空格 junction 再安装:

mklink /J D:\cfchk-plugin "D:\deepseek harness\plugin\dsh-plugin-conflict-checker"
dsh plugin --profile web add D:\cfchk-plugin

然后重启对应 profile。

使用

GUI 按钮

  1. 打开 Web 设置
  2. 进入「插件」
  3. 找到「冲突检测」标签页
  4. 勾选“同时进行真实启动测试(smoke)”可选
  5. 点击「检测插件冲突」
  6. 结果直接显示在下方

Agent 工具

在 DSH 会话中让 Agent 调用:

{
  "profile": "web",
  "smoke": true,
  "smokeTimeout": 60000
}

返回 JSON:

{
  "ok": true,
  "fatal": [],
  "warnings": [],
  "entryCount": 146,
  "smoke": { "ok": true, "url": "http://127.0.0.1:30706" }
}

局限性 / Limitations

  • 静态检查只覆盖已知的启动失败模式:重复 loader entry id、patch 目标不存在、name mismatch、insert 非 group、bundle 缺失/无 dsh.bundle 声明。它不能保证覆盖所有未知插件冲突。
  • smoke 模式会真实拉起一次 dsh web,但只验证“能输出就绪 URL、不会在超时时间内卡死”;无法覆盖所有运行时问题(外部服务不可用、网络、浏览器端报错、端口被占用等)。
  • 当前检测逻辑通过子进程运行 bundled checker,而不是在 host 进程内直接合成;这样实现简单,但会额外启动一个 Node 子进程。
  • 当前 GUI 标签页默认检测 web profile,可在页面里手动改成其他 profile。
  • Windows 下 dsh plugin add 对含空格路径支持不好,安装时建议使用无空格 junction。
  • 本项目仍属早期工具,DSH 的 slot/版本契约可能随版本变化;如果遇到新版不兼容,请以当前已安装的 @deepseek-ai/* 包类型和实际行为为准。

开发

npm run typecheck
npm run build
npm run verify

说明

当前实现:

  • host 注册工具 + HTTP 路由 /dsh-plugin-conflict-checker/check
  • client 注册 settings.plugins.tab,渲染检测按钮和结果
  • 检测逻辑仍由 bundled checker 子进程执行,避免在 host 进程里重复实现一整套合成器