DeepSeek Harness 插件:dsh-skill-bundle

前言

DeepSeek Harness (DSH) 允许模型按需加载技能,但将大量相关技能(如工具链或分阶段工作流)作为扁平目录安装时,会带来上下文污染和提示词预算浪费的问题。每个安装的技能都会贡献名称和描述到 <available_skills> 目录,即使当前任务不需要这些技能,它们仍会占据上下文窗口。

dsh-skill-bundle 插件通过引入“Bundle Box”概念,将一组相关技能封装在一个包中。仅根技能暴露在目录中,子技能通过元数据按需加载,仅在显式请求时才进入上下文。这有助于减少无关信息干扰,提升推理效率。

核心功能

  • Bundle Box 结构:包含一个根 SKILL.md 和任意数量的子技能目录。
  • 按需加载控制:通过 frontmatter 的 loadSubskills 字段或模型决策来加载子技能。
  • 模型工具:提供 skill_browse(列出子技能名称)和 skill_load(加载指定子技能)工具。
  • 架构无侵入:作为纯 Cordis 插件,无需修改框架,支持预编译 lib/ 目录。
  • 资源隔离:子技能保持独立身份,其资源目录相对路径解析正确。

安装与配置

安装插件需要先确保 DeepSeek Harness (dsh) 已正确安装。

  1. 安装插件包:
    dsh plugin --profile web add @lihuu/dsh-skill-bundle
  1. 检查配置是否生效:
    dsh --profile web --dump-config
配置输出中应包含 `dsh-skill-bundle` 层。
  1. 重启配置:安装或修改配置后,必须重启对应 Profile 的进程。

自定义 Boxes 路径

插件默认在安装包的 boxes/ 目录下查找。若需指向自定义目录,需在配置中添加补丁行,替换原有的 boxesDir:

- insert:
    - id: dsh-skill-bundle
      name: '@lihuu/dsh-skill-bundle'
      config:
        boxesDir: /absolute/path/to/your/boxes

使用示例

目录结构示例

将相关的技能放入一个目录中,该目录即为一个 Bundle Box。例如部署流程:

boxes/deploy/
  SKILL.md          # 根技能
  build/SKILL.md
  push/SKILL.md
  rollback/SKILL.md

Frontmatter 配置示例

在根 SKILL.md 的 frontmatter 中定义加载策略:

---
name: deploy
description: "部署相关技能集"
loadSubskills:          # 仅加载指定的子技能
  - build
  - push
  - rollback
---

加载规则:
* loadSubskills: true:加载所有子技能(按目录顺序)。
* loadSubskills: [a, b]:仅加载列表中的子技能。
* 不设置 loadSubskills:仅返回根技能内容,由模型阅读后决策。

注意事项

  • YAML 1.2 限制:字段值包含逗号时需用双引号包裹,例如:
    description: "a, b, c: 需要引号"
  • 依赖关系:需安装 @deepseek-ai/dsh-skill 和 @deepseek-ai/dsh-tools 等依赖。
  • 配置生效:修改配置后必须重启配置文件才能生效。

总结

dsh-skill-bundle 通过将技能分组并实现按需加载,解决了多技能场景下的上下文膨胀问题。开发者可以通过配置 loadSubskills 来精确控制技能集的加载范围,从而在保持功能完整性的同时优化模型调用成本。

插件目录页 | GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜