- Inicio
- Plugins
- Herramientas y funciones
- dsh-review-graph
H
dsh-review-graph
huaxiaolong/dsh-review-graph
Review a change set as a relationship graph in the middle column, with every node clickable to the exact source line.
Instalar
dsh plugin --profile web add github:huaxiaolong/dsh-review-graphREADME
dsh-review-graph
English · 中文 ·
一次变更里哪些文件互相调用、影响面多大、每处改动到底在哪一行——在会话里直接看懂,不用在编辑器里一个个翻。

它把三件事放进会话中间栏:
| 你关心的 | 它给你什么 |
|---|---|
| 影响面:谁调用谁 | 变更关系图:只显示本次改动的文件,按调用深度分列,细线表示调用关系 |
| 位置:改在哪 | 点任意文件 → 右侧变更审查打开整个变更集并定位到该文件 |
| 内容:改了什么 | 红绿差异、原始/改动后双列行号、语法高亮(297 种语言)、跳转行左侧标记 |
| 业务:对应哪块逻辑 | 业务流程 AI:按需生成改动前/后对照的流程图,每一步标注文件与行 |
安装
要求:DSH(Host + Web 端),被审查的工作区是 git 仓库。
# 1) 从 npm(推荐)
dsh plugin --profile <profile> add dsh-review-graph
# 2) 从 git(无需任何账号)
dsh plugin --profile <profile> add https://github.com/huaxiaolong/dsh-review-graph
# 3) 从 Release 里的 tarball(无需 npm 账号,可钉死版本)
dsh plugin --profile <profile> add https://github.com/huaxiaolong/dsh-review-graph/releases/download/v1.0.0/dsh-review-graph-1.0.0.tgz
或在 GUI 里:侧栏「插件」→ Add plugin → 粘贴上面任意一种(包名、git 地址、tarball 地址或本地路径)。
三种方式装的是同一份代码,能力完全相同;npm 只是其中一个渠道。
装完重启 DSH(Host 半边生效),刷新页面(Client 半边生效),然后在会话中间栏切到「变更关系图」。
用起来
变更关系图
- 一个文件一个框,同一列 = 同一调用深度;最左一列是入口(本次改动里没有任何文件调用它)。
- 颜色:蓝色 = 与其他改动文件有引用关系;黄色 = 本次改动里没有任何引用关系(悬停会写明)。
- 单击文件:在右侧打开整个变更集并定位到该文件;连线从调用方指向被调用方。
- 右上:⌃ 收起工具栏(把高度让给图)、适应窗口(回到全景);右下:
-/+/ 百分比是缩放。 - 关系太密时只画最强的 600 条,左上角写明隐藏了多少,并给出「显示全部引用」。
变更审查(右侧栏)
- 顶部切换变更来源:未提交 / 未暂存 / 已暂存 / 单个 commit / 与某个分支对比。
- 左栏是这次来源里的全部改动文件,
‹ ›切上一个/下一个;跳转过来的那一行左侧有竖条(不影响红绿底色)。 - 「在文件中打开」用 DSH 自带的预览看整个文件(那里有编辑器级别的高亮)。
业务流程 AI(默认不生成)
- 点「生成」才开始,调用的是你在对话区选择的模型。生成前卡片会写清:将发送几个文件的变更片段、多大、是否带对话摘要、输出上限。
- 结果是改动前 / 改动后左右对照的流程图,点任意节点跳到对应文件与行。
- 三层缓存:同一份材料再打开→直接命中、不花 token;材料变了→保留上一次结果并标「已过期」,重新生成由你决定。
- 「查看发送内容与原始回答」能看到实际发出的提示词与模型原文(排查用)。
会花钱吗?会外发什么?
- 只有点「生成」才消耗 token。关系图、审查、diff、语法高亮全部本地完成,不联网。
- 生成时会把变更片段 + 文件/符号结构 +(可选)对话摘要发给你选的模型。变更片段不截断——整份差异都会送进去;变更集过大可能超出模型上下文窗口,那会明确报错,不会悄悄截断给你一个少内容的答案。
- 模型只在对话区选,本插件不提供第二个模型开关(只在 provider 公布档位时暴露推理强度)。
- 缓存落在
<DSH_HOME>/storages/review-graph-flows/,最多 30 份,权限0600;删掉该目录即清空。
已知限制
- 关系图只覆盖能静态解析出引用的文件类型(JS/TS、Python、Go、Rust、Java 等);解析不出的文件会作为孤立节点(黄色)出现。
- 已删除的文件不在图里(它已不在工作区索引中)。
- 有多个入口时,最"忙"的那个放最左,其余入口排在相邻列。
- 工作区不是 git 仓库时会明确提示,而不是给你一个空面板。
出问题时
| 现象 | 原因与处理 |
|---|---|
面板显示 review graph: xxx is not defined | 插件缺陷;那句话就是原因,直接贴进 issue(这是错误边界的结果,以前会变成空白页签) |
| 生成失败并说"占满输出预算" | 模型把额度全用在推理上;去对话区换一个不做长推理的模型再生成 |
| 刚生成过却说"没有缓存" | 切换 commit/分支会清空面板并重新判定;对话摘要变化算「已过期」 |
| 关系图里只有一个文件 | 本次只改了一个文件,或其余文件静态解析不出引用 |
卸载
dsh plugin --profile <profile> remove review-graph
rm -rf "$DSH_HOME/storages/review-graph-flows" # 可选:连同生成的缓存
开发、架构与自检
见 docs/DEVELOPMENT.md(注入契约、分层设计、缺陷清单、358 项自检怎么跑)。
许可证
MIT © 2026 huaxiaolong。内联的 Prism.js 同为 MIT,归属与再生成方式见 vendor/prism/NOTICE.md。
Plugins relacionados
T
archify (deepseek-harness)
tt-a1i/archify
84khace 7 horasHerramientas y funcionesMIT
T
WeKnora (dsh-weknora)
tencent/weknora
34.2khace 4 horasHerramientas y funciones
T
weknora
tencent/weknora
20.2khace 2 mesesHerramientas y funciones
T
BrowserSkill (dsh-plugin-browserskill)
tencent/browserskill
9khace 21 horasHerramientas y funcionesMIT