用 dsh-skill-manager-ytxue 在 DeepSeek Harness 設置裏管理技能

前言

DeepSeek Harness(dsh)把技能寫成 SKILL.md:目錄型(bundle)帶腳本和資源,平鋪型(flat)就是一個 Markdown 文件。掃描根不止一處——系統級在 ~/.dsh/skills,項目級還可能在 <項目根>/.dsh/skills<項目根>/.agents/skills。從 GitHub 解壓下來的技能,目錄名經常帶着 -main 後綴,frontmatter 裏的 name 不一定是 kebab-case,缺 description 時 DSH 會直接排除這條技能。手動在磁盤上搬文件、改 YAML、再重啓覈對,容易把「全項目生效」和「只對當前倉庫生效」混在一起。

dsh-skill-manager-ytxue 是社區做的 Web 界面插件:在設置側邊欄加一塊「Skill 管理」面板,把列表、導入、啓用/停用和按 DSH 規範檢查修復放在同一處。本文按插件目錄頁、GitHub 倉庫 README / package.json 與 DeepSeek Harness 官方說明覈對後整理。社區插件目錄 deepseek-harness-plugin.com 是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。

這是什麼

dsh-skill-manager-ytxue 是一款界面增強插件,由 YTxue 維護,源碼在 GitHub 倉庫 YTxue/dsh-skill-manager-ytxue,許可證 MIT,當前版本在 package.json 裏寫的是 0.6.0,運行時要求 Node.js 20 及以上。GitHub 倉庫描述與目錄頁一致:在設置側邊欄提供技能列表、啓用/停用、文件夾批量導入(重名詢問)、按 DSH 規範做狀態驅動的檢查和自動修復,並區分系統級與項目級。截至 2026-08-17,GitHub 顯示 7 星;目錄頁收錄時星標爲 4,以倉庫頁面爲準。

它解決的是「技能已經在磁盤上,但缺少一塊對着規範來管的界面」:把啓用目錄和技能池分開,導入時先預檢再讓你決定覆蓋還是跳過,檢查結果用紅綠點標在名字旁邊。客戶端聲明 platform: web,掛在 Web UI 的設置分區,不是終端 TUI。

倉庫 README 特別說明:npm 上的 dsh-skill-manager(維護者 gohana,0.1.x,2026-08-13 發佈)是無關的第三方包。本插件包名帶 ytxue 後綴,安裝以本倉庫爲準,不要用 npm install dsh-skill-manager

核心功能

設置側邊欄面板

插件註冊 settings.section 插槽,order: 900。打開 DeepSeek Harness 網頁設置後,側邊欄會出現「Skill 管理」。工具欄提供:

  • 刷新:外部手動放入或改過 skill 後,重新拉取列表。
  • 一鍵檢查:只處理紅點條目,按規範檢查並自動修復。

每行顯示 frontmatter 裏的 description;沒有簡介時提示「(無簡介)」。名字旁還有 bundle / flat 標籤:

標籤 形態 說明
bundle 目錄,正文在 SKILL.md 可附帶 scripts、assets 等多文件
flat skills 下的單個 .md 適合純指令型技能

兩者對 DSH 掃描和 frontmatter 要求相同,面板裏的啓用、停用、檢查也按整個條目(目錄或文件)移動,標籤只用來區分形態。

系統級與項目級

面板把來源級別標在 bundle / flat 後面:

  • 系統級~/.dsh/skills,對應 DSH 原生掃描 rank 400,對全部項目生效。
  • 項目級<項目根>/.dsh/skills(rank 100)或 <項目根>/.agents/skills(rank 200),只對該項目生效。項目級條目只讀展示、灰點,不參與規範檢查。

默認只顯示當前項目的項目級技能。面板打開或刷新時,客戶端把當前會話工作目錄傳給 host(訂閱 sessions 服務,切換會話即同步,不必先發言);host 向上探測 .git 祖先,判定方式與 DSH 的 skill-filesystem 一致,沒有 .git 時用 cwd 自身。$DSH_HOME 自身會排除,避免和系統級重複。若某個項目從沒開過會話、又想出現在列表裏,可在 $DSH_HOME/settings.yaml 增加:

skill-manager-ytxue:
  projectRoots:
    - '/path/to/project1'
    - '/path/to/project2'

舊版掛載條目裏的 config.projectRoots 仍會自動合併;新配置優先寫 settings.yaml

狀態總覽是雙列表:已啓用目錄 ~/.dsh/skills,以及零掛載的池目錄 ~/.dsh/skill-pool

導入:單條、批量、重名詢問

導入入口支持選文件夾或手動填路徑。README 描述的目錄瀏覽對話框從「此電腦」(全部盤符)起步,可進入任意磁盤、任意層級;標題欄提供「選擇此文件夾」和關閉,底部有獨立的「返回上級文件夾」,避免點錯。選中後自動填入路徑。

路徑識別規則:

  • 路徑本身是一個 skill(含 SKILL.md 的目錄,或單個 .md 文件)→ 導入 1 個(kind: single)。
  • 路徑是包含多個 skill 的大文件夾 → 逐個導入直接子級(含 SKILL.md 的子目錄 + 頂層 .md),非 skill 文件忽略(kind: batch)。

導入前先 dry-run。發現重名時彈窗說明將導入 N 個、其中 M 個與現有條目重名,由你選擇:跳過重名並導入其餘覆蓋重名(替換現有)、或取消。不會默默跳過。

目標有兩處:

  • 複製到啓用目錄 skills:立即生效,導入後自動檢查修復。
  • 複製到池 skill-pool:零掛載,之後再啓用。

導入時會做 kebab 規整,README 給的實測例子是 guizang-ppt-skill-mainguizang-ppt-skill。結果逐條顯示 ✓(覆蓋)、△(重名跳過)、✗(失敗)和警告。

啓用、停用與規範檢查

啓用 / 停用在池和啓用目錄之間移動條目,目錄 bundle 與平鋪 .md 都支持。衝突或重複會報錯,不會覆蓋已有條目。

檢查狀態用名字旁的圓點表示,依據 ~/.dsh/skill-manager-ytxue.checked.json,按 SKILL.md 內容的 sha1 指紋判定:

  • 綠點:規範已檢查且內容未變。
  • 紅點:尚未檢查,或內容已變更。

檢查只針對紅點:首次啓用會全量檢查,之後(含插件每次啓動)只檢查新增或被修改的條目,綠點自動跳過。不合規會自動修復,並寫入 ~/.dsh/skill-manager-ytxue.log。README 列出的修復項包括:

  • 目錄名 / 文件名非 kebab-case → 規整重命名,並同步 frontmatter name
  • frontmatter name 缺失、非 kebab、或與目錄名不一致 → 以目錄名爲準修正
  • description 缺失 → 補佔位描述(DSH 會排除無 description 的 skill)
  • 布爾字段 disable-model-invocation / user-invocable 寫成駝峯 → 改爲 kebab;非布爾值則修正或刪除(識別 TRUE/FALSE/1/0/yes/no/on/off

host 端還暴露一組本機迴環 API,路徑前綴 /api/skill-manager-ytxue/,例如 GET /state 取雙目錄快照,POST /check/enable/disable/import,以及給選擇器用的 GET /list-dir。響應統一爲 {ok, data?}{ok:false, error}。面板只請求本機這些接口,不向外發請求。

安裝與啓用

目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端運行:

dsh plugin add github:YTxue/dsh-skill-manager-ytxue

如需可復現安裝,按目錄頁說明固定 commit。倉庫 main 分支截至 2026-08-14 的最新提交是 f254f3005a446062e312144f27ed0820d38d4654

dsh plugin add github:YTxue/dsh-skill-manager-ytxue#f254f3005a446062e312144f27ed0820d38d4654

README 另外給出兩種不經過 npm 同名包的寫法。一種是指定 web profile 和 git 地址:

dsh plugin --profile web add git+https://github.com/YTxue/dsh-skill-manager-ytxue

另一種是 clone 後按 DSH 原生機制掛載(README 稱爲方式 B,任何環境通用):

git clone https://github.com/YTxue/dsh-skill-manager-ytxue.git
  1. 把插件目錄放到 $DSH_HOME/profiles/web/node_modules/dsh-skill-manager-ytxue/
  2. $DSH_HOME/profiles/web/cordis.patch.yml 追加:
- insert:
    - id: skill-manager-ytxue
      name: 'dsh-skill-manager-ytxue'
  1. dsh --profile web --dump-config 確認配置樹裏出現 skill-manager-ytxue
  2. 重啓 DSH,打開設置 → 「Skill 管理」。

插件元數據寫在 package.jsonmainexports["./client"]dsh 字段裏,不需要單獨的 plugin.json。host 端零第三方運行時依賴(只用 Node 內置模塊和 cordis 注入);client 依賴 React 與 slots、sessions。若啓動報 Cannot find package '@deepseek-ai/...',說明插件不在 Node 解析鏈上,README 建議放到 profiles/web/node_modules/ 或改用 dsh plugin add

dsh plugin add 裝過再刪掉插件目錄,啓動可能報 cannot resolve profile bundle "dsh-skill-manager-ytxue"。需要從 ~/.dsh/profiles/web/package.jsondsh.profile.bundlesdependencies 裏去掉該條目,或運行:

dsh plugin --profile web remove dsh-skill-manager-ytxue

修改插件代碼後要完整重啓 DSH 才生效;HMR 不會刷新 Node ESM 模塊緩存和瀏覽器啓動圖。

典型用法

下面流程來自倉庫 README 的功能說明和作者 2026-08-14 的部署記錄,不是第三方評測。

  1. 安裝並重啓後,打開 Web UI 的設置,進入側邊欄「Skill 管理」。
  2. 若技能已經躺在某個下載目錄裏:點文件夾圖標選中該目錄,或直接輸入路徑。面板會判斷是單條還是批量。
  3. 出現重名預檢時,按提示選擇跳過、覆蓋或取消。需要馬上給 DSH 用的,目標選啓用目錄 skills;只想先收着的,選 skill-pool
  4. 池裏的條目用啓用操作移到 ~/.dsh/skills;暫時不用的再停用回池。啓用/停用衝突時會報錯,不會覆蓋。
  5. 名字旁是紅點的,點「一鍵檢查」。修復寫入磁盤,日誌在 ~/.dsh/skill-manager-ytxue.log(JSONL),檢查狀態在 ~/.dsh/skill-manager-ytxue.checked.json。之後內容沒變的條目會跳過。
  6. 換到另一個倉庫的會話後刷新面板,項目級列表會跟着當前工作目錄走。

作者在 README 裏記錄的端到端驗證包括:設置面板可操作(例如 disable frontend-designenable frontend-design);HTTP 的 import / enable / disable 與衝突保護跑通;對真實根執行 /check 得到 checked: 3, fixed: 0(docx、frontend-design、guizang-ppt-skill);test/core-test.mjs 51 項通過(審計、自動修復、冪等、啓停、衝突、導入、BOM、狀態驅動)。本地複測可運行:

node test/core-test.mjs

適用場景與注意事項

適合已經在用 DSH Web UI、需要把外部技能目錄收進 ~/.dsh/skills 或技能池、並按 kebab-case / description / 布爾字段規範做一次修復的人。項目級技能只展示、不檢查、不能用這塊面板改,系統級和項目級的邊界要靠標籤自己看清楚。

作者實測環境是 Windows(PowerShell 5.1 + Node 20+),完整驗證只在本機做過。macOS / Linux(含虛擬機)請按安裝說明操作,問題可到倉庫提 Issue。Linux 上若啓動報 EADDRINUSE: 127.0.0.1:3080,說明已有 DSH 實例佔用端口,需要先停掉舊進程再啓動。日誌裏其他插件的 git / gnutls_handshake failed 屬於網絡鏈路問題,和本插件無關。

插件會寫入 ~/.dsh/ 下的 skillsskill-poolskill-manager-ytxue.logskill-manager-ytxue.checked.json,需要保證 DSH 進程對該目錄可寫。日誌和狀態文件寫入失敗會靜默降級,不阻塞主流程。enable / disable / import 的目標目錄限定在 skillsskill-pool 內;覆蓋操作只刪除目標目錄裏的同名條目。parseSkillDoc 會剝離 UTF-8 BOM,避免 Windows 工具寫成帶 BOM 的 SKILL.md 導致 frontmatter 解析失敗。

目錄頁和倉庫都提醒:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證;需要可復現安裝時固定 commit 哈希。本插件是社區開源項目,不是 DeepSeek 官方組件。

小結

dsh-skill-manager-ytxue 把技能池、啓用目錄、重名預檢和狀態驅動的規範修復收進設置側邊欄,並標出系統級與當前項目級。安裝命令、源碼和許可證如下:

  • 目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-skill-manager-ytxue/
  • GitHub:https://github.com/YTxue/dsh-skill-manager-ytxue
  • DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness
羽毛球分组比赛记分
小程序二维码

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

小夜