前言¶
DeepSeek Harness(dsh)把智能體能力拆成插件和技能兩層。插件改運行時,技能則是一份帶 YAML frontmatter 的 SKILL.md:模型或用戶按名稱調用,用來約束某類任務怎麼做。問題是技能文件並不只住在一個目錄裏。DSH 自己有 ~/.dsh/skills 和 ~/.agents/skills,項目裏還有 .dsh/skills、.agents/skills;如果同時用 Codex 或 Claude,還會再出現 ~/.codex/skills 和 ~/.claude/skills。GitHub 上的技能倉庫又是另一套來源。要啓停某一個技能,往往得自己找文件、改名、再確認 /技能 列表有沒有刷新。
dsh-skill-manager 做的事情比較直接:在 DSH Web 的設置頁加一個「技能管理」分區,把上述來源收進同一張列表,用開關熱啓停,也可以從本地 ZIP 或 GitHub 倉庫安裝。本文按社區目錄頁、GitHub 倉庫 README、package.json 和源碼交叉覈對後整理。
這是什麼¶
dsh-skill-manager 是一個面向 DeepSeek Harness Web 界面的技能管理插件,由 sulfide2085 維護,許可證爲 MIT,主要語言是 JavaScript。package.json 裏的版本號是 0.1.0。倉庫收錄在 GitHub 的 dsh-plugin 話題下。撰稿時打開 GitHub 倉庫顯示 9 星;社區目錄頁上的數字可能滯後,以倉庫頁面爲準。
它解決的是「技能散落、啓停靠改文件」這件事:
- 把 DSH、Agents、項目目錄,以及 Codex、Claude 目錄裏的技能合併展示
- 用重命名
SKILL.md↔SKILL.md.disabled做熱開關,文件系統 watcher 大約 200ms 內生效 - 從本地 ZIP 或 GitHub 技能倉庫發現並安裝技能,裝完立刻進入
~/.dsh/skills並啓用
DeepSeek Harness 官方倉庫的口號是「一切皆插件」。本文介紹的社區目錄 deepseek-harness-plugin.com 是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。社區裏還有名稱接近的倉庫(例如 dsh-skill-manager-ytxue),安裝時請以目錄頁給出的 github:sulfide2085/dsh-skill-manager 爲準。
核心功能¶
按來源合併的技能列表¶
插件在設置頁註冊 settings.section,分區 id 爲 skill-manager,排序值爲 17,界面文案是「技能管理」,位置在「插件」和「agent 預設」之間。
列表會合並兩套數據:註冊表裏當前啓用的技能,以及磁盤上已經停用(*.disabled)的條目。界面按來源分組,源碼裏的分組標籤包括:
| 來源 | 界面標籤 |
|---|---|
user-dsh |
DeepSeek Harness |
user-agents |
Agents |
project-dsh / project-agents |
項目 / 項目 Agents |
codex-user / codex-project |
Codex / 項目 Codex |
claude-user / claude-project |
Claude / 項目 Claude |
每張卡片顯示名稱、描述、來源、調用策略(僅模型 / 僅用戶 / 模型+用戶 / 已禁用調用)和啓用狀態。從 GitHub 裝進來的技能會額外帶來源標籤。點擊卡片可展開技能全文。標題旁有手動刷新按鈕;ZIP 或倉庫安裝成功後列表會自動刷新。本地列表另有獨立搜索框,只過濾已經裝上的技能。
未打開會話時,只顯示用戶級和全局技能。項目級技能依賴當前會話的工作目錄,沒有 cwd 就掃不到 .dsh/skills 這類項目根。
掃描優先級在 lib/skill-files.js 裏寫得很明確:項目 .dsh > 項目 .agents > 項目 .codex > 項目 .claude > 用戶 .dsh > 用戶 .agents > 用戶 .codex > 用戶 .claude。同名技能靠前的根勝出;同名時啓用條目優先於停用條目。
熱開關與目錄級啓停¶
DSH / Agents 目錄下的啓停,實現方式是重命名:
- 啓用:
SKILL.md.disabled→SKILL.md - 停用:
SKILL.md→SKILL.md.disabled
DSH 的 skill-filesystem 提供方會監視這些文件,README 寫明大約 200ms 生效,不需要重啓網關。Codex 和 Claude 也遵循同一套 .disabled 約定。停用只改文件名,不刪除內容,隨時可以再打開。
Codex / Claude 目錄裏的技能默認全部停用,只有在面板裏顯式打開後,纔會進入官方 /技能 註冊表。第三方目錄的啓用名單寫在 DSH home 下的狀態文件 dsh-skill-manager.json 裏(默認路徑 ~/.dsh/dsh-skill-manager.json)。
組頭上還有目錄級開關,一次操作整個來源目錄。bundled / runtime 來源的技能沒有磁盤文件,不可編輯,開關會置灰。
本地 ZIP 安裝¶
界面上的「ZIP 安裝」會讓你選擇本地 .zip(上限 64 MiB)。host 端把文件按 base64 傳上來,用自帶的 ZIP 解析器解壓(支持 store 和 deflate),做 CRC32 校驗和條目名安全檢查(拒絕絕對路徑、盤符、.. 段和 NUL)。隨後在包內查找技能:
- 目錄束:含
SKILL.md的目錄 - 平鋪技能:根目錄下帶合法 frontmatter 的
.md
查重後裝入 ~/.dsh/skills 並保持啓用形態。包內沒有技能會報錯;同名已存在則跳過並提示衝突。符號鏈接條目會被忽略,不會物化到磁盤。
README 和源碼都標明尚未實現:zip-bomb 解壓預算、symlink 物化、ZIP64。遇到 ZIP64 歸檔會直接報「暫不支持 ZIP64 歸檔」。
GitHub 技能搜索與安裝¶
「GitHub 技能市場」不是一箇中心化商店,而是:你先添加倉庫座標(owner / 倉庫名 / 分支,分支可留空),插件再去拉該倉庫的 GitHub 歸檔,掃描其中的 SKILL.md,按關鍵詞搜索後逐個安裝。
首次運行時,如果狀態文件裏還沒有 repos 字段,會預置兩個倉庫並落盤:
anthropics/skills(分支main)obra/superpowers(分支main)
如果用戶把倉庫列表刪空,空數組會保留,不會再自動把這兩個倉庫加回來。
下載行爲在 lib/skill-repo.js 裏可以覈對:
- 分支回退順序:指定分支 →
main→master - 歸檔大小上限 128 MiB,單次下載超時 60 秒,網絡失敗默認再試 2 次
- 緩存在
~/.dsh/cache/dsh-skill-manager,默認 30 分鐘 - 默認從
https://github.com拉歸檔;可用環境變量DSH_SKILL_GITHUB_BASE換成鏡像前綴 - 下載代理尚未實現
安裝目標同樣是用戶級 ~/.dsh/skills。裝完後列表刷新,卡片上能看到 GitHub 來源。
安裝與啓用¶
社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行即可:
dsh plugin add github:sulfide2085/dsh-skill-manager
dsh CLI 會從 GitHub 解析插件並裝進當前 profile。這個插件的客戶端聲明瞭 "platform": "web",界面只出現在 Web 設置頁。若當前用的不是默認 profile,可以按官方文檔的寫法顯式指定,例如:
dsh plugin --profile web add github:sulfide2085/dsh-skill-manager
需要可復現安裝時,把 commit 哈希釘在倉庫後面。目錄頁給出的形式是:
dsh plugin add github:sulfide2085/dsh-skill-manager#commit
把 commit 換成實際哈希。官方文檔也建議對 git 源固定 commit,避免倉庫後續推送悄悄改變正在運行的代碼。
如果是克隆倉庫後在本地目錄安裝,README 寫的是:
dsh plugin --profile web add .
代碼更新後需要重啓 DSH Web。README 說明:host 的 manifest 在網關啓動時註冊,不重啓的話新接口會 404。
插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前請自己查看 源代碼倉庫 和 MIT 許可證。
典型用法¶
下面這些步驟都來自 README 和設置頁文案,可以在 Web UI 裏直接做,不需要額外寫配置。
1. 打開技能管理
啓動 DSH Web(官方默認地址是 http://127.0.0.1:3080),進入設置,找到「技能管理」。首次打開會讀取當前會話能看見的技能;沒有會話時,項目級目錄不會出現。
2. 查看並啓停
列表按來源分組。卡片右側是開關:打開或關閉後,對應目錄裏的 SKILL.md 會被重命名,大約 200ms 後 DSH、Codex、Claude 都會按各自的約定刷新。組頭開關作用於整個來源。bundled / runtime 技能的開關是灰的,這是預期行爲。
需要看正文時點開卡片。本地搜索框只過濾已安裝技能,不會去 GitHub 上搜。
3. 用 ZIP 裝一份技能
把技能打成 zip(目錄束或平鋪 .md 都可以),在「ZIP 安裝」裏選擇文件。成功後會提示已安裝的數量;同名衝突會跳過。裝入位置是 ~/.dsh/skills,隨後可被 /技能 和模型看見。
4. 從 GitHub 倉庫發現技能
在「GitHub 技能市場」填 owner、倉庫名,分支可留空。添加倉庫後,用市場搜索框按關鍵詞查找,命中項可以逐個點「安裝」。倉庫列表可以隨時移除。若網絡訪問 GitHub 歸檔不穩定,README / 源碼提供了 DSH_SKILL_GITHUB_BASE 作爲鏡像基址,需要自己準備可用的前綴。
適用場景與注意事項¶
比較適合這幾類人:
- 同時在 DSH Web、Codex、Claude 裏放了技能,不想在
~/.dsh、~/.agents、~/.codex、~/.claude之間手工改名 - 需要按任務臨時關掉一批技能,減少模型上下文裏的技能噪音
- 要從 GitHub 上的技能倉庫(例如公開的
SKILL.md集合)挑幾份裝進 DSH - 手裏有現成的技能 zip,想裝到用戶級目錄並馬上啓用
使用前需要知道邊界:
- 只覆蓋 Web 設置頁。
package.json的 client 平臺是web,不要指望它給 TUI 或 headless profile 畫同一塊面板。 - 權限與信任。 插件和它拉下來的技能都在當前
dsh進程權限下運行。ZIP 和 GitHub 歸檔會在本機解壓、寫文件;安裝前檢查來源、許可證和SKILL.md內容。 - 停用不等於刪除。
.disabled只是讓提供方不再註冊該技能,文件還在。 - 項目技能依賴會話。 沒開會話就看不到項目根下的技能,不是列表壞了。
- ZIP / 下載限制。 本地 zip ≤ 64 MiB;GitHub 歸檔 ≤ 128 MiB、超時 60 秒;不支持 ZIP64、zip-bomb 預算、symlink 物化和下載代理。
- 同名插件。 安裝命令以目錄頁的
github:sulfide2085/dsh-skill-manager爲準,不要只按名字去 npm 或 GitHub 搜索結果裏點第一個。
倉庫用 Node 內置的 node:test 寫了 100 個用例,覆蓋 ZIP 解析與安全過濾、倉庫座標與緩存、host 遠程方法和客戶端 bundle 加載。需要覈對自己改過的行爲時,可在插件目錄執行 npm test。
小結¶
dsh-skill-manager 沒有引入新的技能格式,只是把已經散落在 DSH、Agents、Codex、Claude 目錄裏的 SKILL.md 收到設置頁,用文件系統約定做熱啓停,並補上 ZIP 和 GitHub 歸檔兩條安裝路徑。對已經在用 DSH Web、又同時維護多份技能的人來說,它把「改文件名、刷新列表、確認 /技能 看不看得見」收成了面板上的開關和按鈕。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-skill-manager/
GitHub:https://github.com/sulfide2085/dsh-skill-manager