代码知识图谱(CKG)

wescode 的代码知识图谱(Code Knowledge Graph):符号级代码理解。


定位

解决问题:大仓找路——grep 过了约 40 万行系统性不够。

CKG 在 tree-sitter 语法树之上构建符号级调用图,提供跨文件引用分析、影响面分析和调用链追踪。


索引架构

10-Pass 管线

CKG 使用增量 10-Pass 管线:

CKG 10-Pass 增量管线

  1. 文件发现
  2. 语法树解析(tree-sitter)
  3. 符号提取
  4. 调用边提取
  5. 跨文件边解析
  6. 歧义消解
  7. 影响面分析
  8. 孤儿函数检测
  9. FTS5 索引
  10. 统计聚合

增量更新

单文件变更时只重跑受影响的 Pass:

文件修改事件 → indexFileViaWorker
 → 重新提取符号/调用边
 → resolveQualifiedEdges(单文件 delta)
 → 更新 FTS5

存储

CKG 索引存在 per-workspace Cell 内:

cells/ws-{hash}/index/code.db

CKG 是可重建数据——有完善的 wipe-rebuild 策略。PRAGMA user_version 不匹配时自动重建。


调用边解析

INV-CKG-EDGE-01

调用边存储与解析对 receiver 限定名不做大小写猜测:

三级回退

  1. 精确匹配:Type.Method(symbols.parent 匹配)
  2. 包路径匹配:file_path LIKE %/pkg/%
  3. 裸名单候选:符号表中恰好一个同名符号时绑定;多候选保持 unresolved

上下文注入

CKG 分析结果注入到 AI 的上下文中:

注入通过 CellSpec.HostEnvironment 的 Context Assembly 机制实现。


UI 集成

HoverProvider

编辑器悬停时显示 CKG 信息:调用者数量、被调用关系。

CodeLensProvider

函数定义上方显示调用统计。

项目概览面板

三区域布局 + D3 交互式调用图。

索引进度

状态栏 indexProgressBar:索引中显示进度,完成后自动消失。


跨语言支持

通过 21-polymorphic-dispatch.md 定义的多态分派:


相关文档