dsh-install-check
Verifieddsh-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