dsh-skill-manager:DeepSeek Harness 技能管理插件

前言

DeepSeek Harness (DSH) 的核心能力在於通過 Skills 擴展 Agent 的功能。在實際開發中,往往需要在不卸載 Skill 的情況下,臨時屏蔽某些工具或能力,或者對大量 Skill 進行統一管理。DSH 原生並未提供全局級的 Skill 啓停與運行時過濾機制。

dsh-skill-manager 是一個插件,它通過 Web GUI 提供管理面板,將停用的 Skill 在 Agent 運行時完全過濾掉,同時保持管理列表的可視性與恢復能力。

插件概述

這是一個運行在客戶端的插件,由 welsione 維護。它解決了以下問題:

  1. 集中管理:在 Web GUI 設置頁統一查看、搜索和篩選所有 Skills。
  2. 運行時控制:停用某個 Skill 後,Agent 在調用目錄注入、工具調用或直接引用時完全不可見該 Skill。
  3. 持久化配置:禁用名單保存在本地文件,重啓後依然生效。

核心功能

設置頁管理面板

安裝插件後,進入 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 能力範圍的開發者來說,這是一個實用的工具。

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

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

小夜