| 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 / Java | import、Kotlin↔Java 互调 |
| 移动端 | Swift / Objective-C | import、Swift↔ObjC 互调 |
| 移动端 | Dart / Flutter | package:import、相对 import、part声明 |
| Web | TypeScript / JavaScript | import/require/ 动态import()/@/别名 |
| Web | Vue | SFC<script>+<template>组件标签 |
| Web | CSS / SCSS / Sass / Less | @import/@use/@forward/url()/class/id 反查 |
| Web | HTML | <link>/<script> |
其他语言(Go、Rust、C++ 等)仍会进直接变更清单(git diff 不限语言),只是不推导静态波及。
3. “人话” 功能名
看到的不再是src/modules/payment/utils/checkoutHelper.ts,而是支付收银台。三层降级策略保证每一条都有可读名称:
tracescope.modules.yml 映射表(优先,按项目定制)  ↓ 没命中静态标题抽取(Android strings.xml、Layout 布局、Kotlin / ObjC 页面标题、iOS Localizable.strings)  ↓ 还没有路径启发式(从目录和文件名推断,如 payment/ →"支付")映射表示例(团队可按自己项目维护):
modules: - match: com/example/pay\* name: 支付收银台 risk: high - match: Login\* name: 登录 risk: high - match: Home\* name: 首页 risk: medium4. DSH 右侧栏全流程 UI
右侧栏即操作面板:同步版本、生成清单、勾选结果、提交缺陷,全在同一个界面完成。
多仓库管理:远端认证支持 HTTPS Token / SSH,可记住凭据
同步版本:默认待测 = 最新提交,稳定 = 次新提交;也可手动选分支
生成手测清单:确定性分析,落盘
~/.tracescope/,重启不丢勾选状态:通过 / 失败 / 跳过 / 重置;失败条目填备注 + 每条最多 3 张截图(支持 Ctrl+V 粘贴)
任务级附件:录像 / 文档挂在整份对比任务上(最多 8 个)
导出:Markdown / CSV
5. 协作平台:从勾选到提缺陷,不离开面板
失败条目要提缺陷 —— 传统做法是截图、复制描述、切到缺陷平台手动填,TraceScope 把这一步收进右侧栏:
关联敏捷工作项(以云效为例):生成清单前可关联需求 / Bug / 任务(类型、任务均可多选),工作项信息作为 “清单种子” 辅助生成,也写入模型提示词
提交缺陷:支持云效 / GitHub Issues / GitLab Issues / 通用 Webhook四种协作平台,接入层可扩展;自动收集所有 “失败” 条目连同备注和截图一起提交,提交时可修改默认标题
各平台接入深度不同:云效支持任务附件真实上传、截图嵌入缺陷详情对应条目(
);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调用,不做 IPC3 个 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日常使用流程
打开右侧栏 TraceScope 标签,填仓库路径或远端地址(本地 Git,或远端代码接口如云效 Codeup)
同步版本(默认待测 = 最新提交,稳定 = 次新提交)
(可选)配置协作平台(云效 / GitHub / GitLab / Webhook)与敏捷工作项(如云效需求 / Bug)
点生成手测清单(确定性分析)或模型对话分析(AI 辅助)
逐条勾选:通过 / 失败 / 跳过;失败的填备注、贴截图;可上传任务级附件
复制失败反馈发群里,或提交缺陷到协作平台,或导出报告
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 欢迎。
相关链接