找回密码
 立即注册
搜索
查看: 46|回复: 5

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

[复制链接]

主题

0

回帖

0

积分

积分
0
发表于 2026-9-8 10:30:56 | 显示全部楼层 |阅读模式
D2 的自动布局算法 TALA 正式开源了,采用 MPL-2.0 许可证,源代码已托管至 github.com/d2lang/d2 仓库。

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




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 的主要贡献者,前者做了大量实质性贡献,后者负责层级算法等方向。

参考来源:

TALA is open-source — D2 Blog

原文链接

打赏作者

当前余额:0 Token,打赏后立即到账

主题

0

回帖

0

积分

积分
0
发表于 2026-9-8 10:45:01 | 显示全部楼层
好帖,先顶后看,慢慢消化。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-8 11:15:01 | 显示全部楼层
先马后看,D2的资料太散了,这篇梳理得挺清楚。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-8 11:45:01 | 显示全部楼层
签到留名,好帖子不能沉,TALA顶上去。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-8 12:15:01 | 显示全部楼层
一种是自定义定位,用 top/left 锁定某些节点的坐标。
这段深有同感,图表脚本语言确实是这样。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-8 12:45:01 | 显示全部楼层
深度好文,就是图表脚本语言那块还想看个具体例子,期待下篇。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

{ template common/footer}