SCAST:把代码仓库变成 UML 图和 AI 的 RAG 检索口

开源
代码分析
UML
MCP
AI
Tree-sitter
2026/9/30
·

阅读时间: 大约 7 分钟

SCAST:把代码仓库变成 UML 图和 AI 的 RAG 检索口

SCAST 生成的 UML 类图:SquareCoord、HexCoord、Grid、GridGenerator、Quad、SubQuad 等类的字段与方法,以及继承与关联箭头

接手一个陌生代码库时,最耗时的往往不是读代码,而是建立”类与类之间到底谁继承谁、谁调用谁”的全局图景。SCAST(GitHub 仓库 davidkingzyb/SCAST,MIT 协议,作者 DKZ,2026 年 3 月发布)做的就是这件事:Static Code Analysis and Visualization——把代码解析成抽象语法树(AST),再静态分析后输出 UML 类图、流程图和 AST 树。它的新意不止于画图,还在于把自己包装成一个 MCP Server,让 AI 编程客户端能基于结构化 AST 做精确的代码 RAG 检索。

一、背景:代码可视化的老问题与 AI 时代的新需求

代码转 UML 不是新概念——StarUML、doxygen、SourceTrail 各做过多年。但传统工具要么绑定特定 IDE/语言,要么产出的图无法被 AI 消费。随着 MCP(Model Context Protocol)成为 AI 客户端接工具的标准方式,一个自然的想法是:与其让大模型把整个仓库塞进上下文”盲读”,不如先用解析器把代码结构化,再让 AI 按类名、方法名精确定位到定义处。SCAST 同时踩中了这两个需求。

二、是什么:一条”解析→分析→可视化/检索”流水线

官方描述的底层原理很清晰:解析器把代码解析为 AST → 静态分析 → 用 Mermaid 与 D3 可视化。支持的语言包括 C#、JavaScript、Python、TypeScript、C、C++,底层基于 Tree-sitter,因此可以扩展或自定义更多语言。

使用方式有三档:

  1. 零部署:下载仓库直接用浏览器打开 SCAST.html,或访问官方在线演示页;
  2. 服务端:开发者可用 npm run server 部署到服务器;
  3. MCP Server:把 mcp/index.js 配进 AI 客户端(Claude Desktop 等),传入工作区目录路径即可。

三、两个 MCP 工具:不只是画图

SCAST 作为 MCP Server 暴露了两个工具,这是它区别于普通画图工具的关键:

MCP 工具作用
scast_analysis传入代码文件夹路径,做静态分析生成 AST 树,输出 UML 图、AST 树图、Mermaid 流程图,并返回包含所有类名/方法名及其功能解释的关键词列表,附浏览器查看图表的链接
scast_retriever在分析过的目录上,用类名/方法名/字段名作为关键词做 RAG 检索,SCAST 定位到该符号的定义处并返回源码

这个分工很合理:analysis 负责”建立索引并给全局图”,retriever 负责”按符号精确取片段”。大模型不必再靠模糊的 grep 猜哪个定义是真的——AST 结构本身就是比文本匹配更精确的索引。AI 解释代码功能则通过对接本地 Ollama 实现(README 指向 ai.js,要求先装 Ollama)。

配置方式也很能说明它的定位:在 AI 客户端的 MCP 配置里,把 command 设为 node,args 指向 SCAST/mcp/index.js,后面跟上一个或多个允许访问的目录路径。也就是说,它只暴露你明确列出的工作区,不是无差别读取整个文件系统——这是一个在安全模型上考虑过的细节。分析时它在本地跑 Tree-sitter,图表生成后通过浏览器链接给你看,AI 拿到的只是关键词列表和按需取回的源码片段,上下文窗口不会被整张图塞满。

SCAST 项目吉祥物:手持三叉戟的羊驼,三叉戟暗合项目名 trident 与 Ollama 的意象

四、客观分析:优势与局限

优势:

  1. 基于 Tree-sitter 而非正则,语法分析结果比”用文本匹配画类图”的工具可靠;
  2. 输出 Mermaid/D3 这类文本+可交互格式,图可以直接进文档,也能被二次加工;
  3. MCP 双工具设计把”看全局”与”精确定位”分开,正好匹配 AI 编程助手的工作方式;
  4. 零部署 HTML 模式对临时看一个小仓库极其友好。

局限(口径需注意):

  1. “支持语言”是有条件的:开箱即支持的只有 6 种语言,更多语言要靠 Tree-sitter 自行配置,开箱即用范围远不如一个成熟商业工具宣传的广;
  2. 静态分析能画类关系、方法签名,但无法表达动态行为——运行时多态、反射、依赖注入容器装配出的调用链,图里是看不到的;
  3. 仓库很新(2026 年 3 月发布,open issues 个位数),对大型仓库的性能、嵌套目录的处理、泛型/宏等复杂语法的还原度,官方并未给出评测数字;
  4. 作为 MCP Server,它需要把工作区路径交给本地 Node 进程,本质是本地工具,不适合直接暴露给远端 AI 服务;
  5. 图的样式与布局可读性依赖 D3/Mermaid 的自动排布,复杂项目生成的图可能仍需手动调整才能进文档。

五、适合谁

  • 接手陌生仓库、需要快速建立类关系全局图的工程师;
  • 用 AI 编程客户端(支持 MCP)的团队,想让助手基于 AST 精确定位符号而非全文瞎读;
  • 写技术文档/课件需要自动生成 UML 插图的人——Mermaid 输出可直接版本化进 Git。

如果你只是想给单个函数画个流程图,在线 Mermaid 编辑器更轻;SCAST 的价值在于”整个仓库一次结构化”这件事,以及它和 AI 客户端的那层 MCP 接合。从定位上看,它更像是给 AI 编程助手配的”代码索引器”,而不是一个面向人类的画图工具——图表本身只是副产品,真正被消费的是那份带类名、方法名与解释的关键词清单。

参考来源