axon
为代码库构建结构知识图谱,让 AI 编程助手在修改前精确知道影响范围
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为代码库构建结构知识图谱,让 AI 编程助手在修改前精确知道影响范围
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Axon 项目标志
想象这样一个场景:你对 AI 编程助手说「帮我重构 UserService.validate() 这个方法」。
AI 愉快地开始修改——但它不知道这个方法被 47 个函数直接或间接调用,不知道有 3 条执行流必经此节点,更不知道 payment_handler.py 有 80% 的概率会跟随它一起变动。
结果:重构完成后,线上炸了。
这并非 AI 能力的缺陷,而是本质局限:AI 工作于「平文本」模式。它 grep 调用的字符串,但 grep 找不到间接调用链;它读函数签名,但不知道代码的连接拓扑;它的上下文窗口是有限的,而一个中型代码库的连接关系可以轻松突破这个上限。
AI 需要的不是更多文本,而是一张代码的结构地图——知识图谱。
Axon 就是来解决这个问题的:它将任意代码库索引为结构化知识图谱,通过交互式 Web 仪表板供人类开发者探索,同时通过 MCP 工具暴露给 AI 代理,让 AI 在每次工具调用时都拥有完整的结构上下文。
Axon 的代码理解管道分为 11 个顺序执行阶段,层层递进,最终构建出完整的代码知识图谱:
| 阶段 | 名称 | 产出 |
|---|---|---|
| 1 | 文件遍历 | 收集所有源文件 |
| 2 | 结构处理 | File/Folder 节点 + CONTAINS 边 |
| 3 | 代码解析 | Symbol 节点 + DEFINES 边 |
| 4 | 导入解析 | IMPORTS 边 |
| 5 | 调用链追踪 | CALLS 边 |
| 6 | 继承分析 | EXTENDS / IMPLEMENTS 边 |
| 7 | 类型分析 | USES_TYPE 边 |
| 8 | 社区发现 | Community 节点 + MEMBER_OF 边 |
| 9 | 进程检测 | PROCESS 节点 + STEP_IN_PROCESS 边 |
| 10 | 死代码检测 | 标记 unreachable symbols |
| 11 | 变更耦合 | COUPLED_WITH 边(来自 git 历史) |
最终,代码库被表达为一个包含 623 个符号节点、1847 条边的图谱,涵盖 8 个架构集群和 34 条执行流——所有这些在 4.2 秒内完成。
Axon 默认使用 KuzuDB——一个嵌入式图数据库,支持 Cypher 查询语言,无需独立服务器进程即可运行。pyproject.toml 中还提供了可选的 neo4j 依赖,允许多机协同场景。
核心数据模型(src/axon/core/graph/model.py):
所有节点还包含:签名信息、代码内容、起止行号、内聚度(cohesion)评分等属性。
Axon 当前支持三种语言,通过 tree-sitter 实现:
tree-sitter-pythontree-sitter-typescripttree-sitter-javascript每个语言的 LanguageParser 实现负责从 AST 中提取函数、类、方法、导入、调用和类型注解关系。其中 Python 解析器(python_lang.py)最为复杂,处理了范围推断、装饰器、上下文管理器、match 语句等特殊语法。
Axon 自带一个基于 React + TypeScript 的前端界面,通过 FastAPI 后端服务。三大视图:
界面通过 watch 模式监听文件系统变化(watchfiles 库),通过 SSE(sse-starlette)实时推送图谱更新到浏览器。
Axon 通过 MCP(Model Context Protocol)暴露 15 个工具,供 AI 代理在对话中实时查询代码结构:
| 工具 | 功能 |
|---|---|
list_repos | 列出已索引的代码仓库 |
query | 全文 + 图谱混合搜索 |
cypher | 原生 Cypher 查询 |
impact | 影响半径分析(某符号改变会影响哪些节点) |
call_path | 两节点间调用路径追踪 |
context | 获取符号的上下文(定义 + 调用 + 被调用) |
dead_code | 死代码报告 |
coupling | 文件变更耦合分析 |
communities | 架构集群分析 |
explain | 解释符号类型和用途 |
cycles | 循环依赖检测 |
detect_changes | 分析分支间的图谱差异 |
test_impact | 测试影响范围评估 |
review_risk | 变更风险评估 |
file_context | 文件级上下文(所有相关符号) |
这意味着:AI 代理在每次工具调用时都能「看到」代码的结构上下文,而不仅仅是 grep 到的字符串。
除了图结构查询,Axon 还集成了向量搜索能力:
Axon 通过 pip install axoniq 一键安装:
pip install axoniq
axon analyze . # 索引当前代码库
axon ui # 启动 Web UI(默认 localhost:8420)
axon mcp # 启动 MCP 服务器(stdio 模式)
axon serve --watch # MCP 服务器 + 文件监控 + SSE 推送
依赖环境:Python 3.11+,无需 GPU,不需要数据库服务器(Kuzu 嵌入式)。
注意:Axon 暂无 Docker 支持,不提供 docker-compose.yml。这意味着:
Development Status :: 3 - Alpha)pytest + pytest-asyncio + pytest-covruff linting + type hint 全覆盖(py.typed 标记)docs/frontend-spec.md)+ CONTRIBUTING 指南Axon 代表了代码智能分析的一个新兴方向:从「文本检索」到「结构感知」。传统的代码搜索工具(grep、sourcegraph)基于字符串匹配;Axon 将代码库转化为知识图谱,使结构化查询成为可能。
这一方向与 AI 编程工具的深度集成(MCP 协议)正是当前趋势——让 AI 拥有代码的「空间感」,而不是在一堆文本里盲目搜索。随着 Claude Code、Copilot 等工具的普及,这类中间件的价值将进一步凸显。