代码仓库理解: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去验证。

适用场景:

  • 发布前不知道这次改动到底风险在哪
  • 出问题后不知道该从哪次提交开始回溯
  • 评审时很难快速抓住结构上的关键变化
相关推荐
倾颜4 小时前
AI 聊天长期记忆的向量化处理:从"关键词匹配"到"换种说法也能找到"
llm·agent·next.js
AI小码4 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
程序喵大人7 小时前
【AI专栏】图解Transformer - 第05章:LLM 推理工程
人工智能·深度学习·llm·transformer
DigitalOcean9 小时前
GPU 算力降本指南:拆解大模型推理账单的 4 个隐藏加价坑
llm·agent
Token炼金师10 小时前
生产化的鸿沟:流式、缓存、可观测、红蓝对抗、限流降级与评测 —— 工程化六渡
人工智能·llm·可观测性·红蓝对抗·缓存策略·限流降级·评测体系
吃饱了得干活10 小时前
LangChain 模型调用方案:invoke、stream、batch 的同步与异步
langchain·llm
千桐科技15 小时前
qKnow 智能体构建平台开源版 v2.2.3 发布:Agent Bot 支持用户自定义工具编排
开源·大模型·llm·工作流·qknow·智能体构建平台
武子康16 小时前
调查研究-224 Prefill 与 Decode 分离:高并发 LLM Serving 的下一层架构
人工智能·ai·架构·llm·gpu·vllm·sglang
zzzll111117 小时前
Typora插件开发指南:打造专属IDE式写作环境
ide·学习·计算机·大模型·llm·知识