用途:在聊天回复中生成可嵌入的内联图表图片(PNG),用于柱状图、折线图、面积图等数据可视化。
主要能力:图表由服务端使用 chartjs-node-canvas(Chart.js)渲染为 PNG,并通过 /api/media/ 提供。generate-chart 脚本渲染图表后返回完整 URL,可嵌入聊天 markdown。支持多系列与堆叠图(--stacked=true),数据可传数字数组,或传 {label, data, color} 数组。
使用方式:
pnpm action generate-chart --type=bar --title="Title" --labels='["A","B","C"]' --data='[1,2,3]' --color="#18B4F4"
参数:--type(bar、line、area,默认 bar)、--title(必填,保持简短)、--subtitle(可选)、--labels(必填,JSON 数组)、--data(必填,数字数组或多系列对象数组)、--color(默认 #18B4F4)、--theme(dark、light,默认从 /api/theme 自动)、--stacked(默认 false)、--filename、--width/--height(默认 800x400)。输出为 { filename, url, width, height },url 带缓存清除参数。
样式偏好:图上文字尽量少,仅短标题、无副标题;统计与上下文放在图表周围的聊天文本中;标题 22px、坐标轴 13px;x 轴 maxTicksLimit 8、y 轴 5;标签不旋转(maxRotation: 0)。
限制与注意:相对路径不可用,聊天 UI 在不同源,必须使用脚本输出的完整 URL(基于 APP_ORIGIN);缓存清除 ?v=<timestamp> 自动追加;chartjs-node-canvas 依赖 canvas 原生模块,pnpm.onlyBuiltDependencies 需包含 "canvas",未构建时运行 pnpm rebuild canvas;主题从 media/theme.json 自动检测。