核心功能
Chart Image Generator 是一款专为无头服务器环境设计的图表生成工具,基于 Vega-Lite 和 Sharp 图像处理库,可将 JSON 数据转换为出版级 PNG/SVG 图表。核心价值在于彻底摆脱浏览器依赖:无需 Puppeteer、无需下载 Chrome、无需原生编译工具链。
显著优点
| 维度 | 传统方案 (Puppeteer/Canvas) | 本方案 |
|------|---------------------------|--------|
| 依赖体积 | 400MB+ | ~15MB |
| 冷启动时间 | 2-10秒 | <500ms |
| 部署复杂度 | 需 apt-get 安装系统库 | `npm install` 即可 |
| 离线能力 | 依赖外部 API (QuickChart) | 完全本地执行 |
| 云原生友好 | 需特殊 Docker 配置 | Fly.io/VPS 开箱即用 |
支持的图表类型:线图、柱状图、面积图、散点图、饼图/环形图、K线蜡烛图、热力图、多序列对比、堆叠柱状图、成交量叠加、迷你 Sparkline。
专业功能:时间序列轴(自动处理日期间隙)、Y 轴格式化(货币/百分比/紧凑数字)、水平参考线、时间轴事件标注、暗黑模式自动切换、聚焦最近 N 个数据点、涨跌幅标注。
潜在局限
1. 静态输出:仅生成图片,不支持交互式图表(tooltip、缩放需前端实现)
2. Vega-Lite 边界:复杂自定义可视化需手写 Vega-Lite spec,学习曲线存在
3. 无实时刷新:需重新执行命令生成新图,非流式更新
4. 字体限制:依赖系统字体,特殊字体需自行配置
适合人群
- DevOps/SRE:服务器监控告警图表、基础设施指标可视化
- 量化/金融开发者:K线图、价格走势、成交量分析(支持 OHLC 数据)
- 数据工程师:自动化报告生成、定时任务输出图表
- Bot/自动化开发者:Discord/Telegram 机器人嵌入图表、告警消息配图
使用风险
- 低:纯 Node.js 实现,无网络对外请求,无代码执行漏洞
- 数据隐私:数据全程本地处理,不上传第三方服务
- 依赖稳定性:Sharp 预编译二进制在少数架构(如 Alpine musl)可能需要额外配置
最佳实践
# 告警风格:聚焦变化 + 暗黑模式 + 关键值标注 node chart.mjs --type line --data '[...]' \ --title "指标监控" --show-change --focus-change --show-values --dark \ --output alert.png # 生成后务必通过消息工具发送图片(非 thread-reply) # action=send, filePath=/data/clawd/tmp/chart.png