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 倉庫

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

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

小夜