dsh-skill-packdge

August 17, 2026 · View on GitHub

DeepSeek Harnesspackdge 技能提供器插件: 把"技能 + 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 里的相对路径资源。

安装

  1. 把插件链接进 web profile:

    dsh plugin --profile web add .
    

    或手动将本目录链接到 $DSH_HOME/profiles/web/node_modules/dsh-skill-packdge

  2. $DSH_HOME/cordis.patch.yml 中加入:

    - insert:
        - id: dsh-skill-packdge
          name: dsh-skill-packdge
    
  3. 放置你的 packdge:默认扫描 $DSH_HOME/packdge/(用户根)与项目 .dsh/packdge/(项目根), 也可通过 customPackdgeDirs 指定额外根。

  4. 重启 dsh web(或刷新页面)后生效。

配置

字段默认说明
providerNamepackdge注册到技能注册表的 provider 名
includeDefaultRootstrue是否扫描项目与用户默认 packdge 根
dshHome$DSH_HOME~/.dshharness 配置根(用户 packdge 根为 <dshHome>/packdge
customPackdgeDirs[]额外 packdge 根(优先级在项目根与用户根之间)
enabledPackdges[]仅允许这些 packdge 贡献;空列表 = 全部
disabledPackdges[]排除这些 packdge(与 enabled 重叠会被拒绝)
watchtrue监听 packdge 根变化,实时刷新目录
watchUsePollingfalse使用轮询代替原生文件事件
watchStabilityThresholdMs200文件变更稳定阈值
watchPollIntervalMs100稳定性/轮询探测间隔
watchFollowSymlinkstrue是否跟随符号链接
refreshSpecialSkillsIndextrue对自带 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