dsh-change-impact:把一次代码变更写成有据可查的影响分析与验证计划

前言

在 DSH 里改完代码后,常见做法是跑全量测试或凭经验猜「可能影响到哪」。前者成本高,后者缺少可追溯依据。DeepSeek Harness 社区插件 dsh-change-impact(维护者 duyanta123,分类:工作流)针对「一次变更 → 影响范围、风险与验证」这一步:结合仓库扫描与变更事实,输出 CHANGE-IMPACT.md 与 change-impact.json,并在报告中区分事实、推断与待确认项。仓库结构、符号、依赖与入口点由 npm 依赖 dsh-repo-scanner 提供;本插件负责变更解析、反向传播、风险评分与报告组装,不复制 scanner 源码。

这是什么

dsh-change-impact 是 DeepSeek Harness 的变更影响分析插件(当前版本 0.1.0,MIT 许可证)。它回答四类问题:哪些模块、入口与公开导出受影响;风险等级及每条结论的证据与置信度;应优先跑哪些验证命令而非盲目全量;文档、迁移脚本与 release notes 是否需要同步更新。默认只读:不修改源码、测试、文档或配置,不创建 commit/分支/PR;不执行仓库内脚本,验证命令仅为建议(requires_confirmation 恒为 true);working_tree / base_head 模式仅执行白名单内的只读 git 查询,并在报告附录中披露。

核心功能

分析与输出

  1. 变更范围:列出改动文件、行数增减及所属模块等事实。
  2. 反向传播:从改动点沿依赖关系向上追踪,报告可达的文件、模块与入口(传播深度等由 CLI 参数控制)。
  3. 风险列表:按仓库内固定规则(docs/risk-rules.md)计算等级;每条带因素、证据与置信度,不编造运行时调用链。
  4. 验证计划:按优先级推荐命令(如 P0 最小集合),并标注来源(例如 package.json);缺失命令会标为 unidentified。
  5. 测试保护与缺口、文档与发布影响、限制与待办:Markdown 报告固定八节加附录;JSON 为机器可读结果(schema_version 1.0),含 changed_files、分层 impact、propagation、risks、verification、test_gaps、warnings、flags 等。

可选输出 change-impact.mmd(Mermaid 图仅为辅助,表格与证据为准)。

边界与安全

  • 只读承诺:分析过程不向仓库写入,不运行 run_methods 中的命令。
  • 透明规则:风险由固定规则计算;fully_covered 不会作为结论输出。
  • 作为 DSH 插件时,能力在 当前 dsh 进程权限 下执行;安装前宜自行审阅 GitHub 仓库 源码与 LICENSE。

安装与启用

作为 DSH 插件(命令来自项目 README):

dsh plugin --profile web add "github:duyanta123/dsh-change-impact#v0.1.0"

安装后重启 dsh --profile web,使用 skill change-impact-runbook。

也可从 npm 安装为库或独立 CLI:

npm install dsh-change-impact

兼容性:独立 CLI / 库要求 Node.js >= 18;作为 DSH >= 0.2.1-rc.2 的插件,CI 在 Node.js >= 22.19 上验证兼容(npm run test:compat)。社区目录页:skillhub.cn/plugins/duyanta123/dsh-change-impact(独立站点,与 DeepSeek / 幻方无官方从属关系)。

典型用法

1. 在 DSH 里通过 skill

向智能体说明要在某仓库分析变更影响,并声明 baseline 模式;skill 按 runbook 执行:输入采集 → 变更事实 → 影响传播 → 风险与验证 → 报告输出,最终交付 CHANGE-IMPACT.md 与 change-impact.json。

示例表述:分析 /path/to/repo 中本次变更的影响,baseline 为未提交工作区相对 HEAD。

2. 独立 CLI

相对 HEAD 的工作区变更(默认):

node scripts/change-impact.mjs .

两个 Git ref 之间的差异:

node scripts/change-impact.mjs . --base origin/main --head HEAD

无 Git 目录时可用统一 diff 或手工文件列表:

node scripts/change-impact.mjs . --diff change.patch
node scripts/change-impact.mjs . --changed-files src/a.ts,src/b.ts

指定输出目录、Mermaid,并在 stderr 列出警告:

node scripts/change-impact.mjs . --output reports --mermaid --strict

常用选项包括:--max-propagation(默认 3)、--format json|markdown|both(默认 both)、--include-tests / --no-include-tests 等;完整列表见 README「CLI options」。退出码:0 成功;1 有警告或截断等;2 输入无效;3 schema 不兼容或写报告失败。

3. 作为库

import { analyze, writeReportFiles } from 'dsh-change-impact/core';

const result = await analyze({ repo_path: '.', base: 'origin/main' });
await writeReportFiles(result, { output: 'reports' });

适用场景与注意

适合:合并或发布前快速看清影响面与验证优先级;在智能体工作流里把「改动了什么、要测什么」结构化交给人工确认;非 Git 项目用 --diff 或 --changed-files 做同样分析。

注意:验证计划中的命令不会自动执行,需人工确认后再跑。扫描深度、文件数上限可能导致截断,此时 exit code 与 flags 会反映低置信或警告。插件以当前 dsh 进程权限读取仓库与执行白名单 git 命令,安装插件前应检查源码与许可证。不要期望插件替你做提交或改代码。

结尾

dsh-change-impact 把「一次变更」收敛成带证据的影响分析与验证计划,与全量盲测或纯口头评估相比,输出可归档、可机器消费。进一步了解可访问目录页 skillhub.cn/plugins/duyanta123/dsh-change-impact 与源码 github.com/duyanta123/dsh-change-impact。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye