首页
/ API Server

API Server

2026-09-11 17:30:36作者:余洋婵Anita
- port 8080
- rate limit 100/s
```

}

formula: { label: | latex y = \alpha x + \beta }

snippet: { label: | code if err != nil { panic(err) } }


其渲染链路位于 <a href="https://link.gitcode.com/i/857559729c9ff282c51c5790660efedb" target="_blank">d2renderers/d2scenebuild/markdown.go</a>、<a href="https://link.gitcode.com/i/5aae6bff4e84cbc19c4c8debc3823657" target="_blank">d2renderers/d2scenebuild/latex.go</a> 与 <a href="https://link.gitcode.com/i/382b2823c121f5f4b9cb796f3081f83b" target="_blank">d2renderers/d2scenebuild/code_shape.go</a>,与独立形状共享同一套文本测量与排版管线。

### 4.2 `shape: c4-person`

新增的 `shape: c4-person` 用于渲染 C4 模型规范中的人物形状(actor/person),与已有的 `shape: c4_component`、`shape: c4_container` 等构成完整的 C4 建模家族。实现位于 <a href="https://link.gitcode.com/i/559aea0629ab67b39e883c40a17e3145" target="_blank">lib/shape/shape_c4_person.go</a>:

```d2
user: {
  shape: c4-person
  label: End User
}

4.3 图标与连接标签改进

  • 连接线可以包含图标a -> b: { icon: https://... } 现在对边同样生效(此前图标仅限对象);
  • 图标支持 border-radius:对含图标的形状设置 border-radius 可以正常裁剪圆角,不再失效;
  • 连接标签水平内边距:渲染端为连接线标签增加了水平 padding,避免文字贴边,相关实现可参见 d2renderers/d2scenebuild/labels.go

4.4 图例(Diagram Legends)

v0.7.0 实现了图例功能,核心代码在 d2renderers/d2scenebuild/legend.go。图例允许你在图中显式声明一组"标签 → 含义"的说明条目,常用于颜色编码(如"绿色 = 正常,红色 = 故障")或形状语义说明。结合本节能力,图例配合 c4-person、markdown 标签等新特性,可以产出更接近正式架构文档的图表。


五、CLI 改进:validate 命令、--omit-version 与 watch 模式

5.1 新增 validate 命令

d2 validate 只校验 D2 文本的语法与语义,不生成任何输出文件,适合在 CI 或编辑器保存钩子中做快速检查。命令分发逻辑位于 d2cli/main.go

d2 validate input.d2        # 校验通过则静默退出(exit 0),失败则打印错误并返回非零码

配合 --watch 还可以对文件做持续校验。底层复用的是与 d2 编译相同的解析器(d2parser)与 IR 编译器(d2ir),因此校验结果与最终渲染前诊断一致。

5.2 --omit-version 标志

默认情况下,D2 生成的 SVG/PNG 会嵌入 D2 版本信息(便于溯源)。新增的 --omit-version 让输出文件不再包含版本号,适合对产物做字节级快照对比或对版本号敏感的发布流程:

d2 --omit-version input.d2 output.svg

标志定义在 d2cli/main.go(描述为 "omit D2 version from generated image")。

5.3 watch 模式忽略编辑器备份文件

d2 --watch 现在会忽略形如 foo.d2~ 的通用备份文件,以及 Helix、IntelliJ 等编辑器生成的临时备份,避免编辑器自动保存备份时触发无意义的重复渲染。备份文件识别逻辑位于 d2cli/watch.go,覆盖了 ~ 后缀、Helix 备份、IntelliJ 新旧备份等多种模式。

5.4 插件名大小写不敏感

指定布局插件时大小写不再敏感,d2 --layout ELKd2 --layout elkd2 --layout ElK 均可正常工作,减少命令行输入的踩坑概率。


六、编译器与解析器改进

6.1 link 支持根路径

对象的链接目标现在可以设置为根路径,例如:

homepage: {
  link: /xyz
}
登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.16 K
2.78 K
kernelkernel
deepin linux kernel
C
34
18
docsdocs
暂无描述
Markdown
904
5.83 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
932
1.86 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
862
1.36 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.95 K
1.03 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.38 K
1.47 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
535
606
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
549
398
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Markdown
77
23