SuperAPI AI 工具集

plantuml

设计与创作

查看项目

更新于 10-16 01:58

技能介绍

用途

PlantUML 技能用于在 Emacs 中根据最近的交互上下文创建图表。当用户调用 "/plantuml" 时,该技能会从当前上下文中提取或推导出可图表化的数据,使用 PlantUML 生成图表,并输出生成的图片路径。

主要能力

  • 从最近的交互上下文中提取或推导出可图表化的数据。
  • 使用 PlantUML 生成透明背景的 PNG 图片。
  • 将结果以 Markdown 图片格式输出,使其能够内联渲染。
  • 支持多种图表类型,包括序列图、类图、组件图、活动图、状态图等。
  • 可在有助于理解时添加标题。

使用方式

  1. 用户调用 "/plantuml"。
  2. 技能从当前上下文中提取或推导出可图表化的数据。
  3. 如果本次会话中尚未获取 Emacs 前景色,则通过以下命令查询:
emacsclient --eval '
(face-foreground (quote default))'

该命令返回类似 "#eeffff" 的十六进制颜色值。该颜色会在后续所有图表中重复使用。

  1. 使用该颜色将 PlantUML 文件写入临时文件。
  2. 对该文件运行 PlantUML:
plantuml -tpng /tmp/agent-diagram-XXXX.puml
  1. 将结果以 Markdown 图片格式单独输出在一行:
![description](/tmp/agent-diagram-XXXX.png)

PlantUML 模板

@startuml
skinparam backgroundColor transparent
skinparam shadowing true
skinparam roundcorner 10
skinparam defaultFontName "Helvetica"
skinparam defaultFontColor #eeffff

' Set foreground color on all element types
skinparam titleFontColor #eeffff
skinparam sequenceLifeLineBorderColor #eeffff
skinparam sequenceArrowColor #eeffff
skinparam sequenceGroupHeaderFontColor #eeffff
skinparam sequenceGroupBorderColor #eeffff
skinparam sequenceDividerFontColor #eeffff
skinparam sequenceDividerBorderColor #eeffff
skinparam actorBorderColor #eeffff
skinparam actorFontColor #eeffff
skinparam participantFontColor #eeffff
skinparam participantBorderColor #eeffff
skinparam collectionsFontColor #eeffff
skinparam collectionsBorderColor #eeffff
skinparam noteFontColor #eeffff
skinparam noteBorderColor #eeffff
skinparam arrowFontColor #eeffff
skinparam classFontColor #eeffff
skinparam classBorderColor #eeffff
skinparam classAttributeFontColor #eeffff
skinparam packageFontColor #eeffff
skinparam packageBorderColor #eeffff
skinparam componentFontColor #eeffff
skinparam componentBorderColor #eeffff
skinparam interfaceFontColor #eeffff
skinparam interfaceBorderColor #eeffff

' ... diagram content ...
@enduml

规则

  • 每个会话只查询一次 Emacs 前景色,并在后续所有图表中重复使用。仅在颜色未知时才再次查询。
  • 始终使用 skinparam backgroundColor transparent 设置透明背景。
  • 文件名中始终包含时间戳(例如 /tmp/agent-diagram-$(date +%s).png)。不要使用描述性名称。
  • 将查询到的前景色设置到 defaultFontColor 以及所有相关的边框、箭头和文本的 skinparam 条目上,以确保图表在用户的 Emacs 背景上清晰可读。
  • PlantUML 成功运行后,单独一行输出 Markdown 图片(![description](path))。
  • 根据数据选择合适的图表类型(序列图、类图、组件图、活动图、状态图等)。
  • 在有助于理解时添加标题。
  • 如果最近上下文中没有可图表化的数据,则告知用户。

适用场景

适用于需要在 Emacs 中快速将当前上下文中的信息可视化为图表的场景,例如展示流程、结构、交互关系等。

限制

  • 需要安装 PlantUML 并可执行 plantuml 命令。
  • 需要能够通过 emacsclient 查询 Emacs 前景色。
  • 如果最近上下文中没有可图表化的数据,则无法生成图表。