前言¶
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 不維護一份技能名稱列表。加載時它會:
- 遞歸遍歷
skills/和CTF-Sandbox-Orchestrator/,找到每個SKILL.md - 解析 YAML 前導 matter(含 UTF-8 BOM、CRLF 歸一化;把
metadata.user-invocable提升爲頂層字段,when_to_use轉成 dsh 接受的whenToUse) - 構造
SkillCandidate,帶上resourceBase(技能所在目錄) - 通過
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 → 項目 .agents → customSkillDirs → 用戶 .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.skills → tool-skill 自動調用;用戶能否按技能名手動調用,取決於各 SKILL.md 裏的 user-invocable。
可選自檢(在克隆下來的倉庫根目錄):
npm test
典型用法¶
這套插件裝的是方法論技能,不是替你執行未授權掃描的工具箱。裝好之後,常見用法是把授權範圍內的分析任務交給 dsh,讓路由技能選模塊。
- 先確認授權與範圍。 上游路由契約要求:
auth未 granted 時,禁止對目標做 ACT。插件只是把這份契約帶進 dsh,不會替你獲得授權。 - 讓模型走路由,而不是點名一個生僻技能。 入口技能名是
reverse-skill-router。任務跨模塊、或不確定該用哪份子技能時,應先走它。它會要求讀取MASTER-ROUTING.md(或跑master-route腳本)定 PRIMARY,再打開對應子模塊的SKILL.md。 - 按文件類型選模塊,而不是一次加載 85 份正文。 例如授權實驗室裏分析 APK,路由會指向
apk-reverse/;二進制偵察指向 radare2 / Ghidra / IDA 相關技能;CTF 賽題指向CTF-Sandbox-Orchestrator/。技能正文按需get(),不會在啓動時全部灌進上下文。 - 本機工具和 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,不是推測):
- 權限與安全。 插件以當前 dsh 進程權限運行。安裝前應閱讀
src/index.ts、cordis.patch.yml和隨包的SKILL.md,確認許可證可接受。 - 只用於授權場景。 未授權掃描、未授權入侵不屬於這個插件的使用範圍。
agents/*.yaml不可移植。 上游 43 個 OpenAI Agents SDK 的 agent 定義無法映射到 dsh 的ctx.subagent(dsh 僅支持拉起 Codex / Claude Code CLI),這些定義沒有打進插件。allowed-tools/disallowed-tools不被 dsh 強制。 當前 dsh 把這兩項當未知字段,延遲執行。技能裏的工具約束要在 harness 層自己保證。- 前導 matter 字段已改過。 camelCase 不被 dsh 接受的字段(如
when_to_use)由倉庫裏的port.py統一改成whenToUse、user-invocable等。正文裏的相對鏈接也改成了適配扁平掛載的路徑。 - 許可證不完全是一份 MIT。 插件根目錄
LICENSE是 MIT。上游 README 另外寫明:CTF-Sandbox-Orchestrator/採用 GNU GPLv3;部分外部工具(jadx、Frida、Burp 等)各有各的許可證。再分發或商用前應自己覈對。 - 技能不是沙箱。 裝上之後,模型仍可能按技能正文去調本機工具。生產環境或不可信倉庫上不要盲目啓用。
小結¶
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