DeepSeek Harness 插件打包规范
August 18, 2026 · View on GitHub
本文记录本仓库遵循的发布约束。权威来源是 DeepSeek Harness 官方文档的 打包与安装插件;官方行为变化时应以原文为准。
Bundle 与 profile
Harness 使用两种不同 manifest:
- bundle 是作者分发的 npm 包,通过
package.json的dsh.bundle声明自己贡献的配置层。 - profile 是用户机器上由
dsh plugin管理的可运行组合,通过dsh.profile.bundles记录 bundle 顺序。
一个包不能同时是 bundle 和 profile。本仓库只产出 bundle,绝不手写或发布用户 profile。
本仓库的发布结构
dsh-codex-file-panel/
├── package.json
├── cordis.patch.yml
├── lib/
│ ├── index.js
│ ├── index.d.ts
│ └── client.js
├── README.md
└── LICENSE
源码仓库还包含 src/、tests/、scripts/ 和 GitHub 社区文件,但 package.json#files 只把运行必需内容放进 npm/tarball。
Manifest
关键字段如下:
{
"name": "dsh-codex-file-panel",
"type": "module",
"main": "./lib/index.js",
"files": ["lib", "cordis.patch.yml", "README.md", "LICENSE"],
"dsh": {
"bundle": { "patch": "./cordis.patch.yml" },
"client": {
"inject": [
"@deepseek-ai/dsh-client-runtime",
"@deepseek-ai/dsh-client-locale",
"@deepseek-ai/dsh-client-ui-conversation"
],
"platform": "web"
}
}
}
没有 dsh.bundle 的包仍会成为 profile 依赖,但不会贡献任何配置层。dsh.client 是本插件浏览器入口所需的 client module 元数据。
Patch 层
cordis.patch.yml 顶层是 patch 数组。插件行按 npm 包名解析,不能写仓库相对路径:
- insert:
- id: dsh-codex-file-panel
name: dsh-codex-file-panel
配置应用顺序为:profile bundle 列表、profile 自身 patch、home 级 patch、命令行 --patch。后层按行覆盖前层,行内 config 会整体替换而不是深度合并,因此用户覆盖插件行时必须重述全部需要的字段。
GitHub 源码安装
Git 依赖下载源码而不是 lib/。本包因此声明自包含的 prepare: tsdown,其开发依赖全部来自 npm registry,不依赖旁边的 monorepo 或本地 Harness checkout。
pnpm 10 及以上需要用户在目标 profile 中明确允许这个 prepare。授权意味着安装阶段可在 agent 沙箱外执行包代码,因此文档要求固定 commit,并只安装可信源码。
npm 与 tarball
prepack 会运行完整 check,确保被发布的入口已经构建并通过测试。发布前应执行:
pnpm install --frozen-lockfile
pnpm run check
pnpm pack --pack-destination dist
tarball 内容必须包含:
package.jsoncordis.patch.ymllib/index.jslib/index.d.tslib/client.jsREADME.mdLICENSE
不得包含测试、未编译源码、本地凭据、profile 配置、node_modules 或构建机绝对路径。
发布检查清单
- package 名、Cordis
id、patchname、Node/clientname与 client loader ID 一致。 dsh.bundle.patch指向实际随包发布的文件。prepare能在只有 registry 依赖的干净 checkout 中完成。- peer dependency 范围与目标 Harness 版本一致。
pnpm run check在 Windows 与 Linux CI 通过。pnpm pack的文件列表符合上节约束。- CHANGELOG、README 兼容性说明和版本号已经更新。