Understand Anything

简介

Understand Anything 是一个面向代码库、知识库和文档的交互式知识图谱工具。它可以把项目中的文件、函数、类、依赖关系、架构层次和业务流程抽取成可探索、可搜索、可提问的图谱,帮助开发者从“逐文件阅读代码”转向“先理解整体结构”。

项目的核心定位不是生成一张复杂炫目的图,而是生成一张能教学、能导航、能解释系统如何组合运作的图。

GitHub: https://github.com/Lum1104/Understand-Anything

适用场景

  • 新成员接手大型代码库时快速建立全局认知。
  • 在重构或提交前分析改动影响范围。
  • 为团队生成可共享的项目知识图谱和架构导览。
  • 将 Karpathy-pattern LLM Wiki 一类知识库转换为可导航的知识图谱。
  • 在 Claude Code、Codex、Cursor、Copilot、Gemini CLI、Hermes 等 AI 编程环境中增强项目理解能力。

核心能力

1. 结构化代码图谱

/understand 会扫描项目,抽取文件、函数、类、导入导出、调用关系等结构信息,并生成 .understand-anything/knowledge-graph.json。随后可以通过仪表盘以知识图谱形式浏览代码库。

节点支持:

  • 文件、函数、类等代码实体;
  • 架构层分类,例如 API、Service、Data、UI、Utility;
  • 依赖关系、调用关系、导入导出关系;
  • 面向自然语言的解释和摘要。

2. 交互式 Dashboard

通过 /understand-dashboard 打开可视化仪表盘:

  • 支持平移、缩放、点击节点;
  • 支持按名称或语义搜索;
  • 点击节点后查看代码、关系和自然语言解释;
  • 使用颜色和图例展示架构层次;
  • 可按不同用户画像调整信息密度。

3. Guided Tours 架构导览

系统可以根据依赖关系自动生成学习顺序,帮助用户按更合理的路径理解项目,而不是随机阅读文件。

这对新成员 onboarding、项目交接、复杂系统理解尤其有价值。

4. 语义搜索与模糊搜索

除了按名称查找,也可以用自然语言搜索,例如:

  • “哪些部分处理认证?”
  • “支付流程在哪里?”
  • “这个模块的入口是什么?”

这类搜索适合在大型代码库中快速定位功能点。

5. Diff Impact Analysis

/understand-diff 可以分析当前改动可能影响哪些模块,帮助在提交前理解变更的涟漪效应。

这类能力适合用于:

  • PR review 前自查;
  • 重构影响分析;
  • 风险评估;
  • 识别需要补充测试的区域。

6. 业务域视图

/understand-domain 可以从代码中提取业务域、业务流程和步骤,以横向图方式展示代码如何对应真实业务逻辑。

这让它不仅是代码结构工具,也可以作为产品、业务和技术之间的沟通媒介。

7. 知识库图谱

/understand-knowledge ~/path/to/wiki 可以分析 Karpathy-pattern LLM Wiki 风格的知识库:

  • 解析 index.md、wikilinks 和分类;
  • 抽取实体、主张和隐式关系;
  • 生成带社区聚类的力导向知识图谱;
  • 将静态 wiki 转换成可探索的知识网络。

工作机制

Understand Anything 采用 Tree-sitter 与 LLM 混合架构:

  • Tree-sitter 负责确定性结构解析:语法树、导入导出、函数/类定义、调用点、继承关系等;
  • LLM 负责语义理解:自然语言摘要、标签、架构层判断、业务域映射、导览生成、语言概念解释。

这种分工让结构关系具备可复现性,同时保留 LLM 对意图和业务含义的理解能力。

多 Agent Pipeline

/understand 会编排多个专门 Agent:

Agent职责
project-scanner发现文件、识别语言和框架
file-analyzer抽取函数、类、导入关系,生成图节点和边
architecture-analyzer识别架构层
tour-builder生成学习导览
graph-reviewer校验图谱完整性和引用一致性
domain-analyzer提取业务域、流程和步骤
article-analyzer分析知识库文章中的实体、主张和隐式关系

文件分析支持并行处理,并支持增量更新:默认只重新分析发生变化的文件。

安装与使用

Claude Code 原生插件安装:

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

通用安装方式(macOS / Linux):

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

也可以指定平台:

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

支持的平台包括:Claude Code、Cursor、VS Code + Copilot、Copilot CLI、Codex、OpenCode、OpenClaw、Antigravity、Gemini CLI、Pi Agent、Vibe CLI、Hermes、Cline、KIMI CLI 等。

常用命令:

# 分析当前项目
/understand

# 使用中文生成图谱说明和 Dashboard UI
/understand --language zh

# 打开可视化仪表盘
/understand-dashboard

# 询问代码库问题
/understand-chat How does the payment flow work?

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

# 深入解释某个文件或函数
/understand-explain src/auth/login.ts

# 生成新人 onboarding 指南
/understand-onboard

# 分析业务域
/understand-domain

# 分析知识库
/understand-knowledge ~/path/to/wiki

# 只分析子目录,适合大型 monorepo
/understand src/frontend

# 提交后自动增量更新图谱
/understand --auto-update

团队共享方式

图谱本质上是 JSON 文件,可以提交到仓库供团队共享。

建议提交:

.understand-anything/knowledge-graph.json

建议忽略本地中间文件:

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

如果图谱超过 10MB,可以使用 Git LFS 管理。

与现有工具的关系

  • 与传统静态分析相比:它不仅抽取结构,还用 LLM 生成语义摘要和业务解释。
  • 与普通 RAG 相比:它强调图谱结构、依赖关系、导览路径和改动影响,而不是只做向量检索。
  • 与 Obsidian / LLM Wiki 相比:它可以把已有知识库转换为交互式图谱,适合做知识网络探索。
  • 与 AI 编程 Agent 相比:它是 Agent 的“项目理解层”,可帮助 Claude Code、Codex、Hermes 等工具更快获得上下文。

关注点

  • 大型项目的初次分析可能需要较长时间和较多模型调用成本。
  • LLM 生成的语义摘要需要结合代码事实校验,不能完全当作源码真相。
  • 如果要在团队中长期使用,需要建立图谱更新策略,例如提交前手动更新或使用 post-commit hook。
  • 对 monorepo 最好先按子目录分区分析,避免一次性图谱过大。

后续研究价值

Understand Anything 值得关注的原因在于,它把“代码理解”从聊天式问答推进到“可视化结构 + 语义解释 + 影响分析 + 导览学习”的复合形态。

可进一步观察:

  • 它在 Hermes / Codex / Claude Code 多 Agent 开发工作流中的实际效果;
  • 图谱是否能成为项目长期知识资产,而不是一次性分析产物;
  • 对大型企业级项目、遗留系统和多语言 monorepo 的表现;
  • 代码图谱与 Obsidian 知识库、LLM Wiki、团队文档之间的联动方式。

链接