DeepSeek Harness 插件发布与分发:NPM / GitHub / Tarball 全流程指南
插件写完只是第一步,可分发、可复用、可版本管理、可一键安装 才是工程化闭环。

DeepSeek Harness 官方统一支持三种插件分发形态,覆盖「公开开源、源码直装、离线交付」全场景:
- NPM 发布:标准生产级分发,版本可控、安全、一键安装(推荐首选)
- GitHub 直装:源码快速分享、迭代预览、开源协作场景
- Tarball(tgz 离线包):私有化离线部署、内网交付、无网络环境
本文带你从零完成三种发布流程、区分优劣、规避安全坑点、匹配业务场景,实现插件标准化交付。
一、发布前置:插件必须满足的官方规范
无论哪种分发方式,合法 DSH 插件/组合包必须满足以下基线规范,否则无法被 Profile 识别加载:
1. 基础包结构
- 合法
package.json(name / version / type / main 必填) - TS 插件必须编译输出
lib/,禁止下发裸 ts 源码直接运行 - 入口文件合法导出:
name、apply、可选inject、Config
2. Bundle 组合包强制规范(可自动加载插件)
如果你的包需要被 profile 自动识别、批量加载,必须在 package.json 声明:
{ "name": "dsh-my-plugin", "version": "1.0.0", "type": "module", "main": "lib/index.js", "dsh": { "bundle": { "plugins": ["."] } } }
未声明 dsh.bundle 的包:只能作为依赖库,不会自动加载为插件,需要手动在 patch 注册。
3. 文件白名单
必须在 package.json 声明 files,保证打包体积干净、配置不丢失:
"files": ["lib", "index.js", "cordis.patch.yml"]
二、方式一:NPM 发布(生产首选、官方推荐)
1. 核心优势
- 版本严格可控:语义化版本、升级回滚、锁版本部署
- 安全最高:只执行编译后 lib 代码,不执行用户源码、不触发 prepare 编译脚本
- 体验最好:用户一行命令安装、自动加入 profile bundle、自动热加载
- 适配生态:公共插件、稳定能力包、正式迭代全部走 NPM
2. 完整发布流程
Step1:编译产物
pnpm build
确保 lib/ 存在、无 ts 源码、产物可独立运行。
Step2:登录 NPM
npm login
Step3:发布正式包
npm publish
3. 用户安装命令(标准)
# 安装到指定 profile,自动加入 bundles 数组 dsh plugin --profile web add dsh-my-plugin
4. 适用场景
- 公共开源插件、通用能力 Bundle
- 团队标准化组件、长期迭代的正式能力
- 生产环境、私有化稳定部署
三、方式二:GitHub 直装(源码快速分享、预览迭代)
1. 原理与特点
支持直接从 Git 仓库拉取源码安装,无需先发布 NPM。适合快速分享、PR 预览、临时试用。
重大安全区别:GitHub 安装会拉取源码并 执行 prepare 编译脚本,拥有本地完整权限,不可用于不信任第三方仓库。
2. 仓库规范
- 根目录包含完整 package.json + dsh.bundle 声明
- 支持 main 入口、支持 build 脚本
- 建议打 tag 版本,固定安装版本
3. 安装命令全集
# 默认拉取 main/master 分支 dsh plugin --profile web add github:username/dsh-my-plugin指定分支 dsh plugin --profile web add github:username/dsh-my-plugin#main 指定 tag 版本(推荐固定版本) dsh plugin --profile web add github:username/dsh-my-plugin#v1.0.0
4. 优劣总结
✅ 优点:无需审核、快速分发、开源协作友好
❌ 缺点:安全性低、无版本锁、生产环境不建议长期使用
5. 适用场景
- 插件开发完毕后的快速预览、体验测试
- 开源项目协作、PR 验证、临时迭代版本
- 内部可信团队快速同步未发布版本
四、方式三:Tarball tgz 离线包(私有化/内网交付)
1. 原理与特点
使用 pnpm pack 或 npm pack 打出标准 tgz 离线包,包含完整编译产物,可脱离公网、内网部署、离线交付。
安全级别等同于 NPM:只加载产物,不执行编译脚本,适合私有化交付。
2. 打包完整流程
Step1:编译
pnpm build
Step2:打出 tgz 离线包
pnpm pack
执行后生成:dsh-my-plugin-1.0.0.tgz
3. 离线安装命令
# 相对路径安装 dsh plugin --profile web add ./dsh-my-plugin-1.0.0.tgz绝对路径安装 dsh plugin --profile web add /xxx/xxx/dsh-my-plugin-1.0.0.tgz
4. 适用场景
- 企业私有化部署、内网隔离环境
- 无公网访问的服务器、离线机房交付
- 固定版本封存、交付客户、版本归档
五、三种分发方式全方位对比(生产选型核心)
| 分发方式 | 安全等级 | 版本可控 | 是否执行源码编译脚本 | 最佳场景 |
|---|---|---|---|---|
| NPM | 高(生产级) | 严格语义化版本 | 否,只运行编译产物 | 正式发布、公共插件、生产环境 |
| GitHub | 低(仅可信源码) | 弱(依赖分支/tag) | 是,执行 prepare 编译 | 快速预览、开源协作、临时测试 |
| Tarball(tgz) | 高(同NPM) | 严格锁定版本 | 否,直接加载产物包 | 内网私有化、离线交付、版本封存 |

六、统一卸载命令(全部通用)
无论哪种方式安装,卸载命令一致:
dsh plugin --profile web remove dsh-my-plugin
0 条笔记