
1. 为什么单模型写论文总是又贵又慢写论文这件事本质上不是「写」的问题而是「规划、执行、审校」三种能力来回切换的问题。我一开始也是单模型硬扛用 Claude 从头写到尾结果就是规划阶段它给你写一大段背景铺垫执行阶段它又忍不住把参考文献格式重排一遍审校阶段它开始自我怀疑把已经定稿的段落再改三遍。token 哗哗地烧论文却没往前走几步。后来我把这个流程拆开看发现它天然适合三个角色分工。规划需要的是长上下文理解和结构化表达执行需要的是对代码、数据、实验细节的精确处理审校需要的是对逻辑漏洞和表述歧义的敏感度。这三件事让同一个模型全干它就会在角色之间反复横跳每次横跳都要重新加载一遍上下文token 消耗直接翻倍。我试过让 Claude 一个人演三个角色在 prompt 里写「你现在是规划者接下来切换到执行者」结果它根本不听还是按自己的节奏来。原因很简单单模型的系统提示是全局的你没法在同一个会话里给它三套互相冲突的行为约束。它要么一直啰嗦要么一直沉默没法做到「规划时啰嗦、执行时闭嘴、审校时挑刺」。所以真正的解法不是换更强的模型而是换一套编排方式。让 Claude 当领导负责拆解任务和最终润色让 Codex 做苦力负责把实验代码、数据表格、公式推导这些硬活干完让 Gemini 当军师负责读长文献、找逻辑矛盾、补充论证角度。三个模型各干各的通过文件系统交换中间产物而不是通过对话历史互相污染上下文。这套思路落地之后我最直观的感受是 token 账单降下来了。原来 Claude 一个模型跑完整个论文流程动辄几十万 token现在 Claude 只负责调度和终审重活交给 Codex 和 Gemini整体消耗压到了原来的两成左右。下面我把这套 AGENTS.md 编排方案完整拆给你包括角色配置、文件结构、验证步骤和踩过的坑。2. TaoToken 统一 Key 接入 Claude、Codex、Gemini 的准备工作三个模型来自三个不同的厂商如果每个都单独申请 Key、单独配环境变量、单独处理计费光是账号管理就能把人逼疯。更麻烦的是有些模型的 API 通道在国内访问不稳定写论文写到一半突然超时心态直接崩。所以我用 TaoToken 做统一入口一个 Key 管三个模型Base URL 和计费都在一个地方看。TaoToken 在这里的角色是「统一 API 通道」不是替代任何模型。你仍然是在调用 Claude、Codex、Gemini 的原生能力只是把请求先发到 TaoToken 的网关由它转发到对应的模型服务。这样做的好处有三个第一你只需要维护一个 API Key不用在三个平台之间来回切换第二计费统一你能清楚看到每个模型花了多少 token第三通道稳定性由网关层处理不用自己折腾网络配置。具体操作上你先去 TaoToken 官网注册账号然后在控制台创建一个 API Key。这个 Key 的权限是全局的可以调用平台上支持的所有模型。创建完之后你会拿到两样东西一个是 Base URL固定是https://taotoken.net/api另一个是你的 API Key形如sk-xxxxxxxx。这两个值后面会写进各个模型的配置文件里。这里有个细节要注意不同模型对 Base URL 的拼接方式不一样。Claude Code 用的是 Anthropic 兼容格式需要在 Base URL 后面加/v1Codex 用的是 OpenAI 兼容格式也是加/v1Gemini 的 SDK 有自己的路径规则通常是在 Base URL 后面加/v1beta。所以你在配置文件里看到的完整地址可能是https://taotoken.net/api/v1或https://taotoken.net/api/v1beta具体以你用的客户端文档为准。另外TaoToken 的模型 ID 命名和官方基本一致。Claude 系列用claude-opus-4-5、claude-sonnet-4-5这种格式Codex 用gpt-5.1-codex-max或codex-mini-latestGemini 用gemini-3-pro或gemini-3-flash。你在配置文件里填 Model ID 的时候直接写这些名字就行不用加厂商前缀。准备工作做完之后你手里应该有三样东西TaoToken 的 API Key、Base URL、以及你要用的三个模型的 Model ID。接下来就是把这套东西写进 AGENTS.md 和各个模型的配置文件里让它们能互相调用。3. 可复制的 AGENTS.md 角色配置与三模型接入片段这一节是整篇文章的核心我直接把可复制的配置片段给你。你需要创建四个文件一个AGENTS.md作为总纲三个模型各自的配置文件CLAUDE.md、CODEX.md、GEMINI.md。这四个文件放在项目根目录每个模型启动时会自动读取对应的文件。先看AGENTS.md它是整个协作流程的调度规则Claude 作为总指挥会优先读这个文件# AGENTS.md - 论文协作总纲 ## 角色定义 - Claude总指挥。负责拆解论文任务、分配子任务、最终润色。不直接写实验代码不直接读长文献。 - Codex工程师。负责实验代码、数据处理、公式推导、图表生成。输出必须附带可运行命令。 - Gemini分析师。负责文献精读、逻辑审查、论证补充。不修改代码只输出分析报告。 ## 协作流程 1. Claude 读取论文大纲拆解为若干子任务写入 tasks/ 目录。 2. Codex 读取 tasks/ 中标记为 [code] 的任务执行后把结果写入 outputs/。 3. Gemini 读取 outputs/ 和参考文献输出审查意见到 reviews/。 4. Claude 汇总 outputs/ 和 reviews/生成最终论文段落。 ## 约束 - 任何模型不得修改其他模型的输出文件只能新建自己的文件。 - Codex 每次执行前必须确认任务标记为 [code]。 - Gemini 的输出必须包含「问题定位」和「修改建议」两部分。 - Claude 在终审阶段必须逐条回应 Gemini 的审查意见。然后是CLAUDE.md给 Claude 看的角色约束# CLAUDE.md - 总指挥行为规范 你是论文协作流程的总指挥。你的职责是规划、调度、终审不是执行。 ## 你必须做的 - 读取 AGENTS.md按流程拆解任务。 - 把代码类任务写入 tasks/code-*.md标记 [code]。 - 把文献类任务写入 tasks/lit-*.md标记 [lit]。 - 终审时逐条回应 reviews/ 中的意见。 ## 你禁止做的 - 禁止直接写超过 20 行的代码块。 - 禁止直接引用未在 outputs/ 中出现的数据。 - 禁止跳过 Gemini 的审查直接定稿。 ## 输出格式 - 任务拆解用 Markdown 表格列任务ID、类型、描述、负责模型。 - 终审意见用引用块逐条对应审查意见。接着是CODEX.md给 Codex 看的执行规范# CODEX.md - 工程师行为规范 你是论文协作流程中的工程师。你只负责执行 tasks/ 中标记为 [code] 的任务。 ## 你必须做的 - 读取 tasks/code-*.md逐条执行。 - 每个任务输出一个独立文件到 outputs/文件名与任务ID一致。 - 输出必须包含可运行命令、预期结果、实际结果。 - 如果任务涉及数据处理必须给出数据形状和字段说明。 ## 你禁止做的 - 禁止修改 tasks/ 中的任务描述。 - 禁止读取 reviews/ 中的内容。 - 禁止输出超过 200 行的单个代码块超长逻辑拆成多个文件。 ## 输出格式 - 每个输出文件开头写 ## 任务ID 和 ## 执行状态。 - 命令用 bash 代码块结果用 text 代码块。最后是GEMINI.md给 Gemini 看的审查规范# GEMINI.md - 分析师行为规范 你是论文协作流程中的分析师。你负责文献精读和逻辑审查不碰代码。 ## 你必须做的 - 读取 outputs/ 中的执行结果和 refs/ 中的参考文献。 - 对每个输出文件给出审查意见写入 reviews/。 - 审查意见必须包含「问题定位」和「修改建议」。 - 如果发现逻辑矛盾必须引用原文位置。 ## 你禁止做的 - 禁止修改 outputs/ 中的任何文件。 - 禁止直接生成论文段落只输出审查意见。 - 禁止在审查意见中写超过 50 行的代码。 ## 输出格式 - 每个审查文件对应一个输出文件文件名加 -review 后缀。 - 问题定位用引用块修改建议用有序列表。四个文件写完之后你还需要配置三个模型的 API 接入。以 Claude Code 为例它的配置文件通常在~/.claude/settings.json你需要写入{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api/v1, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-opus-4-5 } }Codex 的配置在~/.codex/auth.json和~/.codex/config.tomlauth.json 写 Key{ OPENAI_API_KEY: sk-你的TaoToken密钥 }config.toml 写 Base URL 和模型model gpt-5.1-codex-max model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api/v1 wire_api chatGemini 的配置在环境变量里你可以在.env文件中写GEMINI_API_KEYsk-你的TaoToken密钥 GEMINI_BASE_URLhttps://taotoken.net/api/v1beta GEMINI_MODELgemini-3-pro这里要特别注意三个模型用的 Key 是同一个 TaoToken Key但 Base URL 的路径后缀不同。Claude 和 Codex 用/v1Gemini 用/v1beta。如果你把路径写错了会直接报 404 或 401后面排障章节我会详细说。配置写完之后你在项目根目录启动 Claude Code它会自动读取CLAUDE.md和AGENTS.md。然后你在 Claude 的对话里说「按 AGENTS.md 流程启动论文协作」它就会开始拆解任务。Codex 和 Gemini 的调用可以通过 Claude 的 Bash 工具触发比如codex exec 读取 tasks/code-001.md 并执行或者gemini -f tasks/lit-001.md。这样三个模型就串起来了。4. 验证请求与 token 用量对比跑通一次论文协作配置写完不代表能跑通你需要做一次最小验证。我建议用一个简单的论文片段来测试比如让三个模型协作写一段「方法」章节。具体步骤如下。第一步在项目根目录创建tasks/、outputs/、reviews/、refs/四个目录。然后在refs/里放一篇参考文献的 PDF 或 Markdown。接着在 Claude Code 里输入按 AGENTS.md 流程为「方法」章节拆解任务。参考文献在 refs/ 目录。Claude 应该输出一个 Markdown 表格包含至少两个任务一个[code]类型的数据处理任务一个[lit]类型的文献审查任务。如果它直接开始写方法章节的正文说明CLAUDE.md没生效你需要检查文件是否放在项目根目录以及 Claude Code 启动时是否读取了它。第二步触发 Codex 执行。在 Claude Code 的终端里运行codex exec 读取 tasks/code-001.md按 CODEX.md 规范执行输出到 outputs/code-001.mdCodex 会读取任务文件执行里面的代码然后把结果写到 outputs 目录。你打开outputs/code-001.md应该能看到可运行命令、预期结果、实际结果三部分。如果 Codex 输出了一堆解释性文字但没有代码块说明CODEX.md的约束没生效检查文件路径和 Codex 的配置。第三步触发 Gemini 审查。运行gemini -f tasks/lit-001.md -o reviews/lit-001-review.mdGemini 会读取任务和 outputs 目录输出审查意见。你打开reviews/lit-001-review.md应该能看到「问题定位」和「修改建议」两部分。如果 Gemini 直接开始改代码说明GEMINI.md没生效。第四步回到 Claude Code输入读取 outputs/ 和 reviews/生成方法章节终稿。Claude 会汇总执行结果和审查意见生成最终段落。这时候你检查终稿应该能看到它逐条回应了 Gemini 的审查意见而不是直接复制 outputs 的内容。跑完这一轮之后你可以在 TaoToken 控制台查看 token 消耗。我实测下来同样一段方法章节单用 Claude 从头写到尾大约消耗 4.2 万 token用这套三角色协作Claude 只消耗 0.8 万 tokenCodex 消耗 1.1 万 tokenGemini 消耗 0.6 万 token总计 2.5 万 token降幅约 40%。如果论文更长、实验更复杂降幅会更明显因为 Claude 的调度开销基本恒定而 Codex 和 Gemini 的单位 token 成本更低。这里有个验证技巧你在 TaoToken 控制台的用量明细里按模型分组看 token 数。如果 Claude 的 token 数占比超过 50%说明它还在干重活你需要检查CLAUDE.md里的禁止条款是否生效。理想状态下Claude 的 token 占比应该控制在 30% 以内。5. 常见报错排查401、local proxy failed、reading choices、OAuth这套流程跑起来之后最容易卡在接入环节。我把踩过的坑按报错类型列出来你对照着排查。401 Unauthorized这个报错说明 Key 没传对。先检查~/.claude/settings.json里的ANTHROPIC_API_KEY是不是sk-开头有没有多余空格。然后检查 TaoToken 控制台里这个 Key 是否被禁用或过期。如果 Key 没问题检查 Base URL 是不是写成了https://taotoken.net/api而漏了/v1。Claude Code 对路径很敏感漏了/v1会直接 401。local proxy failed这个报错通常出现在 Codex 的 config.toml 里。如果你在[model_providers.taotoken]下面写了base_url https://taotoken.net/api/v1但wire_api写成了responses就会报这个错。Codex 的 chat 接口用wire_api chatresponses 接口用wire_api responsesTaoToken 的/v1路径对应的是 chat 接口所以必须写chat。改完之后重启 Codex 终端。reading choices 报错这个报错一般出现在 Gemini 的 SDK 里提示reading choices或Cannot read properties of undefined。原因是 Gemini 的 Base URL 路径写成了/v1但 Gemini SDK 期望的是/v1beta。你把GEMINI_BASE_URL改成https://taotoken.net/api/v1beta就能解决。另外Gemini 的模型 ID 如果写成gemini-3-pro但实际平台上是gemini-3-pro-preview也会报这个错去 TaoToken 控制台的模型列表里核对一下。OAuth 相关报错如果你在 Claude Code 里看到OAuth token expired或refresh token failed说明你之前登录过官方账号本地缓存了 OAuth 凭证和 API Key 冲突了。解决办法是删掉~/.claude/下的credentials.json或oauth.json然后重启 Claude Code。它检测不到 OAuth 凭证就会走 API Key 通道。还有一个隐蔽的坑三个模型同时读写同一个文件时会出现文件锁冲突。比如 Codex 正在写outputs/code-001.mdGemini 同时去读可能读到半截内容。解决办法是在AGENTS.md里加一条约束任何模型写文件前先创建.lock文件写完删除。或者更简单让 Claude 在调度时串行触发不要并行。最后提醒一点如果你在配置里同时写了官方 API Key 和 TaoToken Key客户端可能优先用官方 Key导致计费走错通道。检查方法是看 TaoToken 控制台的用量明细如果某个模型的 token 数一直是 0说明请求没走 TaoToken。这时候你要把官方 Key 从环境变量里删掉只保留 TaoToken Key。6. 把三角色协作固化成你的论文工作流这套方案跑通之后我建议你把它固化成项目模板。每次开新论文直接复制AGENTS.md、CLAUDE.md、CODEX.md、GEMINI.md四个文件改一下refs/里的参考文献就能启动。Claude 负责拆任务和终审Codex 负责跑实验和出图表Gemini 负责读文献和挑逻辑漏洞你只需要在关键节点做决策。如果你想让这套流程更省 token有两个优化方向。第一把 Codex 和 Gemini 的模型换成更便宜的版本比如 Codex 用codex-mini-latestGemini 用gemini-3-flash只在关键任务上切回大模型。第二在AGENTS.md里加一条「上下文压缩规则」每个模型输出超过 2000 字时必须先生成一份 200 字摘要后续模型只读摘要不读全文。这样能进一步压低 token 消耗。接入通道方面你可以在 TaoToken 控制台创建多个 Key分别给 Claude、Codex、Gemini 用这样用量明细更清晰。创建 Key 的入口在控制台的 API Keys 页面每个 Key 可以设置独立的额度上限防止某个模型意外烧太多。模型对话功能可以用来快速测试某个模型是否可用不用写代码就能验证 Key 和 Base URL 是否正确。如果你在配置过程中遇到问题可以先看接入文档里的示例里面有针对 Claude Code、Codex、Gemini 的完整配置片段。文档地址在 TaoToken 官网的文档中心路径是/doc。另外Coding Plan 适合长期跑这套协作流程的场景它把多个模型的调用打包成一个订阅比按量计费更划算具体可以看控制台的 Coding Plan 页面。这套三角色协作的核心不是「让 AI 替你写论文」而是「让每个 AI 只干它最擅长的那一段」。Claude 擅长规划和润色Codex 擅长执行和调试Gemini 擅长长上下文分析你把它们放在正确的位置上token 消耗自然就降下来了。我现在的习惯是论文的每一章都先让 Claude 拆任务Codex 跑数据Gemini 审逻辑最后 Claude 统稿。整个过程我只需要在三个节点做判断任务拆得对不对、数据跑得准不准、审查意见改没改。剩下的时间我可以去喝咖啡等它们把活干完。