把一段 SQL 交给一个固定的三段 Skill Pipeline,让大模型返回:
- CTE / Final Query 的逻辑关系
- 每个块在整条链路里的职责
- 每个块的关键计算、过滤、having、分组、join 条件和表列信息
- 可直接渲染成结构图的图节点、边和 layout hints
本地不做 SQL AST 解析。
本地只做一件小事:给每个顶层 CTE 和最终查询打稳定锚点 block_id,然后要求模型所有图对象都引用这些 id。
- 浏览器输入 SQL
- 服务端给 SQL 做轻量 block 标记
- 服务端分三段把
SQL + block anchors + skill prompt + JSON schema发给 OpenAI Responses API - 模型依次返回关系 IR、block 语义 IR、graph projection
- 服务端统一归一化
- 前端把 JSON 渲染成左 SQL 右画板页面
如果本地没有配置 OPENAI_API_KEY,页面会自动退回 mock 模式,先让你测试:
- SQL 选区联动
- 图形布局
- 节点点击弹层
这个项目只做两件事:
- 把 SQL 讲成一张清楚的 CTE 关系图
- 让左边 SQL 输入区和右边结构图联动
不做:
- SQL AST 工程解析器
- schema 接入
- 数据库执行
- 业务元数据平台
npm install
npm run build
npm run start默认地址:
http://127.0.0.1:3000
配置环境变量后,页面里的 Auto / Live 会走真实模型:
export OPENAI_API_KEY=your_key
export OPENAI_MODEL=gpt-5.5
npm run build
npm run start可选变量:
OPENAI_API_KEYOPENAI_MODELPORT
- 本地只保留 block 锚点,不做 AST
- 模型输出必须走 Structured Outputs
- block 切分由本地负责,关系理解由模型负责
- 布局坐标由前端负责,模型只给布局 hint
- 图节点必须绑定已有
block_id - 前端只做渲染和交互,不做 SQL 理解