mirage
strukto-ai
The World's First Unified Virtual Filesystem For AI Agents
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:dhicoc/dsh-reverse-skill
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
reverse-skill 的完整 DeepSeek Harness(dsh)插件版。 把上游
zhaoxuya520/reverse-skill(25k★,MIT)全部 85 个 SKILL.md 原样封装成一个 dsh Cordis 插件,随包分发、随插件加载,无需手动维护候选清单。
skills/ 下 43 个(60+ 领域技能经去重后的真实 SKILL.md 数)+ CTF-Sandbox-Orchestrator/ 下 42 个(CTF 赛道技能)。与上游一一对应,不裁剪、不挑捡。skill seam(ctx.skills)注册一个 provider,harness 启动时自动把全部技能注入可用技能库。dsh-reverse-security 只移植了 45 个、且是 preset-only(无 Cordis 插件)。本仓库补齐到 85 个并提供正式插件入口。本仓库内容仅用于 授权的 逆向工程、渗透测试与安全研究。使用者须确保对目标系统拥有合法授权。一切未授权行为与本仓库无关。
dsh-reverse-skill/
├── src/
│ └── index.ts # 数据驱动的 Cordis 插件:递归扫描并注册全部 SKILL.md
├── skills/ # 43 个领域技能(上游 skills/ 1:1 复制)
│ ├── reverse-skill-router/ # 路由技能(由上游 skills/SKILL.md 重构成目录)
│ ├── pentest-tools/ # 含嵌套子技能 src-hunter 等
│ └── reverse-engineering/ # 含嵌套子技能 dsl-vm-reverse 等
├── CTF-Sandbox-Orchestrator/ # 42 个 CTF 赛道技能
├── port.py # 归一化脚本(上游 → 本仓库的搬运/前导matter修正)
├── package.json
├── tsconfig.json
└── LICENSE # MIT(与上游一致)
相对路径:
src/index.ts通过fileURLToPath(new URL('../skills', import.meta.url))定位资源(编译后lib/index.js同样成立,因为skills/与lib/同属包根目录的相邻子目录)。注意这里不能再套一层dirname()——../skills这个 URL 已经指向目录本身,多套dirname会把它截断成包根目录,从而把node_modules里的 SKILL.md 也算进来。
# 安装 peer 依赖(cordis / dsh-skill 由 dsh 运行时提供,这里用于类型与构建)
npm install
npm run build # tsc → 生成 lib/ 与 lib/types/
package.json 中已声明:
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
"peerDependencies": {
"@deepseek-ai/cordis": "^4.0.1",
"@deepseek-ai/dsh-skill": "^0.0.1-rc.1"
}
本仓库已声明 dsh.bundle manifest(见 cordis.patch.yml),因此可直接用一行命令安装并激活:
# 从 GitHub 安装并激活(推荐)
dsh plugin add github:dhicoc/dsh-reverse-skill
安装后 dsh 会读取 cordis.patch.yml 把 reverse-skill 这个 Cordis 插件插入当前 profile,启动时自动注册 85 个技能。若你想在 profile / package 配置里手动引用,包名是 @dhicoc/dsh-reverse-skill:
# dsh 配置(示例,键名可能因版本而异)
plugins:
- "@dhicoc/dsh-reverse-skill"
加载后,插件在 apply(ctx) 里调用 ctx.skills.registerProvider(...),把 85 个技能注册进 ctx.skills。模型可通过 ctx.skills → tool-skill 自动调用,用户也可通过技能名手动调用(受各 SKILL.md 的 user-invocable 控制)。
本仓库同时携带完整的 skills/ 与 CTF-Sandbox-Orchestrator/ 目录,可作为 preset 直接挂载,无需构建:
skills:
local:
customSkillDirs:
- "./dsh-reverse-skill/skills"
- "./dsh-reverse-skill/CTF-Sandbox-Orchestrator"
dsh 技能发现优先级(先命中先生效):项目
.dsh→ 项目.agents→customSkillDirs→ 用户.dsh→ 用户.agents。扁平发现,不接受递归**/SKILL.md,所以路由技能必须是reverse-skill-router/SKILL.md这样的目录结构(本仓库已处理好)。
src/index.ts 不做任何硬编码候选列表,而是:
skills/ 与 CTF-Sandbox-Orchestrator/,找到每个 SKILL.md;metadata.user-invocable 提升为顶层 user-invocable、when_to_use → whenToUse 的归一化);SkillCandidate(含 resourceBase: {kind:'directory', path}、结果缓存);SkillProvider,get() 时返回完整 body。新增/删除技能只需改目录,插件自动同步。
在仓库根目录运行:
npm test
该命令会重新编译插件,并通过实际注册的 SkillProvider 断言 85 个已打包技能都能被 list() 发现、名称无重复且均能按需 get() 返回非空正文。测试还会临时创建一个带 UTF-8 BOM 和 CRLF 的 SKILL.md,确认扫描器不会静默跳过此类文件;fixture 在测试结束后会自动删除。发布工作流也会在 npm publish 前运行同一检查。
不可移植**:上游 43 个 OpenAI Agents SDK 的 agent 定义无法映射到 dsh 的ctx.subagent`(dsh 仅支持拉起 Codex / Claude Code CLI)。这些 agent 定义未纳入插件。allowed-tools / disallowed-tools 不被 dsh 强制:dsh 当前把这两项视为未知字段,延迟执行。技能内的工具约束需自行在 harness 层保证。when_to_use)会被 dsh 拒绝:port.py 已统一修正为 whenToUse、user-invocable 等受支持字段。mcp.servers 自行接入。../(及 CTF 相关为 ../../CTF-Sandbox-Orchestrator/),以适配 dsh 扁平挂载路径。LICENSE 为 MIT,与上游 reverse-skill 保持一致。内容版权归原 upstream 作者与贡献者;本仓库为 dsh 适配封装。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: security。