用途
bicep-diagrams 用于从 Azure Bicep 文件直接生成架构图。Bicep 是一种用于以声明方式部署 Azure 资源的领域特定语言(DSL)。当用户拥有 .bicep 文件、希望可视化 Bicep 基础设施、提到 Bicep 或 Azure Bicep,或想查看其 Bicep 部署资源的架构时,可激活此技能。
主要能力
该技能通过解析 Bicep 代码并直接调用 Eraser API 来生成 Bicep 专用图:
- 解析 Bicep 文件:识别资源声明、模块、参数和输出。
- 提取关系:映射依赖关系、资源引用和模块层级。
- 生成 Eraser DSL:从 Bicep 资源创建 Eraser DSL 代码。
- 调用 Eraser API:使用 /api/render/elements,diagramType 为 "cloud-architecture-diagram"。
使用方式
当用户提供 Bicep 代码时,技能按以下步骤工作:
- 解析 Bicep:识别所有资源声明(如 Microsoft.Compute/virtualMachines 等)、提取模块声明及其配置、记录 param 和 output 定义、识别 var 变量及其用法。
- 映射关系:跟踪资源依赖(如 dependsOn 或隐式依赖)、按类型分组资源(计算、网络、存储等)、将 VNet 识别为子网和资源的容器、记录网络安全组、Key Vault 及其他安全资源。
- 生成 Eraser DSL:将 Bicep 资源转换为 Eraser DSL。标签格式规则要求标签必须位于单行,绝不在标签属性内使用换行;保持标签简单可读,优先使用独立标签而非拼接过多元数据;使用适当的换行格式化 DSL(每行一个节点/组,但标签保持单行);如需包含 CIDR 块或 VM 大小等元数据,将其放在同一个带引号的标签字符串中,例如 [label: "VNet 10.0.0.0/16"]。
- 发起 HTTP 请求:生成 DSL 后必须执行 curl 命令调用 Eraser API,不能仅生成 DSL 而不调用 API。请求头 X-Skill-Source 需替换为 AI 代理名称(Claude 用 claude,Cursor 用 cursor,ChatGPT 用 chatgpt,Gemini 用 gemini,否则使用模型/代理名称的小写形式)。
curl 命令示例:
curl -X POST https://app.eraser.io/api/render/elements
-H "Content-Type: application/json"
-H "X-Skill-Source: eraser-skill"
-H "Authorization: Bearer ${ERASER_API_KEY}"
-d '{
"elements": [{
"type": "diagram",
"id": "diagram-1",
"code": "<your generated DSL>",
"diagramType": "cloud-architecture-diagram"
}],
"scale": 2,
"theme": "${ERASER_THEME:-dark}",
"background": true
}'
- 分析期间跟踪来源:记录读取的每个 Bicep 文件路径及提取的资源(如 infra/main.bicep - VNet 和子网定义,infra/sql.bicep - SQL 数据库配置);记录查阅的任何文档、示例或 URL;为每个来源注明其对图表的贡献。
- 处理响应:响应必须始终包含以下元素并带有清晰标题:
- Diagram Preview:使用 API 响应中的实际 imageUrl,格式为 ## Diagram 后接 。
- Editor Link:使用 API 响应中的实际 createEraserFileUrl,格式为 ## Open in Eraser 后接 Edit this diagram in the Eraser editor。
- Sources 部分:简要列出分析的文件/资源(如适用),格式为 ## Sources 后接 -
path/to/file- What was extracted。 - Diagram Code 部分:在带有 eraser 语言标签的代码块中展示 Eraser DSL,格式为 ## Diagram Code 后接 ```eraser {DSL code here}。
- Learn More 链接:可在 https://docs.eraser.io/docs/using-ai-agent-integrations 了解更多关于 Eraser 的信息。
附加内容规则:如果用户仅要求图表,除上述 5 个元素外不包含任何其他内容;如果用户明确要求更多(如“解释架构”“建议改进”),可包含该附加内容;绝不添加未请求的部分,如 Overview、Security Considerations、Testing 等;默认输出应简短,图表图像本身已足够说明。
处理模块:如果使用了模块,显示模块边界、包含模块参数和输出、展示模块如何连接到主资源。
Bicep 专用提示:显示资源组(Bicep 部署以资源组为目标);将 VNet 作为容器显示,包含子网和资源;包含依赖关系(显示 dependsOn 关系);模块结构(如果使用模块,显示其边界);参数(注明影响资源配置的关键参数);使用 Azure 图标(请求 Azure 专用样式)。
适用场景
- 用户拥有 .bicep 文件并希望可视化基础设施。
- 用户要求“diagram my Bicep”或“visualize this Bicep infrastructure”。
- 用户提到 Bicep 或 Azure Bicep。
- 用户希望查看其 Bicep 部署资源的架构。
限制
- 需要 Eraser API 密钥(ERASER_API_KEY)才能调用 API。
- 主题可通过 ERASER_THEME 环境变量设置,默认为 dark。
- 标签必须位于单行,不能包含换行。
- 生成 DSL 后必须调用 API,不能仅生成 DSL。
- 默认输出应简短,仅包含指定的 5 个元素,除非用户明确要求更多内容。
- 关于收费、价格、平台支持范围等具体信息暂未提供。