Diagram Loom

一套桌面應用程式,管理系統的部署與連線資訊,檢查有沒有漏掉的連線,並產出 C4 Model 圖。

專案簡介

畫架構圖的工具已經很多了,但真正的痛點不在畫圖:當一套系統有數百條連線時,怕的是漏掉其中一條。所以 Diagram Loom 的核心不是畫布,而是連線的完整性管理與 Linting——圖只是這份資料的其中一種呈現方式。

它刻意不做 code → diagram 的逆向工程,也不掃描真實環境做自動發現。資料由人維護,工具負責在存檔時告訴你「這個環境還缺什麼」。

核心概念:兩層模型

邏輯層是母版,環境層是分身。邏輯層定義「有哪些服務、誰要連誰」(Container、Relationship);環境層填「實際跑在哪台機器、IP 是什麼、幾個節點」(ContainerInstance、Connection)。

通則只有一條:邏輯層有的東西,每個環境都必須實現,沒實現就 lint 報錯。命名全面對齊 C4——這裡的 Container 是服務(Redis、Consul),機器叫Deployment Node,F5 這類 VIP 設備叫 Infrastructure Node。

架構亮點

Lint:這個專案的靈魂

目前 14 條規則(L001–L014),分 Error / Warning / Info 三級。幾條代表性的:

每一條會叫的 lint,面板上都要有對應的操作能就地修好——這是刻意的要求,不是加分項。

資料怎麼存

一個 Project 就是一個資料夾,內含多個 YAML 檔:logical/放邏輯層,environments/ 一個環境一個檔,diagrams/放圖。全部是純文字,可以進版控、可以 diff、可以 code review。元素用 UUID 當身分證、slug 當顯示名。

技術棧

RustTauriVue 3 + TypeScriptmaxGraphelkjstauri-spectaserde / YAMLcalamine (xlsx)MCPPlaywright / WebdriverIO

開發狀態

主動開發中。領域模型、lint、Excel 匯入、表格與 lint 面板、編輯與復原、資源 CRUD、MCP 端點、圖的節點/連線/篩選/標註/存檔都已完成。下一步是對帳面板的 UI——三方比對的判斷已經在 Rust 做完了,缺的是讓人逐項裁決差異的那個畫面,也是這個專案最難的一塊。

連結