TALA 開源釋出:D2 的新正交自動佈局引擎
TL;DR – 發生了什麼以及為什麼重要
TALA(Terrastruct 的自動佈局演算法)已以 MPL-2.0 許可證開源,並包含在 D2 v0.9.0 中(--layout=tala)。它提供了一種正交、白板風格的佈局引擎,產生的架構圖比 D2 以往以 DAG 為中心的引擎更具美學平衡性,同時也支援自訂節點定位,適用於 AI 協助與混合式佈局。
什麼是 TALA?
TALA 是一種專為軟體架構圖設計的新穎自動佈局演算法。與傳統以 DAG 為基礎的引擎(例如 Dagre、ELK)單向擴展不同,TALA 產生的正交佈局更接近手繪白板草圖。該引擎融合了多篇圖形繪製研究論文的技術(原始碼中已引用),並加入原創的啟發式法則,以優化多項美學標準:
- 對稱性與中位距離
- 流向與相關節點的群聚
- 避免標籤衝突的邊線路由
- 支援使用者指定的節點座標(頂/左)以鎖定圖表的特定部分
如何試用 TALA
- 安裝 D2 v0.9.0 或更新版本。
- 使用
d2 --layout=tala <script.d2>渲染圖表。 - 或使用瀏覽器端的沙盒工具 https://play.d2lang.com,並預先選擇
layout=tala。
博客文章中展示的關鍵功能
1. 比較品質
作者張貼了一批真實世界的 D2 檔案,分別以三種引擎(Dagre、ELK、TALA)渲染。在大多數情況下,TALA 產生的圖表更乾淨、更具對稱性,且更符合手繪架構草圖的視覺風格。唯一注意到的例外是 Go Queue worker 範例,TALA 的佈局顯得比 Dagre/ELK 的從左到右流動更混亂。
2. 用於 AI 生成圖表的自訂定位
TALA 允許使用 top 和 left 座標明確指定節點位置。這支援一種工作流程:語言模型生成粗略圖表(例如訊號鏈或資料平台),而 TALA 負責邊線路由,同時保留使用者定義的佈局。部落格中包含多個 AI 生成範例(Signal House、Atlas/Data Platform、Night-Shift Mission Control 等),展現此混合方法的應用。
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 的轉換器,顯示對遷移路徑的興趣。
新使用者實用指南
- 從沙盒開始 – 網頁介面完全在瀏覽器端執行,無需安裝即可試用
--layout=tala。 - 鎖定關鍵節點 – 使用
top/left鎖定必須保持特定幾何形狀的元件(例如硬體機架、UI 面板)。 - 控制隨機性 – 若需在 CI 作業中產生可重現的佈局,可透過
--seed=<int>傳遞確定性種子。 - 測試大型圖表 – 對於超過 200 個節點的圖表,建議與 Dagre/ELK 比較執行時間,以判斷 TALA 的美學優勢是否超過效能成本。
- 貢獻程式碼 – 倉儲為開源,歡迎貢獻啟發式法則、效能優化或額外的形狀庫。
結論
TALA 的開源釋出為 D2 生態系增添了一個強大且正交的自動佈局選項,彌補了長期以來針對架構導向圖表繪製的缺口。儘管它在產生平衡、白板風格視覺效果以及支援混合手動/自動定位方面表現出色,使用者仍應注意其隨機性、DAG 性能有限,以及在大型圖表上的較高計算成本。Hacker News 上的社群反饋確認了強烈興趣與對更廣泛整合的需求,顯示 TALA 將迅速成為需要高品質、可程式化圖表的開發者與架構師的標準工具。
Sources
相關
- Dispatch
- 專案
- 專案
- Dispatch
- Dispatch