dsh-remediation:把检查报告里的「请整改」变成可执行的改法

前言

在 DeepSeek Harness(DSH)里跑完一轮守护类检查,你通常会拿到一份 JSON 报告:LOG-RETENTION-SHORT、FIN-AUTH-PLAINTEXT、MED-EMR-RETENTION-1 等规则一条条列出,附一句「请整改」。扫描器已经说明「哪有问题」,但落地时往往还要自己查:改到什么值才算合规、对应哪个文件哪一行、文档模板长什么样、改完用什么命令验证、哪些能机械改、哪些必须业务决策。

dsh-remediation(npm 包名 @deepwhale-cn/dsh-remediation,仓库 feely0208/dsh-remediation)由维护者 feely0208 发布,定位是「检查报告 → 整改清单」的转换器:不新增判据,只读已有报告的 --json 输出,把每条命中翻译成步骤、改前改后片段、预计工时和验证方式;对 recipe 里声明了 autoApply 的规则,在默认 dry-run 下预览修改,--apply 才落盘。社区目录页:skillhub.cn/plugins/feely0208/dsh-remediation。

这是什么、不是什么

一句话:消费任意 guard 插件的 JSON 报告,输出按严重度排序的整改清单,并可导出 Markdown、对部分规则做有边界的自动修改。

它是:

  • 报告解读与整改建议生成器(问题、依据、改法、工时、验证命令);
  • 可交付附件:--out 写出 Markdown 整改清单;
  • 可选机械修改:仅处理 recipe 中声明的 autoApply,默认不写盘。

它不是:

  • 扫描器(无 rules/,问题全部来自输入报告);
  • 合规或安全结论的判定方(输出为建议与提示确认);
  • 保证「照做即合规」的自动化(条款适用与业务取舍仍需人工);
  • 对未声明 autoApply 的文件做任何修改;没有专用 recipe 的规则会写明「本条暂无专用改法」,并回引原报告 advice,不编造步骤。

与生态内其他插件的分工(README 原文表述):dsh-cn-log-retention / dsh-industry-medical 等负责发现问题;dsh-remediation 说明怎么改、改完怎么验;dsh-fix-verify 负责改前改后复核;dsh-guard-suite 可聚合总报告供本插件消费;dsh-compliance-doc 可做交付文档,本插件 --out 的清单可作为其输入素材。

核心功能

整改清单字段

对每条 finding,尽量提供:

  • 问题:title、ruleId、文件与行号;
  • 依据:source(如法规或规则出处);
  • 具体改法:步骤与改前 → 改后片段;
  • 预计工时;
  • 验证:重跑哪条命令、哪个 ruleId 应消失。

终端会汇总命中条数、严重度分布、有/无专用改法的条数,以及 autoApply 处于 dry-run 还是已落盘。

Recipe 与规则覆盖

插件资产是 recipes/ 下的 JSON:每条规则一份,写清改法、工时、验证,可选 autoApply。--list-recipes 可查看当前版本覆盖情况。README 标明 42 条 recipe,其中 16 条 声明了 autoApply(如补 LICENSE 模板、日志留存天数、CI 相关配置等的定点替换)。

行业/地方 high 规则 15 条(医疗、教育、金融、深圳地方规则等)与 27 条高频通用规则在 README 中有完整 ruleId 列表;未覆盖的规则不会在清单里假装有改法。

autoApply 与安全边界

边界 行为
默认 dry-run,只展示将改动的文件与位置
落盘 必须显式 --apply
备份 写盘前备份为 <file>.bak-<YYYYmmdd-HHMMSS>
范围 仅 recipe 声明的 newFile / setValue
路径 目标必须在 --root 内,越界拒绝
其他 不执行任意脚本、不联网、不删除文件

setValue 约定:pattern 的最后一个捕获组为被替换的值,after 为替换后文本。

自定义 recipe 可通过 --rules-from <目录> 追加(目录下 *.json,可重复指定)。

退出码

  • 0:正常(含 dry-run、apply 成功、--list-recipes、--help);
  • 2:输入缺失、JSON 无效、缺 findings[]、--root 不存在、参数错误、recipe 损坏等。

自动修改失败会在输出中标出;输入本身有效时清单仍可使用。

许可证:MIT(package.json)。当前版本 0.1.0,依赖 Node >=18,DSH 引擎 >=0.1.0-rc.6 <0.3.0。

安装与启用

通常可与深鲸守护系列一并安装;单独安装使用 README 中的命令:

dsh plugin --profile web add @deepwhale-cn/dsh-remediation

安装后 CLI 命令为 dsh-remediation(见 package.json bin)。

插件在当前 dsh 进程权限下读写项目文件;启用 --apply 前建议自行查看仓库源码与 MIT 许可证,确认 recipe 与 autoApply 行为符合预期。

典型用法

下面步骤与官方 README 一致,可直接复现。

1. 生成检查报告 JSON

dsh-cn-log-retention --root ./my-project --json > report.json

也可使用一键体检聚合报告:

dsh-guard-suite --json > report.json

2. 生成整改清单(默认不改文件)

dsh-remediation --input report.json --root ./my-project

3. 导出 Markdown 整改材料

dsh-remediation --input report.json --root ./my-project --out ./整改材料/

4. 机械修改:先 dry-run,再落盘

dsh-remediation --input report.json --root ./my-project
dsh-remediation --input report.json --root ./my-project --apply

5. 查看已覆盖规则

dsh-remediation --list-recipes

6. JSON 输出(供 CI 或二次处理)

dsh-remediation --input report.json --root ./my-project --json

改完后,README 建议仍用 dsh-fix-verify 做改前改后对比,并重跑原检查插件确认对应 ruleId 不再出现。

适用场景与注意

适合谁:已经在用 DSH 守护插件(日志留存、备案、行业包、dsh-guard-suite 等),需要把 JSON 报告变成可交付整改清单、或希望对部分规则做可控自动修补的团队与个人。

注意:

  • 本插件不替代扫描与最终合规判断;未命中不代表无问题。
  • 输出为整改建议,不构成安全或合规结论。
  • --apply 会改盘并备份,但只限于 recipe 声明范围;业务上需区分「合规日志留存」与「排障短期轮转」等场景,README 在示例改法里也有说明。
  • 社区目录(如 skillhub.cn)与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,安装来源以目录页与 GitHub 为准。

结尾

dsh-remediation 补的是「报告之后」的空档:在不动原有判据的前提下,把每条问题写成能照着做的改法,并可选、有边界地自动改配置或补文件。若你手头已经有一份 guard 的 JSON 报告,可以从 --input + --root 跑一遍清单,再用 --list-recipes 对照自己关心的 ruleId 是否已有专用改法。

  • 目录页:https://www.skillhub.cn/plugins/feely0208/dsh-remediation
  • GitHub:https://github.com/feely0208/dsh-remediation
羽毛球分组比赛记分
小程序二维码

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

Xiaoye