在终端或 Python 应用中直接把 Mermaid 图表渲染为彩色 ASCII/Unicode 文本,无需外部依赖。
Termaid - Terminal Mermaid Diagram Renderer
功能概述
Termaid - Terminal Mermaid Diagram Renderer是一项面向实际任务的技能,主要用于Termaid 是一个纯 Python 的 Mermaid 图表渲染工具,可以在终端或 Python 应用中直接渲染 Mermaid 图表为 ASCII/Unicode 字符图形;零依赖 :纯 Python 实现,无需浏览器或外部服务;
核心要点
- 终端友好 :在 SSH、CI 日志、TUI 应用中直。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Termaid - Terminal Mermaid Diagram Renderer
概述
Termaid 是一个纯 Python 的 Mermaid 图表渲染工具,可以在终端或 Python 应用中直接渲染 Mermaid 图表为 ASCII/Unicode 字符图形。
核心价值
- 零依赖:纯 Python 实现,无需浏览器或外部服务
- 终端友好:在 SSH、CI 日志、TUI 应用中直接渲染图表
- 多图表支持:9 种 Mermaid 图表类型
- 彩色主题:6 种内置颜色主题
- ASCII 回退:支持最基本的终端环境
🚀 快速开始
安装
# 基本安装 pip install termaid # 带彩色输出 pip install termaid[rich] # 带 TUI 界面 pip install termaid[textual] # 试用(无需安装) uvx termaid diagram.mmd
基本使用
# 渲染文件 termaid diagram.mmd # 管道输入 echo "graph LR; A-->B-->C" | termaid # 使用主题 termaid diagram.mmd --theme neon # ASCII 模式 termaid diagram.mmd --ascii # TUI 交互界面 termaid diagram.mmd --tui
Python API
from termaid import render
# 基础渲染
print(render("graph LRn A --> B --> C"))
# 彩色渲染
from termaid import render_rich
from rich import print as rprint
rprint(render_rich("graph LRn A --> B", theme="terra"))
# Textual TUI 组件
from termaid import MermaidWidget
widget = MermaidWidget("graph LRn A --> B")
📊 支持的图表类型
1. 流程图 (Flowcharts)
graph TD
A[Start] --> B{Is valid?}
B -->|Yes| C(Process)
C --> D([Done])
B -->|No| E[Error]
特性:
- 所有方向:LR, RL, TD/TB, BT
- 多种节点形状:矩形、圆角矩形、菱形、圆形等
- 边样式:实线、虚线、粗线、带标签等
2. 序列图 (Sequence Diagrams)
sequenceDiagram
Alice->>Bob: Hello Bob
Bob-->>Alice: Hi Alice
Alice->>Bob: How are you?
Bob-->>Alice: Great!
3. 类图 (Class Diagrams)
classDiagram
class Animal {
+String name
+int age
+makeSound()
}
Animal <|-- Dog
4. ER 图 (Entity-Relationship)
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
5. 状态图 (State Diagrams)
stateDiagram-v2
[*] --> Idle
Idle --> Processing : start
Processing --> Done : complete
Done --> [*]
6. 块图 (Block Diagrams)
block-beta
columns 3
A["Frontend"] B["API"] C["Database"]
7. Git 图 (Git Graphs)
gitGraph
commit id: "init"
commit id: "feat"
branch develop
commit id: "dev-1"
checkout main
merge develop id: "merge"
8. 饼图 (Pie Charts)
pie title Pets adopted by volunteers
"Dogs" : 386
"Cats" : 85
"Rats" : 15
注意:饼图以水平条形图形式渲染,更易于终端阅读
9. 树状图 (Treemaps)
treemap-beta
"Frontend"
"React": 40
"CSS": 15
"Backend"
"API": 35
"Auth": 10
🎨 主题系统
内置主题
- default - 青色节点,黄色箭头,白色标签
- terra - 温暖的地球色调(棕色、橙色)
- neon - 霓虹色调(品红色节点,绿色箭头)
- mono - 单色(白色/灰色)
- amber - 琥珀色 CRT 风格
- phosphor - 绿色磷光终端风格
使用主题
termaid diagram.mmd --theme neon termaid diagram.mmd --theme phosphor
rprint(render_rich(source, theme="amber"))
🔧 CLI 选项
| 选项 | 描述 |
|---|---|
--tui |
交互式 TUI 查看器 |
--ascii |
ASCII 纯文本输出(无 Unicode) |
--theme NAME |
颜色主题:default, terra, neon, mono, amber, phosphor |
--padding-x N |
框内水平填充(默认:4) |
--padding-y N |
框内垂直填充(默认:2) |
--sharp-edges |
边角使用锐角而非圆角 |
💡 使用场景
1. 文档生成
# 在 Markdown 文档中嵌入 Mermaid 图表的终端版本 termaid architecture.mmd >> README.md
2. CI/CD 日志
# 在 CI 日志中显示架构图 echo "graph LR; Frontend-->API-->Database" | termaid --ascii
3. 代码审查
# 在代码中动态生成图表 from termaid import render print(render(class_diagram_source))
4. TUI 应用
# 在 Textual 应用中显示动态图表
from termaid import MermaidWidget
from textual.app import App
class DiagramApp(App):
def compose(self):
yield MermaidWidget("graph LRn A --> B")
5. SSH 会话
# 在远程服务器上查看图表 ssh user@server "cat diagram.mmd | termaid"
🔄 集成 OpenClaw
自动化工作流
#!/bin/bash # 自动生成架构文档 # 1. 从代码生成 Mermaid 图 python generate_architecture_mmd.py > arch.mmd # 2. 渲染为终端友好的格式 termaid arch.mmd --theme neon > terminal_arch.txt # 3. 嵌入到文档中 cat terminal_arch.txt >> ARCHITECTURE.md
AI Agent 集成
# 在 AI Agent 中使用 Termaid 可视化架构
def visualize_architecture(agent_response):
"""
将 AI 生成的架构描述转换为可视化图表
"""
mermaid_source = agent_response.get('mermaid', '')
if mermaid_source:
from termaid import render
return render(mermaid_source)
return "No diagram to render"
📝 实用脚本
批量转换脚本
#!/bin/bash
# 批量转换 Mermaid 文件
for file in *.mmd; do
output="${file%.mmd}.txt"
echo "Converting $file to $output"
termaid "$file" --theme terra > "$output"
done
监控脚本
#!/bin/bash
# 监控架构变化并重新渲染
WATCH_DIR="./diagrams"
RENDER_DIR="./rendered"
inotifywait -m -e modify "$WATCH_DIR" |
while read -r directory events filename; do
if [[ "$filename" == *.mmd ]]; then
echo "Rendering $filename..."
termaid "$WATCH_DIR/$filename"
--theme phosphor
> "$RENDER_DIR/${filename%.mmd}.txt"
fi
done
🔍 高级用法
自定义渲染
from termaid import render
# 带自定义参数
result = render(
mermaid_source,
padding_x=8,
padding_y=4,
sharp_edges=True
)
错误处理
from termaid import render
import sys
try:
output = render(invalid_mermaid_source)
except Exception as e:
print(f"渲染失败: {e}", file=sys.stderr)
# 提供降级方案
print("graph TDn Error[渲染错误] --> Help[检查语法]")
性能优化
# 预加载常用图表
from termaid import render
import functools
@functools.lru_cache(maxsize=100)
def cached_render(source: str) -> str:
"""缓存渲染结果"""
return render(source)
🛠️ 故障排除
常见问题
编码问题
# 确保终端支持 UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
颜色不显示
# 安装 rich 扩展 pip install termaid[rich] # 或使用 ASCII 模式 termaid diagram.mmd --ascii
图表过大
# 调整填充 termaid diagram.mmd --padding-x 2 --padding-y 1
渲染失败
# 检查 Mermaid 语法 # 确保使用支持的图表类型
调试模式
import termaid
import logging
# 启用调试日志
logging.basicConfig(level=logging.DEBUG)
# 或查看内部状态
diagram = termaid.parse_mermaid(source)
print(f"图表类型: {diagram.type}")
print(f"节点数: {len(diagram.nodes)}")
📚 学习资源
官方链接
- GitHub: https://github.com/fasouto/termaid
- 在线试用: https://termaid.com
- PyPI: https://pypi.org/project/termaid/
相关工具
- Mermaid.js - 原始 Mermaid 库
- mermaid-ascii - Go 实现的终端渲染
- beautiful-mermaid - TypeScript 实现
最佳实践
- 保持简单:终端图表适合简单架构
- 使用主题:选择合适的主题提高可读性
- ASCII 备用:为不支持 Unicode 的环境提供回退
- 缓存结果:重复使用的图表可以缓存渲染结果
🎯 适用场景
推荐使用
- ✅ 终端文档和演示
- ✅ CI/CD 日志可视化
- ✅ SSH 远程架构查看
- ✅ TUI 应用集成
- ✅ 代码生成工具
不推荐使用
- ❌ 复杂的多层图表
- ❌ 需要精确布局的场景
- ❌ 需要交互式编辑
- ❌ 打印输出(分辨率不足)
📈 扩展可能性
1. 自定义主题
# 创建自定义颜色主题
custom_theme = {
"node_color": "#FF5733",
"edge_color": "#33FF57",
"label_color": "#FFFFFF"
}
2. 导出格式
# 导出为其他格式
def export_as_html(mermaid_source, termaid_output):
html = f"""
{termaid_output}
Mermaid 源代码
{mermaid_source}
"""
return html
3. 集成其他工具
# 与 Graphviz 结合 termaid diagram.mmd | dot -Tpng > diagram.png
许可证: MIT
Python 要求: >= 3.11
作者: Fabio Souto (@fasouto)
项目状态: Alpha(积极开发中)
热门AI工具
相关专题
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章