首页 > 开源 > 图表脚本语言 D2 正式开源自动布局引擎 TALA

图表脚本语言 D2 正式开源自动布局引擎 TALA

OSChina资讯 2026-09-08 10:21 4 阅读 查看原文

D2 的自动布局算法 TALA 正式开源了,采用 MPL-2.0 许可证,源代码已托管至 github.com/d2lang/d2 仓库。

这是继 D2 转为非营利项目后的又一个动作。

D2 TALA

TALA 是 Terrastruct's AutoLayout Algorithm 的缩写,专为软件架构图设计。跟最常见的 Dagre、ELK 不同,TALA 做的是正交布局——更像你在白板上画出来的样子,而不是 DAG 那种单方向生长的树。TALA 底层融合了多篇图绘制研究论文的成果,再加上自研技术,优化的美学目标包括对称性、中位距离、流向、相似节点聚类。

文章里用 GitHub 上公开的 D2 文件做了对比。Fulcro RAD 架构、Mocha secure-enclave SoC、Jupyter on AWS EKS、Lion Reader 前端数据流、ROSS 转子动力学工作流、Go Queue worker 架构、Ouroboros Leios 模拟器——七个公开项目,不是特挑的示例。Dagre 和 ELK 的结果在旁边并排展示,差别肉眼可见。

目前 D2 v0.9.0 里已经内置 TALA,添加 --layout=tala 参数就能用。在线 playground 也可以体验,100% 客户端运行。

除了全自动布局,TALA 还支持两种介于自动和手动之间的模式。

一种是自定义定位,用 top/left 锁定某些节点的坐标。作者特别提到这很适合 AI agent 生成图的场景——模型擅长在 2D 空间里决定画什么,但路由还是交给 TALA 来做。演示里有 Signal House、The Internet is a jellyfish(互联网是只水母)、Orbital coffee logistics(轨道咖啡物流)这些名字古怪但图很漂亮的例子。

另一种是部分定位,四个节点定死,剩下十个自动。The Printing Room 和 MULE / Utility Rover 的例子里,固定节点和自动节点和谐共存,没有那种「一半手绘一半机器」的拼凑感。

作者也坦率地列出了局限。算法含随机性——默认用 3 个随机种子取最优,但新增一个节点可能导致布局大变,不像 Dagre 和 ELK 那样变化平滑。DAG 表现一般,作者自己说画长流程导向图时更偏好 Dagre 或 ELK。运行时间非线性增长,大图耗时更长。

GitHub 上有专门的基准测试仓库 d2lang/d2-benchmarks。Gavin Nishizawa 和 Júlio César Batista 被列为 TALA 的主要贡献者,前者做了大量实质性贡献,后者负责层级算法等方向。

参考来源: