基于 GraphRAG 的智能代码分析平台,支持代码结构解析、业务语义推断、自然语言问答和代码溯源。
| 功能 | 说明 | 状态 |
|---|---|---|
| 🔍 代码结构解析 | 类、方法、字段、调用关系、继承关系 | ✅ 已完成 |
| 🧠 智能问答 | 自然语言查询代码,四层架构,28个模板,三层fallback | ✅ 已完成 |
| 📊 图谱可视化 | WebGL 渲染,多布局切换,5000+ 节点流畅 | ✅ 已完成 |
| 🔗 代码溯源 | Git 提交历史追溯,定位代码作者 | ✅ 已完成 |
| 📝 代码定位 | Monaco Editor + 面包屑导航 + Git 历史版本对比 | ✅ 已完成 |
| 🔄 自动同步 | Webhook + 定时任务自动更新图谱 | ✅ 已完成 |
| 🌐 多 LLM 支持 | OpenAI / 通义千问 / DeepSeek / Anthropic / Azure | ✅ 已完成 |
| 📦 ZIP 上传导入 | 上传 ZIP 文件快速导入项目代码 | ✅ 已完成 |
| 📂 文件夹拖拽导入 | 拖拽文件夹批量导入项目代码 | ✅ 已完成 |
| 🔎 代码质量分析 | 复杂度、异味、安全风险、热点检测、死代码发现 | ✅ 已完成 |
| 🧩 MCP 服务暴露 | 12 个 MCP Tool,SSE + stdio 双传输 | ✅ 已完成 |
| 🎯 向量语义检索 | TF-IDF + 余弦相似度混合检索 (70% 向量 + 30% Jaccard) | ✅ 已完成 |
| 🏷️ 业务语义推断 | 业务域、流程、实体自动识别 | ✅ 已完成 |
| 🏗️ 多模块支持 | Maven/Gradle 多模块检测,模块依赖图,跨模块调用推断 | ✅ 已完成 |
| 👥 项目成员管理 | OWNER/ADMIN/MEMBER 角色体系 | ✅ 已完成 |
| 📖 代码阅读策略 | Pipeline (轻量) / Agent (深度) 双策略自动路由 | ✅ 已完成 |
| 🌙 深色主题 | 赛博朋克风格暗色模式,90+ CSS 变量,主题感知图谱渲染 | ✅ 已完成 |
| 💬 流式问答 | SSE 实时 Token 流式输出,V2 四层管道阶段指示 | ✅ 已完成 |
| 🔁 多轮对话 | 上下文感知追问,代词消解,相似问题复用 | ✅ 已完成 |
# 1. 克隆项目
git clone https://github.com/DaiOwen/code-knowledge-graph.git
cd code-knowledge-graph
# 2. 创建配置文件
cp .env.example .env
# 编辑 .env 文件,配置 LLM_API_KEY 等必要参数
# 3. 启动所有服务
docker-compose -f docker-compose.prod.yml up -d
# 4. 访问系统
# 前端: http://localhost
# 后端: http://localhost:8080/api
# Neo4j Browser: http://localhost:7474# 1. 启动基础设施
docker-compose up -d neo4j postgres redis
# 2. 启动后端
cd backend
export LLM_API_KEY=your-api-key
mvn spring-boot:run
# 3. 启动前端
cd frontend
npm install
npm run dev| 软件 | 版本 | 说明 |
|---|---|---|
| Docker | 20.10+ | 容器化部署 |
| Docker Compose | 2.0+ | 服务编排 |
| Java | 17+ | 本地开发后端 |
| Node.js | 18+ | 本地开发前端 |
| Maven | 3.8+ | 后端构建 |
| codegraph | latest | 代码解析引擎(Docker 部署已内置) |
| 文档 | 说明 |
|---|---|
| 完整操作手册 | 快速启动、项目管理、代码同步、智能问答、API 接口 |
| 部署运维指南 | 生产环境部署与运维配置 |
| 用户快速上手 | 5 分钟快速上手指南 |
| 系统架构设计 | 系统架构与详细设计文档 |
| 项目进度与里程碑 | 开发进度与里程碑追踪 |
| 后续开发计划 | 后续开发路线图 |
| 渐进式优化设计方案 | 详细设计文档 |
| Phase 1 实施计划 | 问答系统重构实施计划 |
| MCP 服务暴露设计 | MCP Tool 设计与实现 |
| MCP 集成使用说明 | MCP 客户端接入指南 |
问题: "谁调用了 createOrder 方法?"
回答:
createOrder 方法被以下位置调用:
1. OrderController.createOrder()
文件: src/main/java/OrderController.java:25
2. OrderService.processOrder()
文件: src/main/java/OrderService.java:42
- 🔵 蓝色节点:类/接口
- 🟢 绿色节点:方法
- 🟡 黄色节点:模块
- 🔴 红色节点:业务域
- 🟠 橙色节点:业务流程/实体
- 绿色实线箭头:CALLS 调用关系
- 蓝色虚线:EXTENDS / IMPLEMENTS 继承/实现
- 深色模式下自动切换为霓虹色调,支持 4 种布局(力导向/层次/环形/网格)
支持四种导入方式:
- Git URL 克隆 — 输入仓库地址自动克隆
- ZIP 文件上传 — 上传 ZIP 压缩包导入
- 文件夹拖拽 — 拖拽本地文件夹批量导入
- 本地路径 — 指定服务器本地路径导入
支持三种同步方式:
- Webhook 自动触发 — GitLab / GitHub / Gitee Push Event
- 定时增量同步 — 每小时检查更新
- 手动触发 — API 或界面操作
系统支持亮色/深色双主题,通过侧边栏或设置页切换:
- 亮色模式:iOS 风格,白色/半透明背景,蓝色主色调 (#007AFF)
- 深色模式:赛博朋克风格,深蓝背景,青色主色调 (#00f0ff) + 发光效果
- 90+ CSS 变量 (
--ckg-*命名空间) 覆盖全局样式 - 图谱节点、Monaco 编辑器、Element Plus 组件均随主题自动适配
- 300ms 平滑过渡动画
说明:代码质量分析基于项目已有的 Neo4j 知识图谱数据,采用自研启发式分析器,未依赖 SonarQube / PMD / Checkstyle 等外部工具,解析完成后即可使用,零配置零依赖。
分析器通过 3 条 Cypher 查询从 Neo4j 获取原始数据:
| 查询 | 数据 | 用途 |
|---|---|---|
MATCH (m:Method) → name, fullName, filePath, startLine, endLine, signature |
所有方法节点 | 异味检测、安全风险、热点、方法指标 |
MATCH (c:Class) → name, fullName, filePath |
所有类节点 | 统计 totalClasses |
MATCH (caller:Method)-[:CALLS]->(m:Method) → 被调方法的 fullName |
调用关系边 | 死代码检测 |
1. 方法指标(MethodMetrics)— 纯统计
| 指标 | 计算方式 |
|---|---|
| 方法行数 | endLine - startLine(含空行和注释) |
| 平均/中位数行数 | 全部方法行数的描述性统计 |
| 长方法 | 行数 > 50 行 |
| 超长方法 | 行数 > 100 行 |
| 长方法占比 | longMethodCount / totalMethods × 100% |
2. 代码异味(Code Smells)— 阈值 + 签名解析
| 类型 | 检测方式 | 阈值 | 严重性 |
|---|---|---|---|
| VERY_LONG_METHOD | endLine - startLine > 100 |
100 行 | HIGH |
| LONG_METHOD | endLine - startLine > 50 |
50 行 | MEDIUM |
| TOO_MANY_PARAMETERS | 解析方法签名中的逗号数(正确处理泛型 <> 嵌套,如 Map<String, Integer> 计为 1 个参数) |
> 5 个参数 | MEDIUM |
| POOR_NAMING | 方法名长度 ≤ 2(排除 go/do/id/ok) | — | LOW |
枚举中还声明了
DEEP_NESTING、DUPLICATE_CODE、GOD_CLASS,暂未实现检测逻辑。
3. 安全风险(Security Risks)— 方法名关键词匹配
对方法名做 toLowerCase().contains(keyword) 匹配,分两组:
| 类型 | 关键词 | 严重性 |
|---|---|---|
| SENSITIVE_OPERATION | password, passwd, secret, token, auth, login, credential, encrypt, decrypt, hash, salt, key, certificate, validate, verify, check, sanitize, escape, encode | MEDIUM |
| POTENTIAL_INJECTION | exec, execute, eval, runtime, process, script, sql, query, statement, upload, download, file, read, write, delete, remove, drop | HIGH |
去重逻辑:同一方法名 + 类型只保留严重性最高的。>
4. 死代码检测(Dead Code)— 知识图谱调用关系分析
核心逻辑:如果一个 Method 节点不是任何 CALLS 边的目标 → 没有被其他方法调用 → 可能是死代码。
排除规则(以下方法即使无显式调用者也不算死代码):
- 框架方法:
toString、hashCode、equals、clone、compareTo等 - 构造函数:
<init>、<clinit> - Getter / Setter / 谓词:
get*、set*、is*、has*、can*、should* - 入口方法:
main、init、setup、run、handle、onCreate、doGet等 Spring/Servlet 生命周期方法
置信度估算(基础 0.5,范围 0.1 ~ 0.95):
- 方法名以
_或internal开头:+0.2(更像私有死代码) - 文件路径含
/test/:-0.3(测试框架调用,非死代码可能性大) - 方法名以
helper或util开头:+0.1
按置信度降序排列,最多返回 50 个候选。
5. 热点方法(Hotspots)— 启发式复杂度估算
estimatedComplexity = lines × 0.3 + paramCount × 2 + 名称加分
名称加分:
- 含
process/handle/execute:+5 - 含
validate/check/verify:+3 - 含
parse/convert/transform:+4
筛选:复杂度 > 5 的方法,按复杂度降序,最多返回 20 个。风险等级:>20 → HIGH,>10 → MEDIUM,其余 → LOW。
⚠️ 这不是真正的圈复杂度(Cyclomatic Complexity),代码注释也明确说明"真正的圈复杂度需要解析AST"。
起始 100 分,扣分项:
| 扣分项 | 每项扣分 |
|---|---|
| HIGH 代码异味 | -3 |
| MEDIUM 代码异味 | -1.5 |
| LOW 代码异味 | -0.5 |
| HIGH 安全风险 | -5 |
| MEDIUM 安全风险 | -2 |
| 长方法占比 | -0.5 × 百分比 |
最低 0 分。评分 ≥ 80 为"优秀",≥ 60 为"一般",< 60 为"较差"。
| 优势 | 局限 |
|---|---|
| 零配置零依赖,解析完即可用 | 行数用 endLine - startLine 估算,非真正有效代码行 |
| 死代码检测利用图谱 CALLS 关系,比纯静态分析更有价值 | 安全风险只看方法名,不看代码内容/数据流,误报率较高 |
| 与项目深度集成,每个发现可直接跳转到源码 | 缺少深层嵌套、重复代码、上帝类的检测 |
| — | 没有圈复杂度、认知复杂度等标准指标 |
code-knowledge-graph/
├── backend/ # Spring Boot 后端
│ ├── src/main/java/ # Java 源码
│ │ └── com/example/ckg/
│ │ ├── controller/ # REST API 接口 (9 个控制器)
│ │ ├── service/
│ │ │ ├── parse/ # 代码解析 (13 个文件)
│ │ │ ├── qa/ # 智能问答 (21 个文件)
│ │ │ │ └── code/ # 代码阅读策略 (7 个文件)
│ │ │ ├── project/ # 项目管理 (5 个文件)
│ │ │ ├── quality/ # 代码质量分析
│ │ │ ├── semantic/# 业务语义推断 (7 个文件)
│ │ │ ├── sync/ # 增量同步 (2 个文件)
│ │ │ ├── webhook/ # Webhook 处理
│ │ │ ├── llm/ # LLM 适配 (2 个文件, 支持 OpenAI/Azure/Qwen/DeepSeek/Anthropic)
│ │ │ └── user/ # 用户认证
│ │ ├── entity/ # JPA 实体 (9 个)
│ │ ├── repository/ # 数据访问层 (9 个)
│ │ ├── config/ # Spring 配置 (8 个)
│ │ ├── security/ # JWT 认证 + 文件安全 (3 个)
│ │ ├── dto/ # 请求/响应 DTO (9 个)
│ │ ├── common/ # Result<T>, ErrorCode
│ │ ├── exception/ # BusinessException + GlobalExceptionHandler
│ │ └── mcp/ # CKG 自身 MCP Server (15 个)
│ │ ├── McpProtocolHandler, McpToolHandler, McpToolResult
│ │ ├── McpSseTransport, McpStdioTransport, McpServerBootstrap
│ │ └── tools/ # 12 个工具实现
│ ├── Dockerfile # 后端 Docker 镜像
│ └── pom.xml # Maven 配置
├── frontend/ # Vue3 前端
│ ├── src/ # 前端源码
│ │ ├── views/ # 页面组件 (7 个: Home, Login, Settings, ProjectList, ProjectDetail, Graph, QA)
│ │ ├── components/ # 功能组件 (5 个: AppIcon, FileViewer, ChatInput, SessionSidebar, MessageList)
│ │ ├── stores/ # Pinia 状态管理 (3 个: user, theme, qa)
│ │ ├── api/ # API 服务层 (7 个: user, project, graph, qa, file, parse, quality)
│ │ ├── assets/icons/ # SVG 图标 (17 个)
│ │ └── router/ # 路由配置
│ ├── Dockerfile # 前端 Docker 镜像
│ └── package.json # NPM 配置
├── docker/ # Docker 配置
│ └── nginx/ # Nginx 反向代理配置
├── docs/ # 文档
│ ├── superpowers/ # 设计和计划文档
│ │ ├── specs/ # 设计方案
│ │ └── plans/ # 实施计划
│ ├── architecture/ # 架构设计文档
│ ├── deployment/ # 部署运维文档
│ └── user/ # 用户文档
├── docker-compose.yml # 开发环境编排(仅基础设施)
├── docker-compose.prod.yml # 生产环境编排(全栈)
├── .env.example # 环境变量模板
├── CONTRIBUTING.md # 贡献指南
├── CHANGELOG.md # 变更日志
└── LICENSE # MIT 许可证
# .env 文件
# LLM API (必填)
LLM_PROVIDER=openai # 支持: openai, azure, qwen, deepseek, anthropic
LLM_API_KEY=sk-your-key # API 密钥
LLM_MODEL=gpt-4o # 模型名称
# LLM_BASE_URL= # 可选: 自定义 API 端点
# 数据库密码 (建议修改默认值)
POSTGRES_PASSWORD=your-password
NEO4J_PASSWORD=your-password
# JWT 密钥 (建议修改默认值)
JWT_SECRET=your-jwt-secret| 提供者 | LLM_PROVIDER | LLM_MODEL 示例 | 说明 |
|---|---|---|---|
| OpenAI | openai |
gpt-4o |
也支持 OpenAI 兼容接口 |
| Azure OpenAI | azure |
gpt-4o |
Azure 部署的 OpenAI |
| 通义千问 | qwen |
qwen-max |
阿里云 DashScope |
| DeepSeek | deepseek |
deepseek-chat |
DeepSeek 官方 API |
| Anthropic | anthropic |
claude-sonnet-4-20250514 |
Claude 系列 (OpenAI 兼容模式) |
| 讯飞星程 | openai |
astron-code-latest |
OpenAI 兼容模式 + LLM_BASE_URL |
通过 application.yml 中 ckg.code-reading 前缀配置:
| 配置项 | 默认值 | 说明 |
|---|---|---|
pipeline.max-lines |
800 | Pipeline 模式最大读取行数 |
pipeline.max-files |
15 | Pipeline 模式最大读取文件数 |
pipeline.timeout-seconds |
15 | Pipeline 模式超时时间 |
agent.max-lines |
1500 | Agent 模式最大读取行数 |
agent.max-files |
20 | Agent 模式最大读取文件数 |
agent.max-rounds |
3 | Agent 模式最大阅读轮数 |
agent.timeout-seconds |
30 | Agent 模式超时时间 |
router.deep-reading-intents |
BUSINESS_FLOW,IMPACT_ANALYSIS,CODE_EXPLANATION | 触发 Agent 模式的意图类型 |
router.confidence-threshold |
0.6 | 低于此置信度触发 Agent 模式 |
系统通过 MCP (Model Context Protocol) 暴露 12 个工具,支持 AI 编码助手直接访问知识图谱:
| Tool | 说明 |
|---|---|
ckg_project_list |
列出所有已解析项目 |
ckg_project_create |
从 Git 仓库创建项目 |
ckg_project_parse |
触发全量代码解析 |
ckg_project_parse_progress |
查询解析进度 |
ckg_file_tree |
获取项目文件树 |
ckg_file_content |
获取文件内容 |
ckg_graph_search |
搜索图谱节点 |
ckg_graph_callees |
查询方法调用链 |
ckg_graph_callers |
查询方法被谁调用 |
ckg_graph_impact |
影响分析(修改某方法的影响范围) |
ckg_graph_node_detail |
获取节点详情及关系 |
ckg_qa_ask |
自然语言问答 |
传输方式:
- SSE 模式(默认):
GET /api/mcp/sse+POST /api/mcp/message - stdio 模式:启动参数添加
--mcp.stdio
安全机制:
- 所有工具输入均进行 Cypher 注入防护(关键词黑名单、参数绑定校验)
- 方法名/节点类型等参数通过正则白名单验证
- 图谱搜索限制返回数量,防止数据泄露
详见 MCP 集成使用说明。
| 端点分类 | 限流策略 | 说明 |
|---|---|---|
| 通用 API | 30 次/分钟/IP | Nginx + Redis 双层限流 |
| QA 问答 | 10 次/分钟/IP | 防止 LLM API 滥用 |
| 代码解析 | 5 次/分钟/IP | 解析为资源密集操作 |
超出限流返回 HTTP 429,响应头包含 X-RateLimit-Limit 和 X-RateLimit-Remaining。
启动后端后,访问 Swagger UI:http://localhost:8080/api/swagger-ui.html
| 接口 | 方法 | 说明 |
|---|---|---|
/api/auth/register |
POST | 用户注册 |
/api/auth/login |
POST | 用户登录,返回 JWT |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/projects |
GET | 项目列表 |
/api/projects |
POST | 创建项目 |
/api/projects/{id} |
GET | 项目详情 |
/api/projects/{id} |
PUT | 更新项目名称/描述 |
/api/projects/{id} |
DELETE | 删除项目 |
/api/projects/{id}/parse |
POST | 触发解析(便捷接口) |
/api/projects/{id}/tasks |
GET | 项目解析任务列表 |
/api/projects/{id}/tasks/latest |
GET | 最新解析任务 |
/api/projects/{id}/members |
GET | 项目成员列表 |
/api/projects/{id}/members |
POST | 添加项目成员 |
/api/projects/{id}/members/{memberUserId} |
DELETE | 移除项目成员 |
/api/projects/{id}/modules |
GET | 项目模块列表 |
/api/projects/{id}/module-dependencies |
GET | 模块依赖图 |
/api/projects/import-zip |
POST | ZIP 上传导入 |
/api/projects/import-folder |
POST | 文件夹拖拽导入 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/parse/full/{id} |
POST | 全量解析 |
/api/parse/incremental/{id} |
POST | 增量解析 |
/api/parse/progress/{id} |
GET | 解析进度 |
/api/parse/task/{taskId} |
GET | 查询指定任务状态 |
/api/parse/tasks/{projectId} |
GET | 项目任务列表 |
/api/parse/cancel/{taskId} |
POST | 取消任务 |
/api/parse/sync/{id} |
POST | 强制同步 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/qa/ask |
POST | 快速问答(V1,无会话) |
/api/qa/ask-v2 |
POST | V2 四层架构问答 |
/api/qa/stream |
POST | SSE 流式问答(V1 管道) |
/api/qa/stream-v2 |
POST | SSE 流式问答(V2 四层架构,含阶段事件) |
/api/qa/sessions |
GET | 问答会话列表 |
/api/qa/sessions |
POST | 创建问答会话 |
/api/qa/sessions/{id} |
DELETE | 删除会话 |
/api/qa/sessions/{id} |
PATCH | 重命名会话 |
/api/qa/sessions/{id}/ask |
POST | 会话内问答 |
/api/qa/sessions/{id}/messages |
GET | 会话消息历史 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/graph/{id} |
GET | 图谱数据(支持 nodeType/moduleName/limit 过滤) |
/api/graph/{id}/callers |
GET | 方法调用者 |
/api/graph/{id}/callees |
GET | 方法被调用 |
/api/graph/{id}/impact |
GET | 影响分析(支持 depth 参数,默认 3,最大 10) |
/api/graph/{id}/search |
GET | 搜索节点(支持 q/type/moduleName/limit 参数) |
/api/graph/{id}/node/{nodeId} |
GET | 节点详情及入出关系 |
/api/projects/{id}/files/tree |
GET | 文件树(支持 path 参数) |
/api/projects/{id}/files/content |
GET | 文件内容(支持 startLine/endLine 参数) |
/api/projects/{id}/files/history |
GET | Git 历史(最多 50 条) |
/api/projects/{id}/files/version |
GET | 指定版本文件内容 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/quality/{projectId} |
GET | 质量报告(含评分、异味、安全风险、热点、死代码) |
/api/quality/{projectId}/smells |
GET | 代码异味(支持 minSeverity 参数) |
/api/quality/{projectId}/security |
GET | 安全风险 |
/api/quality/{projectId}/hotspots |
GET | 热点方法 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/webhook/gitlab/{id} |
POST | GitLab Webhook (X-Gitlab-Token 验证) |
/api/webhook/github/{id} |
POST | GitHub Webhook (HMAC-SHA256 签名验证) |
/api/webhook/gitee/{id} |
POST | Gitee Webhook (X-Gitee-Token 验证) |
/api/webhook/events/{id} |
GET | Webhook 事件历史 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/health |
GET | 服务健康检查 |
# 后端单元测试(H2 内存数据库)
cd backend
mvn test
# 集成测试(需要 Neo4j)
docker-compose up -d neo4j
mvn test -Dtest=QAServiceTest
# 前端代码检查
cd frontend
npm run lint当前测试覆盖:96 个单元测试全部通过,涵盖 Cypher 安全校验、查询模板匹配、实体提取、问题理解、查询规划、数据获取、V2 问答等核心模块。
| 组件 | 技术 | 版本 |
|---|---|---|
| 框架 | Spring Boot | 3.2.5 |
| 图数据库 | Neo4j | 5.15 |
| 关系数据库 | PostgreSQL | 15 |
| 缓存 | Redis | 7 |
| LLM 框架 | LangChain4j | 0.35.0 |
| MCP SDK | io.modelcontextprotocol | 0.7.3 |
| Git 操作 | JGit | 6.10.0 |
| JWT | jjwt | 0.12.5 |
| 结构化日志 | logstash-logback-encoder | 7.4 |
| 测试 | Mockito | 5.14.2 |
| 组件 | 技术 | 版本 |
|---|---|---|
| 框架 | Vue | 3.4 |
| 状态管理 | Pinia | 2.1 |
| UI 组件 | Element Plus | 2.5 |
| 图谱可视化 | force-graph (WebGL) | 1.51 |
| 力导向布局 | d3-force | 7.8 |
| 代码编辑器 | Monaco Editor | 0.45 |
| Markdown 渲染 | marked | 12.0 |
| HTML 净化 | DOMPurify | 3.4 |
| 语法高亮 | highlight.js | 11.9 |
| HTTP 客户端 | Axios | 1.6 |
| 构建工具 | Vite | 5.0 |
| 语言 | TypeScript | 5.3 |
用户问题
↓
┌─────────────────────────┐
│ 问题理解层 │ IntentClassifier → EntityExtractor → ContextResolver → SimilarQuestionService
│ (Understanding) │
└────────────┬────────────┘
↓
┌─────────────────────────┐
│ 查询规划层 │ QueryTemplateMatcher (28 模板) → SimilarQuestion 复用 → LLM 生成 Cypher (三层 fallback)
│ (Planning) │ CypherValidator 安全校验
└────────────┬────────────┘
↓
┌─────────────────────────┐
│ 数据获取层 │ DataFetcher → Neo4jExecutor (Cypher 执行) + CodeReadingRouter
│ (Fetching) │ CodeReadingRouter 自动路由:
│ │ Pipeline (轻量, 图谱关系驱动) → 快速定位
│ │ Agent (深度, LLM 多轮决策) → 跨文件理解
└────────────┬────────────┘
↓
┌─────────────────────────┐
│ 答案生成层 │ AnswerGenerator (LLM 生成自然语言 + 代码引用)
│ (Generation) │
└─────────────────────────┘
| 策略 | 适用场景 | 特点 |
|---|---|---|
| Pipeline | CALL_CHAIN, CLASS_METHODS, CALLEES 等明确意图 | 图谱关系 (CALLS/IMPLEMENTS/EXTENDS) 驱动定位,单轮读取,无 LLM 开销 |
| Agent | BUSINESS_FLOW, IMPACT_ANALYSIS, CODE_EXPLANATION 或低置信度 | LLM 多轮自主决策读取策略,跨文件深度理解,生成代码摘要 |
节点类型:Class、Interface、Method、Module、Commit、Author、Domain、BusinessFlow、BusinessStep、Entity
关系类型:
| 关系 | 方向 | 说明 |
|---|---|---|
| CALLS | Method → Method | 方法调用 |
| HAS_METHOD | Class/Interface → Method | 包含方法 |
| EXTENDS | Class → Class | 类继承 |
| IMPLEMENTS | Class → Interface | 接口实现 |
| CONTAINS | Module → Class/Interface | 模块包含 |
| MAVEN_DEPENDS_ON | Module → Module | Maven 依赖 |
| AUTHORED_BY | Commit → Author | 提交作者 |
| MODIFIED_BY | Method → Commit | 方法修改记录 |
| BELONGS_DOMAIN | Class → Domain | 领域归属 |
| PART_OF_FLOW | BusinessStep → BusinessFlow | 流程步骤 |
| NEXT_STEP | BusinessStep → BusinessStep | 流程顺序 |
| IMPLEMENTS_FLOW | Method → BusinessFlow | 流程实现 |
| USES_ENTITY | Class → Entity | 实体使用 |
| 阶段 | 内容 | 状态 |
|---|---|---|
| Phase 0 | 技术验证 | ✅ 完成 |
| Phase 1 | 智能问答系统重构 | ✅ 完成(28 模板 + 四层架构 + V2 API) |
| Phase 2 | 图谱可视化升级 | ✅ 完成(WebGL 渲染 + 多布局) |
| Phase 3 | 项目导入增强 | ✅ 完成(Git / 本地路径) |
| Phase 4 | 代码查看器重构 | ✅ 完成(面包屑导航 + Git 历史版本) |
| Phase 5 | 基础设施增强 | ✅ 完成(MCP 健康检查 + 增量同步) |
| Phase 6 | 集成测试与优化 | ✅ 完成(96 个测试通过) |
| Phase 7 | 功能增强 | ✅ 完成(ZIP 导入 + 文件夹拖拽) |
| Phase 8 | 技术债务清理 | ✅ 完成(测试修复 + 结构化日志) |
| Phase 9 | 扩展功能 | ✅ 完成(代码质量 + 语义检索 + 语义推断) |
| Phase 10 | 多模块/微服务支持 | ✅ 完成(模块检测 + 跨模块推断 + 模块依赖图) |
| Phase 11 | P0 修复 | ✅ 完成(代码质量闭环 + SSE 流式 + V2 管道 + 死代码检测) |
| Phase 12 | 解析质量提升 | ✅ 完成(Interface 标签 + IMPLEMENTS 边 + codegraph_explore) |
| Phase 13 | 代码溯源闭环 | ✅ 完成(AUTHORED_BY + MODIFIED_BY + Git 变更文件) |
| Phase 14 | 代码阅读增强 | ✅ 完成(Pipeline/Agent 双策略 + 自动路由 + 配置化) |
| Phase 15 | 深色主题 | ✅ 完成(90+ CSS 变量 + 赛博朋克风格 + 图谱/编辑器主题适配) |
欢迎贡献代码!请阅读 贡献指南 了解:
- 开发环境搭建
- 代码风格与提交规范
- Pull Request 流程
- 测试要求
MIT License © 2024-2026 Code Knowledge Graph