用 dsh-reverse-skill 把 85 份逆向技能一次性裝進 DeepSeek Harness

前言

DeepSeek Harness(dsh)把技能當成一等公民:SKILL.md 寫好方法論,模型在循環裏按需讀取,而不是把整本手冊塞進系統提示。逆向、授權滲透和 CTF 這類任務最喫這個機制——APK、ELF、前端加密、賽題,各自要用不同的工具鏈和步驟,靠模型臨場猜命令,很容易跑偏。

社區裏已經有一份體量很大的技能包:zhaoxuya520/reverse-skill。截至 2026-08-17,GitHub 上約 2.6 萬星,定位是授權逆向、滲透測試與安全研究的技能路由包,面向 Claude Code、Cursor、Cline 等客戶端。問題是它不是 dsh 插件。要在 DeepSeek Harness 裏用,要麼手動掛目錄,要麼用一份不完整的移植。

dsh-reverse-skill 做的就是這件事:把上游全部 85 個 SKILL.md 原樣打成一個 Cordis 插件,隨包分發、隨插件加載。本文按社區目錄頁、插件倉庫 README / package.json / 源碼,以及上游 reverse-skill 覈對後整理。

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

這是什麼

dsh-reverse-skill 是一款技能類插件,由 dhicoc 維護,倉庫在 GitHub:dhicoc/dsh-reverse-skill。npm 包名是 @dhicoc/dsh-reverse-skill,當前 package.json 版本爲 1.0.3,許可證爲 MIT(版權聲明與上游一致,標註爲 zhaoxuya520)。GitHub API 在 2026-08-17 顯示該倉庫 27 星;社區目錄頁仍顯示 10 星,數字可能滯後。

它解決的不是「再寫一套逆向教程」,而是把上游已經寫好的技能文件,按 dsh 的 ctx.skills 接口註冊進去:

  • 上游倉庫:zhaoxuya520/reverse-skill(約 25908 星,MIT)
  • 封裝結果:85 個 SKILL.md = skills/ 下 43 個領域技能 + CTF-Sandbox-Orchestrator/ 下 42 個 CTF 賽道技能
  • 運行形態:Cordis 插件,啓動時註冊名爲 reverse-skill 的 SkillProvider

倉庫 README 寫明:內容僅用於授權的逆向工程、滲透測試與安全研究;使用者須確保對目標系統擁有合法授權。未授權行爲與倉庫無關。

插件核心代碼是 TypeScript(src/index.ts)。GitHub 把主要語言標成 PowerShell,是因爲隨包帶了上游的腳本和技能資源,並不代表插件入口是 PowerShell。

核心功能

完整移植,不挑撿

README 把 85 這個數字拆開寫了:skills/ 裏是 43 個真實 SKILL.md(上游宣傳的「60+ 領域」經去重後的文件數),再加上 CTF 編排器裏的 42 個。與上游一一對應,不裁剪。

領域側覆蓋面比較廣,入口技能 reverse-skill-router 的模塊表裏能看到這些方向(只列類別,不展開操作):

  • 移動與二進制:APK、iOS / 移動端、.NET、IDA、Ghidra、radare2、Go / Rust、macOS
  • 前端與協議:JS 逆向、瀏覽器擴展、自定義協議
  • 安全研究:惡意軟件分析、代碼審計、數字取證、API / 供應鏈 / LLM 安全
  • 競賽:CTF-Sandbox-Orchestrator/ 下的 Web / 逆向 / Pwn / 取證等賽道技能

倉庫 README 還對比過社區裏的 dsh-reverse-security:按該 README 的說法,後者只移植了 45 個,而且是 preset-only,沒有 Cordis 插件入口。本文未再打開那個倉庫逐條覈對,對比數字以 dsh-reverse-skill README 爲準。

數據驅動註冊,沒有手寫清單

src/index.ts 不維護一份技能名稱列表。加載時它會:

  1. 遞歸遍歷 skills/CTF-Sandbox-Orchestrator/,找到每個 SKILL.md
  2. 解析 YAML 前導 matter(含 UTF-8 BOM、CRLF 歸一化;把 metadata.user-invocable 提升爲頂層字段,when_to_use 轉成 dsh 接受的 whenToUse
  3. 構造 SkillCandidate,帶上 resourceBase(技能所在目錄)
  4. 通過 ctx.skills.registerProvider(...) 掛上名爲 reverse-skill 的 provider;list() 返回目錄,get() 再讀正文

新增或刪除技能只要改目錄,插件會跟着掃。倉庫自測 _selftest.mjs 會編譯插件、實際走一遍 registerProvider,斷言打包技能爲 85 個、名稱不重複、正文非空,並額外放一個帶 BOM + CRLF 的夾具文件,確認掃描器不會把這類文件靜默跳過。

兩種用法:插件優先,preset 兜底

推薦路徑是 Cordis 插件。倉庫聲明瞭 dsh.bundle,補丁文件是 cordis.patch.yml,會把插件 id reverse-skill、包名 @dhicoc/dsh-reverse-skill 插入當前 profile。

如果暫時不想走插件構建,也可以把兩個目錄當 preset 掛上(無需 npm run build):

skills:
  local:
    customSkillDirs:
      - "./dsh-reverse-skill/skills"
      - "./dsh-reverse-skill/CTF-Sandbox-Orchestrator"

要注意 dsh 的技能發現是扁平的,不接受遞歸 **/SKILL.md。所以上游原來的 skills/SKILL.md 在本倉庫裏被重構成 skills/reverse-skill-router/SKILL.md 這種目錄結構。發現優先級(先命中先生效)按 README 是:項目 .dsh → 項目 .agentscustomSkillDirs → 用戶 .dsh → 用戶 .agents

安裝與啓用

社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端運行即可:

dsh plugin add github:dhicoc/dsh-reverse-skill

目錄頁同時提示:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。如需可復現安裝,請固定 commit 哈希:

dsh plugin add github:dhicoc/dsh-reverse-skill#<commit>

<commit> 換成倉庫裏實際的提交哈希。不要用目錄頁示例裏的字面量 commit

從源碼本地構建時,README 的步驟是:

npm install
npm run build        # tsc → 生成 lib/ 與 lib/types/

package.json 聲明的 peer 依賴是 @deepseek-ai/cordis ^4.0.1@deepseek-ai/dsh-skill ^0.0.1-rc.1,由 dsh 運行時提供。發佈物包含 lib/skills/CTF-Sandbox-Orchestrator/cordis.patch.yml

安裝後,也可以在 profile 裏手動引用包名(README 標明鍵名可能因 dsh 版本而異,下面只是倉庫給出的示例):

plugins:
  - "@dhicoc/dsh-reverse-skill"

加載後,apply(ctx) 會把 85 個技能註冊進 ctx.skills。模型可通過 ctx.skillstool-skill 自動調用;用戶能否按技能名手動調用,取決於各 SKILL.md 裏的 user-invocable

可選自檢(在克隆下來的倉庫根目錄):

npm test

典型用法

這套插件裝的是方法論技能,不是替你執行未授權掃描的工具箱。裝好之後,常見用法是把授權範圍內的分析任務交給 dsh,讓路由技能選模塊。

  1. 先確認授權與範圍。 上游路由契約要求:auth 未 granted 時,禁止對目標做 ACT。插件只是把這份契約帶進 dsh,不會替你獲得授權。
  2. 讓模型走路由,而不是點名一個生僻技能。 入口技能名是 reverse-skill-router。任務跨模塊、或不確定該用哪份子技能時,應先走它。它會要求讀取 MASTER-ROUTING.md(或跑 master-route 腳本)定 PRIMARY,再打開對應子模塊的 SKILL.md
  3. 按文件類型選模塊,而不是一次加載 85 份正文。 例如授權實驗室裏分析 APK,路由會指向 apk-reverse/;二進制偵察指向 radare2 / Ghidra / IDA 相關技能;CTF 賽題指向 CTF-Sandbox-Orchestrator/。技能正文按需 get(),不會在啓動時全部灌進上下文。
  4. 本機工具和 MCP 要另行準備。 技能會引用 jadx、Frida、Ghidra 等常見分析工具,以及 Burp 一類 MCP。插件 README 寫得很清楚:技能正文裏的外部 MCP(例如 burp-mcp)不在本插件範圍內,需要按 dsh 的 mcp.servers 自己接。缺工具時,技能文檔指向上游的 bootstrap 清單,而不是由這個 Cordis 插件代裝。

不要把「裝了插件」理解成「智能體可以任意對線上系統動手」。範圍、授權、證據鏈,仍然寫在技能自己的 ops 契約裏。

適用場景與注意事項

比較適合:

  • 已經在用 DeepSeek Harness,希望把 reverse-skill 的技能庫接到 ctx.skills,而不是手工維護目錄列表
  • 做授權範圍內的 APK / 二進制 / 前端加密分析、CTF、代碼審計、惡意軟件分析等,需要可重複的技能路由
  • 需要可復現安裝(固定 commit)和一次 npm test 就能覈對 85 個技能是否都能被發現

使用前務必知道這些限制(均來自插件 README,不是推測):

  1. 權限與安全。 插件以當前 dsh 進程權限運行。安裝前應閱讀 src/index.tscordis.patch.yml 和隨包的 SKILL.md,確認許可證可接受。
  2. 只用於授權場景。 未授權掃描、未授權入侵不屬於這個插件的使用範圍。
  3. agents/*.yaml 不可移植。 上游 43 個 OpenAI Agents SDK 的 agent 定義無法映射到 dsh 的 ctx.subagent(dsh 僅支持拉起 Codex / Claude Code CLI),這些定義沒有打進插件。
  4. allowed-tools / disallowed-tools 不被 dsh 強制。 當前 dsh 把這兩項當未知字段,延遲執行。技能裏的工具約束要在 harness 層自己保證。
  5. 前導 matter 字段已改過。 camelCase 不被 dsh 接受的字段(如 when_to_use)由倉庫裏的 port.py 統一改成 whenToUseuser-invocable 等。正文裏的相對鏈接也改成了適配扁平掛載的路徑。
  6. 許可證不完全是一份 MIT。 插件根目錄 LICENSE 是 MIT。上游 README 另外寫明:CTF-Sandbox-Orchestrator/ 採用 GNU GPLv3;部分外部工具(jadx、Frida、Burp 等)各有各的許可證。再分發或商用前應自己覈對。
  7. 技能不是沙箱。 裝上之後,模型仍可能按技能正文去調本機工具。生產環境或不可信倉庫上不要盲目啓用。

小結

dsh-reverse-skill 的價值很具體:把已經驗證過的 85 份 SKILL.md 變成 dsh 能加載的 Cordis 插件,免去手抄清單和殘缺移植。它不提供新的攻擊能力,只提供授權安全研究場景下的技能路由與文檔。

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

GitHub:https://github.com/dhicoc/dsh-reverse-skill

上游技能包:https://github.com/zhaoxuya520/reverse-skill

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

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

小夜