前言¶
在 DeepSeek Harness(DSH)裏,技能通常以目錄形式存在,目錄內帶有 SKILL.md。不少開發者會把自用技能放在用戶目錄 ~/.dsh/skills 下,期望新會話裏能直接選用。但在部分 DSH 部署中,這些用戶級技能不會出現在會話的技能列表裏:skills-manager 對原生 dsh 根有隻讀策略限制(error.root.readonly),候選構建器在沒有策略覆蓋時也會跳過原生根下的技能。社區插件 dsh-local-skills(維護者 147-sys,分類:工作流)通過 bundle provider 掃描並註冊本地目錄,是當前 README 中給出的可用機制。下面介紹它的定位、行爲與安裝方式。
這是什麼¶
dsh-local-skills 把用戶級 DSH 技能(默認路徑爲 DSH_HOME/skills,即常見配置下的 ~/.dsh/skills)註冊進會話技能目錄。簡介與倉庫說明一致:Register user-level DSH skills into the session catalog.
實現上零運行時第三方依賴,僅使用 Node 內置模塊 node:fs、node:os、node:path。插件以 bundled skill provider 方式接入,版本在倉庫 package.json 中爲 0.1.0,許可證 MIT。
爲什麼需要它¶
README 歸納了兩條直接原因:
- skills-manager 拒絕對原生
dsh根做逐技能策略(error.root.readonly); - 候選構建器在沒有策略覆蓋時會跳過原生根的技能。
因此,僅把技能文件放進 ~/.dsh/skills 並不總能保證會話裏可見;安裝本插件後,由 provider dsh-local-skills 完成掃描與註冊。
核心功能¶
經過上面的背景,插件實際做四步(與 README 一致):
- 掃描
$DSH_HOME/skills;若設置了DSH_LOCAL_SKILL_DIRS,則用該變量覆蓋掃描路徑。 - 識別含
SKILL.md的目錄型技能。 - 解析 frontmatter 中的
name與description。 - 以
provider: dsh-local-skills、rank: 400寫入技能註冊表。
同名技能時,先被掃描到的目錄優先;rank: 400 與原生用戶根一致,不會壓過項目內副本。亮點可概括爲:目錄即技能(有 SKILL.md 即參與註冊)、可配置多目錄掃描、零依賴。
配置¶
| 變量 | 作用 |
|---|---|
DSH_HOME |
默認 ~/.dsh;技能目錄爲其下的 skills |
DSH_LOCAL_SKILL_DIRS |
覆蓋掃描目錄,; 或 , 分隔多個 |
技能目錄結構示例:
~/.dsh/skills/<skill-name>/SKILL.md
SKILL.md 需帶 YAML frontmatter,至少包含 name 與 description:
---
name: my-skill
description: 一句話說明這個技能做什麼。
---
正文……
安裝與啓用¶
前置條件:DSH 0.2.1-rc.3 或更新(見 INSTALL.md)。安裝方式三選一,命令與路徑須按你本機倉庫位置替換 <本倉庫絕對路徑>,不要憑插件名拼接未在文檔中出現的安裝串。
A. GUI(桌面版推薦)
設置 → 插件 → 安裝 → 選本倉庫目錄 → 重啓 DSH。
B. dsh plugin(Web / TUI profile)
dsh plugin --profile <profile> add link:<本倉庫絕對路徑>
桌面版的 desktop profile 由 Electron 獨佔管理,上述命令會被拒絕,請用 A 或 C。
C. 手工
在 ~/.dsh/profiles/<profile>/package.json 兩處修改:dependencies 增加 "dsh-local-skills": "link:<絕對路徑>",dsh.profile.bundles 增加 "dsh-local-skills",然後在 profile 目錄執行:
pnpm install --no-frozen-lockfile
完成後重啓 DSH。
驗證:重啓後,將任意技能放入 ~/.dsh/skills/<skill-name>/SKILL.md,新會話中應能看到;日誌中會出現類似:
[dsh-local-skills] scanning C:\Users\<you>\.dsh\skills
(Linux 下路徑會對應爲 $DSH_HOME/skills。)
卸載:
dsh plugin --profile <profile> remove dsh-local-skills
典型用法¶
先做目錄與 frontmatter,再依賴插件掃描,流程如下。
- 在
~/.dsh/skills/my-skill/下創建SKILL.md,寫好name、description與正文。 - 確認已安裝並啓用 dsh-local-skills,且已重啓 DSH。
- 打開新會話,在技能列表中查找註冊後的名稱。
若需從多個位置加載技能,設置環境變量後再重啓,例如(分隔符爲 ; 或 ,):
export DSH_LOCAL_SKILL_DIRS="/path/to/skills-a;/path/to/skills-b"
多目錄按順序掃描,同名技能以先出現的目錄爲準。
適用場景與注意¶
適合已在 ~/.dsh/skills(或 DSH_LOCAL_SKILL_DIRS 指定路徑)維護個人技能、但會話列表裏看不到這些條目的 DSH 用戶。也適合需要按優先級合併多個本地技能目錄、又不想改項目內技能副本的場景。
安裝前建議閱讀倉庫源碼與 MIT 許可證;插件隨當前 DSH 進程權限運行,只會讀取配置的本地目錄與 SKILL.md,不涉及 README 以外的第三方網絡依賴。若重啓後仍無技能,INSTALL.md 建議檢查 frontmatter、確認 bundles 已寫入且已真正重啓,並查看是否出現 [dsh-local-skills] scanning 日誌。
DSH 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。本插件在 GitHub 上星標數爲 0(以目錄頁信息爲準),選用時以文檔與源碼爲準即可。
結尾¶
dsh-local-skills 解決的是用戶級技能目錄與會話技能目錄之間的斷層:掃描、解析 frontmatter、以固定 rank 註冊,配置項少、依賴爲零。需要安裝步驟與隱私說明時,可繼續查看倉庫內的 INSTALL.md 與 PRIVACY.md。
- 目錄頁:https://www.skillhub.cn/plugins/147-sys/dsh-local-skills
- GitHub:https://github.com/147-sys/dsh-local-skills