前言¶
DeepSeek Harness(DSH)默認只掃描 ~/.dsh/skills/,且每個技能在每輪對話的系統提示裏都會佔一行摘要。若把幾十條甚至七十多條外部 Agent Skills(SKILL.md 格式)全部掛進目錄,每輪會多消耗大量 token,也容易擠掉真正相關的條目。社區裏有人用 link 方式把整庫掛進 profile,但缺少「只展示前 N 條、正文懶加載、隱藏不刪、中文檢索」的一體化方案。
下面介紹維護者 1843970078(xiaomeng)在 SkillHub「記憶」分類下的插件 dsh-skill-jnkgg(倉庫名 xiaomeng-dsh-skill-jnkgg)。它把任意目錄裏的技能註冊進宿主 ctx.skills,在控制 token 的前提下儘量不丟可調用能力。
這是什麼¶
dsh-skill-jnkgg(技能庫管家,縮寫 jnkgg = 技能庫管家拼音首字母)是面向 DSH 的技能庫管理插件:零 npm 運行時依賴,基於 SKILL.md 與 Cordis 原生 API。當前 package 版本爲 0.1.0,許可證 MIT,要求 Node.js >= 22。
核心命題可以概括爲:省 token 又不丟技能——超出展示名額的技能不會被刪掉,而是降級爲僅用戶可點名觸發;正文在讀盤時才加載;還可通過庫入口、搜索、加載三條路徑取回。
核心功能¶
已覈實的能力如下。
與宿主技能體系統合¶
| 機制 | 效果 |
|---|---|
向 ctx.skills 註冊 SkillProvider |
外部目錄技能進入 DSH,/名字 與原生 skill 工具可用 |
每庫 maxVisible 限量 |
僅前 N 條爲 modelInvocable;超出部分降級爲 user-invocable,不刪除 |
| 正文懶加載 | get() 時纔讀盤,目錄中始終只有摘要 |
| 庫入口 router | 每庫自動掛 <庫名>-library,描述庫用途,便於一句話拉起整庫索引 |
| 自動分析庫主題 | 可不填關鍵詞:插件讀全庫做統計(無 LLM、無網絡) |
| 中文關鍵詞映射 | 例如遊戲場景下的「二段跳」「音效」等可落到英文技能名相關條目 |
| 主題分散選取 | 混雜庫按主題分桶輪流展示,避免小主題被大主題淹沒 |
| 可視化設置面 | 狀態總覽、庫管理、Token 預算、技能瀏覽(含可見性標記)、日誌 |
對話內工具 skill_jnkgg¶
| action | 作用 |
|---|---|
status |
各庫條數、可見上限、關鍵詞來源(manual / auto) |
search |
按關鍵詞搜全部技能(含隱藏),支持中文 |
load |
按名字取技能正文全文 |
list |
列出某個庫的全部技能 |
analyze |
自動分析某個庫,返回建議關鍵詞 |
config |
讀/改配置 |
rescan |
清緩存並通知宿主刷新目錄 |
README 中說明了檢索實測:在 10 個互不相關領域造的假殼庫上,中英文各 50 次查詢均爲字面可匹配場景下的 100% 命中;同義改寫(如庫裏寫 filing、用戶說「報稅」)可能漏檢,屬庫內容邊界,可通過 庫名-library 索引兜底。
已知邊界(文檔自述)¶
- 中文別名表手工維護(遊戲專用 + 通用兜底),生僻說法可能搜不到。
- 自動主題分析爲詞頻與區分度加權,非語義理解;隱晦主題建議手填
keywords。 - 單字查詢可能誤命中多項;冷門領域可能被當作混雜庫處理。
安裝與啓用¶
安裝步驟來自倉庫 README,不是 dsh plugin add github:... 一類憑名稱拼接的命令。
- 在 DSH 的 profile 目錄裏 link 本倉庫:
pnpm add link:<本倉庫路徑>
- 在 profile 的
package.json的dsh.profile.bundles中加入包名:
"dsh-skill-jnkgg"
- 重啓 DSH。
裝完後在 設置 → 技能庫管家 中添加你的庫路徑即可。
配置¶
配置文件路徑:~/.dsh/skill-jnkgg/config.json(可在設置頁或通過 skill_jnkgg 的 config 修改;寫入前自動 .bak 備份)。示例:
{
"enabled": true,
"libraries": [
{
"path": "~/skills/my-game-skills/skills",
"name": "gamedev",
"enabled": true,
"maxVisible": 8,
"keywords": ["遊戲", "UI", "音效"]
}
],
"maxVisibleDefault": 8,
"descMaxChars": 160,
"scanTtlSec": 10,
"loadBodyLimit": 200000,
"pickMode": "keywords"
}
說明要點:
keywords留空時,插件自動分析庫內容提取主題。maxVisible: 0表示全部不在模型目錄中展示,仍可通過/名字、search、load取回。pickMode: "name"時按技能名字母序選取,而非關鍵詞模式。
配置變更後需通過插件邏輯觸發宿主目錄失效(README 強調應調用 control.invalidate(),否則宿主可能長期使用緩存的舊目錄)。
典型用法¶
- 掛大型外部庫:在
libraries裏配置本地路徑(如 README 舉例的~/skills/.../skills),設置name與合適的maxVisible。 - 中文找技能:在對話中調用
skill_jnkgg,action爲search,傳入中文關鍵詞;命中隱藏項後用load拉正文。 - 瀏覽整庫:使用自動註冊的
<庫名>-library或list查看全量索引。 - 調 Token 預算:在設置面的 Token 預算與「技能瀏覽」中查看可見性徽標,按需改
maxVisible或descMaxChars。
開發期 README 提到曾用 awesome-gamedev-agent-skills(約 77 條)作真庫測試;該庫文件不包含在本插件倉庫中。
適用場景與注意¶
適合誰:已在 DSH 上使用多目錄、多文件 SKILL.md 技能庫,且關心每輪系統提示 token 佔用的開發者;需要中文關鍵詞檢索或混雜主題庫「分散展示」的場景。
運行與信任:插件以當前 DSH 進程權限讀盤、寫 ~/.dsh/skill-jnkgg/config.json。安裝前請閱讀源碼與 MIT 許可證,並確認 link 的路徑可信。插件設計上將掃描/解析/註冊分段 try/catch,避免單點失敗拖垮宿主啓動;頂層 inject 僅聲明 ['skills'],工具與 web 服務懶加載——這些是實現約束,也意味着行爲與 DSH / Cordis 版本需保持兼容(peerDependencies 含 @deepseek-ai/cordis)。
SkillHub 目錄頁與 GitHub 爲本插件的社區分發與源碼入口;DeepSeek Harness 生態主張「一切皆插件」,社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-skill-jnkgg 把「外部大技能庫」當成可配置的庫單元:目錄限量、正文按需、隱藏可恢復、中文檢索與可視化配置在同一插件內完成。若你正在 DSH 上掛載超過默認可承受條數的 SKILL.md 集合,可按 README 的 link + bundle 方式安裝,再從設置頁添加庫路徑。
- SkillHub 目錄:https://www.skillhub.cn/plugins/1843970078/xiaomeng-dsh-skill-jnkgg
- GitHub 倉庫:https://github.com/1843970078/xiaomeng-dsh-skill-jnkgg