Hermes Agent 现已支持零代码生成中文图表——只要准备好数据文件,无需编写任何 Python 代码,即可自动读取 CSV、计算统计指标、生成带有中文标题和图例的折线图、散点图或柱状图,并最终保存为 PNG 格式。这项功能对数据分析初学者和不熟悉编程的用户非常友好,但需要先确保几个关键环节配置到位。

具体操作流程如下,我们将一步步详细拆解。
确认代码解释器已启用并可执行绘图
这是所有后续操作的前提条件,如果遗漏这一步,后续指令再规范也无法触发图表生成。请首先打开 Hermes Agent 项目根目录下的 cli-config.yaml,检查 tools 配置节点是否包含以下内容:
terminal_tool:
enabled: true
allow_subprocess: true
allowed_commands: ["python", "pip", "ls", "cat"]
其中 allow_subprocess: true 最为关键——若不开启,Matplotlib 等系统级操作(如 savefig)将无法执行,且失败时不会出现明确错误提示,容易消耗大量排查时间。
配置完成后,运行 hermes --status,观察输出中是否包含 terminal_tool: active。若未出现,请重启 Agent 服务:Linux 用户可直接执行 systemctl restart hermes-agent,Windows + WSL 用户则关闭 CLI 窗口后重新打开即可。
用自然语言一句话生成带中文的折线图
这是零代码能力的核心体验——您无需了解 plt.plot() 的具体语法,只需清晰描述需求,Agent 便会自动完成路径补齐、数据加载、字体设置、图片保存等一系列步骤。
首先准备一个标准 CSV 文件,例如 sales_q2.csv,首行列名为 month,revenue,profit,内容均为数值,并将其放置于 Hermes Agent 的工作目录下(例如 ~/hermes-agent/)。
然后在 CLI 中直接输入:
分析sales_q2.csv中的月度营收与利润变化趋势,生成带中文标题和图例的折线图,保存为trend.png
Agent 收到指令后,会自动生成并执行一个临时脚本,核心逻辑包括:
→ 使用 pandas 读取 CSV
→ 设置 plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
→ 调用 plt.plot(data['month'], data['revenue'], label='营收') 和 plt.plot(data['month'], data['profit'], label='利润')
→ 执行 plt.legend()、plt.title('2026年第二季度营收与利润趋势')、plt.savefig('trend.png')
【注意:文件名必须包含 .csv 后缀,且不能包含空格或中文路径,否则 pandas 在第一步就会读取失败】
手动注入代码片段实现哑铃图(双年对比)
自然语言描述虽然方便,但遇到一些特殊图表(如哑铃图、小提琴图、分面子图),或者需要复用已有的数组变量时,直接提交 Python 代码反而更加可靠。
方法一:单行注入,适合简单图形
在 CLI 里直接粘贴并回车:
import pandas as pd; import matplotlib.pyplot as plt; df = pd.read_csv("sales_data.csv"); plt.scatter(df["2024"], df["2024"]); plt.xlabel("2024年销售额"); plt.ylabel("2024年销售额"); plt.title("各产品类别两年销售额对比"); plt.savefig("dumbbell.png")
方法二:多行脚本注入(推荐,可避免编码问题)
第一步:使用 hermes edit 打开内置编辑器(或直接新建一个 plot_dumbbell.py)
第二步:写入完整脚本(但有一个硬性要求——必须包含 plt.savefig(),否则不会输出文件)
第三步:执行 hermes run plot_dumbbell.py
操作看似简单:只需将文件拖入即可。但需特别留意:脚本中绝对不能出现 plt.show(),否则会导致进程卡死;所有图形必须通过 savefig 落盘才能获取文件。
解决中文乱码与保存失败问题
有时生成的图片标题显示为方块,或者保存的 PNG 为空白——这通常是因为 Matplotlib 未能正确加载中文字体。
首先进入 Hermes Agent 所在的 Python 环境,执行:
python -c "import matplotlib; print(matplotlib.get_cachedir())"
然后找到输出路径下的 fonts/ttf/ 子目录,确认其中包含 simhei.ttf 或 msyh.ttc。如果缺失,请手动下载一个 SimHei.ttf 放入该目录,再执行 rm -rf ~/.matplotlib/fontlist-*.json 清除缓存。
最后一步同样关键:在任何绘图代码的开头添加两行:
import matplotlib
matplotlib.use('Agg')
【若不添加这两行,许多服务器环境会因缺少 GUI 后端而静默失败,导致问题难以排查】
