拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

我做了一个 DeepSeek Harness 插件,从 Git Diff 秒出 “要测哪些” 清单

我做了一个 DeepSeek Harness 插件,从 Git Diff 秒出 “要测哪些” 清单

| GitHub: rebornace/dsh-tracescope

| Gitee 镜像: RebornAce/dsh-tracescope

| npm:@rebornace/dsh-tracescope·@rebornace/tracescope-core·@rebornace/tracescope-mcp

为什么做这个

开发按需求改代码,会产生的问题:波及面无法被确定。

  • 订单页调了被改的工具类,要不要回归?

  • 优惠券那边是不是也用了?调用链上到底还挂着哪些页面?

  • 要测多少条才算验完?有没有清单可以勾?

中大型项目里 import、组件标签、样式钩子层层交叉,写这行代码的开发也无法可靠枚举全部间接影响。传统做法是翻代码、靠经验猜,准确度取决于对项目的熟悉程度。

不管是写代码的人还是验收代码的人,都要回答同一个问题:这次改动到底影响了哪些功能?

TraceScope 做的事:给定 “稳定版本” 和 “待测版本” 两个 Git 提交,用代码把 “谁依赖谁” 算出来—— 直接变更 + 反向依赖波及,翻译成功能名和风险等级,生成手测清单;并在 DSH 右侧栏完成勾选、备注、截图、附件、缺陷提交,从 “看 diff” 到 “提 bug” 一站到底。

它能干什么

Git Diff → 影响面分析 → 手测清单 → 勾选结果 → 提交缺陷,全流程在 DSH 右侧栏完成。

1. 双 Commit 影响面分析

输入稳定基线 vs 待测版本两个提交,输出两层清单:

  • 直接变更:git diff 命中的文件,按功能名和风险等级聚合

  • 反向依赖波及:谁 import 了被改文件、谁又依赖了它(默认深度 2 层 BFS)

举例:开发如实说 “我只改了支付那边一个工具类,其他没动”—— 他没说错,但订单页调了这个工具类,优惠券列表也用了它。TraceScope 会把它们也列进清单,标记为 “可能波及”。不用翻代码找依赖,工具帮你找。

2. 多语言反向依赖分析

不是所有语言都只靠import,TraceScope 按语言做引用抽取:

领域语言识别的引用方式
移动端Kotlin / Javaimport、Kotlin↔Java 互调
移动端Swift / Objective-Cimport、Swift↔ObjC 互调
移动端Dart / Flutterpackage:import、相对 import、part声明
WebTypeScript / JavaScriptimport/require/ 动态import()/@/别名
WebVueSFC<script>+<template>组件标签
WebCSS / SCSS / Sass / Less@import/@use/@forward/url()/class/id 反查
WebHTML<link>/<script>

其他语言(Go、Rust、C++ 等)仍会进直接变更清单(git diff 不限语言),只是不推导静态波及。

3. “人话” 功能名

看到的不再是src/modules/payment/utils/checkoutHelper.ts,而是支付收银台。三层降级策略保证每一条都有可读名称:

tracescope.modules.yml 映射表(优先,按项目定制)&#x20; ↓ 没命中静态标题抽取(Android strings.xml、Layout 布局、Kotlin / ObjC 页面标题、iOS Localizable.strings)&#x20; ↓ 还没有路径启发式(从目录和文件名推断,如 payment/ →"支付")

映射表示例(团队可按自己项目维护):

modules: - match: com/example/pay\* name: 支付收银台 risk: high - match: Login\* name: 登录 risk: high - match: Home\* name: 首页 risk: medium

4. DSH 右侧栏全流程 UI

右侧栏即操作面板:同步版本、生成清单、勾选结果、提交缺陷,全在同一个界面完成。

  • 多仓库管理:远端认证支持 HTTPS Token / SSH,可记住凭据

  • 同步版本:默认待测 = 最新提交,稳定 = 次新提交;也可手动选分支

  • 生成手测清单:确定性分析,落盘~/.tracescope/,重启不丢

  • 勾选状态:通过 / 失败 / 跳过 / 重置;失败条目填备注 + 每条最多 3 张截图(支持 Ctrl+V 粘贴)

  • 任务级附件:录像 / 文档挂在整份对比任务上(最多 8 个)

  • 导出:Markdown / CSV

5. 协作平台:从勾选到提缺陷,不离开面板

失败条目要提缺陷 —— 传统做法是截图、复制描述、切到缺陷平台手动填,TraceScope 把这一步收进右侧栏:

  • 关联敏捷工作项(以云效为例):生成清单前可关联需求 / Bug / 任务(类型、任务均可多选),工作项信息作为 “清单种子” 辅助生成,也写入模型提示词

  • 提交缺陷:支持云效 / GitHub Issues / GitLab Issues / 通用 Webhook四种协作平台,接入层可扩展;自动收集所有 “失败” 条目连同备注和截图一起提交,提交时可修改默认标题

  • 各平台接入深度不同:云效支持任务附件真实上传、截图嵌入缺陷详情对应条目(![文件名](embedUrl));GitHub / GitLab / Webhook 目前以描述文本 / JSON 元数据为主

  • 面板提供协作平台请求日志(不含 token),方便排查 “接口没数据” 还是 “界面没刷出来”

  • 复制失败反馈:不走缺陷平台时,一键复制失败条目文本,粘贴到飞书 / 钉钉 / 邮件

6. 模型对话分析

确定性分析给出 baseline,需要 AI 读 diff、补推理时,DSH 会话侧注册了三个工具:

工具作用
tracescope_analyze_impact确定性分析基线
tracescope_get_diff分页拉取两提交间 diff(避免一次塞爆上下文)
tracescope_publish_handtest把模型分析的最终清单回写到右侧栏面板

工作流:面板点 “模型对话分析”→ AI 调get_diff读 diff → 分析后调publish_handtest→ 右侧栏自动刷新。可以和 AI 对话 “帮我看看这几个文件的改动,有没有遗漏的影响点和测试点”,觉得合理再让它 publish 回面板。

架构设计

@rebornace/tracescope-core ← 确定性分析引擎(Agent 无关) @rebornace/dsh-tracescope ← DSH 插件:Host API + 右侧栏 UI @rebornace/tracescope-mcp ← MCP Server(Cursor / Claude 等任意客户端)

设计原则:所有分析能力都能通过 MCP 访问,DSH 插件的独特价值是嵌入式 UI,不是独占的业务逻辑。

Core 引擎

纯 TypeScript,零 Agent 依赖。核心模块:

  • deps.ts:源码索引 + 反向依赖图(多语言引用解析)

  • analyze.ts:两次提交间的影响面分析

  • git.ts:本地 git 操作(按提交对象读取,不依赖工作区文件)

  • codeup.ts:远端代码接口兜底(如云效 Codeup;无 git 环境时的远程 diff 方案)

  • display-names.ts:多平台静态标题抽取

  • report-store.ts:清单持久化(JSON,落盘~/.tracescope/)

DSH 插件

Host 侧纯 ESM,注册了:

  • 20+ 条同源 HTTP 路由(/tracescope/v1/*):UI 通过fetch调用,不做 IPC

  • 3 个 Host Tools:供 AI 在会话中调用

  • 1 个斜杠命令:/tracescope打开面板或命令行生成报告

Client 侧是React Slot右侧栏标签(不是 iframe),通过window.__ModuleLoader__.load注入,与 DSH 共享 React 运行时。所有 Host 路由校验Referer同源,防止跨站请求。

MCP Server

独立 stdio 进程,暴露 3 个工具:

Tool作用
tracescope_open_panel打开本机可视化面板
tracescope_list_commits列出仓库提交 / 引用
tracescope_analyze_impact确定性影响面分析

Cursor / Claude / 任何 MCP 客户端都能用。

安装与使用

方式一:dsh-market 市场安装(推荐)

在 DSH Web / Desktop 打开 dsh-market 面板,搜索tracescope一键安装。

方式二:命令行

\# DSH Web dsh plugin--profilewebadd@rebornace/dsh-tracescope\# DSH Desktop dsh plugin--profiledesktopadd@rebornace/dsh-tracescope

方式三:本地构建

pnpminstallpnpmbuild dsh plugin--profilewebadd./packages/dsh-tracescope

日常使用流程

  1. 打开右侧栏 TraceScope 标签,填仓库路径或远端地址(本地 Git,或远端代码接口如云效 Codeup)

  2. 同步版本(默认待测 = 最新提交,稳定 = 次新提交)

  3. (可选)配置协作平台(云效 / GitHub / GitLab / Webhook)与敏捷工作项(如云效需求 / Bug)

  4. 点生成手测清单(确定性分析)或模型对话分析(AI 辅助)

  5. 逐条勾选:通过 / 失败 / 跳过;失败的填备注、贴截图;可上传任务级附件

  6. 复制失败反馈发群里,或提交缺陷到协作平台,或导出报告

MCP 独立使用

不装 DSH 也能用。Cursor / Claude 等任意 MCP 客户端配置后即可调用tracescope_analyze_impact:

{"mcpServers":{"tracescope":{"command":"node","args":\["/path/to/packages/mcp/dist/index.js"]}}}

后续规划

  • 协作平台接入深度不一:GitHub / GitLab / Webhook 目前以描述文本 / JSON 元数据为主,不像云效支持视频二进制上传,后续迭代优化

  • 崩溃分析 Adapter、移动设备 USB 录制、浏览器扩展录制是后续路线图

最后

确定性分析保证下限(不会漏),模型分析提升上限(可推理隐含关联),嵌入式 UI 让全流程在 DSH 内完成。如果你在用 DeepSeek Harness,或对 AI 辅助代码影响面分析感兴趣,欢迎试用和反馈 —— 开源项目,MIT 协议,PR 欢迎。


相关链接

返回列表