前言¶
DeepSeek Harness(DSH)的扩展都走插件形态;社区目录集中在 dsh-plugin.org,条目规模在官方说明里约两万条。平时要在浏览器里翻目录,再在终端里执行 dsh plugin 装包、改启用状态,上下文切换频繁。下面介绍 dsh-plugin-harbor(维护者 Seraphoenixy,分类:客户端):在 DSH 侧边栏开一个整窗面板,用目录站数据做市场浏览,并把已装插件的安装、更新、卸载、启停与热重载收口到同一处;变更优先经宿主 pluginManager,缺能力时回退 dsh plugin 子进程。
这是什么¶
插件全名 dsh-plugin-harbor(包名 dsh-plugin-harbor,当前版本 0.1.0-alpha.1,MIT 许可证)。它是 DSH 客户端插件,不替代官方应用商店——目录数据来自社区站点 dsh-plugin.org,与 DeepSeek / 幻方无官方从属关系。dsh-plugin.org 与 api.dsh-plugin.org 提供目录与详情;本插件不调用 GitHub API,也没有遥测端点。
面板结构¶
安装后侧边栏出现「插件港湾」图标。面板分四个页签:市场、已装、操作、设置。下面按页签说明已核实的能力。
市场¶
- 目录同步:从官网拉全量分片,内容寻址做增量;站点改版时走 sitemap 枚举兜底,并标注 degraded,不静默返回空目录;失败原因会透传到界面。
- 浏览与搜索:支持搜索、11 个一级分类、4 种排序、游标分页;列表窗口化渲染,大批量滚动时减轻卡顿。搜索侧:3 字及以上走 SQLite FTS5 trigram 索引,1–2 字退回单列
LIKE。 - 外链与详情:仓库名与「详情页」用系统浏览器打开 dsh-plugin.org 上对应插件页(按 owner + slug);按需拉取单条详情(精确版本、安装命令、dshTarget),24h 缓存。
打开面板本身不自动联网检查更新;进入市场页且无缓存、或用户主动刷新目录、检查更新、安装/卸载等操作时才会出网。
已装¶
已装清单由 profile 清单、lockfile 与 node_modules 交叉校验(git 形态含 commit)。更新是否可用只依据真实来源:registry 的 dist-tags.latest、git lockfile commit 对比 ls-remote、目录 repoUpdatedAt;都拿不到则标「未判定」,不误标「已最新」。支持启用、停用、更新、卸载、热重载;更新完成后自动复查并落库。本地路径或压缩包形态的插件没有远端可比,界面会禁用「更新」,需自行改源码构建后热重载。
本页还提供导出 / 导入与 Git 跨机器同步入口(规则见后文)。
操作¶
安装、更新、卸载等变更进入队列,可查看进度、日志尾部并取消;跨重启的历史记在本插件数据目录的目录库中。「进行中」按队列顺序显示;已完成记录按时间从新到旧。
设置¶
语言、自动刷新间隔、官网/API 基址、registry 镜像、代理持久化在插件数据目录。连通性诊断含站点、API、registry、git、目录库、热重载六项,只读、手动触发。
行为与安全口径¶
理解这些规则有助于少踩坑:
- 确认才动:所有安装、更新、卸载、启停、热重载先过确认弹窗,服务端再校验
confirm: true;更新的安装地址与形态由服务端从已装事实读取,客户端不能传 spec。 - 重启与否听宿主:桌面宿主默认加载
@deepseek-ai/dsh-hmr时,多数变更可原地生效;仅当宿主回复需要重启时才提示并说明原因。启停与热重载无子进程兜底,缺服务时报错。 - 目录库旁路:写库失败累加
failedWrites并标注,浏览与管理不因存储故障中断。 - 构建与生效:客户端
client.js刷新页面即新;宿主侧index.js需重启或 profile 重新组合;不一致时面板顶部会说明修法。 - 开发 link 安装:从检出目录(
link:指向 clone)安装时,可监视dist/自动请宿主重新组合;PLUGIN_HARBOR_HOT_RELOAD=0可关;tarball/registry 正式副本无此逻辑。首次启用监视器仍需重启一次 DSH。
本插件不写 profile 的 package.json、cordis.patch.yml、pnpm-lock.yaml;变更交给宿主或子进程,配置合并经宿主 configEditor。数据落在 $DSH_HOME/profiles/<profile>/plugin-harbor/(默认 ~/.dsh),含 catalog.sqlite、settings.json、exports/、git-sync/ 等,按 profile 隔离。
安装与启用¶
仓库提交自带 dist/,安装无需本地构建。官方示例(请将路径换为你本机 clone 或解压位置):
dsh plugin --profile desktop add "D:\path\to\dsh-plugin-harbor"
安装后重启 DSH 或刷新页面,即可在侧边栏打开港湾。插件以当前 DSH 进程权限运行,安装前宜自行核对源码与 MIT 许可证。Node 引擎要求 >=22.19.0(见 package.json)。
典型用法¶
在市场安装插件¶
- 打开「市场」,必要时触发目录同步(首次无缓存会自动拉取)。
- 用搜索或分类缩小范围,点条目查看按需加载的详情(安装命令、dshTarget 等)。
- 发起安装并在确认弹窗中确认;进度与日志在「操作」页查看。
管理已装插件¶
在「已装」中启用/停用、检查更新、更新、卸载或热重载;每项操作同样先确认。registry/git 源拿不准更新判据时,界面会如实显示「未判定」而非假装已最新。
导出与导入¶
导出 JSON 到 <dataDir>/exports/<时间>-<profile>.json,含插件清单、profile 补丁行(含 config)、本插件设置,可选各插件设置文件(勾选导出,疑似凭据替换为 [已脱敏])。导入前在面板预检(将安装/将启用/将停用/已一致/无法处理),确认后由宿主逐步执行。
三条硬限制(README 原文口径):
- 只增不删:不卸载、不改 profile 的
package.json/cordis.patch.yml/pnpm-lock.yaml;重复导入幂等。 - 带
config的补丁行:宿主无写config接口,导入生成 YAML 片段,需人工粘贴。 - 插件设置文件只导出、不导入;未导出项写入
omissions并说明原因。
导入源:系统文件浏览器、导出目录下拉、或绝对路径(例如从另一台机器拷贝的文件)。
Git 跨机器同步(harbor-sync)¶
在「已装 → 导出/导入 → Git 同步」中配置。使用独立分支 harbor-sync,快照路径 harbor/environments/<环境名>/snapshot.json;本地裸仓库在 <profile>/plugin-harbor/git-sync/。可与 dsh-mnemon 共用远端 URL,港湾不读取 Mnemon 私有状态。
- 填写 HTTPS/SSH 地址或本机裸仓库绝对路径并保存(此步不联网)。
- 「检查远端并预检」:看待发布快照、应用计划、版本差异与最近十次提交。
- 源机「发布本机快照」;目标机重新检查后「应用远端快照」。进度在「操作」页;缺失凭据在目标机补全。
不自动同步:预检保留 15 分钟,本机变化需重新检查;发布遇远端变化会拒绝。link: / file: / 本地路径与压缩包不参与同步。认证走系统 Git 与 SSH agent 或凭据管理器,无交互失败即报错;建议私有仓库,勿在 HTTPS URL 中写凭据。
设置与排错¶
在「设置」中改语言、刷新间隔、基址与代理;亦可用环境变量覆盖(持久化设置优先),例如:
| 变量 | 作用 |
|---|---|
PLUGIN_HARBOR_SITE / PLUGIN_HARBOR_API / PLUGIN_HARBOR_REGISTRY |
覆盖默认站点、API、registry |
PLUGIN_HARBOR_DSH |
子进程兜底用的 dsh 可执行文件路径 |
DSH_HOME |
数据根,默认 ~/.dsh |
手动跑「连通性诊断」可区分站点、API、registry、git、目录库、热重载哪一环异常。Git 的 url.*.insteadOf、代理与 SSH 配置会影响实际连接,以本机 Git 为准。
适用场景与注意¶
适合:长期在 DSH 桌面 profile 上试社区插件、需要在一个面板里搜目录并管生命周期、或多机用 Git 快照对齐「装了什么、启没启」(配置合并有宿主校验与人工项)。
注意:
- 目录与 API 依赖 dsh-plugin.org 生态,离线或镜像需自行在设置/环境变量中配基址。
- 导入与 Git 同步遵循「只增不删」与本地开发插件保护,不能指望同步自动卸掉目标机上多装的包。
- 子进程兜底能完成的范围与宿主能力不一致;热重载与启停依赖宿主服务。
- 当前为
0.1.0-alpha.1早期版本,行为以仓库 README 与docs/为准。
资料与链接¶
- 社区目录页:dsh-plugin-harbor @ SkillHub
- 源码与说明:GitHub — Seraphoenixy/dsh-plugin-harbor
- 目录数据来源:dsh-plugin.org
经过上面的步骤,若你主要工作在 DSH 侧边栏内,港湾把「逛目录」和「管已装」接到同一套确认队列与宿主契约上,比单独开浏览器再加终端更连贯;复杂配置与跨机一致仍要按导出/导入与 Git 同步文档里的硬限制操作。