前言¶
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