white-sand-grand/dsh-plugin-doctor ↗★ 0
dsh-plugin-doctor
DSH plugin doctor: community search, similarity analysis, and install/dedupe/build-it-yourself decisions for the dsh-plugin ecosystem.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:white-sand-grand/dsh-plugin-doctor说明文档
阅读完整 README ↗具体使用例子
搜索并检查重复
帮我找一个记忆插件,并检查它是否和 web profile 里已有插件重复。
结果会列出候选插件、匹配原因、与本地插件的重叠分数,以及“保留哪个、移除哪个”的命令。需要生成自研规格或执行去重时,Agent 会先请求确认。
批量安装前阻止冲突
我要同时安装以下仓库,请先检查它们会不会冲突:
github:owner/plugin-a
github:owner/plugin-b
github:owner/plugin-c
如果 GitHub 返回 403/429,或仓库元数据无法读取,结果会是 INSTALL BLOCKED,并告诉你配置 token 或等待限流重置;它不会因为“暂时查不到”而放行。
查看插件关系
之前安装的插件之间有什么联系?哪些功能相似?
plugin_landscape 会返回关系图。每个节点有中文功能解释,每条连线说明相似度来自说明文本、功能标签还是依赖重叠;传入具体意图时,社区候选会以虚线加入图中。
识别聚合 bundle
我想安装任务看板,需要再安装一个 task-board 插件吗?
推荐逻辑会读取已安装聚合 bundle 的插件形依赖。如果功能已经由 bundle 提供,会显示 providedBy 来源,不会建议把子插件单独卸载或重复安装。
审计使用量
列出 web profile 中声明了工具但从未使用的插件。
结果来自本地已落盘 session 日志,不上传内容。当前尚未结束或尚未刷盘的会话可能尚未计入,报告会明确提示。
审计使用量
列出 web profile 中声明了工具但从未使用的插件。
结果来自本地已落盘 session 日志,不上传内容。当前尚未结束或尚未刷盘的会话可能尚未计入,报告会明确提示。
直接提问与使用 doctor 的区别
直接对 DSH 说“帮我找个插件”时,模型通常只能根据已有上下文给出一般性建议,不能稳定地搜索社区、读取本地包元数据、量化相似度或检查 Cordis 注册冲突。安装多个仓库时也可能跳过预检。
安装 doctor 后,同样的问题会获得可复核的结构化结果:
| 直接提问 DSH | 使用 dsh-plugin-doctor |
|---|---|
| 依赖模型记忆或临时搜索 | 使用 GitHub、缓存和 registry 降级链,并注明数据来源 |
| “看起来重复”但没有数值依据 | 返回文本、功能标签、依赖三类相似度和重复组 |
| 可能漏掉聚合 bundle 内的子插件 | 读取已安装 bundle 依赖并标记 providedBy |
| 多个仓库直接尝试安装 | 先检查包名、工具名、patch 行和 peer 依赖;无法验证时失败关闭 |
| 很难知道插件是否真正被使用 | 从本地 session 日志统计调用量、会话数和最近使用时间 |
| 只能用文字描述插件关系 | 输出 Mermaid 关系图和逐对中文解释 |
可选配置
| 配置 | 默认值 | 作用 |
|---|---|---|
githubTokenEnv | DSH_PLUGIN_DOCTOR_GITHUB_TOKEN | GitHub token 的环境变量名 |
githubToken | 无 | 直接提供 token,不建议写入文件 |
similarityThreshold | 0.8 | 判定功能重复的相似度阈值 |
cacheTtlMinutes | 30 | 社区搜索缓存时长 |
enableRegistryFallback | true | GitHub 失败时启用 registry 和静态快照降级 |
allowExecuteActions | false | 允许在明确交互确认后执行 add/remove;默认只输出命令 |
推荐只配置 token 环境变量:
export DSH_PLUGIN_DOCTOR_GITHUB_TOKEN='你的 GitHub token'