AI 绘图的最佳实践:DaC, MCP 与 Kroki 的终极组合

核心观点:在 LLM 时代,绘图不再是拖拽像素,而是Token 的艺术。把“思考”留给 AI,把“排版”留给算法,把“渲染”交给 Kroki。

让 GPT-4 或 Claude 直接画图(生成图片)通常是灾难现场:文字乱码、逻辑错乱。因为 LLM 是概率模型,它懂逻辑,但极其不擅长处理像素坐标 (X,Y)。

最优雅的解法是 Diagram as Code (DaC)

LLM 生成代码,工具渲染图片。最近我在开发基于 MCP (Model Context Protocol) 的绘图工具链,测试了主流 DaC 方案。本文将从 AI 工程化的角度,聊聊如何搭建一套省 Token、高颜值、易集成的 AI 绘图系统。

一、评测维度:AI 视角的“不可能三角”

区别于人类手写,AI 生成代码主要关注三个指标:

  1. Token 密度 (Token Efficiency)
    • 同样的图,代码越短越好。这不仅省钱,更能防止撑爆 Context Window(上下文窗口)。
  2. 算法鲁棒性 (Layout Algorithm)
    • AI 生成的节点顺序往往是乱的。工具必须具备强大的自动布局能力,能把一堆乱序节点排列得井井有条。
  3. 模型对齐 (Alignment)
    • LLM 对该语言是否“母语级”掌握?冷门语法会导致严重的幻觉。

二、主流选手深度横评

2.1 Mermaid:LLM 的“通用语”

如果你的 AI Agent 需要最大兼容性,Mermaid 是唯一解。

2.2 D2 (Declarative Diagramming):Token 吝啬鬼

这是我最推荐给 AI 使用的“黑马”语言。

2.3 PlantUML:逻辑重坦

2.4 反面教材:为什么不选 JSON/XML?


三、渲染架构:Kroki 才是 AI 的最佳伴侣

选好了语言(Mermaid/D2),怎么渲染?

在 AI Agent 或 MCP Server 中安装 Java (PlantUML)、Node.js (Mermaid) 或 Go 二进制 (D2) 是非常愚蠢的架构设计——环境依赖太重,Docker 镜像会巨大无比。

Kroki 是完美的解决方案。

它是一个统一的渲染网关,提供简单的 HTTP API。你只需要把代码丢给它,它返回图片。

3.1 为什么 Kroki 适合 AI?

  1. Unified Interface:Agent 只需要知道一个 URL 格式,就能支持 20+ 种绘图语言。
  2. Stateless:无状态,极其适合 Serverless 或 MCP 部署。
  3. 私有化:一行 Docker 命令即可私有部署,数据不出内网。
# 极简部署 Kroki
docker run -d --name kroki -p 8000:8000 yuzutech/kroki
copy success