代码仓库理解项目系列博文:
- 用AI来读代码库:DeepWiki、DeepWiki-Open、OpenDeepWiki、Zread
- 代码库分析项目:GitNexus、Code Review Graph、CodeFlow
- 代码库增强工具:Understand-Anything、Claude-Context
Graphify
官网,零配置、支持全模态、可本地运行的开源(GitHub,80.7K Star,7.9K Fork)知识图谱工具,能自动构建可交互导航的知识图谱,具备反向链接与关系溯源功能,实现高达71.5倍的Token消耗节省,将此前流行的原始笔记法工作流推向成熟且自动化的新阶段。
实现全模态文件的自动图谱化,从根本上免除手动整理的麻烦。内置统一管线,能够针对不同类型文件进行自动化解析:
- 代码:通过本地AST解析器(tree-sitter)直接提取结构信息。
- 文档(PDF、Markdown等):自动拆分文本与语义单元。
- 图像(截图、流程图等):调用视觉模型(如Claude Vision)完成概念提取与关系识别。
具体来说,支持如下文件类型:
| 类型 | 扩展名 | 提取方式 |
|---|---|---|
| 代码 | .py、.ts、.js、.go、.rs、.java、.c、.cpp、.rb、.cs、.kt、.scala、.php |
tree-sitter AST+调用图+docstring/注释中的rationale |
| 文档 | .md、.txt、.rst |
通过CC提取概念、关系和设计动机 |
| 论文 | .pdf |
引文挖掘+概念提取 |
| 图片 | .png、.jpg、.webp、.gif |
ClaudeVision:截图、图表、任意语言都可以 |
支持:
- 多源输入:本地代码、论文PDF、网页、Twitter
- 多种导出:可视化HTML、Neo4j、Obsidian、SVG
- 生态集成:Git Hooks、Claude、Codex等AI编码助手
整个过程无需人工预处理或分类,用户只需将文件放入目标文件夹即可。
通过"本地AST解析"与"并行LLM子代理语义提取"相结合的双阶段流程,实现71.5倍的Token消耗优化。
确定性本地提取:对于代码文件,完全在本地进行AST解析,不调用LLM,不产生任何Token消耗。
智能语义抽取:仅对非代码内容(文档、图片等)启动并行的LLM子代理进行一次性语义抽取。同时,工具采用SHA256缓存机制,在重复运行时仅处理已变更的文件,避免了重复计算。
在包含代码、论文、图片等共52个文件的混合测试场景下,Graphify每次查询的Token消耗相比直接读取原始文件降低71.5倍。
| 指标 | 数值 |
|---|---|
| Corpus tokens(52 files,naive full-context) | ~123,488 |
| Average query cost(BFS subgraph) | ~1,726 tokens |
| Reduction ratio | 71.5x |
开箱即用与透明可信:设计追求极简,无需配置向量数据库、无需进行嵌入计算、也无需复杂设置,真正做到开箱即用。
其社区聚类基于图拓扑结构,利用Leiden算法完成,不依赖于向量嵌入。用户只需在目标目录下执行一条命令(/graphify .),即可一键生成包含交互式HTML图谱、分析报告及持久化数据文件的完整知识库。
Graphify为图谱中的每一项关联都添加清晰的类型标注(如原文提取、模型推断)和置信度,确保知识来源的透明性与结果的可信度。
实战
安装:
bash
pip install graphifyy && graphify install
graphify install --platform claw
- Codex用户:需在配置文件
~/.codex/config.toml的[features]部分启用multi_agent = true,以激活并行LLM子代理模式 - OpenClaw用户:对多代理并行的支持尚在初期,目前仅支持顺序提取模式。
安装完成后,进入目标目录并执行/graphify .命令即可开始构建;执行成功后,当前目录将生成graph.html文件,在浏览器中打开即可浏览交互式知识图谱。
支持更多实用功能:
--watch监听模式:实时监控代码文件变动并触发AST重解析,自动更新图谱。- Git钩子集成:可在代码提交或分支切换后自动重建图谱。
--update增量更新:当新增资料时,仅更新相关节点与关联,无需重建整个图谱,使知识库能够持续生长。
命令行工具使用指南
| 命令 | 说明 |
|---|---|
/graphify |
对当前目录运行,构建图谱 |
/graphify ./raw |
对指定目录运行 |
/graphify ./raw --mode deep |
更激进地抽取INFERRED边(推测关系) |
/graphify ./raw --update |
只重新提取变更文件,并合并到已有图谱(增量更新) |
/graphify ./raw --cluster-only |
只重新聚类已有图谱,不重新提取 |
/graphify ./raw --no-viz |
跳过HTML可视化,只生成Report+JSON |
/graphify ./raw --obsidian |
额外生成Obsidian笔记库文件(可选) |
添加外部资源
| 命令 | 说明 |
|---|---|
/graphify add https://arxiv.org/abs/1706.03762 |
拉取论文、保存并更新图谱 |
/graphify add https://x.com/karpathy/status/... |
拉取推文内容 |
/graphify add <URL> --author "Name" |
标记原作者 |
/graphify add <URL> --contributor "Name" |
标记是谁把它加入语料库的 |
查询与分析
| 命令 | 说明 |
|---|---|
/graphify query "what connects attention to the optimizer?" |
发起提问 |
/graphify query "..." --dfs |
追踪一条具体路径 |
/graphify query "..." --budget 1500 |
把预算限制在1500Token |
/graphify path "DigestAuth" "Response" |
生成两点之间的路径 |
/graphify explain "SwinTransformer" |
解释特定实体的上下文 |
导出与集成
| 命令 | 说明 |
|---|---|
/graphify ./raw --watch |
文件变更时自动同步图谱(代码:立即更新;文档:提醒你) |
/graphify ./raw --wiki |
构建可供Agent抓取的Wiki(index.md+每个社区页面) |
/graphify ./raw --svg |
导出Graphviz的.svg文件 |
/graphify ./raw --graphml |
导出.graphml(Gephi、yEd可用) |
/graphify ./raw --neo4j |
生成Neo4j图数据库导入用的cypher.txt |
/graphify ./raw --neo4j-push bolt://localhost:7687 |
直接推送到运行中的Neo4j实例 |
/graphify ./raw --mcp |
启动MCPStudioServer(用于调试) |
Git Hooks 管理
| 命令 | 说明 |
|---|---|
graphify hook install |
安装Git Hooks(跨平台,在commit和切分支后自动重建图谱) |
graphify hook uninstall |
卸载Git Hooks |
graphify hook status |
查看当前Hooks状态 |
为不同AI编程助手配置
| 命令 | 说明 |
|---|---|
graphify claude install |
为ClaudeCode安装规则(CLAUDE.md+PreToolUse hook) |
graphify claude uninstall |
卸载Claude规则 |
graphify codex install |
为Codex安装规则(AGENTS.md) |
CodeGraph
项目主页,开源(GitHub,58.7K Star,3.6K Fork)预索引代码库知识图谱工具。
功能:
- 智能上下文构建:一次工具调用即可返回入口点、相关符号和代码片段
- 全文搜索:基于FTS5的符号名称即时搜索
- 影响分析:修改前追踪调用者、被调用者和完整影响范围
- 自动同步:文件监听器使用原生OS事件,代码修改后图谱自动更新
- 20+语言支持:TypeScript、Python、Go、Rust、Java、C/C++、Swift等
- 框架路由感知:识别14种Web框架的路由文件,关联URL到处理函数
- 跨语言桥接:Swift↔ObjC、React Native Bridge、Expo Modules等
- 100%本地:无数据外传,无API Key,纯SQLite数据库
工作原理
- 提取:用
tree-sitter解析源码AST,提取符号节点和调用边 - 存储:存入本地SQLite数据库
- 解析:解析函数调用→定义、import→源文件、类继承等关系
- 自动同步:MCP服务器模式下监听文件变更,增量更新图谱
实战
安装:
bash
curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh
在代码库目录执行命令codegraph init -i,执行成功效果:
- 在项目根目录创建
.codegraph/目录 - i表示同时建立索引,等同于init index- 索引数据存储在
.codegraph/codegraph.db,SQLite数据库
其他命令:
codegraph index:全量重建索引codegraph index --force:强制全量重建索引codegraph sync:增量更新索引codegraph status:查看索引统计信息codegraph query <关键词>:搜索符号(函数/类/方法名)codegraph callers <符号>:查找函数被调用方codegraph callees <符号>:查找函数调用方codegraph impact <符号>:分析修改某符号的影响范围codegraph context <任务描述>:为AI构建上下文codegraph files:查看已索引的文件结构codegraph serve --mcp:启动MCP服务器
启动MCP后,AI代理可调用以下能力:
codegraph_query:搜索符号codegraph_context:为任务构建相关代码上下文codegraph_callers:调用链分析codegraph_callees:调用链分析codegraph_impact:影响分析
在CC等客户端配置:
json
{
"mcpServers": {
"codegraph": {
"command": "/absolute/bin/codegraph",
"args": ["serve", "--mcp"]
}
}
}
FastContext
论文,微软开源(GitHub)专门给Coding Agent 做代码仓库探索的SubAgent模型,HF模型。
代码库已删除??404

架构图

思路:把探索从解题流程里拆出来,交给专门Sub-Agent去做,主Agent不再自己翻仓库,而是给FastContext发一个自然语言查询,等它返回紧凑的文件路径和行号范围。
三个工具:
READ:返回带行号的文件内容GLOB:按模式匹配发现文件路径GREP:基于ripgrep的正则搜索
全是只读的,FastContext不修改任何文件,职责就是在仓库里定位相关代码,然后以<final_answer>标签返回结果(引用块,Citation Block):
<final_answer>
/path/to/repo/src/router.py:42-58
/path/to/repo/tests/test_router.py:101-119
</final_answer>
主Agent拿到引用块,直接去读对应位置的文件内容,省掉自己反复glob和grep的过程。
探索循环分四步走:先把Issue翻译成搜索意图,然后在一轮里并行发出多个工具调用覆盖不同假设,接着根据工具返回的结果调整下一轮搜索方向,最后输出精确的文件-行号引用。
并行工具调用:独立的读取和搜索可在同一个exploration turn里同时发出,不用串行等待,减少总轮次和延迟。
模型家族覆盖4B到30B参数,4B版本基于Qwen3-4B-Instruct,30B版本基于Qwen3-Coder-30B-A3B。上下文长度支持到262K tokens。
两阶段训练:
- SFT,训练数据按Sub-Agent运行时行为拆成三类:
parallel_toolcalls(首轮广搜)、multiturn_traj(多轮证据收集)、linerange(精确行号引用)。 - RL,用GRPO算法,
reward函数组合文件级和行级 F1、并行探索的有界奖励、以及格式惩罚。
用SGLang起服务,指定--tool-call-parser qwen,暴露OpenAI兼容chat completions接口:
bash
python3 -m sglang.launch_server \
--model-path FastContext-1.0-4B-SFT \
--tool-call-parser qwen \
--context-length 262144 \
--trust-remote-code \
--dtype bfloat16 \
--host 0.0.0.0 \
--port 30000 \
--tp-size 1 \
--mem-fraction-static 0.8
CLI 侧用uv tool install .安装后,直接在目标仓库目录下运行:
bash
fastcontext \
--query "Find the files that implement authentication" \
--max-turns 6 \
--traj .fastcontext/trajectory.jsonl
加--citation参数只返回<final_answer>块,方便主Agent解析。
Python API提供异步接口:
py
from fastcontext.agent.agent_factory import make_fastcontext_agent
agent = make_fastcontext_agent(
trajectory_file=".fastcontext/trajectory.jsonl",
work_dir="/path/to/repo",
)
answer = await agent.run(
prompt="Find where database migrations are defined",
max_turns=6,
citation=True,
)
CodeDelta
基于CodeGraph的开源(GitHub,18 Star,3 Fork)追代码变化的工具。
Delta View结构化地输出:
- 哪些符号变了
- 依赖边有没有变化
- 影响面大概多大
- 风险更可能落在哪一类?配置还是数据库
- 建议先看哪些文件
Trace View:问题追踪,根据候选提交记录,一键跳回Delta去验证。
适用场景:
- 发布前不知道这次改动到底风险在哪
- 出问题后不知道该从哪次提交开始回溯
- 评审时很难快速抓住结构上的关键变化