TALA 开源发布:D2 的新型正交自动布局引擎
TL;DR – 发生了什么以及为何重要
TALA(Terrastruct 的自动布局算法)现已作为开源软件在 MPL-2.0 许可下发布,并包含在 D2 v0.9.0 中(--layout=tala)。它提供了一种正交的、白板风格的布局引擎,相比 D2 之前的以 DAG 为中心的引擎,能生成更具视觉平衡感的架构图,同时支持自定义节点定位,适用于 AI 辅助和混合布局。
什么是 TALA?
TALA 是一种专为软件架构图设计的新型自动布局算法。与传统基于 DAG 的引擎(如 Dagre、ELK)单向扩展不同,TALA 生成的正交布局更接近手绘白板草图。该引擎融合了多篇图绘制研究论文中的技术(源码中已引用),并添加了原创启发式规则,以优化多个美学标准:
- 对称性和中位距离
- 流向方向和相关节点的聚类
- 避免标签重叠的边路由
- 支持用户指定节点坐标(top/left)以锁定图的某些部分
如何尝试 TALA
- 安装 D2 v0.9.0 或更高版本。
- 使用
d2 --layout=tala <script.d2>渲染一张图。 - 或在客户端沙盒中使用 https://play.d2lang.com,预设
layout=tala。
博客文章中展示的关键特性
1. 对比质量
作者发布了一批真实世界的 D2 文件,分别用三种引擎(Dagre、ELK 和 TALA)渲染。在大多数情况下,TALA 生成的图更整洁、更对称,视觉风格更接近手绘架构草图。唯一例外是 Go 队列工作器 示例,TALA 的布局看起来比 Dagre/ELK 的从左到右流更杂乱。
2. 用于 AI 生成图的自定义定位
TALA 允许使用 top 和 left 坐标显式放置节点。这使得工作流中语言模型可生成粗略图(如信号链或数据平台),而 TALA 负责边路由,同时保留用户定义的布局。博客中包含多个 AI 生成示例(Signal House、Atlas/数据平台、夜班任务控制中心等),展示了这种混合方法。
3. 部分定位(手动与自动混合)
第三批示例展示了“部分定位”:部分节点被固定(如打印室图中的 CMYK 站点),其余节点由引擎自动排列。这种灵活性适用于具有固定物理布局但逻辑组件可变的图。
权衡与性能
"算法中包含随机性。它通过默认使用 3 个种子运行多次尝试,并选择得分最高的布局。在相同的种子和输入下,它会生成相同的图。但假设你只是多加了一个节点,图的外观可能完全不同。在 Dagre 和 ELK 中,它看起来与之前基本相同,仅适配了新增节点。这有时是可取的。"
- 随机性 – TALA 运行多个带种子的尝试,并选择得分最高的布局。添加一个节点可能导致全局重排,这可能有利于视觉新鲜感,但会破坏视觉连续性。
- DAG 处理 – TALA 并未针对深度有向无环图优化;用户通常更倾向于使用 Dagre/ELK 来处理长流程管道。
- 可扩展性 – 运行时间随图大小非线性增长。基准测试可在
d2-benchmarks仓库中找到(https://github.com/d2lang/d2-benchmarks)。
Hacker News 社区反应
该帖子获得了 278 个赞和 23 条评论。亮点包括:
- 积极评价 – 用户称赞输出更整洁,尤其是与 D2 默认引擎相比。有评论指出,Go 队列图在 TALA 下看起来 更复杂,表明该引擎并非总是最佳选择。
- 成本顾虑 – 有评论提到 TALA 的商业价格超出了他们的“娱乐预算”,但开源发布消除了这一障碍。
- 集成需求 – 多位参与者询问 TALA 是否可合并到 Graphviz 或 yEd 等其他图工具中,反映出对更广泛生态系统支持的需求。
- 使用场景热情 – 计划将 TALA 添加到自己项目(如 Daedalus)中的开发者表达了对新布局能力的兴奋。
- 工具需求 – 有用户请求一个 Graphviz 到 TALA 的转换器,表明对迁移路径的兴趣。
新用户的实用建议
- 从沙盒开始 – 网页 UI 完全在客户端运行,无需安装即可尝试
--layout=tala。 - 锁定关键节点 – 使用
top/left锁定必须保持特定几何位置的元素(如硬件机架、UI 面板)。 - 控制随机性 – 如果需要在 CI 运行中实现可重现的布局,可通过
--seed=<int>传入确定性种子。 - 对大型图进行基准测试 – 对于节点数超过 200 的图,应测试 TALA 与 Dagre/ELK 的运行时间,以判断其美学优势是否超过性能代价。
- 贡献代码 – 仓库为开源,欢迎对启发式规则、性能优化或额外形状库进行贡献。
结论
TALA 的开源发布为 D2 生态系统增添了一个强大的正交自动布局选项,填补了长期存在的面向架构图的空白。尽管它在生成平衡、白板风格视觉效果方面表现出色,并支持混合手动/自动定位,但用户应意识到其随机性、DAG 性能有限以及在大型图上的更高计算成本。Hacker News 上的社区反馈证实了强烈兴趣和对更广泛集成的渴望,预示着 TALA 将迅速成为需要高质量、可编程图的开发人员和架构师的标配工具。
Sources
相关
- Dispatch
- 项目
- 项目
- Dispatch
- Dispatch