Skip to content

dsh-install-check

Verified

dsh-install-check · v0.2.1 · MIT

Looks at a plugin before it lands: name collisions and missing plugin dependencies, stated as one short sentence and one suggestion.

Install

dsh plugin add dsh-install-check

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Tags

Readme

dsh-install-check

中文名:插件无忧装

看到感兴趣的直接丢过来装吧,别的我们替你思考。

DSH 装插件、丢 skill 时的自动体检。你说「装 X」,它先读 X 的代码,和已装的比一遍;真撞上了、真缺东西了,才说一句,并给出建议。

不拦截,不改你的配置,不自动帮你装依赖。

它长什么样

装完立刻给结论,安装照常完成。真会打架的:

冲突:和 dsh-lite-memory 用同一个工具名 memory_search,两个只能留一个。

两个都想要,先停用 dsh-lite-memory 再重启。

少东西的:

缺 some-sdk,装上它之前这个插件起不来。

会盖住界面的写法,装的时候也先说一句:

风险:它接管整块内容区,界面一变就铺满全屏,侧栏和按钮点不到。装完按 Esc,关不掉就在插件页停用它。

版本对不上的,也说一句(它写了自己要哪个版本才算):

版本对不上:它要 ^0.3.0,这台是 0.2.1。装上起不来,先升级再装。

skills 是文件,没东西可拦,所以等它落地后第一次有工具结果返回时说一句:

冲突:两个 skill 都叫 weekly-report,只会生效一个。留一个,或给其中一个改名。

撞车:sheet-edit 和 print-sheet 的触发描述几乎一样,模型会挑错。改其中一个的描述,或只留一个。

一家子的两个版本(tool-stable / tool-next)不算撞车,它不提。

不打架就不说话。像不像、是不是同类,它不猜:两个记忆插件工具名不重,就能同时开着,不算冲突。

它从不拦安装。改动可能不用重启就已生效,这句提醒晚一步到也还来得及处置;先问只会多一次往返,没有审批的地方还会变成拒绝。

它看什么

静态读包,不执行候选插件的代码:

  • 加载行 id(cordis.patch.yml)
  • 服务键(provide / ctx.set)
  • 工具名(defineTool / tools.register):同名时后装的顶掉先装的
  • Web 路由(kind + path 都写死成字面量时):同名同类型的地址注册两次会直接抛错
  • 插件之间的 peerDependencies 没装
  • skill 重名(SKILL.md 的 name)
  • skill 的描述在争同一类请求
  • 客户端接管宿主内容区、还带整屏浮层的写法
  • 插件声明的适用版本(engines.dsh,或 @deepseek-ai/dsh 的 peer),只在明确排除当前版本时说

插件只报上面几样会打架、会吃掉界面、会起不来的东西。slot 在这套宿主里是叠加的,读了也不报;路由只在两边都把 kind 和 path 写死时才判,路径放在常量里的看不见。

界面升级后第一次有工具结果时,会点出这次升级后没起来的插件:版本范围对不上的、起不来的、只差一个依赖的,分三种说,各点一次。

它问的是正在跑的加载器,所以不依赖启动日志,也不等下一次升级:第一次装上就开始看。

安装

dsh plugin install dsh-install-check

或者直接对模型说「装 dsh-install-check」。

只装一次就一直在,之后你说「装 xxx」时自动生效,不需要先问它。

边界

  • 只报读得到的东西:运行时拼出来的名字、动态注册的工具看不到
  • 依赖只报 peerDependencies;通过服务懒取的依赖暂不提示
  • 版本只认插件写明的范围;没写的、写不认识的(workspace:* 之类)不猜
  • 版本对得上也不保证接口没变:插件跑起来之后才坏的接口,静态读不出来;升级后能问加载器「哪些没起来」,问不到的不猜
  • 「缺依赖」只按加载器报的缺服务说;没报的不猜是哪一边
  • 支持 npm 包名和本地路径;读不到包时说一句「没检查完」,装照常进行
  • skills 只看 ~/.dsh/skills 和 ~/.agents/skills;同名的一次只提一次
  • 只在安装、启用、skill 目录变化时出现,平时不占地方

开发

node --test test/run.mjs
node scripts/scan-market.mjs names.txt

names.txt 一行一个包名,用来量一量某个品类实际撞名率。

License

MIT © regrevia