SAGE 是一个浏览器端研究原型,用自然语言提示编辑 Draw.io 和 Mermaid 风格的软件工程图。它不会把模型输出直接当作最终图,而是先把图表规范化为可编辑图模型,再把提示解析为结构化编辑意图,绑定具体节点与边,执行确定性图操作,最后校验、修复并保存为可恢复版本。用户仍可在画布上手工移动、改名、增删和重连元素。
软件架构图会随系统变化,但传统维护方式要么依赖大量拖拽,要么直接修改 Draw.io XML 或 Mermaid 文本。纯 AI 图片编辑虽然操作自然,却可能破坏连接、样式和可编辑结构。
SAGE 的核心取舍是:让语言模型负责理解请求和消除歧义,让结构化应用逻辑负责修改图、序列化、校验、修复和版本恢复。
需要长期维护、重新加载和版本控制的软件工程图,应优先使用 Diagram 模式。Image 模式更灵活,但重复修改容易产生布局漂移、字体变化和视觉退化。
这条链路把“模型觉得应该怎么改”和“系统实际接受什么改动”分开,降低自由文本直接重写整个 XML 的风险。
SAGE 的内部图模型包含节点、边、标签、分组、几何、样式属性,以及边的源和目标引用。导入 Draw.io XML 时,解析器会:
画布不是最终事实来源,DiagramModel 才是可序列化、验证、恢复和导出的状态。
提示应包含操作、目标、位置、关系和限制。例如:
将“API Gateway”重命名为“Edge Router”,不要修改其他节点和连接。
在“Frontend”和“Backend”之间插入“Cache”。
把原连接改为 Frontend → Cache → Backend,保留原有样式。
在每个 Worker Node 分组中新增“Monitoring Agent”,
并分别连接到同一分组内的 kubelet。
“优化架构图”没有明确目标,系统难以判断应改标签、拓扑、布局还是样式。
结构化编辑意图会记录操作类型、目标选择器、替换内容、插入约束和可选布局约束。例如“把 API Gateway 改成 Edge Router”会变成带标签选择器的 rename 操作;“在前端和后端之间增加缓存”会变成 insert-between 操作。
语言模型负责把自然语言解释成这些字段,但图的修改不会直接使用任意自由文本输出。
例如“修改数据库”可能匹配多个节点,应写成“将 Payment 分组内连接 API 的 PostgreSQL 节点改名为 Orders DB”。
编辑分析会记录匹配目标、操作步骤、验证说明和执行路线。常见操作包括:
执行前置条件会拒绝不存在的节点或无效边端点。这样的失败比生成一张看似正确但结构损坏的图更容易恢复。
转换后,系统检查 Draw.io 兼容 XML 的基本结构、必需根节点和图层单元,并检查带源目标的连接器引用。修复逻辑可处理:
校验失败时,不把结果记录为成功的结构化工件。
论文明确说明,当前原型只部分覆盖更深层检查,包括:
因此“XML 能重新加载”只证明基本结构有效,不证明图的架构含义或视觉布局正确。
SAGE 面向 Draw.io 与 Mermaid 风格工程图,但论文最详细的结构化管线和校验描述集中在 Draw.io XML。处理 Mermaid 时仍应把文本图表视为节点和边构成的图,使用目标明确的操作,并在最终 Mermaid 渲染器中验证。
flowchart LR
client[Client] --> gateway[API Gateway]
gateway --> service[Backend]
service --> db[(Database)]
若要插入缓存,可要求:
在 API Gateway 与 Backend 之间插入 Cache,
替换原连接,不要改变 Client 和 Database。
再检查最终文本是否变为 Gateway → Cache → Backend,而不是额外保留旧直连。
Diagram 模式支持选择节点和边、移动元素、编辑标签、增删组件、重连边、检查 XML 并导出。手工编辑适合:
提示词和画布修改都应生成新的会话步骤,便于审查和恢复。
每次成功转换会创建版本化 session step,保存原提示、解析意图、编辑分析、规范化图模型、序列化 XML、渲染预览和可用的执行跟踪。
回退通过移动当前版本指针完成,不重写历史或删除旧工件。这使用户能查看系统理解了什么、执行了什么以及结果是否通过验证。
当前实现会在验证前创建版本步骤,更强的活动版本指针事务保护仍是未来工作。发生故障时仍要检查当前指针是否指向有效版本。
不要在上一次操作尚未确认时连续提交多个提示。
论文使用 Kubernetes 集群架构图作为案例,先根据参考图重建包含控制平面、两个工作节点、组件、Pod 区域和连接的结构化图,再执行三次提示编辑:
三个编辑都正确命中目标,保留无关结构并维持高层拓扑。
重建结果只被评为部分正确,因为布局与参考图不同。评测主要是一个 Kubernetes 案例加单元测试,不是覆盖大量不同架构图的基准。
复杂提示可能产生拥挤、标签重叠、区域重叠,并且浏览器画布与 Draw.io 渲染略有差异。论文称这些通常可手工修正,但也说明布局校验仍需加强。
只有结构有效且目标修改正确、无关结构不被破坏,才算成功。外观合理不足以证明可编辑工件有效。
Image 模式允许上传或生成旧位图,在局部区域绘制蒙版后执行语义编辑。它适合只改图片一小块,但没有 DiagramModel、连接模型或确定性验证。
重复编辑会累积视觉不一致、布局漂移和字体变化。需要结构正确性时应返回 Diagram 模式。
结构化模式有显式节点、边、分组和验证规则,可以确定性地重连、序列化和回退。图片模式只对像素工作,语义正确、连接保持和布局稳定依赖图像模型。
软件工程图应优先保留可编辑结构,位图只作为展示或无法获得源文件时的补充。
SAGE 会调用 OpenAI 和可选 Gemini 等模型服务,上传图片、提示和模型输出还会保存为本地工件。使用前应确认部署位置和提供商策略。
使用完整标签、所属分组和相邻节点限定目标。检查解析意图后再执行。
明确要求“替换原连接”,并检查旧边是否删除、新边端点是否正确。
结构校验不覆盖完整布局质量。手工移动节点、扩大分组或拆分图表。
比较几何和样式属性,检查外部图标库、字体和渲染差异。以目标编辑器中的最终结果验收。
当前原型在验证前创建步骤。检查成功标记和当前版本指针,不要只看步骤是否存在。
回到原图或较早版本,减少串行蒙版编辑;能结构化表达时改用 Diagram 模式。
在目标 Mermaid 渲染器检查声明、节点标识、括号、箭头和特殊字符,再确认结构化编辑没有保留冲突旧边。
SAGE 的关键不是让模型直接重绘软件工程图,而是把提示转换成结构化意图,再由图操作、XML 校验、修复和版本管理约束结果。它适合改名、插入组件、重连依赖和批量修改分组内节点。Draw.io 结构化路径比蒙版图片编辑提供更强的恢复和验证能力,但深层语义、布局、重复 ID 和分组检查仍不完整。每次只做一个目标修改,检查无关元素与拓扑,并在目标编辑器重新加载,才能可靠使用提示驱动编辑。
ubuntu无法正常关机卡住了怎么办? ubuntu16.04无法关机的解决办法
Ubuntu优麒麟20.10终极预告曝光 本周四发布正式版本
Mermaid Chart 的 VS Code 扩展如何通过 AI Chat Participant 生成图表?
ubuntu自动挂起是什么意思? ubuntu v20设置自动挂起系统的技巧
ProcessOn 如何通过图片生成 Mermaid 图形并进行图形化编辑?
MermaidSeqBench 如何评估大语言模型生成 Mermaid 时序图的能力?