Skills

dsh-htb-skills

qingsiweisan/dsh-htb-skills · ★ 1

qingsiweisan

An HTB (Hack The Box) pentest skill library packaged as a DeepSeek Harness plugin.

README body is shown in Chinese.

License
MIT
Added
2026-08-16
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:qingsiweisan/dsh-htb-skills

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: zh · Read Chinese README

Table of contents
  1. 是什么
  2. 关于卡片里的 RS
  3. 六层结构
  4. 目录结构
  5. 可选伴随仓库(不在本仓库内)
  6. 安装
  7. 自检
  8. 卡片的 frontmatter 约定
  9. 兼容范围
  10. 许可证

HTB(Hack The Box)打靶框架,封装为 DeepSeek Harness 插件。

社区项目,并非 DeepSeek 官方插件,也不代表 DeepSeek 的认可或背书。 仅用于授权环境(HTB 靶机、自建实验环境)的攻防练习。见 SECURITY.md。

是什么

一个"技能库 + 状态账本 + 路由 + 守卫"的组合,目标不是让模型知道更多, 而是让它在正确的时刻想起该想起的东西、该停的时候停得下来。

三个组件:

组件 目录 作用
技能库 + 守卫 根目录(src/ skills/ scripts/) 164 张技术卡 + 5 个观测/守卫模块 + 9 个 htb_* 工具 + 30 道自检闸
路由 router/ 93 条规则:从工具调用推断攻击阶段,按需注入对应卡片(不是全量灌)
预设 preset/ persona 与插件装配(把上面两者接到一个会话里)

关于卡片里的 RS

部分卡片带一行 📌 DSH 适配:本技能移植自 RS,以及 (⚠️ xxx 是 RS 时代工具名) 的注记。

RS = Reasonix Studio,是这批卡片最初成形的环境(作者的上一代工作台)。两者工具名不同, 所以每张移植过的卡都在头部标了映射关系(例如 read_skill / run_skill → DSH 的 skill 工具)。 这些注记是迁移痕迹,不是外部依赖 —— 本仓库不依赖 RS,也不包含它的代码。

六层结构

按"离模型思维的距离"排,越靠后越可靠:

L1 输入   它看到什么   router 按阶段注入卡片 / htb_brief 传假设给子 agent
L2 动作   它能做什么   4 道守卫(红线 / 提问 / WP / 停止协议)+ dead 必须带对照证据
L3 反馈   做完看到什么 单次输出超标 + 上下文累积 + 失败归因 6 类 + 战线预算
L4 时间   什么时候停   stall 90 分钟 / budget 6 小时 → 注入提醒 + 上闸
L5 结构   什么离开脑子  state.jsonl(fact / intent / auto-probe)+ loot 台账
L6 采样   换起点       未实现(见 docs/ARCHITECTURE.md 的"未做"清单)

17 个工具的用途 / 输入输出 / 调用方式见 docs/TOOLS.md; 分层、装配、生效条件与已知欠账见 docs/FRAMEWORK.md; 改代码前读 docs/ARCHITECTURE.md(变异点地图); 卡片写作规范见 docs/CARD-NORMS.md。

目录结构

dsh-htb-skills/
├── package.json              # dsh.bundle.patch → cordis.patch.yml
├── cordis.patch.yml          # 注入 host 插件行
├── src/
│   ├── index.js              # 插件入口(注册 provider / 工具 / 守卫)
│   ├── sherlock-tools.js     # 6 个 htb_sherlock_* 工具
│   ├── state-tools.js        # htb_fact / htb_frontier / htb_brief(状态账本)
│   ├── guard.js              # 红线守卫(18 条)
│   ├── ask-guard.js          # 提问守卫(不把解题责任推回用户)
│   ├── wp-guard.js           # WP 守卫(打靶会话不读官方 writeup)
│   ├── struggle.js           # 停滞/重复/预算的判定
│   ├── struggle-watch.js     # 判定接线 + 停止协议闸
│   ├── scope-observe.js      # 出站目标观测(只记录,永不拦截)
│   ├── context-hygiene.js    # 上下文卫生(单次 + 累积)
│   ├── error-classify.js     # 失败归因(6 类 + 同类合并)
│   └── auto-state.js         # 战线推断 + 切换摘要 + 战线预算
├── skills/                   # 164 张技能卡(T1 路由 / T2 深度 / T3 参考)
│   └── htb-skill-index/      #   领域 × 层级总索引
├── scripts/                  # 30 道自检闸(25 个 node 用例 + python 审计)
├── templates/                # 并行侦察 workflow / 通道适配器
├── docs/                     # 架构与卡片规范
├── router/                   # 路由插件(规则表 + 匹配逻辑)
└── preset/                   # persona 与装配

可选伴随仓库(不在本仓库内)

仓库 许可 作用 状态
dsh-htb-evidence Apache-2.0(fork 自 PerryLink/dsh-research-report) 证据账本:把 htb_fact 的 evidenceId 绑到可校验的字节快照;另加 htb_coverage / htb_traces 两个 HTB 专用工具 独立发布
dsh-htb-tuning 私有 profile 调优:中和与渗透工作冲突的默认权限规则 本地专用

主包不依赖它们:

  • 没有 evidence 时,htb_fact 仍可写 inferred 事实,只是 verified 无法做证据校验;
  • framework-check.mjs 检测不到 evidence 仓库会自动跳过那两道闸(打印 ↷ 跳过), 不影响其余 28 道。

为什么 evidence 不并进来:它是 Apache-2.0 的第三方 fork,并进 MIT 仓库需要 保留上游 LICENSE / NOTICE 并显式声明改动,属于独立的许可决策,不适合顺手合并。

安装

git clone https://github.com/qingsiweisan/dsh-htb-skills.git
cd dsh-htb-skills

1) 技能库 + 守卫(link 安装,本地改代码即时生效)

dsh plugin --profile web add link:./dsh-htb-skills

2) 路由(可选,但强烈建议——没有它,卡片只在被想起时才生效)

dsh plugin --profile web add link:./dsh-htb-skills/router

3) 预设:把 preset/cordis.patch.yml 里的 persona 段落合并进你的 profile 配置。 其中 C:\Users\<user>\... 是占位符,按你的实际路径替换。

dsh web   # 重启后新建会话,看到 htb-skill-index 等 T1 卡即为生效

注意:插件挂载后,~/.dsh/skills 里的同名散装技能会与插件里的卡重复 (同名时 preset 层遮蔽全局层)。迁移前先备份:

mv ~/.dsh/skills ~/.dsh/skills.bak

自检

node scripts/framework-check.mjs          # 30 道闸,绿了才算没改坏
node scripts/router-rules-test.mjs        # 只跑路由规则表
python scripts/triage_skills.py           # 重生成索引卡(需 pyyaml)
python scripts/audit_routing.py           # 路由完整性审计(只读)

改完卡片或规则必须跑 framework-check.mjs。它覆盖:卡片元数据一致性、 路由引用可解析、守卫接线、状态账本、上下文卫生、失败归因、战线推断、 以及"文档数字与实际一致"(防止 README 说 164 张卡而实际 163 张)。

卡片的 frontmatter 约定

---
name: web-attacks
description: 'Web 攻击综合手册:OWASP 映射 → …(检索词:…)'
whenToUse: '目标有 HTTP/HTTPS 攻击面时:…'
# T2/T3 卡额外带这一行;T1 卡不写:
disable-model-invocation: true
metadata: { domain: web, tier: T1 }
---
  • domain:meta / web / ad-win / linux / db / cloud / creds / forensics / network / tools
  • tier:T1(进会话目录)/ T2(深度,按名加载)/ T3(参考与题源,按名加载)

新增一张卡 = 建目录 + 写 SKILL.md + 在 scripts/triage_skills.py 的 MAPPING 登记 domain/tier + 重跑校验链。slug 的每个分词都必须出现在元数据里(否则路由搜不到)。

兼容范围

  • DeepSeek Harness 0.1.0-rc.x(对齐 @deepseek-ai/dsh-skill-filesystem ^0.1.0-rc.6)
  • Node ^22.19.0 || >=24.0.0
  • Harness 仍在开发者预览期,升级后如有破坏性变更,请对照上游 skill-filesystem 的导出

许可证

MIT。技能卡内容整理自个人实战与公开资料;不含任何真实环境凭据(见 SECURITY.md)。

关于第三方仓库:卡片里出现的 github.com/... 链接是工具来源(告诉你这个工具去哪拿), 不是本仓库的依赖。本仓库不包含这些项目的代码,也没有 vendored 目录; 运行时只依赖 @deepseek-ai/dsh-skill-filesystem 与 @deepseek-ai/dsh-llm(Harness 一方组件)。