爱意满满的作品展示区。
frankmdong

纪念一下, AI+rust 搓了个 headless 版 mermaid 库 200 star 了!

  •  
  •   frankmdong · 1 day ago · 711 views

    一开始只是想给我的参考 zed 编辑器的 ui 框架 gpui 来写一个新的 Rust 自绘 UI 框架,还有配套的一些渲染方面的库。这其中包括一个重写 mermaid.js 的 rust 库。

    库目标是不依赖浏览器的能力下渲染 mermaid 图为 svg 、png 等格式,是一个 headless 的渲染器。最近几个月一直让 codex 对着 mermaid.js 转换出来的 svg 来作为测试来不断补全逻辑。

    就这么一直跑了三四个月,三千多个提交,一直没推广,就 10 个 star 。某天一看多了 3 个 star ,一搜原来 zed 编辑器仓库有个 pr markdown: Merman 用了我的库来替换另一个 mermaid 渲染库,来方便编辑器更准确的渲染 mermaid 图图表 (例如 markdown 预览)。然后我赶紧又开始修 bug ,也惊讶于 zed 编辑器居然能找到我这个不知名的库。

    最近发了一个大版本之后,reddit 发了帖。没想到还挺火,仓库 star 今天也刚过 200 ,这还是我第一个过百 star 的项目!很开心,因此来和大家分享下!

    自己感觉 ai 还挺适合这种累活的,可以强验证结果的前提下不断暴力的去拟合,自己对比输出来找 bug 。当然也要人为的和 AI 讨论移植方案和进行一些架构的拆分(例如布局库也要移植,图表才准确)。

    • rust 移植所有依赖的布局库:Dagre + Graphlib, Cytoscape/FCoSE/COSE-style compound.
    • 用大量 test case 和 golden fixture 来限制验证 svg 输出准确性
    • 在保证输出正确的同时不断无畏重构优化性能

    项目: https://github.com/Latias94/merman Playground: https://frankorz.com/merman

    适合一些只是需要 mermaid 图表的渲染但是不得不引入浏览器和 js 运行时的场景,例如编辑器、静态文档生成、ci 等。

    1 replies    2026-06-12 12:37:32 +08:00
    getadoggie
        1
    getadoggie  
       1 day ago via iPhone   ❤️ 1
    支持一个!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3079 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 08:40 · PVG 16:40 · LAX 01:40 · JFK 04:40
    ♥ Do have faith in what you're doing.