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 允许使用 topleft 坐标显式放置节点。这使得工作流中语言模型可生成粗略图(如信号链或数据平台),而 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 的转换器,表明对迁移路径的兴趣。

新用户的实用建议

  1. 从沙盒开始 – 网页 UI 完全在客户端运行,无需安装即可尝试 --layout=tala
  2. 锁定关键节点 – 使用 top/left 锁定必须保持特定几何位置的元素(如硬件机架、UI 面板)。
  3. 控制随机性 – 如果需要在 CI 运行中实现可重现的布局,可通过 --seed=<int> 传入确定性种子。
  4. 对大型图进行基准测试 – 对于节点数超过 200 的图,应测试 TALA 与 Dagre/ELK 的运行时间,以判断其美学优势是否超过性能代价。
  5. 贡献代码 – 仓库为开源,欢迎对启发式规则、性能优化或额外形状库进行贡献。

结论

TALA 的开源发布为 D2 生态系统增添了一个强大的正交自动布局选项,填补了长期存在的面向架构图的空白。尽管它在生成平衡、白板风格视觉效果方面表现出色,并支持混合手动/自动定位,但用户应意识到其随机性、DAG 性能有限以及在大型图上的更高计算成本。Hacker News 上的社区反馈证实了强烈兴趣和对更广泛集成的渴望,预示着 TALA 将迅速成为需要高质量、可编程图的开发人员和架构师的标配工具。

Sources

相关

  • Dispatch
  • 项目
  • 项目
  • Dispatch
  • Dispatch