夜雨聆风学习资料网

ARTICLE · 1055852

装 dsh 插件老是失败?我把严选插件库实测了一遍

装 dsh 插件老是失败?我把严选插件库实测了一遍

先说一个我自己的经历。为了给 dsh 加个能力,我照着某篇帖子敲了 dsh plugin add <包名>,回车,报错:required option '--profile <name>' not specified。又换了个脚本,用作者给的 install.sh 装了一遍,这回装是装上了,可 dsh 直接起不来。第三次我决定不折腾了,用一个已经收录在插件目录里的工具来装——也就是今天的主角:严选插件库(仓库 zhanghao3693/dsh-dpharness,版本 0.4.2,MIT 许可)。需要坦白一句:这是本站作者自己维护的插件,Star 数目前是 1,属于早期项目,站点侧状态是已收录、installCheck 通过、已汉化。

先说结论:装 dsh 插件失败,绝大多数不是插件的问题,而是「命令形式」和「安装路径」这两件事被混在一起了。下面是实测过程里踩到的四个坑,以及这个插件为什么要把「能装的才给你装」做成一条硬约束。

它到底是个什么工具

一句话:在 dsh 里浏览、搜索 dpharness.com 的 dsh 插件目录,并可以直接一键安装。它本身不是插件集的搬运工,更像一个目录客户端。

面板顶部有两个视图。一个是「严选推荐」,接全量目录,可以搜索、可以按 Star 排序,适合已经知道要找什么的人;另一个是「分类精选」,接的是月度策展数据,按大类到小类分组,每个小类只留 2~3 个,并保留两项元数据——小类内名次和上榜理由,适合不知道装什么、想让平台先给几个候选的人。

入口有三个:会话视图区的页签、侧边栏底部的入口、以及右下角常驻的全站浮窗(跨路由,含首页)。三个入口共用同一套组件,搜索框和安装按钮的形态是一致的。

「能装的才给你装」是一条什么约束

这句话听起来像宣传语,但它在代码里有明确的落点:只有站点给出 installCheck 状态为 pass 的条目,卡片上才会渲染安装按钮;校验没过的条目,你只能看到一条可以复制的命令。

我一开始以为这是「质量门槛」,实测后更倾向于把它理解为「身份门槛」。原因是:如果静态安装校验没过,npm 上那个同名的包,可能根本不是这个插件的包。按钮缺席表达的其实是——现在按这个名字去装,装到的东西可能不是你以为的那个。这跟插件本身好不好用是两回事。

围绕安装动作还有几处细节值得记一下:安装前有二次确认,会展示将要执行的完整包名;包名要过字符白名单校验;启动子进程时会剥掉宿主的 safe-delete 钩子(否则 pnpm 清理临时文件会被拦下来);失败时界面只展示 pnpm 的错误码行,比如 [ERR_PNPM_FETCH_404],而不是几十行进度日志。最后一点对排障的帮助最大,因为错误码是稳定的,进度日志不是。

另外它还有一条隐私上的克制:不采集你搜索的关键词原文,只上报动作类型、关键词长度和命中数;复制或安装命令时上报的是整条命令,来源靠路径区分;浮窗和页签底部都放了匿名统计开关,可以随时关掉。埋点是先打到本地再转发出去的,失败会静默忽略,不会影响你的操作。

下面是四个我实际踩到的坑。

坑一:安装命令必须带 --profile web

现象:照抄网上流传的 dsh plugin add <包名>,直接报错 required option '--profile <name>' not specified,命令根本没执行。

原因:dsh CLI 已经把 --profile 设成了必需参数,早期那种省略写法已经失效。它不是插件的问题,是这个工具链本身的门槛变了,而网上很多帖子还是旧写法。

解决方案:老老实实把 profile 写全,用 dsh plugin --profile web add dsh-dpharness。插件卡片上那条「可复制的安装命令」生成的就是这个形式,直接复制它最省事。

坑二:install.sh 与官方安装命令不能混用

现象:先用了官方命令装,后来又想用仓库里的 install.sh 装一遍(或者反过来),结果 dsh 启动硬失败,界面根本起不来。这是我遇到的最难受的一次——报错不指向任何具体插件,只是起不来。

原因:两条安装路径落地的位置不一样。官方命令把插件并入 profile 的 bundle 层;install.sh 则是往 cordis.patch.yml 里插一段 insert。同一个 id 被插入两次,加载时就冲突了。

解决方案:切换安装方式之前,先把另一边清掉,不要两种方式并存在同一份 profile 上。具体卸载步骤以仓库 README 为准,别凭感觉删文件。

坑三:一键安装遇到 dshmarket 409 会直接报错,不会自动降级

现象:在有 agent 正在运行的时候点一键安装,界面直接报错,而不是「悄悄退回手动路径」。第一次遇到会以为插件坏了。

原因:这是设计如此,不是 bug。一键安装优先复用 dshmarket 的同源路由(免重启热挂载、可回滚、带供应链校验),但当 dshmarket 返回 409——也就是有 agent 正在运行时——它会直接失败,刻意不降级到本地安装。因为本地安装要动 profile 和插件文件,跟正在干活的 agent 抢这些文件,风险远大于让你多等一会儿。

解决方案:等在跑的 agent 结束之后再点安装;如果不想等,就用卡片上那条可复制的命令手动装,手动路径不看 agent 的状态。

坑四:package.json 未声明 engines

现象:装到过旧的 Node 或 dsh 上,不会得到任何明确的不兼容提示——可能装完了才发现跑不起来,也可能根本不报错。

原因:本包的 package.json 里没有 engines 字段。对比同一位作者的另一款插件 model-clock(声明了 node>=18dsh>=0.1.0-rc.5),本包在这一点上是缺失的。这是仓库的可改进项,不是使用者能绕过的设计。

解决方案:安装之前自己确认 dsh 版本,把版本确认当成安装流程的一部分。如果你在维护一个统一的环境,建议把这步写进自己的检查清单。

实测下来的一些取舍

老实讲,这个插件也有它自己盖不住的地方。它的卡片卖点行取的是站点上游的 tagline,而那份数据的质量参差不齐——有英文原文、有被截断的文本,所以卖点行偶发不显示属于预期行为,插件只用过滤函数把不合格的挡掉,不合格就不显示,而不是硬凑一行出来。这不是 bug,但确实会让偶发的卡片看起来信息更少。

另外,走本地降级路径装完的插件,必须重启 dsh 才会生效;这条路径改的是 profile,不是 dshmarket 那种热挂载。别看到「装成功」就以为界面上马上会有变化。

总结

装 dsh 插件失败,多半是命令形式(要带 profile)和安装路径(官方命令与脚本不能混用)这两处没对齐;而严选插件库把「能装的才给你装」做成了硬约束——校验不过就不给安装按钮,冲突时宁可直接失败,这在插件来源复杂的目录里是有意义的。同类插件的中文清单与安装形态可在 dpharness.com 查看,也可直接搜索 DeepSeek Harness Hub。

适合与不适合

适合:想在 dsh 里直接搜索并安装目录内插件、不想来回切浏览器的人;不知道该装什么、需要按大类先看几个候选的人;曾经被安装方式冲突坑过、希望失败时给一条明确原因的人;在意隐私、想随时关掉匿名统计的人。

不适合:已经完全确定包名、不在意图形界面的用户,直接敲命令更直接;环境偏旧又不愿先确认版本的——本包 package.json 未声明 engines,装到过旧的 Node 或 dsh 上不会有明确提示;期望卡片卖点行永远完整的人,上游 tagline 约一半不可用,偶发不显示是预期行为;以及绝对不愿意重启 dsh 的人,本地降级路径装完必须重启才生效。

标签:严选插件库、DeepSeek Harness、安装避坑、dsh 插件实测、插件安装

本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页;本插件由本站作者维护。

相关学习资料