1. 先定位:nature-figure 是绘图 Skill,TaoToken 只负责模型请求
最近在给 nature-skills 的 nature-figure 接绘图 Agent 时,最容易踩的坑不是 matplotlib 报错,而是 Agent 侧模型凭据没填对。TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=python_figure_intro 可以拿 Key,Base URL 用 https://taotoken.net/api。很多人第一次跑绘图 Skill,看到终端里出现401 invalid api key、model not found或者 Agent 反复说“无法生成文件”,会下意识去改 Python 脚本、换字体、重装 matplotlib。实际上,Python 绘图脚本是本地的,真正需要模型请求的是绘图 Agent:它读 Skill 约束、改脚本、补统计标注、整理多面板布局,这一过程消耗 Token。TaoToken 在这里只做一件事:给 Agent 提供模型请求入口。它不接管你的plt.savefig(),也不替你执行python make_figure.py。
把边界分清楚之后,整个链路会清晰很多。本地负责:虚拟环境、数据文件、Python 绘图脚本、多面板输出 PNG/SVG/PDF。Agent 负责:读 nature-figure 的 SKILL.md 和 references,按期刊图件习惯修改脚本,检查面板标签、轴标签、字号、图例、统计表达。TaoToken 负责:在 Agent 调用模型时提供 Base URLhttps://taotoken.net/api和 API Key。这样排查问题时就不会混在一起:图没出来,先看本地脚本;Agent 不回复,先看模型凭据;Agent 回复了但图不对版,再看 Skill 是否装全、提示词是否写清楚。
本文按 Python 绘图视角走一遍可复现流程:安装 nature-figure、给 Claude Code / Codex / CC Switch 配 TaoToken 凭据、运行一个 2×2 多面板脚本、让 Agent 只改脚本、最后用一张对照表核对模型请求凭据与产物。文末按“模型对话 → Coding Plan → 创建 Key → Claude Code 文档”的顺序给出入口。需要先说明:nature-skills 里不是所有 Skill 都处于同一成熟度,使用前以仓库当前标记为准,绘图相关输出仍要人工复核。
2. 从 npx skills 装 nature-figure:只装绘图这一项
nature-skills 把科研任务拆成多个可复用 Skill,覆盖阅读、检索、润色、写作、绘图、统计审查、投稿前评审和返修回复等。对 Python 绘图来说,不需要一次装全。你完全可以只装 nature-figure,先跑通“数据表 → 多面板图 → 可编辑 SVG/PDF”这条线。仓库里常见的安装方式是用npx skills查看并选择单项 Skill,也可以按仓库脚本同步到 Codex 或 Claude Code。注意:单独复制一份SKILL.md往往不够,部分功能依赖references、模板、脚本、nature-shared,以及 Python、R、浏览器或 MCP 服务。绘图任务至少要有 Python 环境;如果 Skill 里引用了示例模板,也要把对应目录一起保留。
先建一个独立项目目录,避免污染已有科研工程:
mkdir -p ~/lab/nature-figure-demo cd ~/lab/nature-figure-demo python -m venv .venv source .venv/bin/activate # Windows PowerShell 用: # .venv\Scripts\Activate.ps1 pip install --upgrade pip pip install matplotlib pandas numpy如果你需要更接近期刊配色的调色板,可以再加seaborn,但本文示例只依赖 matplotlib、pandas、numpy,减少环境变量。接着查看 Skill 列表并安装 nature-figure:
npx skills list npx skills add nature-figure安装完成后,检查项目里是否出现类似.claude/skills/nature-figure、.codex/skills/nature-figure或仓库脚本指定的 Skill 目录。不要只看SKILL.md是否存在,还要确认references、templates、scripts是否完整。很多“Agent 不按格式画图”的问题,根源是 Skill 资源缺文件,Agent 只拿到了一个空壳说明。若你使用 Codex 或 Claude Code,建议在项目根目录启动 Agent,这样它更容易发现当前项目的 Skill 目录和 Python 脚本。下面给出一个最小的目录示意,不必逐字照抄,只要保证 Agent 能读到 Skill 和脚本即可:
nature-figure-demo/ ├── .venv/ ├── make_figure.py ├── data/ │ └── demo.csv ├── .claude/ │ └── skills/ │ └── nature-figure/ │ ├── SKILL.md │ ├── references/ │ ├── templates/ │ └── scripts/ └── outputs/ ├── figure_multi_panel.png ├── figure_multi_panel.svg └── figure_multi_panel.pdf如果你的 Agent 平台要求把 Skill 放到用户级目录,就按平台文档放置,不要强行复制到错误路径。安装阶段的目标只有一个:让绘图 Agent 能读到 nature-figure 的完整约束,同时让 Python 脚本留在本地可执行。
3. 给绘图 Agent 配 TaoToken 凭据:Claude Code / Codex / CC Switch 三套
模型凭据要在 Agent 侧配置,不是在 Python 脚本里写 Key。Python 脚本只负责画图,不应出现任何 API Key。你需要先去 TaoToken 官网拿 Key:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=python_figure_config 。控制台里创建或复制 Key 后,用占位符YOUR_API_KEY代替真实值,不要把真实 Key 提交到 Git。Base URL 统一用:
https://taotoken.net/api这个 Base URL 不加 UTM,也不要在后面随意拼接未知路径。下面分三套常见配置:Claude Code、Codex、CC Switch。注意不要混用协议:Claude Code 用ANTHROPIC_*;Codex 用config.toml,不要把ANTHROPIC_*套到 Codex。
3.1 Claude Code:settings.json / ANTHROPIC_*
Claude Code 可以在项目级或用户级settings.json里配置环境变量。常见位置是~/.claude/settings.json或项目下的.claude/settings.json。示例:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "YOUR_API_KEY" } }如果你更习惯用 shell 环境变量,也可以:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="YOUR_API_KEY"配置后重启 Claude Code,或者新开一个终端,让环境变量生效。验证时可以让 Agent 回复一句简单内容,确认没有401或connection error。如果仍然报错,优先检查:Key 是否复制完整、是否有多余空格、Base URL 是否写成了别的地址、当前终端是否真的加载了 settings.json。
3.2 Codex:config.toml
Codex 使用~/.codex/config.toml或项目级配置。典型写法如下,注意这里用的是 Codex 自己的 provider 配置,不要写ANTHROPIC_*:
model = "gpt-5-codex" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "responses"然后在 shell 里设置:
export TAOTOKEN_API_KEY="YOUR_API_KEY"这里的关键是env_key = "TAOTOKEN_API_KEY",它告诉 Codex 从环境变量读取 Key。不要把 Claude Code 的ANTHROPIC_API_KEY直接塞进 Codex 的env_key,也不要把ANTHROPIC_BASE_URL写进config.toml。两者协议和字段不同,混用会出现模型名不匹配、请求路径错误或鉴权失败。
3.3 CC Switch:Base URL、API Key、模型名三件套
CC Switch 这类切换工具通常要求三件套:Base URL、API Key、模型名。填法如下:
| 字段 | 填写值 | 说明 |
|---|---|---|
| Base URL | https://taotoken.net/api | 不加 UTM,不要写额外路径 |
| API Key | YOUR_API_KEY | 从 TaoToken 控制台复制 |
| 模型名 | 控制台实际可用的模型 ID | 以模型对话页或控制台为准 |
模型名不要凭记忆填。不同账号、不同通道可用的模型 ID 可能不同。如果你不确定,先在 TaoToken 的模型对话页确认可用模型,再复制到 CC Switch。配置完成后,用 CC Switch 切换到 TaoToken 供应商,重启 Agent,让它执行一个只读任务,例如“读取 make_figure.py 并总结当前面板数量”。这一步不触发绘图,只验证模型请求链路。
3.4 本地验证请求链路
可以用一个最小 curl 检查 Key 和 Base URL 是否可用。命令由你在本地执行,不要交给 Agent 去连生产库或执行未知命令:
curl -s https://taotoken.net/api/models \ -H "Authorization: Bearer YOUR_API_KEY" | head如果返回模型列表或明确的结构化信息,说明 Base URL 和 Key 基本可用。如果返回 401,检查 Key;如果返回 404,检查 Base URL 是否被改写;如果超时,检查本机网络和代理设置。这里不需要在 Python 脚本里做任何模型调用,绘图脚本保持纯净。
4. 可复现的 Python 多面板绘图脚本:本地跑图,Agent 只改脚本
下面给出一份可直接运行的make_figure.py。它用 numpy 造三组模拟数据,生成 2×2 多面板图:A 时间曲线、B 组均值柱状图、C 相关性热图、D 成对散点。脚本保存 PNG、SVG、PDF 三种格式,方便后续在 LaTeX 或 PPT 中继续编辑。这个脚本不访问网络,不调用模型,不消耗 Token。Token 消耗发生在绘图 Agent 读取 Skill、修改脚本、解释差异的时候。
# make_figure.py import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.ticker import MaxNLocator rng = np.random.default_rng(42) x = np.linspace(0, 10, 120) groups = { "Control": np.sin(x) + rng.normal(0, 0.12, x.size), "Treatment A": np.sin(x + 0.3) + 0.2 + rng.normal(0, 0.12, x.size), "Treatment B": np.cos(x * 0.8) + rng.normal(0, 0.12, x.size), } df = pd.DataFrame({"x": x, **groups}) long_df = df.melt(id_vars="x", var_name="group", value_name="value") fig, axes = plt.subplots(2, 2, figsize=(9, 7), constrained_layout=True) ax1, ax2, ax3, ax4 = axes.ravel() for name, sub in long_df.groupby("group"): ax1.plot(sub["x"], sub["value"], label=name, linewidth=1.4) ax1.set_title("A. Time course") ax1.set_xlabel("Time") ax1.set_ylabel("Signal") ax1.legend(frameon=False, fontsize=8) ax1.yaxis.set_major_locator(MaxNLocator(4)) means = df[list(groups)].mean() sems = df[list(groups)].sem() ax2.bar( means.index, means.values, yerr=sems.values, capsize=3, color=["#4C72B0", "#DD8452", "#55A868"], ) ax2.set_title("B. Group mean") ax2.set_ylabel("Mean signal") ax2.tick_params(axis="x", rotation=15) heat = df[list(groups)].corr() im = ax3.imshow(heat, cmap="vlag", vmin=-1, vmax=1) ax3.set_xticks(range(len(heat.columns)), heat.columns, rotation=30, ha="right") ax3.set_yticks(range(len(heat.index)), heat.index) ax3.set_title("C. Correlation") fig.colorbar(im, ax=ax3, shrink=0.8) ax4.scatter(df["Control"], df["Treatment A"], s=12, alpha=0.7, edgecolor="none") ax4.set_title("D. Pairwise scatter") ax4.set_xlabel("Control") ax4.set_ylabel("Treatment A") for ax in axes.ravel(): ax.spines[["top", "right"]].set_visible(False) fig.savefig("outputs/figure_multi_panel.png", dpi=300) fig.savefig("outputs/figure_multi_panel.svg") fig.savefig("outputs/figure_multi_panel.pdf") print("saved: outputs/figure_multi_panel.png / .svg / .pdf")运行前确保outputs目录存在:
mkdir -p outputs python make_figure.py你会得到三份文件。PNG 用于快速预览,SVG 和 PDF 用于后续编辑。此时图是“能看”的,但还不一定是“期刊风格”的。接下来让绘图 Agent 按 nature-figure 的约束修改脚本。提示词要限定范围:只改脚本,不执行未知命令,不访问数据库,不替换数据源。
请读取当前目录的 make_figure.py 和 nature-figure Skill。 只修改绘图脚本,不执行任何数据库命令,不访问网络。 任务: 1. 保留 2x2 多面板结构; 2. 面板标签统一为 A/B/C/D,并检查字号; 3. 轴标签、刻度、图例在最终 PDF 中保持可读; 4. 配色尽量接近高影响力期刊常用风格,但不要改变数据; 5. 输出修改后的 make_figure.py 和一份差异说明。Agent 输出新脚本后,仍然由你在本地运行:
python make_figure.py如果 Agent 建议安装新包,先确认包名和用途,再在虚拟环境里安装。不要直接运行来路不明的脚本。绘图 Agent 的价值在于按 Skill 约束批量修改脚本、检查多面板一致性、补充统计说明;它不应该接管本地执行权限。
5. 多面板结果与模型请求凭据对照:怎么核对 Token 消耗和产物
跑通一次后,建议做一张对照表,把“模型请求凭据”和“本地产物”分开记录。这样出问题时能快速定位:是 Key 失效,还是脚本没重跑,还是 Skill 没加载。下面是一个可复用的核对模板。
| 环节 | 配置入口 | 关键字段 | 预期产物 | 核对方式 |
|---|---|---|---|---|
| TaoToken Key | 官网控制台 | YOUR_API_KEY | 可用 Key | 控制台能看到 Key 状态 |
| Claude Code | ~/.claude/settings.json | ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY | Agent 正常回复 | 无 401,能读取 Skill |
| Codex | ~/.codex/config.toml | model_provider、base_url、env_key | Agent 正常回复 | TAOTOKEN_API_KEY已导出 |
| CC Switch | 供应商三件套 | Base URL、API Key、模型名 | 切换后 Agent 可用 | 模型名与页面一致 |
| Python 本地 | .venv | matplotlib、pandas、numpy | figure_multi_panel.* | python make_figure.py无报错 |
| 多面板结果 | outputs/ | PNG/SVG/PDF | 2×2 图件 | 打开 PDF 检查文字可编辑 |
| Token 消耗 | TaoToken 控制台 | 请求记录 | 用量记录 | 与 Agent 操作时间对应 |
这张表的核心是:模型请求凭据只影响 Agent,不影响本地绘图脚本。Token 消耗发生在 Agent 读 Skill、改脚本、解释差异、检查统计表达的时候。你可以在 TaoToken 控制台看请求记录,但不要把控制台用量和 matplotlib 执行混在一起。若 Agent 修改了脚本,务必重新运行python make_figure.py,否则你看到的还是旧图。若 SVG/PDF 中文字体缺失,优先检查本机字体和 matplotlib 字体缓存,而不是反复改 Base URL。
6. 常见报错与排查:401、404、模型名不匹配、图不对版
401 invalid api key:最常见原因是 Key 复制不完整、Key 已失效、或者 Claude Code 读的不是你以为的 settings.json。先检查ANTHROPIC_API_KEY或TAOTOKEN_API_KEY是否和 TaoToken 控制台一致。注意 Codex 不要用ANTHROPIC_*。
404 not found:通常是 Base URL 被改写。本文统一用https://taotoken.net/api。不要在后面随意加/v1、/chat/completions或其他路径,除非 TaoToken 文档明确要求。CC Switch 里也一样,Base URL 字段只填给定地址。
model not found / model not supported:CC Switch 或 Codex 里的模型 ID 与账号可用模型不一致。去 TaoToken 模型对话页确认可用模型,再复制准确 ID。不要凭记忆填一个看起来像的模型名。
Agent 不调用 nature-figure:检查 Skill 是否完整安装。只复制SKILL.md可能不够,references、templates、scripts、nature-shared缺失都会让 Agent 无法按预期工作。确认启动 Agent 的目录是项目根目录,或者按平台要求放到用户级 Skill 目录。
图不对版:Agent 改了脚本但你没有重新运行,或者它只给了建议没有写入文件。让 Agent 输出完整make_figure.py,然后本地执行。若多面板标签、字号、图例仍不统一,把具体面板截图或 PDF 页面给它,要求只改样式不改数据。
统计表达不可信:nature-statistics 之类的模块在不同版本里可能处于 Beta 或 Draft,不能替代人工判断。实验单位、重复数、p 值、多重比较、效应量仍要回到原始数据核对。绘图 Agent 可以帮你检查跨面板数值一致性,但不能替你决定统计方法。
7. 引用、统计与返修:nature-skills 其他模块怎么和绘图流水线共存
Python 绘图只是 nature-skills 的一个切面。仓库里还有阅读、检索、润色、写作、统计审查、投稿前评审和返修回复等 Skill。它们可以独立调用,不必串成固定流水线。对绘图任务来说,最实用的组合是:nature-figure 负责图件脚本,nature-statistics 负责统计表达复核,nature-ref-verifier 负责引用字段核验。但不要让一个 Prompt 同时做所有事。任务拆开后,Token 请求更容易审计,输出也更容易核对。
例如,你让绘图 Agent 改完make_figure.py后,另开一个会话让它检查图注中的统计描述;再另开一个会话让它核对参考文献。每次只给一个明确交付物:脚本、图注、引用列表、返修回复。这样即使某个 Skill 处于 Beta 或 Draft,你也能快速定位问题。需要再次强调,“Nature 风格”描述的是项目参照的表达、图件和审稿标准,不是期刊认可,也不构成录用保证。论文的新颖性、方法质量、实验数据、作者责任和期刊政策不会因为安装 Skill 而改变。
对于绘图流水线,建议固定三个目录:data/放原始数据,scripts/或项目根目录放make_figure.py,outputs/放 PNG/SVG/PDF。Agent 只改脚本,不直接改outputs/。每次修改后重新运行脚本,并保留一份差异说明。这样即使后面要返修,也能清楚知道哪一版图件对应哪一版脚本、哪一次模型请求。
8. 收尾:把 Key、Base URL、Skill 目录固定成可复用清单
把下面这份清单保存到项目 README 或本地笔记里,下次换机器时直接照做:
- 去 TaoToken 官网拿 Key:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=python_figure_cta
- 记住 Base URL:
https://taotoken.net/api - Claude Code 写
settings.json,使用ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY。 - Codex 写
config.toml,使用model_providers.taotoken和TAOTOKEN_API_KEY,不要混入ANTHROPIC_*。 - CC Switch 填三件套:Base URL、API Key、模型名。
- 安装 nature-figure:
npx skills list、npx skills add nature-figure,确认references、templates、scripts完整。 - 本地运行
python make_figure.py,检查outputs/figure_multi_panel.png、.svg、.pdf。 - 让绘图 Agent 只改脚本,改完由你本地重跑。
- 用对照表记录模型请求凭据、Agent 任务、产物文件和核对结果。
如果你还没确定模型是否可用,可以先到模型对话页试一条简单请求:https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=python_figure_chat 。如果你准备长期让绘图 Agent 参与科研图件迭代,可以看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=python_figure_plan 。需要创建新的 Key 时,走 API Keys 页面:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=python_figure_keys 。Claude Code 的具体配置字段和最新说明,参考文档:https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=python_figure_doc 。按这个顺序走,Python 绘图脚本、多面板结果和模型请求凭据就能各自独立、可复现、可核对。