前言¶
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) 已正確安裝。
- 安裝插件包:
dsh plugin --profile web add @lihuu/dsh-skill-bundle
- 檢查配置是否生效:
dsh --profile web --dump-config
配置輸出中應包含 `dsh-skill-bundle` 層。
- 重啓配置:安裝或修改配置後,必須重啓對應 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 來精確控制技能集的加載範圍,從而在保持功能完整性的同時優化模型調用成本。