【Skill 创作】Knowledge Graph Creator:一句话生成项目知识图谱,代码关系一目了然

【Skill 创作】Knowledge Graph Creator:一句话生成项目知识图谱,代码关系一目了然


1. Skill 简介

名称:Knowledge Graph Creator(知识图谱生成器)

解决的问题:

接手一个新项目时,最痛苦的不是读代码本身,而是理解代码之间的关联关系——哪个 Controller 调了哪个 Service,哪些模块互相依赖,整个架构长什么样。

传统做法要么用手动画架构图(画完项目已经变了),要么翻大量文件脑补关系。这个 Skill 让 AI 自动完成这一切:说一句"帮我创建知识图谱",就能把整个项目的关系可视化出来。

适用人群:

  • 新入职/接手新项目的开发者,快速理解项目架构

  • 技术负责人做代码评审,一眼看清模块依赖

  • 写技术文档时自动生成架构关系图

  • 任何想快速理解代码结构的人

效果:自动扫描项目所有文件 → 分析 import/extends 等关系 → 输出交互式 D3.js HTML 图谱,双击就能在浏览器里缩放、搜索、点击查看详情。


2. 使用场景

展示效果:

真实场景:

最近接手一个 Spring Boot 项目,十几个模块、几百个文件。想搞清楚 Controller 到底调了哪些 Service、Entity 被哪些地方引用了——直接在 SOLO 里说"帮我创建知识图谱",几秒钟就生成了一张交互式关系图,比翻代码快太多了。

省掉了什么:

  • 不用手动梳理每个文件的 import 和依赖

  • 不用边翻代码边画思维导图

  • 不用等架构文档更新(项目一改图就过时)


3. 创作过程

第一版:确定核心能力

这个 Skill 的核心问题只有一个:AI 能不能替用户完成"扫代码→分析关系→可视化"的全流程?

首先是"扫什么"——我列了一张支持的文件类型清单,从 Python、JavaScript、Java 到 Go、Rust、Markdown 文档,覆盖了后端、前端、配置、文档四类文件。

然后是"怎么分析"——处理思路是分级的:


小项目(< 50 个文件) → 逐文件读取,完整分析

大项目(≥ 50 个文件) → 只用 ripgrep 扫描 import 行,不读全文件

这避免了大项目扫描过久的问题。

第二版:确定输出格式

输出必须是一份自包含的 HTML——用户双击就能在浏览器打开,不需要装任何依赖。

技术选型很明确:D3.js v7 的力导向图(force-directed graph)。它不是静态图片,而是一张可以缩放、拖拽、搜索、点击的交互图。

第三版:确定交互功能

列出了 10 项交互功能,按重要性排序:

  1. 力导向布局(节点自动排布,同类聚集)

  2. 缩放拖拽

  3. 节点拖拽固定

  4. 邻居高亮(最重要——悬停一个节点,只看它的关联关系)

  5. 搜索定位

  6. 详情信息面板

  7. 图例

  8. 边关系标签

  9. 侧边栏节点列表

  10. 统计信息

第四版:确定色彩系统

16 种节点分组各有独立颜色,形成视觉映射:


controller → 青色 #22d3ee

service → 翠绿 #34d399

entity → 紫色 #a78bfa

config → 琥珀 #fbbf24

util/helper → 粉红 #fb7185

...(共 16 种)

暗色主题,背景 #1a1b26,符合开发者审美。

创作中的关键决策

为什么用 D3.js 而不是 ECharts 或其他库?

D3.js 的力导向图在节点交互上更灵活——拖拽、邻居高亮、动态更新这些功能实现起来更自然。而且 D3.js 的 force simulation 引擎在节点布局质量上是最成熟的。

为什么 SKILL.md 里不写死 HTML 模板内容?

因为每个项目的图谱都不同——节点数、分组、关系类型都不一样。所以 SKILL.md 给出的是完整的生成流程和规范,让 AI 根据实际扫描结果动态生成 HTML。这样同一个 Skill 在不同项目上都能用。

为什么文件分析策略要有分级?

一开始对所有项目都逐文件读取,在一个有 200+ 文件的 Go 项目上跑了 3 分钟才出来。后来改成小文件逐读、大文件只读 import 行,速度提升了几十倍。


4. 使用步骤

安装:

  1. 下载 SKILL.md:https://github.com/mrg123/knowledge-graph-creator

  2. TRAE 中导入:设置 → 规则与技能 → 技能 → 创建 → 导入文件

触发方式:在 TRAE SOLO 中直接用自然语言提问:

“帮我创建这个项目的知识图谱”

“分析架构关系,输出 HTML 图”

“看看 Controller 和 Service 之间怎么关联的”

AI 会自动执行:

  1. 扫描项目文件树 → 2. 分析 import/extends 关系 → 3. 生成知识图谱目录 → 4. 打开浏览器预览

5. 效果展示

(以下为实际生成的知识图谱截图)

生成的文件结构:


my-project/

├── knowledge-graph/

│ ├── index.html ← 双击就能打开

│ └── data.json ← 原始图数据,可复查

图谱包含的交互功能:

| 功能 | 说明 |

|------|------|

| 力导向布局 | 节点像物理弹簧一样自动排布 |

| 邻居高亮 | 鼠标悬停一个节点,只看它的关联关系 |

| 搜索定位 | 输入模块名,自动居中 |

| 详情面板 | 点击节点,显示路径、类型、描述 |

| 图例 | 按颜色分组,一眼看出模块分类 |

| 缩放拖拽 | 滚轮缩放,空白区拖拽 |

运行效果示例(描述):

  • 一个 Spring Boot 项目:Controller(青色)指向 Service(翠绿),Service 指向 Entity(紫色)和 Repository(橙色),Config(琥珀)被多处引用

  • 一个前端项目:Component(粉紫)互相组合,Page(玫瑰)引用 Component,Store(黄色)被 Pages 引用

  • 一个 Python 项目:模块间通过 import 形成网状结构,utils(粉红)被大量引用


6. Skill 链接

GitHub 仓库(开源,MIT 许可):

下载后按上述安装步骤导入 TRAE 即可使用。


7. 总结与思考

最满意的地方:

  • 一次扫描,处处可用——Skill 不在文件里写死图谱数据,而是给出完整的生成流程和规范,AI 根据每个项目动态生成

  • 交互式输出——不是静态图片,而是可以搜索、点击、拖拽的网页

  • 自动跳过噪声——隐藏目录、node_modules、build 目录自动排除,只关注你真正关心的项目代码

后续优化方向:

  • 支持更丰富的边类型(HTTP 路由映射、消息队列订阅关系)

  • 支持增量更新(项目改了只重新分析变化的部分)

  • 支持导出为 PNG/SVG 图片

希望得到的建议:

  • 还应该支持哪些类型的文件/语言?

  • 节点太多时,有没有更好的聚合/分层策略?

  • 你觉得"知识图谱"这个场景在 TRAE 中还有哪些应用方式?


有时候最基础的洞察反而是最容易被忽略的:代码之间的关系和代码本身一样重要。一个能把关系可视化的 Skill,也许比一段高效的代码更有价值。

5 个赞

这个看着有点意思,我喜欢,投一票,收藏一下,有时候想看看另一个视角的自己的项目是什么样

1 个赞