dsh-local-skills:把 ~/.dsh/skills 註冊進會話技能目錄

前言

在 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 一致):

  1. 掃描 $DSH_HOME/skills;若設置了 DSH_LOCAL_SKILL_DIRS,則用該變量覆蓋掃描路徑。
  2. 識別含 SKILL.md 的目錄型技能。
  3. 解析 frontmatter 中的 name 與 description。
  4. 以 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,再依賴插件掃描,流程如下。

  1. 在 ~/.dsh/skills/my-skill/ 下創建 SKILL.md,寫好 name、description 與正文。
  2. 確認已安裝並啓用 dsh-local-skills,且已重啓 DSH。
  3. 打開新會話,在技能列表中查找註冊後的名稱。

若需從多個位置加載技能,設置環境變量後再重啓,例如(分隔符爲 ; 或 ,):

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
羽毛球分组比赛记分
小程序二维码

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

小夜