前言¶
DeepSeek Harness (DSH) 的核心能力在於通過 Skills 擴展 Agent 的功能。在實際開發中,往往需要在不卸載 Skill 的情況下,臨時屏蔽某些工具或能力,或者對大量 Skill 進行統一管理。DSH 原生並未提供全局級的 Skill 啓停與運行時過濾機制。
dsh-skill-manager 是一個插件,它通過 Web GUI 提供管理面板,將停用的 Skill 在 Agent 運行時完全過濾掉,同時保持管理列表的可視性與恢復能力。
插件概述¶
這是一個運行在客戶端的插件,由 welsione 維護。它解決了以下問題:
- 集中管理:在 Web GUI 設置頁統一查看、搜索和篩選所有 Skills。
- 運行時控制:停用某個 Skill 後,Agent 在調用目錄注入、工具調用或直接引用時完全不可見該 Skill。
- 持久化配置:禁用名單保存在本地文件,重啓後依然生效。
核心功能¶
設置頁管理面板¶
安裝插件後,進入 Web GUI 的「設置」頁面,會出現「Skill 管理」面板。
- 列表展示:顯示所有 Skill 的名稱、描述、來源以及是否僅允許用戶調用。
- 搜索與篩選:支持關鍵詞搜索,以及「全部 / 已啓用 / 已停用」的篩選。
- 開關操作:針對單個 Skill 進行啓用或停用。
批量操作¶
工具欄提供一鍵操作按鈕:
- 全部啓用:批量開啓所有 Skill。
- 全部停用:批量關閉所有 Skill(操作前需確認)。
插件配置卡片¶
在「設置」 -> 「插件」 -> 「插件配置」區域,會出現 dsh-skill-manager 的配置卡片。該卡片實時顯示當前的啓停統計與狀態文件路徑。
運行時過濾機制¶
這是該插件的核心能力。一旦在管理面板中停用一個 Skill,DSH 會在運行時攔截對該 Skill 的訪問:
- 目錄注入攔截:
<available_skills>標籤中不再包含該 Skill。 - 工具調用攔截:Agent 無法通過
skill工具調用該 Skill。 - 引用攔截:用戶直接使用
/name引用該 Skill 會被攔截。
此過濾對所有 Agent 及其子 Agent 全局生效。
持久化與可見性¶
- 持久化:停用名單存儲在
~/.dsh/skill-manager.json。插件重啓或 DSH 重啓後,配置依然有效。 - 全量可見:停用僅影響 Agent 的運行時發現。在管理列表中,所有 Skill 始終可見,隨時可以重新啓用。
Headless 兼容¶
該插件支持 Headless 模式(無 Web GUI 的 profile)。雖然運行時過濾是硬依賴,但 Web 服務器和 Agents 的加載是可選等待的,因此不影響 Headless 環境的使用。
目錄自動更新¶
當已打開的會話檢測到 Skill 列表發生變化(如停用/啓用)時,會自動發佈「目錄已更新」的消息,無需手動刷新或重新創建會話。
技術特性¶
- 零構建:單文件插件(ESM host + ModuleLoader client),無需編譯步驟。
- 自動掛載:通過
dsh.profile.bundles自動進入dsh.bundle.patch層,無需手動編輯配置文件。
安裝與啓用¶
安裝前請確認你的 DSH 版本滿足以下要求:
- DSH 版本:0.1.0-rc.7 及以上
- 模型要求:需要 bundle 插件模型(
dsh.profile.bundles+dsh.bundle.patch)
使用以下命令安裝插件:
# 1. 通過 npm 倉庫安裝(推薦固定版本)
dsh plugin --profile web add dsh-skill-manager
# 2. 或直接從 GitHub 安裝
dsh plugin --profile web add github:welsione/dsh-skill-manager
# 3. 或指定版本安裝(避免主分支漂移)
dsh plugin --profile web add github:welsione/dsh-skill-manager#v1.2.0
安裝完成後,刷新 Web 頁面,在「設置」中即可看到「Skill 管理」入口。
注意:
* 不要手動編輯cordis.patch.yml,bundle 層會自動掛載。
* 使用github:安裝時,倉庫版本需已提交併git push(v1.1.0+)。
API 使用示例¶
除了 GUI 操作,插件還暴露了 HTTP API,可用於腳本控制。
獲取 Skill 列表¶
curl -s http://127.0.0.1:3080/api/skill-manager/list
啓停單個 Skill¶
curl -s -X POST http://127.0.0.1:3080/api/skill-manager/set \
-H 'content-type: application/json' \
-d '{"name":"mmx-cli","enabled":false}'
批量啓停¶
curl -s -X POST http://127.0.0.1:3080/api/skill-manager/set \
-H 'content-type: application/json' \
-d '{"names":["a","b"],"enabled":true}'
卸載¶
如需卸載插件,執行以下命令:
dsh plugin --profile web remove dsh-skill-manager
卸載後,~/.dsh/skill-manager.json 文件會保留,重新安裝該插件時可沿用之前的禁用名單配置。
依賴與環境¶
- Peer Dependencies:
@deepseek-ai/dsh-settings(^0.1.0-rc.7) - Dependencies:
@deepseek-ai/dsh-home-paths,@deepseek-ai/schemastery - Git 依賴須知: 使用
github:安裝時,確保本地代碼已推送至遠程倉庫,否則可能因依賴解析失敗導致安裝異常。
總結¶
dsh-skill-manager 提供了一種輕量級的方式在 DSH 中管理 Skills 的可見性。它通過 Web GUI 實現了可視化的啓停控制,並通過運行時攔截確保了 Agent 的行爲一致性。對於需要精細控制 Agent 能力範圍的開發者來說,這是一個實用的工具。