前言¶
DeepSeek Harness(DSH)的社区插件分散在目录站点、npm 与 GitHub 上。若把「装某个插件」交给 agent 执行,常见路径是反复拉目录、在同名多个 owner 里猜来源、按 latest 安装后发现与当前内核不兼容,或对 GitHub-only 仓库缺少构建产物而装错包,装完还要另查 loader 是否生效。官方 Discover 适合人手点选;当你希望用自然语言让 agent 完成安装时,需要把搜索、消歧、版本求解、安装与校验串成可重复的一步。
下面介绍维护者 sakikoTGW 发布的 dsh-plugin-resolver(GitHub:sakikoTGW/dsh-plugin-resolver)。它是 DSH 生态中的工作流类 host-only 插件:向模型注册 4 个工具,不注册服务、没有前端,纯 ESM、免构建。README 中的对比基线是「同一 agent、未装 resolver 时的手工流程」,而非 Discover 的点击次数。
这是什么¶
dsh-plugin-resolver 把「搜索 → 同名消歧 → 按当前内核选兼容版本 → 安装(registry 或 GitHub 源码构建)→ 装后校验」固化在一次工具调用链里。插件要求 DSH >=0.2.0-rc.2 <0.3.0、Node >=20(见 package.json 的 engines)。npm 当前发布版本为 0.1.2,许可证 MIT。
SkillHub 目录页:https://www.skillhub.cn/plugins/sakikoTGW/dsh-plugin-resolver
核心功能¶
四个模型工具¶
| 工具 | 作用 | 是否改动环境 |
|---|---|---|
plugin_search |
搜社区目录(npm 载体优先),排序并显式标出同名歧义 | 只读 |
plugin_resolve |
只解析不装:目录条目、兼容版本、registry、是否需要源码构建 | 只读 |
plugin_install |
完整安装:选版本 → 安装/构建 → 回读校验 → 下一步提示 | 写 profile |
plugin_status |
已装 bundle / loader entry / fiberPhase 盘点 | 只读 |
版本选择¶
解析时以 pluginManager.listBundles() 里 @deepseek-ai/dsh-base 的版本为运行时版本;从高到低检查非可选的 @deepseek-ai/dsh* peer 与 engines.dsh。@deepseek-ai/cordis、@deepseek-ai/schemastery 等同命名空间但不同版本线的库不计入运行时约束。取第一个通过检查的版本;全不通过时列出拒绝原因。调用方显式传入 version 时跳过自动求解。
安装路径¶
- registry 包:
pluginManager.installBundle(name@resolved, { registry }),profile、lockfile 与激活由插件管理器处理。 - GitHub-only:检出到
$DSH_HOME/plugin-sources/<owner>__<repo>;缺构建产物且包声明了build时执行pnpm install与pnpm run build,再以link:<pkgDir>注册;已构建的检出可复用。 - 显式 spec(
github:/link:/file:/https:):原样交给插件管理器。
重启判定¶
plugin_install 会比较安装前后 listBundles() 的 bundle 集合与运行时代码 hash(排除 README、docs、版本号)。无实质变化或管理器已就地应用时可能返回 restart: not required;bundle 新增、运行时代码或 client 半变化时返回 restart: required 并说明原因。本插件 logic/ 目录可按 mtime 热加载;改动 index.js / host/register.js 仍需重启宿主。
README 记载的实测对比(agent 手工路径基线)¶
装一个歧义名插件加一个 GitHub-only 插件时,README 给出:工具调用约 45 次 → 6 次,决策链与目录获取有 benchmark 脚本支撑;安装失败重试 0(相对手工路径中的超时重试)。具体数字与消融见仓库内 BENCHMARK.md、ABLATION.md。
安装与启用¶
三种方式均不需要 allowBuilds 授权(纯 JS、无 install 脚本)。<profile> 以你本机 DSH 安装为准。
dsh plugin --profile <profile> add dsh-plugin-resolver
GitHub 源码安装(建议锁 commit):
dsh plugin --profile <profile> add github:sakikoTGW/dsh-plugin-resolver#<commit>
本地 tarball:
npm pack && dsh plugin --profile <profile> add ./dsh-plugin-resolver-0.1.2.tgz
也可在 DSH 中打开实验性「自定义插件市场」,在「发现」里添加索引源后安装。索引 URL:
https://sakikoTGW.github.io/dsh-plugin-resolver/market/index.json
装完重启一次宿主;之后可对 agent 说「帮我装 xxx」。README 称首次安装 resolver 本身约 10 秒。
典型用法¶
只解析、不安装¶
$ plugin_resolve dsh-builtin-browser
target kind: npm running DSH: 0.2.1-rc.2
package: dsh-builtin-browser@0.4.13
install spec: dsh-builtin-browser@0.4.13
registry: https://registry.npmmirror.com/
notes:
- newest published version whose DSH peer range accepts the running host
歧义名不猜测¶
对「帮我装 dsh-browser」,resolver 会列出多个同名候选并要求 owner= 等明确信息,避免装错来源。对「装 dsh-builtin-browser」则选与当前内核兼容的版本并安装。
行为约定¶
- 明确包名可直接走安装;歧义名、GitHub 源码或未知来源会先给出解析计划。
- 同名歧义必须调用方提供
owner=或完整 spec,插件不会自动猜 owner。 - 目录为社区维护的第三方列表;插件保证按声明来源装对版本,不做安全审计。
适用场景与注意¶
适合:经常让 agent 在 DSH 里装社区插件、希望减少目录拉取、版本试错和装后探测的工具调用次数的开发者。
务必知晓:
- 插件在当前 dsh 进程权限下运行;
plugin_install会修改 profile。安装前请自行查看目标插件源码与许可证。 - 兼容性以 npm 元数据的 peer /
engines.dsh为准;若宿主启动预检另有规则,以宿主为准。 - 替换已加载插件通常仍需重启;GitHub 源码构建依赖环境中的
pnpm(或DSH_PNPM_PATH)与tar。 - 社区插件目录与 DeepSeek / 幻方无官方从属关系,本插件也不是 Discover 的替代品,而是「安装交给 agent」路径上的编排层。
结尾¶
dsh-plugin-resolver 把 agent 侧装插件时的判断与验证收成四个工具:能搜、能解、能装、能查状态,并在安装后回读 loader 与 bundle,按需提示刷新或重启。若你已在用 DSH 0.2.0-rc.2 及以上且低于 0.3.0,可先按上文命令装入 resolver,再把后续插件安装交给一句话。