SuperAPI AI 工具集

agentic-mermaid-diagram-workflow

设计与创作

查看项目

更新于 10-15 13:53

技能介绍

Agentic Mermaid 是一个与具体智能体无关的 Mermaid 图表工作流技能,核心是提供类型化的编辑界面,并配合结构化校验、类型化变更、往返序列化和图形化输出。

用途

该技能用于编写和编辑 Mermaid 图表。新图表可以直接以 Mermaid 源码编写,然后进行验证和渲染。已有建模图表可以解析为 ValidDiagram,使用类型化操作进行变更,进行结构化验证(而非主观视觉评分),再序列化回规范源码。

主要能力

  • 输出 SVG、PNG、ASCII、Unicode 和 JSON 布局。
  • 布局是确定性的,经过跨进程验证,不使用布局种子。
  • 样式外观(style render option: name | spec | stack,例如 ['hand-drawn', 'dracula'])接受 ink seed,可重新生成抖动效果而不移动布局;详见 docs/style-authoring.md。
  • 支持结构化验证,返回 ok / warnings / layout 等字段。
  • 支持按图表族区分的类型化变更操作,操作使用 kind 字段作为判别器。
  • 支持往返序列化,解析器不会静默丢弃任何内容。
  • 对于未建模的构造,回退为不透明主体,仍可解析、渲染、验证并无损往返,但不提供结构化变更。

使用方式

选择使用通道:

  • agentic-mermaid-mcp 已连接时使用 Code Mode(references/code-mode.md),可在一次往返中完成多步编辑。
  • 可运行带导入的 JS/TS 时使用库(agentic-mermaid/agent),与 SDK 相同。
  • 仅 Shell 时使用 CLI(references/cli.md)。
  • 无本地安装、仅网络时使用托管 MCP:https://agentic-mermaid.dev/mcp(无状态 Streamable HTTP JSON-RPC;提供 execute、describe_sdk、render_svg、render_ascii、render_png、verify、describe、mutate 和 build 工具,输入上限 64 KB)。使用托管请求前请阅读 references/hosted-mcp.md。

托管 MCP 工具选择:

  • 需要结构有效性、图表族、警告、布局计数时使用 verify,参数 { source }。
  • 需要文字说明、AX 树或语义事实清单时使用 describe,参数 { source, format?: 'text' | 'json' | 'facts' }。
  • 需要以已知操作编辑现有图表时使用 mutate,参数 { source, ops: [{ kind, ...fields }] }。
  • 需要以已知操作编写新的建模图表时使用 build,参数 { family, ops: [{ kind, ...fields }] }。
  • 需要发现某个图表族的精确操作字段时使用 describe_sdk,参数 { family, detail: 'fields' }。
  • 需要自定义同步控制流时使用 execute,参数 { code, timeoutMs? }。

请求输出时使用 render_svg、render_ascii 或 render_png;不要将一次性渲染、验证、描述、变更或构建通过 execute 路由。

变更词汇表按图表族区分,不可互换。例如状态图使用 add_state 和 add_transition,不要复用仅适用于流程图的 add_node 或 add_edge。若不确定精确的族操作,应调用 describe_sdk,而不是从其他族借用操作名。状态图的 add_state 接受 id、可选 label、parent 和 region,没有 terminal 字段。类关联使用 { kind: 'add_relation', from, to, relKind: 'association' },没有 add_relationship 操作或 relation 字段。

托管请求信封中的 tool 始终是上述裸托管名称之一,不要编造带提供者前缀的名称或特定图表工具名。

能力发现

在选择图表族或变更前,运行 am capabilities --json(或调用等效 SDK 能力 API)。其注册表派生的族条目暴露当前 narrower、操作 schema、编辑策略、输出支持和最小源码示例;生成的 Section A 矩阵提供显式的 native、source-preserved、diagnosed 和 absent 状态。本技能有意不维护第二份族或操作表。

在托管 MCP 上,检查已连接服务器的 tools/list 以了解工具面,并调用 describe_sdk({ family, detail: 'fields' }) 获取变更字段。托管端没有名为 capabilities 的工具。

选择图表族

根据读者的任务选择图表族;图表族是该决策的结果,而非起点。完整任务路由及各族反模式和验证码见 docs/choosing-a-diagram.md。常见路由:

  • 步骤和决策走向结果:flowchart。系统响应事件在模式间移动:state。
  • 参与者之间的有序消息:sequence。流程图箭头表示因果,而非时间。
  • 带持续时间和依赖的日期工作:gantt。无日期时代:timeline。一个人对过程的有评分体验:journey。
  • 必须跨阶段平衡的数量:sankey。某一时刻整体的部分:pie。跨类别或时间的测量序列:xychart。

可渲染性和编辑策略仍来自 am capabilities --json,而非此路由。

工作流

新图表:直接编写 Mermaid 源码,然后 parseRegisteredMermaid / verifyMermaid / render。

已有建模图表:

  1. parseRegisteredMermaid(source) → ValidDiagram。
  2. 在变更前使用族条目公布的 narrower(例如 asFlowchart(d) 或 asState(d))。
  3. mutate(d, op)(按族类型化)。
  4. verifyMermaid(d) — 结构化警告;检查 ok / warnings / layout。
  5. 若 !ok,回退到上一个 ValidDiagram,尝试另一个操作。
  6. 仅在检查验证通过后 serializeMermaid(d)。

当存在类型化操作时,不要通过重新生成或拼接源码来编辑已有结构化图表。直接源码编写适用于新图表。变更操作使用判别器字段 kind(不是 type)。边删除使用 id,例如 { kind: 'remove_edge', id: 'API->DB' };序列化前先验证。

对于 mutate 或 build,将返回信封视为提交边界:仅当顶层 ok 和 verify.ok 均为 true 时接受 source,并检查 verify.warnings。若操作失败,使用其 opIndex 和 error,调用 describe_sdk 并传 detail: 'fields',然后仅用返回的 kind 和 fields 重试。不要猜测托管操作名或回退到源码拼接。

当用户询问哪些嵌入式验证字段必须通过时,准确命名响应路径:要求顶层 ok、确认顶层 family、要求 verify.ok、检查 verify.warnings。不要用转述替代这些字段路径。

在托管 mutate 请求中,source 是编辑前的精确输入;不要自行将请求的更改应用到该字符串。所有更改仅通过 ops 表达,不要包含 describe_sdk 未公布的便利字段。对于文件支持的输入,检查字节而非依赖终端显示:保留行尾以及文件是否有最终换行。若文件以 LF 结尾,JSON source 字符串在最后可见行后必须以 \n 结尾。不要修剪或规范化源码;在发出请求前将 JSON 解码后的 source 字节与附件比较。

若请求如“让它更好”没有具体质量目标,在变更前询问受众、输出媒介和预期改进。只读的 verify、describe 或 render 检查可以安全提供,但不要编造编辑目标。

适用场景

  • 需要以结构化、可验证方式创建或修改 Mermaid 图表。
  • 需要确定性布局和多种输出格式(SVG、PNG、ASCII、Unicode、JSON)。
  • 需要通过 MCP、库或 CLI 在智能体工作流中集成图表编辑。
  • 需要无损往返序列化,确保解析不丢失内容。

限制

  • 变更词汇表按图表族区分,不可互换;不确定时应调用 describe_sdk。
  • 未建模的构造回退为不透明主体,不提供结构化变更。
  • 托管 MCP 输入上限 64 KB。
  • 托管端没有 capabilities 工具。
  • references/upstream/ 中的 Mermaid 语法仅作编写参考,可渲染族以 am capabilities --json 为准。
  • 具体收费、价格、平台支持等事实暂未提供。