把软件架构写成代码,自动生成永远最新的交互式架构图
更新于 2026-07-23
← 返回汇总把软件架构写成代码,自动生成永远最新的交互式架构图
Architecture as Code 工具链。用 DSL 描述软件架构,自动生成可交互、可版本化、可嵌入的架构图。灵感来自 C4 Model 和 Structurizr,但打破固定四层分类法——可自定义元素类型、符号和任意嵌套层级。Langium 解析 + Graphviz 布局 + @xyflow/react 渲染,CLI/VSCode/React/Web Component/Vite/MCP 全生态集成。
TypeScript 单语言 monorepo · pnpm + turbo 编排 · 完整 LSP 语言服务 · VSCode/Open VSX 双市场扩展
Draw.io / PPT 手画,代码一改图就错。架构图沦为"上次评审时的样子"。
一张大图塞所有细节。新成员看不懂,老成员改不动。
图是独立的"艺术品",不在 Git 里,无法 diff,无法 review,无法校验。
架构图不再是"产物",而是"源码"。像管理业务代码一样管理架构:版本化、可 diff、CI 校验、单一事实源。
同一个 model 通过 predicate 投影出任意视角的 view——landscape、组件细节、部署拓扑、动态流程。改一处,所有相关图同步更新。
| 维度 | Structurizr (Simon Brown) | LikeC4 |
|---|---|---|
| 元素分类 | 固定四级 taxonomyPerson / System / Container / Component | 完全自定义specification 块定义任意 element 类型 |
| 嵌套层级 | 严格受语义约束(不能给 System 加 Component 的反例规则) | 任意深度嵌套,无强制语义 |
| 视图选择 | 预定义视图类型(Context/Container/Component) | Predicate 驱动,任意 include/exclude 规则组合 |
| 样式定制 | 有限,主题色为主 | shape/color/icon/size 全可控,内置 tech 图标库 |
| 部署建模 | 独立的 deployment view | 独立 deployment 块,与 model 节点交叉引用 |
LikeC4 = Structurizr 的自由形态扩展。C4 四层可作为约定,但不是枷锁。
import 合并成单一 model。顶层只允许 import / specification / model / deployment / views / global 六类语句。
// 1. 定义类型词典(灵活性的起点) specification { element actor { style { shape person } } element system element component relationship async } // 2. 实例化架构 model { customer = actor 'Customer' { description '系统用户' } saas = system 'Our SaaS' { component ui 'Frontend' { style { icon tech:nextjs; shape browser } } component backend 'Backend' ui -> backend 'fetches via HTTPS' } customer -> saas.ui 'opens in browser' } // 3. 投影视图 views { view index { title 'Landscape'; include * } view of saas { include *; style customer { color muted } } }
视图不是"画"出来的,是从 model 用规则"查询"出来的。同一份 model,不同 predicate 产出任意视角。
include * 只纳入顶层元素并自动推断跨层关系基于 Langium(TS 语言工作台)实现完整 LSP。AST → ModelBuilder 桥接到 LikeC4 模型。Hono 提供 HTTP API。
Graphviz 自动布局,WASM(@hpcc-js/wasm-graphviz)或本地二进制双模式。ts-graphviz 抽象层。
@xyflow/react(React Flow)做交互式画布,Mantine 提供 UI 组件。支持缩放/下钻/导航。
核心数据结构用 immer 不可变更新 + zod 校验。@likec4/generators 负责导出 Mermaid/PlantUML 等格式。
likec4 start 本地预览、build 出静态站、serve 启动服务@likec4/diagram 直接嵌入任意 React 应用<likec4-view> 标签即用@likec4/vite-plugin 把 .c4 接入构建管线DSL 语法本身对 LLM 极其友好——结构化、低歧义、可生成。这是 LikeC4 区别于所有图形工具的隐藏优势。
# 1. 装扩展或在线试 # VSCode 搜 "likec4" 或打开 playground.likec4.dev # 2. CLI 即时预览(无需安装) npx likec4 start # 3. 构建静态站,部署到任意托管 npx likec4 build npx likec4 serve # 4. 生成 React 组件(嵌入你的应用) npx likec4 generate react
从零到第一张可交互架构图 < 5 分钟。官方提供 likec4/template 模板仓库与 交互式教程。
Architecture as Code 赛道里最现代、最 AI-native 的实现。灵活 taxonomy + Predicate 视图 + MCP 集成三张牌,让它在 LLM 时代有结构性优势——当 Agent 能直接读写架构,"图"就从人工产物变成可编程资产。若部署建模与 drift detection(Erode 项目已起步)持续完善,有机会成为云原生时代的架构文档事实标准。