dsh-plugin-installerlisted
Install: claude install-skill zhang66633/dsh-plugin-installer
# DSH 插件安装器(dsh-plugin-installer)
在 DeepSeek Harness(`dsh`)里给用户安装插件,并诊断安装/运行报错。面向完全小白:每一步解释清楚,关键决策点停下来问用户再动手。
> 本文档沉淀了**已验证**的安装流程和全部踩过的坑(2026-08 实践)。遵循它,不要凭空发明步骤。深度参考见 `<技能目录>/references/` 目录,按需读取。`<技能目录>` = 本技能所在目录(插件包根目录)。
## 何时使用
- 用户要求"装个插件 / 加个工具 / 安装 X"
- 插件装不上、报错、dsh 启动失败
- 需要排查浏览器控制台报错、`dsh` boot 报错
## 核心事实(先记住,别绕路)
| 事实 | 结论 |
|---|---|
| `git clone` 直连 github.com **可用** | 下载 GitHub 插件用 git clone,**不要用 curl** |
| `curl` 到 github.com 报 **exit 35 SSL 错**(走坏代理) | 一切 GitHub 下载优先 git,其次 jsDelivr |
| npm registry(npmmirror)可用;**`latest` dist-tag 是旧的 `0.0.1-rc.1`** | **必须钉精确版本**(`0.1.0-rc.6`),用范围会装错 |
| dsh 插件分两类装法 | npm 直装(`dsh plugin add`)或 GitHub clone + link 注册 |
| 插件目录从不自带 node_modules | clone 源码后要靠**共享 `<plugins_dir>/node_modules`** 解析依赖 |
| `cordis.patch.yml` 是 patch 层 | **新增插件实例必须包在 `- insert:` 里**,顶层裸条目会被静默跳过 |
| dsh 读两层 patch | home 级 `~/.dsh/cordis.patch.yml`(全局)+ profile 级 `~/.dsh/profiles/<profile>/cordis.patch.yml` |
| 已打补丁可能被上游修复 | 补丁**版本条件化**:检测先于打补丁,重跑 `<技能目录>/scripts/patch-skins.sh` 自动收敛,不盲打 |
| 路径可配置 | 插件目录 `<plugins_dir>` 默认 `~/.dsh/plugins`(`DSH_PLUGINS_DIR` 覆盖);profile `<profile>` 默认 `web`(`DSH_PROFILE` 覆盖) |
## 决策流程(关键决策点停问)
每步做完,到**标注 🔴** 的点停下,向用户说明情况、给推荐、等确认。
1. **理解需求** — 用户要装什么?插件名 / 仓库 URL / "帮我找个能做 X 的"?
2. **定位来源** — 🔴 问用户:是已知插件(给名字/URL)还是要**搜索发现**(GitHub topic `dsh-plugin` 或问 agent 推荐)?
3. **选安装路径** — 先查 npm:`npm view <name> version`。
- 在 npm → **npm 直装**(最简单)
- 不在 npm 或 npm 包坏 → **GitHub clone + 注册**(见安装流程)
- 🔴 若两条路都有风险(