跳到主要内容

Understand Anything:把任何代码库变成交互式知识图谱

· 阅读需 10 分钟
一介布衣
全栈开发者

你刚接手一个 20 万行代码的项目

第一周,你每天在做同一件事:在文件之间跳来跳去。

这个函数调用了那个类,那个类又依赖第三个模块。你打开十个标签页,画了三张草稿图,还是搞不清数据到底怎么流的。

这不是你不够聪明。是读代码的方式不对

传统的代码阅读是线性的——一行一行看,一个文件一个文件跳。但代码本身不是线性的,它是网状的。函数互相调用,模块互相依赖,配置驱动行为。用线性方式理解网状结构,注定事倍功半。

Understand Anything 走了一条不同的路:用 AI + 静态分析,把整个代码库变成一张可交互的知识图谱。每个文件、函数、类都是节点,依赖关系是边。你可以点击、搜索、探索,也可以让 AI 给你生成一条学习路径。

目标不是用代码库的复杂程度来惊艳你——而是默默告诉你每一块是怎么拼在一起的。

它是什么

Understand Anything 是一个开源的 AI 代码分析工具,GitHub 地址:Lum1104/Understand-Anything,目前 29.8k stars,MIT 许可证。

它不是一个独立的 IDE 或编辑器,而是一个插件——可以安装在 Claude Code、Codex、Cursor、GitHub Copilot、Gemini CLI、Hermes 等 13 个平台上。安装后,你只需要在 AI 编程工具里输入一条命令,它就开始分析你的项目。

核心能力:

  • 知识图谱可视化:整个项目的文件、函数、类、依赖关系,全部变成可交互的图
  • 语义搜索:不只是搜名字,还能搜"哪些部分处理身份验证?"这样的自然语言问题
  • 引导式学习:自动生成学习路径,按依赖顺序带你理解架构
  • 变更影响分析:改代码之前,先看你的改动会影响哪些模块
  • 业务领域提取:自动识别代码映射到哪些业务流程和领域概念
  • 知识库分析:还能分析 Markdown Wiki,提取实体、论断和关系

技术原理:Tree-sitter + LLM 混合分析

它没有把代码直接塞给 LLM 了事。而是做了一个很聪明的分工:

Tree-sitter(确定性静态分析) 负责结构:

  • 解析源码为具体语法树
  • 提取导入、导出、函数/类定义、调用点、继承关系
  • 同样的输入永远得到同样的输出
  • 作为增量更新的指纹基础

LLM(语义理解) 负责意图:

  • 生成自然语言摘要
  • 标注标签和架构层归属
  • 映射业务领域
  • 生成引导式学习路径
  • 标注编程模式(泛型、闭包、装饰器等)

这个分工的好处是:结构层面可复现(同样的代码总是产生同样的边),语义层面又能捕捉意图(一个文件"为了什么"存在,而不仅仅是它 import 了什么)。

多智能体架构

分析过程不是单个 AI 一把梭,而是 5-7 个智能体协作:

智能体职责
project-scanner扫描项目文件,检测语言和框架
file-analyzer提取代码结构(函数、类、导入),生成图节点和边
architecture-analyzer识别架构层(API / Service / Data / UI / Utility)
tour-builder生成引导式学习路径
graph-reviewer验证图的完整性和引用完整性
domain-analyzer提取业务领域、流程和处理步骤
article-analyzer从 wiki 文章中提取实体、论断和隐式关系

文件分析器并行运行(最多 3 个并发),支持增量更新——只分析自上次运行以来发生更改的文件。

安装指南

前提条件

  • Node.js >= 22(推荐 v24)
  • pnpm >= 10

方式一:一行命令安装(推荐)

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.sh | bash

也可以直接指定平台,跳过交互提示:

# 安装到 Claude Code
curl -fsSL https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.sh | bash -s claude

# 安装到 Hermes
curl -fsSL https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.sh | bash -s hermes

# 安装到 Codex
curl -fsSL https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.sh | bash -s codex

Windows(PowerShell):

iwr -useb https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.ps1 | iex

安装脚本会将仓库克隆到 ~/.understand-anything/repo,并为所选平台创建符号链接。安装完成后重启 CLI 或 IDE。

支持的平台:geminicodexopencodepiopenclawantigravityvibevscodehermesclinekimiclaude

方式二:手动安装

# 1. 克隆仓库
git clone https://github.com/Lum1104/Understand-Anything.git
cd Understand-Anything

# 2. 安装依赖
pnpm install

# 3. 构建核心包
pnpm --filter @understand-anything/core build

# 4. 构建插件包
pnpm --filter @understand-anything/skill build

# 5. 运行安装脚本
./install.sh hermes # 或其他平台

方式三:Claude Code 插件市场

/plugin marketplace add Lum1104/Understand-Anything
/plugin install understand-anything

方式四:Cursor / VS Code(自动发现)

克隆仓库后,Cursor 和 VS Code + GitHub Copilot 会自动通过 .cursor-plugin/plugin.json.copilot-plugin/plugin.json 发现插件。无需手动安装。

使用方法

基础分析

# 分析当前项目
/understand

# 生成中文内容(知识图节点描述和 Dashboard UI)
/understand --language zh

# 只分析某个子目录(大型 monorepo 适用)
/understand src/frontend

分析完成后,会在项目根目录生成 .understand-anything/knowledge-graph.json

打开可视化仪表盘

/understand-dashboard

仪表盘是一个本地 Web 应用,默认在浏览器中打开。界面分为三部分:

  • 左侧 75%:交互式知识图谱,支持平移、缩放、点击节点
  • 右侧 360px:侧边栏,显示节点详情、文件树、学习路径
  • 底部:代码查看器,点击文件节点时弹出

仪表盘支持多种视图模式:

  • Overview:项目总览,按架构层分组
  • Learn:引导式学习模式,按依赖顺序展示
  • Deep Dive:深度探索模式,显示更多细节
  • Domain:业务领域视图,展示领域、流程、步骤
  • Structural:纯结构视图,只显示代码结构

语义搜索

在仪表盘顶部的搜索框中,你可以:

  • 模糊搜索:按名称搜索节点
  • 语义搜索:用自然语言提问,如"哪些部分处理身份验证?"

搜索会返回相关的节点和边,你可以在图谱中直接看到它们的位置和关系。

提问和解释

# 询问代码库问题
/understand-chat 支付流程是怎么工作的?

# 深入理解某个文件
/understand-explain src/auth/login.ts

# 为新团队成员生成指南
/understand-onboard

变更影响分析

# 分析当前修改的影响
/understand-diff

在提交代码之前,这个命令会分析你的改动会影响系统的哪些部分,帮助你理解变更的连锁反应。

业务领域提取

# 提取业务领域知识(领域、流程、步骤)
/understand-domain

这个命令会分析代码映射到哪些业务领域,生成领域视图,帮助你理解代码和业务之间的关系。

知识库分析

# 分析 Karpathy 模式的 LLM Wiki 知识库
/understand-knowledge ~/path/to/wiki

这个命令可以分析 Markdown Wiki,提取实体、论断和隐式关系,生成力导向知识图谱。

增量更新

# 直接重跑即可——默认增量更新,只分析变更的文件
/understand

# 安装 post-commit 钩子,每次提交自动增量更新
/understand --auto-update

与团队共享知识图谱

知识图谱就是一份 JSON 文件。提交一次,团队成员就可以跳过整条分析流水线。

需要提交的内容: .understand-anything/ 下的全部文件,除了 intermediate/diff-overlay.json(这些是本地临时文件)。

.understand-anything/intermediate/
.understand-anything/diff-overlay.json

大型图谱(10 MB 以上): 使用 git-lfs 跟踪。

git lfs install
git lfs track ".understand-anything/*.json"
git add .gitattributes .understand-anything/

实际体验:分析一个真实项目

我拿一个中等规模的 TypeScript 项目(约 5 万行代码)做了测试。

分析过程:

  • 扫描阶段:10 秒,识别出 12 种语言/框架
  • 文件分析:45 秒,提取了 800+ 个节点
  • 架构分析:20 秒,识别出 5 个架构层
  • 学习路径生成:30 秒
  • 总计:约 2 分钟

分析结果:

  • 知识图谱包含 800+ 节点,2000+ 边
  • 自动识别出 API 层、Service 层、Data 层、UI 层、Utility 层
  • 生成了 5 步学习路径,从核心模块开始
  • 语义搜索可以回答"用户认证是怎么实现的?"这样的问题

仪表盘体验:

  • 图谱布局清晰,同层节点聚集在一起
  • 点击节点可以看到摘要、依赖关系、代码预览
  • 搜索响应快,语义搜索准确度不错
  • 学习路径按依赖顺序排列,逻辑清晰

适用场景

1. 新人上手

接手一个陌生项目,最快的上手方式不是读代码,而是先看知识图谱。了解整体架构,找到核心模块,然后按学习路径逐步深入。

2. PR 评审

在 review 别人的 PR 时,用 /understand-diff 分析变更影响。不只是看 diff,而是看这个改动会影响哪些模块,有没有遗漏的依赖。

3. 架构理解

项目做大了之后,团队成员可能只熟悉自己负责的模块。知识图谱可以帮助大家理解整个系统的架构,看到模块之间的关系。

4. 技术债识别

通过知识图谱,可以直观地看到哪些模块依赖过多(可能是技术债),哪些模块孤立(可能是死代码)。

5. 文档维护

知识图谱可以作为代码的"活文档"。代码变了,图谱跟着变(增量更新),永远保持最新。

局限性和注意事项

1. 需要 LLM API Key

分析过程需要调用 LLM API(Claude、GPT-4 等)。本地部署的话,需要配置相应的 API Key。

2. 大型项目分析时间较长

10 万行以上的项目,分析可能需要 5-10 分钟。建议先用 /understand src/subdir 分析子目录,再逐步扩大范围。

3. 知识图谱文件较大

大型项目的知识图谱 JSON 可能达到 10 MB 以上。建议使用 git-lfs 管理。

4. 语义搜索准确度

语义搜索依赖 LLM 的理解能力,对于领域特定的术语,可能需要多次尝试才能找到准确的关键词。

5. 不支持所有语言

Tree-sitter 支持 30+ 种语言,但并非全部。不支持的语言会被跳过,但不会影响其他语言的分析。

与其他工具对比

特性Understand AnythingSourcegraphCodeQL
知识图谱可视化
语义搜索
引导式学习
变更影响分析
业务领域提取
知识库分析
AI 驱动
本地运行❌(需部署)
开源✅(MIT)

总结

Understand Anything 解决了一个很实际的问题:如何快速理解一个陌生的大型代码库

它不是另一个代码编辑器,也不是另一个 LLM 聊天工具。它是一个专门针对"代码理解"这个场景的工具——用 AI + 静态分析,把代码库变成一张可交互的知识图谱。

对于经常需要接手新项目、做代码 review、或者维护大型系统的开发者来说,这是一个值得尝试的工具。

项目地址: github.com/Lum1104/Understand-Anything

在线演示: understand-anything.com/demo


如果你也在用 Understand Anything,欢迎在评论区分享你的使用体验。