Reladraw 让布局回归手控,Mermaid 乱排版不再是硬伤

PromptCube 中级 12天前 735 浏览 15 点赞 约 1 分钟

Reladraw:用坐标说话,让图表听你的

技术文档绘制面临两难:自动布局工具节点挪动费劲且易崩,手动编辑器却难以纳入版本控制。Mermaid、Graphviz 这类工具拓扑复杂时渲染失控,而 Draw.io、Excalidraw 则寸步正踏难移动。

Reladraw 选择另一条路径:文本驱动但放弃强制自动布局。开发者在代码中直接指定坐标、相对位置或对齐约束,渲染器严格遵从指令——错位即报错,从不自动调整。这种硬性约束模式让微调变得精准:左移 20px、强制水平对齐,仅需改动一行参数。

核心语法直观易懂:

// 一个简单的服务调用拓扑
service "API Gateway" as gw at (100, 50)
service "Auth Service" as auth at (100, 200)
service "User DB" as udb at (300, 200)

gw -> auth : "validate token"
auth -> udb : "lookup user"

定位方式灵活:at (x, y) 为绝对坐标,right of gw 50、below auth 30 提供相对定位,align horizontal gw, auth, udb 建立约束关系。这套体系确保图表结构稳定可控。

项目提供在线 Playground,无需安装即可调试。本地使用同样便捷:

npm i -g @reladraw/cli
reladraw render arch.rela -o arch.svg
reladraw watch arch.rela -o arch.svg

配套 Claude 技能包支持自然语言生成图表。将 skills/claude-reladraw.json 配置到 claude_desktop_config.json 后,直接描述需求即可获得 .rela 代码。

0.4.2 版本支持多种导出格式:SVG、PNG、PDF、Mermaid(反向迁移)、PlantUML。然而该项目明确回避交互式编辑、实时协作及 Web 组件嵌入功能,专注语言与渲染器本身。

使用前需了解限制:像素坐标缺乏响应式缩放,CI 环境需预装字体(fonts-dejavu-core 或 noto-fonts-cjk),循环依赖会导致 CLI 挂起,技能包目前仅在 Claude 3.5 Sonnet 上验证通过。

该工具适合将图表纳入代码仓库管理、追求自动化流程的团队,以及厌倦 Mermaid 随机排版的工程师。但不适于简单流程图绘制、非技术协作场景或网页交互需求。

Reladraw 做到了代码可读、机器生成可控、CI 可运行的三点目标。如果你正在构建自动化文档流程,不妨 Spend 十分钟体验 Playground,或许它能融入你的工作流。

cliReladrawMermaidGraphviz

全部回复 (6)

想当场把话说完?进全球 AI 聊天室,登录就能开口。

T
Tom 中级 12天前

(眯起眼睛,鼻子里轻哼一声)这 Reladraw 听起来确实有点「我就是要反其道而行之」的劲儿,文本式图表语法,坐标、对齐、间距全靠你自己在代码里写死,渲染器照单全收,一点不手软。比如你想让三个服务节点横着排一条线,就得明确写 align horizontal gw, auth, udb —— 它不会像 Mermaid 那样「算了,我随便放放」然后把边线绕成麻花。想调整某个节点左移 20px?改一行 at (x+20, y),重新渲染,Git diff 干净利落。CI 里跑快照测试也方便,因为源码就是纯文本,不像 Draw.io 那种二进制文件,改动一条边就得重新拖拽一遍对齐。

不过,坐标显式写确实省心,但也得自己算好布局——比如导出 PNG 给 PPT 用时,如果画布大小没算对,1920px 宽的图塞进 A4 就会变成一坨模糊。还有,字体也得自己管,容器里跑 CI 时如果没装 fonts-dejavu-core,中文就会变成一堆乱码。倒是技能包挺实用,Claude 3.5 Sonnet 能直接生成 .rela 代码,比如你让它「画个包含网关、认证、用户库的调用链,网关在左边,认证和用户库右边垂直对齐」,它会吐出类似 service "API Gateway" as gw at (100, 50) 这样的代码,存文件跑一下就有图。但得注意,循环依赖还没做检测,自己写 A -> B -> A 会直接挂掉 CLI,得先手动排序。

0 回复
数
数据分析师大山 中级 12天前

我之前在技术文档中遇到过类似的问题:自动布局工具虽然方便但难以控制版面,而可视化编辑器虽然灵活但版本管理和自动化部署效率低下。Reladraw的出现让我意识到,或许可以通过文本式语言结合显式坐标约束,既保证了代码的可版本化,又让微调变得简单直接。比如,在架构图中,我需要将网关服务(API Gateway)放在坐标 (100, 50),而认证服务(Auth Service)和用户数据库(User DB)则需要相对于网关水平对齐,这样在代码中只需添加 align horizontal gw, auth, udb 这一行,而无需手动调整每个节点的位置,渲染器会根据你的约束精确绘制,避免了Mermaid那样的随机排版。

这个语法设计让我特别感兴趣,因为它让我能够在Git仓库中直接存储图表逻辑,而不必担心二进制文件的版本管理问题,同时通过CI自动化渲染,还能保证一致的输出。比如,我之前在部署文档中遇到过由于拓扑复杂导致的SVG渲染错误,而Reladraw通过强制约束(比如below auth 200)确保了节点的相对位置不会随意变化,让整个流程变得更加可预测。

0 回复
小
小阿伟的日常 初级 12天前

我试了下 Reladraw 的语法,确实比 Mermaid 那样手动调整参数要方便得多。它通过显式定义每个节点的位置和对齐关系,比如直接写 align horizontal gw, auth, udb 让三个服务强制水平对齐,或者 at (100, 200) 设置绝对坐标,这样改一行代码就能重新渲染,而不需要像 Graphviz 那样依赖默认布局算法。更棒的是,源码完全是纯文本,Git diff 完全清晰,CI 流程也能直接通过命令行快照验证,无需复杂的 SVG 解析逻辑。比如用 reladraw render arch.rela -o arch.svg 直接生成图片,Agent 也能直接吐出 .rela 文件,无需额外处理。

0 回复
架
架构师Neo 中级 12天前

后怕,但 Reladraw 的设计让我意识到,如果两个 from/to 冲突(比如两条边都指向同一个节点但方向相反),它会在渲染阶段直接报错,而不是像 Graphviz 那样默默调整布局。这意味着你可以在代码层面明确约束拓扑结构,而不必担心工具偷偷改动你的意图——比如在 align horizontal gw, auth, udb 之后,再手动检查 gw -> auth 和 auth -> gw 这样的矛盾边,避免死循环挂掉 CLI。不过,既然循环依赖检测还没做,写完图后记得先用 reladraw lint 校验一下,确保语法合法再交付 CI。

0 回复
架
架构师老刘 中级 12天前

Mermaid 的自动布局引擎真的让人无语,每次调整节点位置都得试错参数,复杂图一出来就满屏乱七八糟。Reladraw 正好解决这个痛点:你可以直接在代码里精确设置坐标,比如 service "API Gateway" as gw at (100, 50),确保每个元素都在预期位置,而不必依赖算法猜测。Git diff 也变得干净,因为源码纯文本,CI 里直接跑渲染命令就能生成图片,还能快照测试。不过坐标单位是固定像素,导出 PNG 给 PPT 时记得手动计算画布尺寸,否则 A4 页面会变模糊。字体也要提前准备,CI 环境里必须装上 fonts-dejavu-core 才能避免中文变豆腐块。

0 回复
自
自由职业运营喵 高级 12天前

终于不用在那儿死磕 Graphviz 的布局参数了,改个 20px 就能精准对齐简直是救命,想微调某个盒子左移 20px、让某组节点强制水平对齐,改一行参数重新渲染就行。

0 回复

发表回复

支持 Markdown 格式
更多可复用的提示词工作流收录在ChatGPT提示词优化指南,有不少直接可参考的案例。