📌 项目地址:likec4/likec4 | ⭐ 4,182 颗星 | 🔧 TypeScript | 📜 未标注
问题先讲清楚
手工画的架构图有个死结:图存在绘图工具里,代码存在仓库里,两边没有任何同步机制。服务拆了又合,依赖加了又删,三个月后没人记得回去改那张导出的 PNG。技术评审会上投影出来的架构图,大概率已经和现实对不上了——讨论基于一张错图展开,比没有图更糟。
这不是画图的人偷懒,是机制问题。LikeC4(likec4/likec4,4182 star,TypeScript,MIT 协议)的解法是把方向反过来:架构写成代码,图从代码生成。文件进仓库,走 PR review,有完整的版本历史。
一分钟验证
本地预览只要一条命令:
npx likec4 start
改 DSL,浏览器里的图实时更新。因为不导出图片,也就不存在“最后更新于某年某月”这种落款。
不想装环境,官方 Playground(playground.likec4.dev)直接在浏览器里写。模板仓库在 likec4/template,部署效果看 template.likec4.dev/view/index,StackBlitz 上也能打开。系统学概念走官方 Tutorial。
名字里的 “Like” 是关键
LikeC4 受 C4 Model 和 Structurizr DSL 启发,但没有照搬。
C4 Model 把架构固定分四层:Context、Container、Component、Code。多数系统够用,但碰到结构特殊的服务就别扭。LikeC4 的做法是:元素类型、图例符号、嵌套层级数量,全部由使用者自己定义。
这也是它和 Structurizr 的主要区别:Structurizr 给你一套现成 DSL,LikeC4 给你一个可以定制的建模语言。
一个模型,多个视图
所有视图从同一个模型渲染。总览看顶层结构,下钻看节点内部。不需要为每个模块单独画子图——改一处模型,所有视图同步变。“总图和子图对不上”这种经典事故,在这里没有发生的条件。
两个局限,先说清楚
它不做代码分析。 LikeC4 不扫描代码、不自动发现依赖。架构是手写在 DSL 里的,改了代码没改 DSL,图照样过期。它解决的是“图存在哪里、怎么演进”,不解决“图是否真实”——后者仍然要靠 review 流程。如果你期待从代码自动反推架构,这个工具帮不了你。
它有学习成本。 一套 DSL,一套模型组织方式,都要投入时间。类比 Markdown:Markdown 不替你写文章,但它让写作进了版本管理的世界。LikeC4 对架构文档做的是同一件事。
我认为这个交换划算:架构每次变更都进 Git 历史,翻 log 能看到架构决策的完整演变。这比一张精美但过期的图值钱。
项目状态
4182 star,MIT 协议,开发完全靠赞助维持,入口在 OpenCollective 和 GitHub Sponsors。遇到问题,Discord 响应最快,深度讨论去 GitHub Discussions。
值不值得引入,别看别人的评测。拿自己最熟的那个系统,在 Playground 里写半小时,答案自然有了。