dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
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 调优:中和与渗透工作冲突的默认权限规则 · 本地专用
主包不依赖它们:
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-skills1) 技能库 + 守卫(link 安装,本地改代码即时生效)
dsh plugin --profile web add link:./dsh-htb-skills2) 路由(可选,但强烈建议——没有它,卡片只在被想起时才生效)
dsh plugin --profile web add link:./dsh-htb-skills/router3) 预设:把 preset/cordis.patch.yml 里的 persona 段落合并进你的 profile 配置。 其中 C:\Users\... 是占位符,按你的实际路径替换。
dsh web # 重启后新建会话,看到 htb-skill-index 等 T1 卡即为生效注意:插件挂载后,~/.dsh/skills 里的同名散装技能会与插件里的卡重复(同名时 preset 层遮蔽全局层)。迁移前先备份:
```sh
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 张)。
---
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 / toolstier:T1(进会话目录)/ T2(深度,按名加载)/ T3(参考与题源,按名加载)新增一张卡 = 建目录 + 写 SKILL.md + 在 scripts/triage_skills.py 的 MAPPING 登记 domain/tier + 重跑校验链。slug 的每个分词都必须出现在元数据里(否则路由搜不到)。
0.1.0-rc.x(对齐 @deepseek-ai/dsh-skill-filesystem ^0.1.0-rc.6)^22.19.0 || >=24.0.0skill-filesystem 的导出MIT。技能卡内容整理自个人实战与公开资料;不含任何真实环境凭据(见 SECURITY.md)。
关于第三方仓库:卡片里出现的 github.com/... 链接是工具来源(告诉你这个工具去哪拿), 不是本仓库的依赖。本仓库不包含这些项目的代码,也没有 vendored 目录; 运行时只依赖 @deepseek-ai/dsh-skill-filesystem 与 @deepseek-ai/dsh-llm(Harness 一方组件)。