dsh-skill-packdge
August 17, 2026 · View on GitHub
DeepSeek Harness 的 packdge 技能提供器插件:
把"技能 + hooks + 工具 + 数据"按工作流打包成一个目录(packdge),自动发现并注册为
{packdge}-{skill} 形式的技能,多个 packdge 并行共存不重名。
什么是 packdge
一个 packdge = 一个工作流目录:
myworkflow/
├── packdge.json # 清单:{ "name": "myworkflow", "description": "..." },name 必须等于目录名
├── skills/ # 普通 DSH 技能包(SKILL.md,frontmatter 必须有 description)
├── hooks/ # 会话钩子(可选)
├── config/ # 工作流配置(可选)
├── docs/ # 工作流文档(可选)
└── tools/ # 工作流脚本/工具(可选)
注册后每个技能名为 myworkflow-<skill>;技能正文通过 resourceBase 定位到 packdge 内的
资源目录,因此技能可以引用 hooks/tools/config 里的相对路径资源。
安装
-
把插件链接进 web profile:
dsh plugin --profile web add .或手动将本目录链接到
$DSH_HOME/profiles/web/node_modules/dsh-skill-packdge。 -
在
$DSH_HOME/cordis.patch.yml中加入:- insert: - id: dsh-skill-packdge name: dsh-skill-packdge -
放置你的 packdge:默认扫描
$DSH_HOME/packdge/(用户根)与项目.dsh/packdge/(项目根), 也可通过customPackdgeDirs指定额外根。 -
重启 dsh web(或刷新页面)后生效。
配置
| 字段 | 默认 | 说明 |
|---|---|---|
providerName | packdge | 注册到技能注册表的 provider 名 |
includeDefaultRoots | true | 是否扫描项目与用户默认 packdge 根 |
dshHome | $DSH_HOME 或 ~/.dsh | harness 配置根(用户 packdge 根为 <dshHome>/packdge) |
customPackdgeDirs | [] | 额外 packdge 根(优先级在项目根与用户根之间) |
enabledPackdges | [] | 仅允许这些 packdge 贡献;空列表 = 全部 |
disabledPackdges | [] | 排除这些 packdge(与 enabled 重叠会被拒绝) |
watch | true | 监听 packdge 根变化,实时刷新目录 |
watchUsePolling | false | 使用轮询代替原生文件事件 |
watchStabilityThresholdMs | 200 | 文件变更稳定阈值 |
watchPollIntervalMs | 100 | 稳定性/轮询探测间隔 |
watchFollowSymlinks | true | 是否跟随符号链接 |
refreshSpecialSkillsIndex | true | 对自带 config/special-skills.json 的 packdge 刷新其 inventory 段(宿主平面执行,保留其余字段,仅内容变化时写入) |
与官方 @deepseek-ai/dsh-skill-packdge 的关系
本插件是 packdge 机制的开源独立版:同一份提供器代码,包名与仓库独立。
- 注册表为每个技能附加
group = packdge id,供 UI 分组;该字段需要带 packdge 支持的 harness 构建(官方版本上会被忽略,技能照常注册为扁平列表)。 /skill、/packdge层级斜杠菜单属于 harness UI 侧能力,需要对应 UI 支持,本插件不包含。
开发
pnpm run typecheck # tsc --noEmit
pnpm run build # tsc 类型产物 + tsdown 运行时产物
pnpm run test # vitest(含真实 Loader 组合测试)
许可证
MIT