代码知识图谱创建
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_b30f8db8/code-knowledge-graph-create
技能介绍
要解决的问题
项目里的依赖关系通常散落在多个文件里:哪个模块导入了谁、哪个类继承了哪个基类、哪个函数在调用别处的实现。靠 grep 或人工梳理,不仅慢,而且很难回答“改了这个接口,谁会受影响”这类跨文件问题。
这个技能把这件事固化成一条流水线:静态解析源码 → 生成 Cypher → 上传到 Neo4j。不需要运行项目,也不需要把整段代码塞进上下文,图谱作为可复用的数据库资产沉淀下来。
技能如何工作
核心是两个随技能打包的脚本,外加一个编排入口:
generate_kg.py:基于 tree-sitter 解析项目里所有 Python 源文件,抽取 Module、Class、Function、Import 四类节点,以及IMPORTS、INHERITS、CALLS、INSTANTIATES等关系,输出kg.cypher。import_to_neo4j.py:把生成的kg.cypher上传到远程 Neo4j,连接配置自动从项目根目录(或任意上级目录)的.neo4j-config.json读取。build_kg.py:编排脚本,自动发现项目根目录与配置文件,一条命令完成“创建 + 上传”,并提供--dry-run、--clear、--skip-generate、--skip-import等选项。
解析阶段会自动排除 .venv、__pycache__、.git、data、images 等目录,并跳过脚本自身。也可以不用编排脚本,直接分步调用根目录脚本,或通过 --uri / --user / --password / --database 显式覆盖配置——优先级为:命令行参数 > 环境变量 > .neo4j-config.json > 内置默认值。上传还支持 --mode shell(走 cypher-shell CLI)和 --dry-run(只统计语句数)。
适用边界与注意点
- 只解析 Python:tree-sitter 侧只集成了
tree-sitter-python,其他语言源码会被忽略。 - 关系不幂等:节点用
MERGE,可以重复导入;关系用CREATE,重复执行会在已存在节点之间产生重复边。代码发生较大变更、需要重建图谱时,建议先清空远程库再导入,例如加--clear。 - 配置必须可达:上传阶段需要能连上远程 Neo4j,凭据放在
.neo4j-config.json里;该文件在项目根目录或上级目录均可被自动发现。 - 静态解析的局限:动态导入、运行期反射、条件分支里延迟发生的调用关系不会被捕获,图谱反映的是源码层面静态可见的结构。
verify_kg.py未打包进技能,它硬编码了特定项目的预期类与函数,只适用于对应项目。
生成图谱后,可以交给配套的 code-knowledge-graph 技能做查询与分析:本技能负责“建图 + 入库”,那个技能负责“查图 + 用图”。
使用场景
- 接手一个 Python 项目,想用图谱看清模块之间的导入与调用关系,便于梳理整体结构。
- 代码库结构发生变化,需要重新生成知识图谱并清空旧数据后再导入 Neo4j。
- 准备把代码关系导入远程 Neo4j,已有 .neo4j-config.json,希望脚本自动读取连接配置。
- 只想检查图谱 Cypher 语句数,不真正上传,先用 dry-run 统计再决定是否导入。
适合人员
- 维护大型 Python 项目的后端工程师,需要在重构前快速定位受影响的模块与调用方。
- 构建开发者工具的工程师,想把代码结构关系沉淀成 Neo4j 中的可查询图谱资产。
- 做代码审计与安全排查的工程师,需要从源码层面核对导入、继承和实例化关系。
- 处理遗留项目的开发者,希望在不运行代码的情况下摸清依赖全貌再制定迁移计划。