🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

破甲安全分析插件 ADWMC/helm-d

DeepSeek Harness
ADWMC0 天前有提交已提供中文文档扫描:含敏感能力

DeepSeek Harness 破甲一体化安全分析插件:Android · Web · Native ·…

69.6/100
综合分
982
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ADWMC/helm-d
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · security
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包helmd(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 20:41:58

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 154 处,展示前 109 条)
  • 发起网络请求
    packages/helmd/client.js:629
    return fetch(path, {
  • 发起网络请求
    packages/helmd/client.js:1007
    fetch("/api/helmd/update").then(function (r) { return r.json(); }).then(function (j) {
  • 发起网络请求
    packages/helmd/client.js:1135
    fetch('/api/helmd/tools').then(function(r){return r.json()}).catch(function(){return null}),
  • 发起网络请求
    packages/helmd/client.js:1136
    fetch('/api/helmd/intercept').then(function(r){return r.json()}).catch(function(){return null}),
  • 发起网络请求
    packages/helmd/client.js:1137
    fetch('/api/helmd/health').then(function(r){return r.json()}).catch(function(){return null}),
  • 发起网络请求
    packages/helmd/client.js:1138
    fetch('/api/helmd/case' + caseQuery).then(function(r){return r.json()}).catch(function(){return null}),
  • 写入剪贴板
    packages/helmd/client.js:1403
    navigator.clipboard.writeText(code).then(function () {
  • 写入本地文件
    packages/helmd/src/advisory.ts:155
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    packages/helmd/src/advisory.ts:167
    appendFileSync(path, `${JSON.stringify({ ...entry, ts: new Date().toISOString() })}\n`, 'utf8')
  • 读取本地文件
    packages/helmd/src/advisory.ts:186
    size = statSync(path).size
  • 读取本地文件
    packages/helmd/src/advisory.ts:191
    const rows = readFileSync(path, 'utf8').split('\n').filter((line) => line.trim() !== '')
  • 写入本地文件
    packages/helmd/src/advisory.ts:193
    copyFileSync(path, `${path}.1`)
  • 写入本地文件
    packages/helmd/src/advisory.ts:194
    writeFileSync(path, `${rows.slice(-LEDGER_KEEP_ROWS).join('\n')}\n`, 'utf8')
  • 读取本地文件
    packages/helmd/src/advisory.ts:260
    const stat = statSync(path)
  • 读取本地文件
    packages/helmd/src/advisory.ts:272
    for (const line of readFileSync(path, 'utf8').split('\n')) {
  • 读取本地文件
    packages/helmd/src/case.ts:38
    const parsed = JSON.parse(readFileSync(sessionBindingPath(sessionId), 'utf8')) as Partial<CaseInfo> | null
  • 读取本地文件
    packages/helmd/src/case.ts:41
    if (existsSync(join(dir, 'CASE.md'))) {
  • 写入本地文件
    packages/helmd/src/case.ts:63
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    packages/helmd/src/case.ts:64
    writeFileSync(path, JSON.stringify({ sessionId, ...info, boundAt: new Date().toISOString() }, null, 2), 'utf8')
  • 删除本地文件
    packages/helmd/src/case.ts:73
    try { unlinkSync(sessionBindingPath(sessionId)) } catch { }
  • 读取本地文件
    packages/helmd/src/case.ts:110
    const stream = createReadStream(path)
  • 读取本地文件
    packages/helmd/src/case.ts:128
    for (let i = 2; existsSync(join(base, name)); i++) name = `${today()}-${hint}-${i}`
  • 写入本地文件
    packages/helmd/src/case.ts:132
    await mkdir(join(dir, sub), { recursive: true })
  • 读取本地文件
    packages/helmd/src/case.ts:138
    if (!existsSync(sample)) throw new Error(`sample not found: ${sample}`)
  • 写入本地文件
    packages/helmd/src/case.ts:140
    await copyFile(sample, dest)
  • 写入本地文件
    packages/helmd/src/case.ts:144
    await writeFile(join(dir, 'evidence', `${eid}-sha256.txt`),
  • 写入本地文件
    packages/helmd/src/case.ts:169
    await writeFile(join(dir, 'CASE.md'), caseMd, 'utf8')
  • 读取本地文件
    packages/helmd/src/case.ts:177
    const files = await readdir(join(caseDir, 'evidence')).catch(() => [] as string[])
  • 读取本地文件
    packages/helmd/src/catalog.ts:31
    if (existsSync(join(dir, 'package.json'))) return dir
  • 读取本地文件
    packages/helmd/src/catalog.ts:44
    const raw = JSON.parse(readFileSync(catalogPath, 'utf8')) as {
  • 写入本地文件
    packages/helmd/src/gate.ts:151
    mkdirSync(dirname(codePath()), { recursive: true })
  • 写入本地文件
    packages/helmd/src/gate.ts:152
    writeFileSync(codePath(), line + '\n', 'utf8')
  • 删除本地文件
    packages/helmd/src/gate.ts:159
    try { rmSync(codePath(), { force: true }) } catch { }
  • 读取本地文件
    packages/helmd/src/gate.ts:165
    const parsed = JSON.parse(readFileSync(statePath(), 'utf8')) as GateState
  • 写入本地文件
    packages/helmd/src/gate.ts:177
    mkdirSync(dirname(statePath()), { recursive: true })
  • 写入本地文件
    packages/helmd/src/gate.ts:178
    writeFileSync(statePath(), JSON.stringify(state, null, 2), 'utf8')
  • 读取本地文件
    packages/helmd/src/health.ts:81
    if (env && existsSync(env)) return env
  • 读取本地文件
    packages/helmd/src/health.ts:98
    if (existsSync(c)) return c
  • 读取本地文件
    packages/helmd/src/health.ts:157
    return existsSync(p) ? p : null
  • 读取本地文件
    packages/helmd/src/health.ts:223
    const deployed = readFileSync(health.presetPath, 'utf8')
  • 读取本地文件
    packages/helmd/src/health.ts:224
    const host = readFileSync(health.hostPath, 'utf8')
  • 读取本地文件
    packages/helmd/src/health.ts:243
    if (existsSync(target)) {
  • 写入本地文件
    packages/helmd/src/health.ts:245
    copyFileSync(target, `${target}.bak`)
  • 执行外部命令来自配置/变量
    packages/helmd/src/health.ts:250
    const res = spawnSync(process.execPath, [gen, '--out', target], {
  • 读取本地文件
    packages/helmd/src/ledger.ts:48
    if (!existsSync(p)) {
  • 写入本地文件
    packages/helmd/src/ledger.ts:49
    mkdirSync(ledgerDir(), { recursive: true })
  • 写入本地文件
    packages/helmd/src/ledger.ts:50
    writeFileSync(p, template, 'utf8')
  • 读取本地文件
    packages/helmd/src/ledger.ts:52
    return readFileSync(p, 'utf8')
  • 写入本地文件
    packages/helmd/src/ledger.ts:85
    mkdirSync(join(ledgerDir(), safe), { recursive: true })
  • 写入本地文件
    packages/helmd/src/ledger.ts:107
    writeFileSync(TOOLS_MD(), text, 'utf8')
  • 写入本地文件
    packages/helmd/src/ledger.ts:122
    writeFileSync(TOOLS_MD(), text, 'utf8')
  • 写入本地文件
    packages/helmd/src/ledger.ts:136
    writeFileSync(DEADENDS_MD(), text, 'utf8')
  • 读取本地文件
    packages/helmd/src/ledger.ts:170
    if (!existsSync(p)) return []
  • 读取本地文件
    packages/helmd/src/ledger.ts:171
    const text = readFileSync(p, 'utf8')
  • 读取本地文件
    packages/helmd/src/ledger.ts:230
    if (!existsSync(DEADENDS_MD())) return ''
  • 读取本地文件
    packages/helmd/src/ledger.ts:231
    return readFileSync(DEADENDS_MD(), 'utf8')
  • 读取本地文件
    packages/helmd/src/llm-stream-hook.ts:270
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
  • 写入本地文件
    packages/helmd/src/llm-stream-hook.ts:270
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
  • 写入本地文件
    packages/helmd/src/llm-stream-hook.ts:273
    appendFileSync(logPath, `[${timestamp}] [${phase}] model=${modelName || 'unknown'} refusal="${cleanSnippet}"\n`, 'utf-8')
  • 写入本地文件
    packages/helmd/src/llm-stream-hook.ts:281
    appendFileSync(getLedgerPath(), JSON.stringify({ time: new Date().toISOString(), ...record }) + '\n', 'utf-8')
  • 读取本地文件
    packages/helmd/src/profile.ts:35
    const parsed = JSON.parse(readFileSync(statePath(), 'utf8')) as { activeId?: unknown }
  • 写入本地文件
    packages/helmd/src/profile.ts:50
    mkdirSync(dirname(statePath()), { recursive: true })
  • 写入本地文件
    packages/helmd/src/profile.ts:51
    writeFileSync(statePath(), JSON.stringify({ activeId: id }, null, 2), 'utf8')
  • 读取本地文件
    packages/helmd/src/router.ts:166
    if (existsSync(candidate)) {
  • 读取本地文件
    packages/helmd/src/router.ts:168
    if (statSync(candidate).isDirectory()) {
  • 读取本地文件
    packages/helmd/src/router.ts:170
    if (existsSync(idx)) return idx
  • 读取本地文件
    packages/helmd/src/router.ts:182
    if (existsSync(withMd)) return withMd
  • 读取本地文件
    packages/helmd/src/router.ts:189
    if (existsSync(sub)) return sub
  • 读取本地文件
    packages/helmd/src/router.ts:192
    if (existsSync(subMd)) return subMd
  • 读取本地文件
    packages/helmd/src/sealed-refs.ts:18
    if (existsSync(join(dir, 'package.json'))) return dir
  • 读取本地文件
    packages/helmd/src/sealed-refs.ts:31
    if (!existsSync(p)) return undefined
  • 读取本地文件
    packages/helmd/src/sealed-refs.ts:33
    const parsed = JSON.parse(unseal(readFileSync(p, 'utf8'))) as { files: Record<string, string> }
  • 读取本地文件
    packages/helmd/src/seam.ts:16
    if (existsSync(join(dir, 'package.json'))) return dir
  • 读取本地文件
    packages/helmd/src/seam.ts:45
    accessSync(full, constants.F_OK)
  • 读取本地文件
    packages/helmd/src/seam.ts:95
    if (!existsSync(absPath)) {
  • 读取本地文件
    packages/helmd/src/seam.ts:104
    return await readFile(absPath, 'utf8')
  • 执行外部命令固定命令
    packages/helmd/src/star-gate.ts:80
    const enabled = execFileSync('reg', ['query', key, '/v', 'ProxyEnable'], {
  • 执行外部命令固定命令
    packages/helmd/src/star-gate.ts:85
    const server = execFileSync('reg', ['query', key, '/v', 'ProxyServer'], {
  • 写入本地文件
    packages/helmd/src/team.ts:120
    mkdirSync(teamDir(), { recursive: true })
  • 删除本地文件
    packages/helmd/src/team.ts:131
    try { unlinkSync(lock) } catch { }
  • 读取本地文件
    packages/helmd/src/team.ts:143
    return JSON.parse(readFileSync(path, 'utf8')) as T
  • 写入本地文件
    packages/helmd/src/team.ts:150
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    packages/helmd/src/team.ts:152
    writeFileSync(temp, JSON.stringify(value, null, 2), 'utf8')
  • 写入本地文件
    packages/helmd/src/team.ts:153
    renameSync(temp, path)
  • 读取本地文件
    packages/helmd/src/update-check.ts:52
    readFileSync(new URL('../package.json', import.meta.url), 'utf8'),
  • 读取本地文件
    packages/router/src/index.ts:72
    if (existsSync(target)) {
  • 读取本地文件
    packages/router/src/index.ts:73
    if (statSync(target).isDirectory()) {
  • 读取本地文件
    packages/router/src/index.ts:75
    if (existsSync(idx)) target = idx
  • 读取本地文件
    packages/router/src/index.ts:79
    if (existsSync(withMd)) target = withMd
  • 读取本地文件
    packages/router/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/router/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    packages/skill-ai-security/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/skill-ai-security/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    packages/skill-android/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/skill-android/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    packages/skill-evidence/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/skill-evidence/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    packages/skill-malware/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/skill-malware/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    packages/skill-native/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/skill-native/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    packages/skill-protocol/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/skill-protocol/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    packages/skill-web/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/skill-web/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    packages/toolbox/src/seam.ts:31
    accessSync(full, constants.X_OK)
  • 读取本地文件
    packages/toolbox/src/seam.ts:67
    return await readFile(absPath, 'utf8')
  • 读取本地文件
    probe/hooks-fp-probe.mjs:6
    const src = readFileSync(hookPath, 'utf8')
  • 读取本地文件
    probe/hooks-probe.mjs:7
    const src = readFileSync(hookPath, 'utf8')
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • Android安全分析
  • Web安全分析
  • Native安全分析

README

由 DeepSeek 最新模型翻译生成
helm-d DeepSeek Harness 的破甲安全分析插件。 34 个工具 · 362 篇按需参考 · 证据链强制入链 · 四档破甲热切换 · 本地 Team 协作 views 安装 · 5 分钟上手 · 能力 · 工作台 · 工具 · 文档 · English 仅用于自有资产或已获授权的安全评估。 完整法律条款见 DISCLAIMER.md。 赞助商 想让你的项目出现在这里?提交赞助申请。 展开 / 收起赞助商列表 感谢 toki 赞助本项目 · 冷咖啡 · 破甲工作台 · 中转站十一个 LLM 客户端一键破甲、一键卸载,Windows / macOS(arm64 · x64)/ Linux 三端安装包。勾选要破的软件按一下写入,打开软件后单独发口令「冷咖啡」;不想要了按卸载,文件回到写入之前。 感谢 Hua 赞助本项目 · Vector 一个中转站通吃 70+ 模型:Claude / Gemini / Codex / DeepSeek / Grok / Kimi / GLM 全覆盖。OpenAI 低至 0.065x、Plus 0.085x、Pro 0.165x,kiro 0.22x、ccmax 1.2x。 友情链接 · 圈点钱 · TG 账号购买 Telegram / 推特 / 苹果 / 谷歌 / GPT 账号与会员,支持查单与售后。
展开完整文档(README 剩余 1 节)
helm-d

DeepSeek Harness 的破甲安全分析插件。

34 个工具 · 362 篇按需参考 · 证据链强制入链 · 四档破甲热切换 · 本地 Team 协作

views

安装 · 5 分钟上手 · 能力 · 工作台 · 工具 · 文档 · English

仅用于自有资产或已获授权的安全评估。 完整法律条款见 DISCLAIMER.md。

赞助商

想让你的项目出现在这里?提交赞助申请。

展开 / 收起赞助商列表

感谢 toki 赞助本项目 · 冷咖啡 · 破甲工作台 · 中转站十一个 LLM 客户端一键破甲、一键卸载,Windows / macOS(arm64 · x64)/ Linux 三端安装包。勾选要破的软件按一下写入,打开软件后单独发口令「冷咖啡」;不想要了按卸载,文件回到写入之前。

感谢 Hua 赞助本项目 · Vector 一个中转站通吃 70+ 模型:Claude / Gemini / Codex / DeepSeek / Grok / Kimi / GLM 全覆盖。OpenAI 低至 0.065x、Plus 0.085x、Pro 0.165x,kiro 0.22x、ccmax 1.2x。

友情链接 · 圈点钱 · TG 账号购买 Telegram / 推特 / 苹果 / 谷歌 / GPT 账号与会员,支持查单与售后。

它是什么

helm-d 是 DeepSeek Harness 的插件,不修改宿主二进制,通过 cordis 钩子给模型加四样东西:

- 34 个工具:Android / Web / Native / Protocol / Malware / AI-Security,加上 Case 生命周期、路由、工具账本与本地 Team 调度。
- 证据链:工具输出自动落 evidence/,结论必须引用 E 编号和可复现的 repro_cmd。
- 按需知识:362 篇参考文档由 read_reference 读取,不塞进 system prompt。
- 四档破甲:ds4.1f / stealth / redteam-max / gpt-6x,工作台一键热切换,下一次模型调用生效。

它 不是 引擎补丁:不落盘改审批/沙箱,也不起独立进程。和补丁类工具可以同装,分工不同。

安装

前提:Node >= 22.19,已安装 dsh CLI。

dsh plugin --profile web add https://github.com/ADWMC/helm-d/releases/download/v0.5.2/helm-d.tgz
dsh web

安装/更新请使用带 vX.Y.Z 的版本化 URL。releases/latest/download/ 是滚动地址,写进 profile 依赖后,下次发版会让 pnpm lockfile 的 sha512 失配(ERR_PNPM_TARBALL_INTEGRITY)。遇到见 安装故障排查。

首次启动时健康检查会按本机 dsh 版本校验/修复 preset,不需要手工改 YAML。

Web 端首次启动会出现 Star 提示面板;它 不影响任何功能,可以直接跳过。遇到问题见 Star 弹窗帮助。

5 分钟上手

1. 新建 DSH 会话,把 Agent 预设切到 helmd。
2. 发送 helmd 激活。
3. 先做一个读文件/列目录动作。首轮只暴露 shell + read,下一轮 34 个工具(含 begin_case)才会出现——这是宿主晋升机制,不是插件坏了。
4. 直接下任务,例如:

分析 samples/app.apk 的加固方式,建 case、收集证据,最后给出带 repro_cmd 的结论。

5. 需要结构化结论时,让模型走 Case 流程:

begin_case(goal, samples)
→ 工具输出自动写入 evidence/(E-001、E-002…)
→ record_finding(title, detail, evidence_ids, repro_cmd)
→ end_case(summary)

引用不存在的 E 编号会被拒绝;repro_cmd 是必填项,没有可复现命令的结论不算结论。

能力

| 能力 | 说明 |
| 六域工具 | Android 脱壳/Frida、Web 漏洞、Native 壳与反逆向、Protocol 抓包、Malware IOC/YARA、AI-Security |
| Case 与证据链 | 磁盘工作区 + 自动入链 + E 编号校验 + repro_cmd 门禁;压缩上下文后 case_status 能从磁盘恢复 |
| 四档破甲 | ds4.1f / stealth / redteam-max / gpt-6x,POST /api/helmd/profile 原地重注册 persona section,无需重启 |
| 按需参考 | 362 篇文档,skill_catalog 路由、read_reference 按需读取,不占 system prompt |
| 自主状态包 | case_status 返回假设链、findings、证据、dead ends、匹配 playbook、下一步建议 |
| 工作台 | 破甲 / Case / Team / 拦截 / 关于五个 tab,侧边栏入口,数据走 /api/helmd/ |

四档破甲的区别(展开)

| Profile | 定位 | 内容 |
| ds4.1f | 似乎是ds4.1f v10(默认) | 完整主档规则 |
| stealth | 概率通用(轻量) | ds4.1f + 最小输出 / 只读优先 / 单目标收敛 |
| redteam-max | 概率通用(加厚) | ds4.1f + 全链路攻击链 / 攻防双栏 / 产物成套 |
| gpt-6x | gpt 6x | 独立主档:CTF 沙箱设定 + 计分表 + 四角色交付契约(源自 helm-x-wails v6,未在 DSH 实测) |

四档都封印在 profiles.dat;切换后旧 section 被 dispose 并原地重注册,无需重启宿主。

工作台

DSH 会话头部点 helmd 工作台,优先打开右侧栏(sidebar 不可用时回退浮层):

- 破甲:四档实时切换。
- Case:当前会话绑定的 case——假设链、结论、证据列表、未决假设;未绑定时显示提示与磁盘最近 case,不再自动展示别的会话。
- Team:本地多 agent 协作——ticket、角色 worker、报告、证据、evolution revision 与 A/B gate。
- 拦截:流式拒绝拦截的计数与摘录。
- 关于:版本、作者、免责声明、更新地址、更新日志与“检查更新”。

工具

最常用的入口:begin_case / case_status / record_finding / end_case / route_task / read_reference / analysis_mode / team_dispatch。

34 个工具(按域展开)

| 域 | 工具 |
| Case | begin_case case_status record_finding save_evidence end_case |
| Case / 假设 | record_hypothesis update_hypothesis |
| 路由/知识 | skill_catalog read_reference route_task analysis_mode |
| Android | apk_fingerprint |
| Web | web_reference bot_analyze |
| Native | native_reference detect_packer scan_strings xor_bruteforce encoding_detect |
| Protocol | protocol_reference pcap_parse state_machine parse_har |
| Malware | malware_reference ioc_extract yara_gen |
| AI-Security | ai_reference llm_sim |
| Evidence | evidence_reference triage_artifact hash_artifact |
| Toolbox | tool_recommend tool_memory |
| Team | team_dispatch |

参考资料

362 篇文档放在 references/,涵盖 Android 脱壳与 Frida 模板、Web 漏洞 playbook、Native 壳识别与反逆向、Protocol 抓包与状态机、Malware IOC/YARA、AI-Security 提示注入、Evidence 报告模板。模型用 read_reference 按需读取。参考是弹药,不是硬规则。

运行方式

请求 → 首轮锚定(shell + read)→ route_task 路由 → 域工具 / read_reference → evidence/(E 编号) → 带置信度与 repro_cmd 的结论

架构与运行时钩子(展开)

- bootstrap:首轮只暴露平台 shell + read,工具调用或助手消息后晋升。
- gate:注册 helm-d:persona section;Star 面板只是提示层,不 gate 功能。
- persist:所有后注册域工具输出自动落 evidence/。
- advisory-hook / llm-stream-hook / ica-context:交付拒绝检测、流式拦截闭环与行为示范注入。
- router + case:领域路由、Case 生命周期与 [autonomy] 状态包。

详见 架构文档 与 设计原则。

验证

- 八题原题干 60s 协议 8/8 无拒绝;完整数据与判档见 八题评测报告。
- BoosterX v2.2.4.3 (.NET) 许可绕过:ConfuserEx 下还原 32,316 个方法体、解密 7,726 条常量;见 实战案例。

社区收录

| 目录 | 说明 |
| dshfind | 插件超市,提供小标 / 下载量 / 展示卡三种嵌入徽章 |
| DeepSeek Harness Plugin | 独立目录,附安装命令与安装期风险提示 |
| awesome-dsh-plugin | 分类目录 + 社区评论 |

Star 趋势

展开星标曲线

兼容性、更新与卸载

| 项 | 要求 |
| DSH | 0.2.x(本版在 0.2.1-rc.2 验证) |
| Node | >= 22.19.0 |
| 平台 | Windows 用 pwsh;Linux / macOS 用 bash;WSL 通过 wsl.exe |

更新:先卸载,再装目标版本(不要用 latest/download)
dsh plugin --profile web remove @adwmc/helm-d
dsh plugin --profile web add https://github.com/ADWMC/helm-d/releases/download/v0.5.2/helm-d.tgz

卸载
dsh plugin --profile web remove @adwmc/helm-d

把 v0.5.2 换成目标 Release 的 tag;不要用 releases/latest/download/* 作为 profile 依赖。

文档

- Star 弹窗帮助
- 安装故障排查(ERR_PNPM_TARBALL_INTEGRITY)
- 设计原则
- 架构
- 开发与发布
- 安全边界与报告
- 维护手册
- 更新日志
- 实战案例:BoosterX .NET 许可绕过
- 八题评测报告
- 总方案:专业逆向 + 渗透操作链

社区与支持

- 问题与建议:GitHub Issues
- Star 面板问题:Star 弹窗帮助

如果 helm-d 对你有帮助,欢迎点个 Star。

致谢

本项目融合了大量优秀开源项目的设计思路与实现模式,向社区先行者致敬:

- ADWMC/helm-x — prompt injection 与评分设计
- yynxxxxx/Codex-X — 提示词模板与可视化管理
- dsh-purge(YuJunZhiXue)— 工具描述清洗话术表与输入归一化词表
- dsh-purge-community(Jueze-2019,MIT)— presets/boost.txt 尾部覆盖块

参与贡献

欢迎 issue 与 PR。改动前请先读 CONTRIBUTING.md 和 docs/principles.md,保持两条架构约束:证据强制入链、参考知识按需读取。

License

GNU Affero General Public License v3.0(SPDX:AGPL-3.0-or-later),Copyright (C) 2026 ADWMC。你可以按 AGPL v3 或自由软件基金会发布的任何更新版本使用、修改与分发本项目。

- 网络使用(§13):把本插件或其修改版作为网络服务对外提供时,必须向使用者提供对应源码。对应源码就是本仓库:npm 包内封印的 profiles.dat / references.dat / payload.dat 全部可由仓库内的明文源重新生成(packages/helmd/scripts/build-profiles.mjs、build-sealed.mjs),不存在额外的闭源组件。
- 再分发:转发 npm 包或 tgz 时须附带本许可证全文,保留版权声明与第三方署名,并同样以 AGPL 授权。
- 贡献:提交 PR 即表示你同意以 AGPL-3.0-or-later 授权该贡献,并确认你有权这样做。
- 第三方组件:presets/boost.txt 的尾部覆盖块来自 dsh-purge-community(MIT,© 2026 Jueze-2019),该部分仍为 MIT;「致谢」中列出的其它项目仅提供设计参考,未复制其代码。references/ 内引用的第三方文章与代码片段版权归原作者,引用不改变其许可。

免责声明与使用条款

[!WARNING]
仅限自有资产,或已获明确书面授权的安全评估。本软件含攻击性技术、自动化脚本与 AI 辅助生成内容,误用后果由使用者承担。

| 允许 | 禁止 |
| 自有 / 授权资产测试 · 逆向 · 取证 · CTF · 检测规则研发 | 未授权入侵 · 拒绝服务 · 勒索 · 恶意软件 · 隐私侵害 · 规避许可 |

- 无担保:按「原样」提供,不附带任何明示或默示担保;责任限制与赔偿条款见全文。
- 非官方:与 DeepSeek、DeepSeek Harness 及其维护者无隶属、赞助或背书关系。
- 输出风险:结果可能错误或过时,不构成专业建议;执行前独立验证。
- 网络行为:仅更新检查与 Star 验证会访问 GitHub / npm;插件不上传样本与证据。
- 法域:欧盟(GDPR / CRA / 双用途条例)、中国(刑法 285/286、《网络安全法》《密码法》)、美国(CFAA / DMCA §1201 / EAR)的要点见全文 §15。
- 第三方:boost.txt 来自 dsh-purge-community(MIT,Jueze-2019);references/ 引用版权归原作者。

完整条款(定义、使用者保证、禁止用途、赔偿、出口管制、三大法域、管辖等 17 节)见 DISCLAIMER.md。
预览分享卡片长什么样 ↓ADWMC/helm-d
分享 · DeepSeek Harness Hub
ADWMC/helm-d

DeepSeek Harness 破甲一体化安全分析插件:Android · Web · Native ·…

回到顶部