代码仓库理解:Graphify、CodeGraph、FastContext

代码仓库理解项目系列博文:

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拿到引用块,直接去读对应位置的文件内容,省掉自己反复globgrep的过程。

探索循环分四步走:先把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去验证。

适用场景:

  • 发布前不知道这次改动到底风险在哪
  • 出问题后不知道该从哪次提交开始回溯
  • 评审时很难快速抓住结构上的关键变化
相关推荐
TechEdu2026061 天前
[人工智能]Claude、GPT、Gemini、Copilot与Llama:概念、架构、应用与评估
人工智能·ai·llm
长谷深风1111 天前
为什么你的 Tool 总被模型选错?
java·大数据·ai·llm·ai agent·工具设计·agent设计
boooooooom1 天前
尝尝咸淡:从朴素 RAG 到 Graph RAG——一个烹饪问答系统的三层检索升级之路
前端·后端·llm
武子康1 天前
33B 音画模型塞进 Apple Silicon,h3.c 重写了哪些 Runtime 职责
人工智能·llm·agent
知几蜗牛1 天前
一张图看懂AI、机器学习、深度学习和生成式AI之间的关系
llm
XLYcmy1 天前
小红书 算法一面 十一
google·meta·llm·负载均衡·token·moe·glam
谢白羽1 天前
Mooncake在LLM的kv cache offload
人工智能·llm·论文·agent·mooncake
牧艺2 天前
DeepSeek Harness 上手:一切皆插件的 Agent 运行时,核心流程怎么走
llm·agent·deepseek
魔术师Grace2 天前
模型“开源”了,就能直接拿来做 Agent 吗?
llm·aigc·agent
夫子3962 天前
【第三部分:第一个 Agent 应用】10. 不使用框架,手写一个最小 Agent
llm·agent·ai编程