从能画图到画对图:LakeMind ECharts 可视化体系的三周进化史
引子会查数的 Agent不一定会画图做过 Data Agent 的人大概都有同感让 LLM 写 SQL 查数只是前半程真正的最后一公里是把结果呈现给人看。表格适合精确读数但趋势、占比、对比这些诉求只有图表能回答。问题在于大多数 Agent 产品的图表能力是一次性的后端拼一个图表配置前端渲染出来故事就结束了。图丑、图错、图看不懂都没人管。LakeMind 走了一条不同的路把图表当作一个需要持续进化的产品能力来做。从 2026 年 6 月 27 日第一次提交 render_chart 工具到 7 月 12 日修复流式渲染下的图表重建风暴仓库里留下了二十多条 chart 相关的提交记录。这篇文章就顺着这些提交复盘一套 AI 图表体系是如何从能画进化到画对的。一、第一版先解决有没有render_chart 落地6 月 27 日第一版的设计很克制。提交 3df43c9 引入了 render_chart 工具和前端 ChartSegment 组件Agent 在对话中生成柱状图、折线图、饼图、散点图四种基础图表每个图表段还带一个可折叠的 SQL 区块让用户随时能看这张图的数据是怎么算出来的。这一版有一个重要的设计决策图表类型不是 LLM 一锤定音的。基础类型之间允许用户手动切换——Agent 给了柱状图用户觉得折线图更合适点一下 tab 就能换。这个决策背后的判断是LLM 对哪种图更合适的判断经常不稳定与其赌单次准确率不如把纠偏权交给用户。二、当天连环打磨ECharts 默认配置只适合做 Demo有意思的是第一版落地当天就迎来了连环打磨几条提交把能画往能看推了一大步6185cf3图表类型切换 tab 上的 emoji 换成统一风格的 SVG 图标去掉 hover 边框和多余标题让图表段在对话流里不那么跳戏1369bf2为深色主题定制高对比度色板坐标轴、tooltip、文字、图例全部统一适配柱状图加圆角、折线加粗2524764修复两类经典布局事故——图例与坐标轴重叠改为根据图例行数动态计算 bottom 留白以及饼图被标题遮挡整体下移。这几条提交看似琐碎其实指向同一个经验ECharts 的默认配置是为 Demo 设计的拿到真实产品里配色、留白、层级全都要重新过一遍。尤其是 Agent 场景图是嵌在对话流里的视觉噪音比普通报表页面更致命。三、画图之前先回答要不要画图表能力上线后很快暴露另一个问题Agent 太爱画图了什么问题都先甩一张图哪怕答案明明是一行数字。提交 8f15356 在系统提示词PREAMBLE中加入了可视化判断准则明确何时用表格、何时用图表避免每次都画图。同一天的 1a038db 和 ea7f8ac 则建立了图表类型治理新增漏斗图和仪表盘两类特殊图表用于转化漏斗分析与单值指标展示但它们不参与基础类型切换——特殊图表是 Agent 基于分析场景的刻意选择不该被用户误切成饼图。“基础类型随便切特殊类型听 Agent 的”这条规则把自由度和确定性划开了。四、桌面端的特殊需求全屏与高清导出7 月 10 日进入 7 月图表体系开始补桌面端特有的能力。提交 67cd552 一次性加入全屏查看与高清图片导出3758587 让全屏浮层里也能切换图表类型70dead6 针对 macOS 优化全屏渲染与布局。其中 7383b24 值得单独说保存图片最初走的是浏览器下载 API但在 Tauri 桌面应用里Webview 的下载行为并不可靠这条提交改为调用 Tauri 后端命令唤起系统原生保存对话框后端新增约 50 行命令代码。这是桌面应用与 Web 应用差异的一个缩影——许多 Web 上理所当然的能力到了桌面端都得重新走一遍原生链路。五、表达的正确性双 Y 轴与单位7 月 11 日真正让图表从好看走向正确的是 7 月 11 日的两条提交。2d9a8f2 解决的是经典的量纲碾压问题当销售额和转化率放在同一张图上时共享 Y 轴会把转化率压成贴着零的一条线。这条提交给 render_chart 增加了 right_y_fields 参数让 LLM 可以把不同量纲的序列放到右侧 Y 轴单轴还是双轴由分析场景决定同时右轴隐藏分割线、网格右侧加宽轴名称自动取自该轴上的序列。3876dfd 则补上了单位新增 y_field_labels 参数列名到带单位可读标签的映射让图例和轴名称直接显示单位。提交信息里有一句话说得很直白双 Y 轴图如果没有单位读者根本无法判断右轴是百分比还是 0-1 小数。更值得注意的是这两条提交的配套动作它们不只改了代码还同步更新了 PREAMBLE 和 tenets 准则库中的>六、主题重构与流式渲染的性能坑7 月 11 日—12 日7 月 11 日 LakeMind 整体重构了浅色主题图表跟着重做了一版浅色风格17d6057全屏浮层与头部也补齐了浅色适配。7 月 12 日的 abcf732 则是整个进化史里技术含量最高的一条修复。背景是内联图表引用机制上线后Agent 可以在文字总结里用 {{chart:}} 标记把已生成的图表嵌进正文这部分机制此前已有专文分析流式输出期间出现了严重卡顿。排查结论很有代表性流式追加文本时前端状态每个 token 都会产生新的数组引用导致图表块的 memo 重算、每次 map 都生成全新的块对象而 SolidJS 的 For 组件是按对象引用做 key 的引用一变就销毁重建——等于每个 token 都在对所有内联图表执行一次 echarts.dispose() 加 echarts.init()。修复思路是给解析结果做引用级缓存以图表标记为 key 缓存已解析的块对象只要引用未变就复用同一个对象For 组件便不再重建。修复后图表在标记闭合的瞬间就能出现在流式文本中间且全程零重建。这条提交还顺手修了一个细节未闭合的标记会显示一个占位徽章而不是把原始花括号泄漏到正文里。七、复盘三条可以带走的经验回头看这三周、二十多条提交有三条经验对做 AI 产品的同学应该有参考价值。第一图表库的默认配置只够做 Demo。配色、留白、图例位置、主题适配每一项都要按真实产品标准重新过一遍而且这是一项持续工作不是一次性装修。第二可视化准则要编码进系统而不是靠提示词口头叮嘱。LakeMind 的做法是把准则拆成三层工具参数层right_y_fields、y_field_labels 让正确性变成接口约束、提示词层PREAMBLE 里的判断规则、准则库层tenets 中可检索的>

相关新闻

2026半导体行业标签管理方案深度解析

2026半导体行业标签管理方案深度解析

导语:半导体行业标签管理的精细化挑战半导体制造是典型的多品种、多批次、高精度行业。从晶圆切割到封装测试再到芯片出货,每一个环节都依赖标签实现物料追踪、质量追溯和客户交付。随着半导体产业链向更高精度、更复杂工艺演进,标签管理早已…

2026/10/14 9:13:36 阅读更多 →
JS几种主要的循环方法

JS几种主要的循环方法

一、for 循环for 循环是最基础的循环结构&#xff0c;适用于已知循环次数的场景。for (let i 0; i < array.length; i) {console.log(array[i]); }二、for...in 循环for...in 循环用于遍历对象的可枚举属性。注意&#xff1a;fo…in循环一般用于对象的遍历&#xff0c;但是…

2026/10/12 16:38:10 阅读更多 →
暗黑3技能连点器完整指南:5分钟掌握自动化战斗技巧

暗黑3技能连点器完整指南:5分钟掌握自动化战斗技巧

暗黑3技能连点器完整指南&#xff1a;5分钟掌握自动化战斗技巧 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 暗黑破坏神3是一款动作角色扮演游戏&a…

2026/10/9 13:29:48 阅读更多 →

最新新闻

从碎片需求到系统设计:REA框架实战解析

从碎片需求到系统设计:REA框架实战解析

1. 从“rea”这个碎片标题聊起&#xff1a;一个容易被忽略的高频词我平时泡社区的时候&#xff0c;经常看到有人只甩一个词就问“怎么做”&#xff0c;最近遇到的项目标题只有三个字母&#xff1a;“rea”。说实话&#xff0c;第一眼确实懵。没有上下文、没有细节、没有任何配套…

2026/10/15 6:17:43 阅读更多 →
从大幅面喷绘到UV打印:技术进化、设备选型与实战避坑指南

从大幅面喷绘到UV打印:技术进化、设备选型与实战避坑指南

做喷印这行十几年&#xff0c;眼看着设备从一米多宽的溶剂机换到现在的平板UV&#xff0c;变化是真不小。当年一提到大幅面喷绘&#xff0c;想到的都是户外广告、灯箱布、车身贴&#xff0c;溶剂墨水加压电喷头&#xff0c;味道大、速度慢&#xff0c;可那也是那个年代最能打的…

2026/10/15 6:17:43 阅读更多 →
基于MATLAB的电磁散射RCS特性计算:Mie级数与矩量法全流程解析

基于MATLAB的电磁散射RCS特性计算:Mie级数与矩量法全流程解析

做电磁散射特性计算的人都知道&#xff0c;最后拿出来的东西不能是"一堆场图"&#xff0c;得是能对得上实验、能指导设计的定量结论。我入坑这条路就是从MATLAB起步的——从最经典的金属球验证&#xff0c;到后来用矩量法算任意形状目标的雷达散射截面&#xff08;RC…

2026/10/15 6:17:43 阅读更多 →
PyTorch图像分类项目实战:从数据准备到模型部署的完整流程

PyTorch图像分类项目实战:从数据准备到模型部署的完整流程

1. 先说清楚&#xff1a;这个项目到底想用PyTorch解决什么问题我最近在做一个三分类的图像识别小项目&#xff0c;场景很朴素&#xff1a;给一批产品照片自动分到三个类别里。数据量不大&#xff0c;每类大概四五百张&#xff0c;加起来勉强过千。模型不需要做到工业级精度&…

2026/10/15 6:17:43 阅读更多 →
PyTorch梯度累加机制与zero_grad()正确用法详解

PyTorch梯度累加机制与zero_grad()正确用法详解

1. 这个“默认累加”不是设计失误&#xff0c;而是为多步优化留的后门刚接触 PyTorch 的人&#xff0c;第一次写训练循环时几乎都会栽在这个坑里&#xff1a;模型跑几轮后 loss 突然爆炸&#xff0c;参数更新幅度大得离谱&#xff0c;梯度 norm 直冲云霄——查了半天发现&#…

2026/10/15 6:17:43 阅读更多 →
AI Agent智能面积手册:从0到1搭建可扩展Agent系统的工程实践

AI Agent智能面积手册:从0到1搭建可扩展Agent系统的工程实践

1. 从“智能面积”说起&#xff1a;这份手册到底想解决什么问题“智能面积”这个词第一次出现在我视野里的时候&#xff0c;我盯着屏幕愣了几秒。做了这么多年技术方案&#xff0c;见过“技术债”“算力密度”“数据飞轮”这类概念&#xff0c;但把“面积”和“智能”放在一起&…

2026/10/15 6:16:43 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时&#xff0c;网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上&#xff0c;依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里&#xff0c;扩缩容到底难在哪做过大模型推理服务部署的人&#xff0c;大概都经历过这样的场景&#xff1a;一个团队共用一套推理集群&#xff0c;A 业务跑的是 7B 的小模型&#xff0c;B 业务跑的是 72B 的大模型&#xff0c;C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子&#xff1a;一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减&#xff0c;为了把启动时间压进两秒以内&#xff0c;我手贱地把一串自认为“没用”的 systemd 服务给 disable 了&#xff0c;其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →