用 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

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

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

小夜