乐于分享
好东西不私藏

你的代码库缺的不是文档,是一张交互式地图

你的代码库缺的不是文档,是一张交互式地图

Understand Anything:Multi-Agent + Tree-sitter 生成代码知识图谱的开源工具

— — —

一、你一定经历过这种痛苦

入职第一天,leader 把你拉进仓库,说了句”代码在这,有问题随时问”,然后就消失了。

你打开项目——200 个文件夹,几千个文件,README 写着”请参考 docs/”,docs/ 里三篇两年前的文档,其中两篇已经和代码对不上了。

你开始一个文件一个文件地翻,从main.ts跳到router.ts,再跳到middleware/auth.ts,跳了 40 分钟,发现自己已经忘了最初在找什么。

这些场景你一定不陌生:

1. 新人入职面对 20 万行代码,不知道从哪读起

2. 改一个函数不确定会影响哪些模块,只能全局搜索祈祷

3. 架构知识只存在于三个老员工的脑子里,他们一离职就全没了

4. 写了 PR 没人 review 得动,因为”只有张三懂这块”

问题的本质是什么?代码库缺的从来不是文档——缺的是一张让你一眼看清全貌的地图。

二、Understand Anything 做了什么

Understand Anything是一个开源工具(MIT 协议),它用 AI 多智能体 + 静态分析,自动把你的代码库变成一张可交互的知识图谱——每个文件、每个函数、每个类都是图上的一个节点,你可以点击、搜索、沿着依赖关系一路追踪。

不需要你写一行注释,不需要维护额外文档。跑一条命令,等几分钟,打开浏览器——整个代码库的骨架就在你眼前。

“The goal isn’t a graph that wows you with how complex your codebase is — it’s a graph that quietly teaches you how every piece fits together.”

传统方式

盲人摸象

逐个文件阅读,拼凑全貌

~grep 全局搜索碰运气

~问老员工(如果他还在)

~翻过期文档猜测

~改代码后祈祷不出事

VS

Understand Anything

上帝视角

一张图看清全局架构

!交互式知识图谱,点击即导航

!每个节点自带自然语言解释

!自动生成学习路径

!改代码前先看影响范围

三、3 条命令上手

整个流程极其简单。以 Claude Code 为例:

# 1. 安装插件
/plugin marketplace add Lum1104/Understand-Anything
/plugin install understand-anything

# 2. 分析你的代码库(自动执行 Multi-Agent Pipeline)
/understand

# 3. 打开交互式仪表盘
/understand-dashboard

跑完/understand后,项目根目录会生成.understand-anything/knowledge-graph.json——这就是你代码库的知识图谱。提交到 Git,队友直接/understand-dashboard就能看,无需重新跑分析

支持 14+ 平台,不限于 Claude Code

Cursor、VS Code Copilot、Codex、Gemini CLI、OpenCode、Cline、Trae… 一行脚本搞定安装:
curl -fsSL https://raw.githubusercontent.com/.../install.sh | bash

四、不止看图——8 个命令覆盖日常场景
你的需求
用这个命令
新人入职,快速了解整体架构
/understand-onboard
提交前想知道改动影响了哪些模块
/understand-diff
“支付流程怎么走的?” 想问代码库
/understand-chat
深入理解某个文件或函数
/understand-explain
提取业务领域知识(域、流程、步骤)
/understand-domain
分析知识库/Wiki 生成知识图谱
/understand-knowledge

还支持/understand --language zh生成中文内容,节点描述和 UI 全部中文化。

— — —

五、核心设计:为什么它比”让 AI 读代码”更靠谱

你可能会想:直接让 ChatGPT 读代码不就行了?区别在于——Understand Anything 的结构信息是确定性的,不是 LLM 猜的。

它采用Tree-sitter + LLM 混合架构,让各自做擅长的事:

层面
Tree-sitter(确定性)
LLM(语义理解)
做什么
解析 AST,提取导入/导出、函数定义、类继承、调用关系
生成自然语言摘要、架构层分配、标签、学习路径
特点
同样的代码永远产出同样的结果,可复现
理解”这个文件是干什么的”,解析器做不到的事
为什么需要
边(依赖关系)必须准确,不能让 LLM 猜
人要看的是”意图”不是”语法树”

这个设计让图谱在结构侧可复现(相同代码永远生成相同的边),在语义侧有智慧(知道一个文件”是干什么的”,而不只是”import 了什么”)。

六、5 个 Agent 协作——Multi-Agent Pipeline

/understand命令背后是 5 个专业 Agent 分工协作,每个只做一件事:

Multi-Agent Pipeline 执行流程
project-scanner
发现文件、检测语言和框架、建立文件清单
↓ 文件清单传递给下一阶段 ↓
file-analyzer
Tree-sitter 解析每个文件,提取函数/类/导入,生成节点和边
(并行执行,每批 20-30 文件,最多 5 并发)
↓ 原始图谱节点/边 ↓
architecture-analyzer
识别架构层次:API / Service / Data / UI / Utility,按层着色
↓ 架构分层结果 ↓
tour-builder
生成按依赖顺序编排的学习路径(Guided Tour)
↓ 学习路径生成 ↓
graph-reviewer
验证图谱完整性、引用完整性、节点边一致性
↓ 输出 ↓
.understand-anything/knowledge-graph.json

— 提交到 Git,团队共享

关键设计:支持增量更新。第二次跑/understand时,它会用 fingerprint 检测哪些文件改了,只重新分析变化的部分。还能配合--auto-update自动注册 post-commit hook,每次提交自动更新图谱。

七、仪表盘长什么样

打开/understand-dashboard后,你会看到一个暗色主题的交互式图谱界面:

G

知识图谱
75%画面的交互式图
点击节点查看详情

React Flow

S

语义搜索
按名称或含义搜索
“哪块处理鉴权?”

Fuse.js

T

学习路径
按依赖顺序排列
从底层读到顶层

Guided Tour

L

架构分层
API/Service/Data
按层着色可视化

Dagre

P

Persona 适配
初级/PM/高级
信息密度自动调节

自适应

C

代码查看器
点击文件节点
底部弹出源码视图

Prism

八、适用场景和局限

说完优点,也说说边界——工具不是万能的。

场景
效果
说明
大型 Web 应用(React/Vue/Node)
极佳
组件树 + API 路由 + 服务层清晰呈现
微服务/多语言项目
极佳
跨服务依赖关系一目了然
新人入职/团队 Onboarding
极佳
自动生成学习路径 + 架构总览
PR Review 辅助
良好
diff 影响分析帮助判断波及范围
底层系统/硬件编程(嵌入式、FPGA)
一般
核心难点在运行时行为,静态分析覆盖有限
单文件脚本/小工具
无需
代码量小,直接读比看图快
九、技术细节(给想深入了解的人)

项目本身是 pnpm monorepo 结构:

understand-anything-plugin/
├── packages/core/      # 共享引擎:Tree-sitter + 搜索 + Schema + 指纹
├── packages/dashboard/ # React 仪表盘(React Flow + Zustand + TailwindCSS v4)
├── src/                # Skill 实现(chat/diff/explain/onboard)
├── skills/             # 8 个 Skill 定义(Markdown Prompt)
├── agents/             # 9 个 Agent 定义
└── hooks/              # post-commit 自动更新钩子

几个值得关注的技术选择:

web-tree-sitter 而非 native tree-sitter

用 WASM 版本避免 native binding 在不同平台的编译问题。代价是性能略低,但对于分析场景够用。

Fingerprint-based 增量更新

每个文件计算 structural fingerprint,只有结构变化才重新分析。改注释不会触发重跑。

Agent 不返回结果到上下文

中间结果写到.understand-anything/intermediate/,不占用 LLM 上下文窗口。分析完成后自动清理。

— — —

十、一句话总结

如果你的团队有超过 3 个人在维护一个超过 5 万行的代码库,Understand Anything 能把”代码理解”这件事从个人经验变成团队基础设施——一次分析,全员可用,增量维护,永不过期。

GitHub: github.com/Lum1104/Understand-Anything