图表即代码工具D2的开发方Terrastruct在2026年9月7日宣布,其自研布局算法TALA正式开源,采用与D2相同的MPL-2.0协议。公告由Alexander Wang撰写。TALA是Terrastruct AutoLayout Algorithm的缩写,从设计之初就以软件架构图为目标场景,因此它主要是一个正交布局引擎,产出的图形更接近人们在白板上画出来的样子,而不是那类沿单一方向不断生长的有向无环图布局。该算法融合了多篇图形绘制研究论文中的思路,相关引用直接写在源码里,同时也包含Terrastruct自己的原创技术。TALA已随D2 v0.9.0一同打包分发,安装后通过--layout=tala即可启用,或直接在完全运行于客户端的play.d2lang.com上试用。
把美观拆成多个可优化目标
TALA对布局质量的处理方式是把抽象的美观拆解为多个可以量化的目标,包括对称性、中位距离、流向、同类节点的聚集程度等等。公告用三批示例来展示效果。第一批把TALA与D2自带的另外两种布局引擎Dagre和ELK做对比,作者强调这些样例并非精挑细选,而是从GitHub上随手找来的公开d2文件,因此其中某些图形读者可能反而更偏好非TALA的排布结果。这种坦率的呈现方式在布局算法的宣传材料中并不常见。
为代理式绘图预留的坐标接口
第二批示例展示了TALA一项独有特性:节点的位置与尺寸可以被自定义,例如把坐标直接锁定。作者明确指出这项能力尤其适合代理式使用场景,因为模型在二维空间中摆放元素的能力尚可,而连线走向仍是它们普遍不擅长的部分,交给TALA处理正好补上这块短板。这批示例本身就是由AI生成的。第三批进一步演示混合模式,即一部分节点显式指定坐标、另一部分交由布局引擎决定,适用于开发者心中已有某组节点的特定形状、又不想手工摆完全图的情形,这些示例同样由AI生成。
作者主动列出的三项权衡
公告没有回避TALA的代价。首先是算法中存在随机性,它默认使用三个种子来寻找最优布局并选出评分最高的那一个,相同种子与相同输入会产出相同的图,但一旦多加一个节点,整张图的样貌可能完全改变;而在Dagre和ELK中,新增节点后的图形大体维持原状,只是把新节点安置进去,这种稳定性在很多场合是更受欢迎的。其次是TALA处理有向无环图的效果不如专门的DAG引擎,作者本人在需要一条长而流畅的图时仍会选择Dagre或ELK。第三是较大图形的运行时间会更长,且呈非线性增长,具体的性能对比可参见d2lang/d2-benchmarks仓库中的基准测试。
TALA原本是Terrastruct的商业布局引擎,此次转为开源意味着一款长期闭源的商业算法进入了社区可修改的范围。作者表示尤其期待开源带来的改进,并特别致谢Gavin Nishizawa在TALA各部分的广泛贡献,以及Júlio César Batista在层次结构算法等方面的工作。对于把架构图纳入版本控制的工程团队而言,正交布局与坐标锁定的组合提供了一条介于全自动生成与纯手工绘制之间的中间路径,而模型只需负责语义与大致方位、把线路规划留给引擎的分工方式,也为文档自动化流水线给出了一个具体可行的接口设计。