用 dsh-skillport 把已有 SKILL.md 接到 DeepSeek Harness

前言

換一套 Agent 運行時,最煩的往往不是模型本身,而是技能庫要不要搬家。Anthropic 在 2025 年 12 月把 Agent Skills 做成開放規範:一個目錄裏放 SKILL.md,YAML frontmatter 寫 namedescription,正文寫步驟,需要時再帶上腳本和參考文件。Claude Code 把技能放在 .claude/skills/,Gemini CLI 有自己的目錄,Cursor 還有 .cursor/rules/*.mdc,Claude Code 的斜槓命令則在 .claude/commands/*.md。這些文件已經在本機裏了,換到 DeepSeek Harness(下文簡稱 DSH)時,並不想再抄一遍。

DSH 官方文檔裏,技能子系統已經能讀 SKILL.md:項目級和用戶級的 .dsh/skills/.agents/skills/ 由原生 provider dsh-skill-filesystem 掃描。工具專屬路徑、Cursor 規則、斜槓命令不在這條原生掃描裏。社區插件 dsh-skillport 做的就是補上這一截:發現 DSH 沒覆蓋的位置,把相鄰格式轉成技能,再交給平臺自帶的目錄和 skill 加載工具。

本文按社區目錄頁、倉庫 README / README.zh.md、package.jsondocs/spec-revision.md 以及源碼覈對後整理:這個插件是什麼、掃哪些目錄、怎麼安裝、怎麼做健康檢查。

這是什麼

dsh-skillport 是 DeepSeek Harness 的技能類插件,npm 包名 @dsh-skillport/bundle,當前版本 0.1.0,主要語言 TypeScript,許可證 MIT。維護者是 jesse-njx,源碼在 GitHub 倉庫 jesse-njx/dsh-skillport。社區目錄頁收錄於 2026-08-14,分類爲「技能」;截至 2026-08-18,GitHub 星標爲 2。

它解決的問題可以收成一句話:讓你在 Claude Code、Codex、Cursor、Gemini CLI 裏已經寫好的技能,在 DSH 會話裏直接出現,而不必先遷移到 .dsh/skills.agents/skills

需要先分清兩件事:

  1. DSH 自帶技能技術棧。 官方倉庫的理念是「一切皆插件」。技能註冊表 ctx.skills、按 rank 去重、把名字和描述注入系統提示、用 skill 工具按需加載正文,這些是平臺能力。.dsh/skills.agents/skillsdsh-skill-filesystem 掃描。
  2. Skillport 不另起一套執行器。 倉庫 README 把它的職責寫得很窄:發現 DSH 未覆蓋的位置、轉換相鄰格式、讓結果可調試。導入的技能進原生註冊表;帶腳本的技能仍走 DSH 常規 shell 工具和沙箱。

社區插件目錄 deepseek-harness-plugin.com 是獨立站點,和 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。

核心功能

發現已有的 SKILL.md

插件按來源組掃描。docs/spec-revision.md 給出的發現根和 rank 如下(數字越小優先級越高,同名時低 rank 獲勝):

來源 路徑 Rank(項目級 / 用戶級)
DSH 原生 .dsh/skills/~/.dsh/skills/ 100 / 400
Claude Code .claude/skills/~/.claude/skills/ 150 / 450
Codex / 開放約定 .agents/skills/~/.agents/skills/ 200 / 500
Gemini CLI ~/.gemini/antigravity/skills/ 550
額外目錄 配置項 extraPaths 650

有兩點必須按倉庫說明來理解:

  • .dsh/skills.agents/skills 在標準 preset 裏已被 dsh-skill-filesystem 掃描。Skillport 檢測到該 provider 後會跳過這兩組,避免雙重注入;只有原生 provider 不在時,它才自己掃一遍兜底。
  • 從 Claude、Gemini、extraPaths 掃到的 SKILL.md 會註冊成模型可調用的技能。名字和描述進會話目錄,正文由平臺的 skill 工具按需加載,捆綁資源按技能目錄解析。

SKILL.md 的校驗對齊倉庫釘死的 Agent Skills 修訂:name 必填,1–64 個字符,只允許小寫字母、數字和連字符;description 必填,1–1024 個字符。可選字段包括 licensecompatibilitymetadataallowed-tools。DSH 額外字段 whenToUsedisable-model-invocationuser-invocable 也會被接受。

轉換相鄰格式

倉庫把下面三類叫做 Tier-2,best-effort,並標明來源:

  • Cursor 規則.cursor/rules/*.mdc → 模型可調用技能,來源 cursor。frontmatter 裏的 descriptionglobsalwaysApply 會映射到觸發條件和正文。
  • Claude Code 斜槓命令.claude/commands/*.md用戶可調用技能,會話裏用 /name 觸發,來源 claude-command
  • 上下文文件AGENTS.mdCLAUDE.md 僅在原生 dsh-agent-instructions 不存在時注入爲項目上下文;原生插件在場就跳過。

這三類默認都開,可以在配置裏關掉。

find_skill 與目錄上限

技能一多,把全部描述塞進系統提示會膨脹。配置項 maxIndexEntries 默認是 100:超出部分不再作爲模型可調用候選,只保留用戶可調用,由 find_skill 工具檢索。

find_skill 是給模型用的工具,不是用戶斜槓命令。源碼裏它接受兩個參數:

  • query:按名稱、描述、whenToUse 做關鍵詞搜索
  • name:按精確名稱加載完整說明(此時忽略 query

技能很多、可見目錄對不上當前任務、或懷疑某項技能被上限擋住時,模型可以走這個工具。

技能健康檢查(skills doctor)

爲 Claude 觸發習慣寫的描述,在 DeepSeek 模型上可能對不上。Skillport 提供會話內命令和獨立 CLI。

會話裏:

/skills doctor
/skills doctor deploy the app to production

前者按來源列出已加載技能;後者用一段描述做 test-fire,返回帶分數的匹配列表。README 裏的示例輸出如下:

/skills doctor
## project-claude (1)
- commit-helper — Craft conventional-commit messages from staged changes.
## project-dsh (1)
- deploy — Deploy the application to staging or production with rollback.

/skills doctor deploy the app to production
Test-fire: "deploy the app to production"
- deploy [skillport/project-dsh] score=0.83
    "Deploy the application to staging or production with rollback."

不啓動 DSH 會話時,可以用包自帶的 skills-doctor

skills-doctor --cwd ~/work/projectx list
skills-doctor --cwd ~/work/projectx test-fire "deploy the app to production"

CLI 還會掃描同樣的發現根,並用 stderr 打出被去重擋住的同名技能([shadowed])。

釘死規範修訂

Agent Skills 還在演進。Skillport 把實現釘在 docs/spec-revision.md 記錄的修訂上:社區參考倉庫 agentskills/agentskills5d4c1fda(文檔標註爲 2026-08-14 抓取),平臺側釘 @deepseek-ai/dsh-base@0.1.0-rc.6。源碼常量是 agentskills@5d4c1fda / dsh-base@0.1.0-rc.6。倉庫附帶一致性 fixture(缺字段、unicode 名、嵌套資源),README 寫當前測試集爲 60 個。

安裝與啓用

社區目錄頁給出的安裝命令(以該頁原文爲準)是在 DSH 終端裏執行:

dsh plugin add github:jesse-njx/dsh-skillport

需要可復現安裝時,按目錄頁說明把 commit 哈希接到倉庫後面:

dsh plugin add github:jesse-njx/dsh-skillport#<commit>

倉庫 README 另外給出按 npm 包名、指定 profile 的寫法:

dsh plugin --profile web add @dsh-skillport/bundle

兩種入口對應同一份 bundle。目錄頁這條是社區站點對外展示的命令;README 這條是倉庫維護者寫的包名安裝方式。package.json 要求 Node.js >= 20,並對 @deepseek-ai/dsh-skill 等包聲明瞭 0.1.0-rc.6 這一檔 peerDependency。

插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前應閱讀源碼倉庫和 MIT 許可證。

卸載時,README 給出的命令是:

dsh plugin remove @dsh-skillport/bundle

註冊都是 Cordis effect,卸掉插件會把導入的技能一併撤掉。

所有配置字段都可選,可寫在 profile patch 或 cordis.patch.yml

plugins:
  dsh-skillport:
    sources: [dsh, claude, agents, gemini]   # 掃描哪些發現組
    extraPaths: []                            # 額外的 SKILL.md 目錄,例如 ~/skills
    convert:
      cursorRules: true                       # .cursor/rules/*.mdc → skill
      contextFiles: true                      # AGENTS.md / CLAUDE.md(原生已處理則跳過)
      claudeCommands: true                    # .claude/commands/*.md → 用戶可調用 skill
    maxIndexEntries: 100                      # 超出後模型可調用候選降爲用戶可調用
    providerName: skillport                   # 註冊表中的 provider 名

sources 可選值爲 dshclaudeagentsgemini。只想補 Claude 目錄、完全交給原生去掃 .dsh / .agents 時,可以把 sources 收成 [claude, gemini]

典型用法

1. 直接用 Claude Code 裏已有的技能

裝好插件後,在 DSH 會話裏讓模型加載一個你原先放在 .claude/skills/~/.claude/skills/ 的技能。按 README:目錄會列出它,skill 工具會加載正文,捆綁資源一併可用。不需要先把目錄複製到 .agents/skills

2. 看當前工程到底加載了哪些技能

在會話裏執行:

/skills doctor

輸出按來源分組。上面 README 示例裏會出現 project-claudeproject-dsh 這類分組,用來覈對「掃到了」和「你以爲掃到了」是否一致。

3. 用一句話試觸發

仍然用 README 裏的句子:

/skills doctor deploy the app to production

若目標技能分數偏低或根本沒出現,多半是 description 按另一家模型的觸發習慣寫的,需要改描述,而不是再寫一套技能文件。

4. 技能很多時靠搜索,而不是靠提示詞硬塞

maxIndexEntries 默認 100。超過之後,多出來的技能不會繼續堆進模型可見目錄,但 find_skill 仍能按關鍵詞搜到,並用 name 加載全文。這是源碼裏寫明的溢出面,不是另做一套技能市場。

適用場景與注意事項

比較適合:

  • 本機已經有 Claude Code / Gemini CLI 的 SKILL.md 庫,準備在 DSH 裏接着用
  • 項目裏有 Cursor .mdc 規則或 Claude Code 斜槓命令,希望它們以技能形式出現在 DSH 會話
  • 技能數量接近或超過目錄上限,需要 find_skill/skills doctor 做檢索與觸發檢查
  • 要確認「規範漂移」時,倉庫釘死的修訂和 CI fixture 比口頭兼容聲明更可覈對

倉庫 README 把下面幾項明確寫成非目標,不要按「全功能遷移」去理解:

  • Claude Code 的插件、hooks、subagents(主機特定的可執行語義)
  • MCP 配置轉換
  • Codex / Cursor 的擴展二進制
  • Skillport 自己的執行路徑:帶腳本的技能仍通過 DSH 的 shell 工具在沙箱裏跑,沙箱策略是唯一執行點

另外幾條來自目錄頁、README 和 package.json,不是額外發揮:

  1. 先讀源碼再裝。 插件與當前 dsh 進程同權限,安裝時可能執行代碼。
  2. 不要假設雙重掃描。 .dsh/skills.agents/skills 在原生 provider 在場時不會被 Skillport 再掃一遍;AGENTS.md / CLAUDE.md 同樣遵守「先檢查、不雙重注入」。
  3. 觸發質量不會自動對齊。 doctor 只報告匹配分數,不會改寫你的 description
  4. 版本還很新。 包版本 0.1.0,倉庫創建於 2026-08-13,星標 2。peer 依賴落在 DSH 0.1.0-rc.6 這一檔,換運行時版本前應對照 package.json
  5. 社區目錄不是官方商店。 安裝命令以你實際打開的目錄頁或倉庫 README 爲準。

小結

dsh-skillport 不重新發明 DSH 的技能系統。它把 Claude Code、Gemini CLI 等工具專屬目錄裏的 SKILL.md 送進原生註冊表,順帶轉換 Cursor 規則和 Claude 斜槓命令,再用 find_skill/skills doctor 處理目錄膨脹和觸發對不齊。對已經積累了一套 Agent Skills、又要在 DeepSeek Harness 裏開工的人,它省掉的是搬家,不是沙箱策略,也不是 hooks 那一層主機語義。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-skillport/

GitHub:https://github.com/jesse-njx/dsh-skillport

羽毛球分组比赛记分
小程序二维码

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

小夜