前言¶
在 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 查询,并在报告附录中披露。
核心功能¶
分析与输出¶
- 变更范围:列出改动文件、行数增减及所属模块等事实。
- 反向传播:从改动点沿依赖关系向上追踪,报告可达的文件、模块与入口(传播深度等由 CLI 参数控制)。
- 风险列表:按仓库内固定规则(
docs/risk-rules.md)计算等级;每条带因素、证据与置信度,不编造运行时调用链。 - 验证计划:按优先级推荐命令(如 P0 最小集合),并标注来源(例如 package.json);缺失命令会标为 unidentified。
- 测试保护与缺口、文档与发布影响、限制与待办: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。