Harness Engineering 三维度长时 Agent 任务,Key 用 TaoToken
Harness Engineering 的长时 AgentKey 走 TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 。Anthropic 用 Planner、Generator、Evaluator 三个角色把单个 Agent 撑到连续数小时OpenAI 的 Symphony 让 Codex 在多个工作区里并行跑 implementation run这两条路子本身都很扎实可一旦落到真实的工程环境最先出问题的常常不是模型质量而是每家厂商各一把 Key、每个 run 一套环境变量。规划用的模型和验收用的模型分属不同控制台CI 里一份 Key、本地一份、容器里再塞一份轮换一次就漏一处跑到第三个小时才弹 401前面烧掉的调用全都白费。这篇不从“装哪个工具”讲起先把原文里那三个正交的 Scaling 维度拆开看再回答一个具体问题当 Planner、Generator、Evaluator 和并发 run 都要跑起来时Key 和 Base URL 应该在哪一层收口。答案是把模型访问统一到一条兼容通道上配置里只改 provider 和 base_url不再为每个角色单独维护凭证也不在每台机器上重复一遍同样的注册流程。后面会给出 Codex 侧可直接复制的 config.toml以及 Symphony 风格并发 run 跑起来之后怎么对用量、怎么排最常遇到的三个错。1. Anthropic 的 Planner/Generator/Evaluator单 Agent 跑数小时卡点不在上下文长度1.1 时间 Scalability 的本质是状态管理不是窗口大小Anthropic 在 Harness Engineering 的时间维度上把单个 Agent 的连续运行拆成了规划、生成、验收三个角色。这个拆法乍看只是“多几个 prompt”实际解决的是长时任务里最麻烦的两件事错误累积和任务漂移。一个 Agent 连续跑四小时中途某个文件改错、某条命令返回非零、某次合并把别人的改动带进来如果没有人独立检查后面每一步都在错误前提上继续越跑越偏最后交付的 PR 表面上完整实际已经偏离原始目标很远。Planner 负责把大目标拆成可验证的小步Generator 只负责当前这一步的实现Evaluator 拿独立的判断标准回看产物测试有没有真的通过改动范围有没有越界下一步该继续还是回退。三个角色之间传递的是任务状态和中间结果不是整段聊天记录这样上下文不会无限膨胀单个角色的会话可以重置长时任务的“记忆”落在外部文件、分支和测试结果上。这意味着三个角色未必需要同一个模型。规划可以偏推理生成可以偏代码验收可以偏审阅和测试判断。一旦角色分模型Key 的数量就随之上升环境变量的命名也开始五花八门有的工具读 OPENAI_API_KEY有的读 ANTHROPIC_AUTH_TOKEN还有的走自己的 provider 配置段。原文讲的是架构落地时先遇到的却是凭证。1.2 OpenAI Symphony 与另一条正交轴并行 run 把凭证问题放大如果时间维度是“一个 run 能跑多久”OpenAI 的 Symphony 处理的更像是“同时能跑多少个 run”。Codex 在不同工作区并行执行任务每个工作区有自己的分支和改动范围多个 implementation run 同时推进、分别开 PR。这条路径把吞吐拉起来也让凭证管理从“每个角色一把 Key”变成“每个 run 都可能碰到 Key”。这里的关键是维度之间正交时间长的任务不代表并发高并发高的任务也不一定需要 Planner/Generator/Evaluator 三角色。但两条轴叠在一起时环境变量和 Base URL 的暴露面会成倍增加。一个工作区里的 Codex 读的是~/.codex/config.toml另一个工作区可能通过 shell 环境变量继承容器里又可能是另一份注入。只要 base_url 在一处写成了带/v1的地址那个 run 就会以 404 结束而其他 run 看起来一切正常排查成本极高。Cursor 那条轴讨论的是另一个方向的扩展重点同样落在“一个 harness 能协调多少工具与上下文”。不管具体维度怎么切工程侧的结论是一致的模型访问入口越分散长时任务和并发 run 的稳定性越差因为每一次新增角色或新增 run都在给凭证层增加一个可能配错的点。2. 多角色、多 run 之后Key 最先乱在哪一层2.1 官方控制台各一把 Key 的真实成本按最朴素的配法Planner 用一个厂商的模型、Generator 用另一个、Evaluator 再用第三个就要在三个控制台分别创建 Key分别记住配额和限流分别处理轮换。再加上 Codex 自己的 provider 配置、Claude Code 的环境变量一份工程里可能出现四五种 Key 变量名新同事入职时最耗时的往往不是读代码而是把这几套凭证凑齐。成本不在“创建”这一步而在后续维护。Key 轮换时本地 shell、CI secrets、容器镜像、同事的机器都要跟着改漏掉一处表现就是跑了几小时后突然 401而前面的输出已经进了分支。并发 run 更麻烦多个工作区共用同一个 shell 环境时容易把 A 任务的 Key 带进 B 任务账单和控制台用量对不上排查时又很难复现。还有一种隐性成本是模型 ID 漂移。每个厂商的模型命名规则不同角色一多配置里散落着各种 ID改一次模型要翻好几份文件。长时任务的稳定性往往就折在这些看起来不起眼的配置碎片上。2.2 收敛成一把 Key统一兼容通道解决的是凭证层TaoToken 在这里的角色不是再做一个模型而是把访问入口收成一条统一 API 通道。Planner、Generator、Evaluator 可以继续用不同模型但它们读的是同一把 Key、同一个 Base URL。Key 只需要在一处创建和轮换环境变量从一个变成一两个Codex 侧也只改 provider 段其他工作区照旧跑。具体做法只有三步在 TaoToken 注册并创建 API Key把工具里的 Base URL 填成https://taotoken.net/api模型 ID 从同一个站点的模型广场里选。Base URL 末尾不要加/v1也不要在这个地址后面拼任何追踪参数它是给程序调用的接口地址不是给人点的落地页两者混用是后面 404 的常见来源。这一步做完长时 Agent 任务里的角色划分和 Symphony 式并发 run 都还在变的是凭证不再跟着角色走。你不需要为了“让 Planner 用 A、让 Evaluator 用 B”去新建第二把 Key配置里改一行模型 ID 就够了。3. 在 TaoToken 上把三个角色的模型定下来3.1 注册并创建一把 Key打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 完成注册登录后进入控制台在 API Keys 页面创建一把 Key。复制出来后先不要直接写进代码或仓库放到本地环境变量或密钥管理工具里本文用YOUR_API_KEY作为占位符你在实际配置时替换成自己那把。原文在三个厂商控制台分别创建 Key 的步骤到这里合并成一次操作后续如果 Planner 要换模型、Evaluator 要换模型都不需要再新建 Key。这里有一个很实际的好处当长时任务跑到一半需要临时换模型时你可以直接改配置里的 model 字段不用中断 run 去别的控制台重新生成凭证。对于需要连续跑几个小时的 harness 来说少一次凭证操作就少一次中断风险。3.2 在模型广场确认角色与模型 ID 的对应关系模型 ID 不要凭记忆写也不要照着旧文章里的日期后缀抄。以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 模型广场当时的列表为准按角色挑模型再把真实 ID 填进配置。可以先用一张简表把三个角色对齐角色职责配置项Planner拆解任务、生成检查点YOUR_MODEL_IDGenerator实现当前步骤、提交改动YOUR_MODEL_IDEvaluator独立验收、跑测试、判断是否继续YOUR_MODEL_ID三个角色可以指向同一个模型也可以各指一个。无论怎么选Key 和 Base URL 都是共用的。这样做的一个直接好处是当你发现 Generator 的模型不适合某类仓库时只改一行 model不会碰到凭证也不会影响已经在跑的并发 run。4. 把 Codex 指到统一通道config.toml 里只动 provider 和 base_url4.1 ~/.codex/config.toml 的可复制写法Codex 读的是~/.codex/config.toml。要让 Symphony 风格的并发 run 走统一通道关键是model_provider和base_url两处不要把 Anthropic 那一套ANTHROPIC_*环境变量套到 Codex 上两者读的配置完全不同。下面是一份可直接改的示例# ~/.codex/config.toml model YOUR_MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chatKey 通过环境变量注入export TAOTOKEN_API_KEYYOUR_API_KEY如果你的 Codex 版本对wire_api有额外要求按它给出的兼容取值填即可核心不变的是base_url必须指向https://taotoken.net/api末尾不带/v1也不携带任何 UTM 参数。模型 ID 在模型广场页面复制填到model字段不要自己拼接后缀。注意base_url是给程序调用的地址注册、创建 Key、看用量都在官网落地页完成两者不要互换。4.2 多工作区并发时怎么共用一把 Key 又不互相串并发 run 的隔离靠工作区不靠 Key。每个工作区保留自己的目录、分支和输出路径Key 从环境变量读不写进仓库、不写进 Dockerfile 的明文层。想按 run 分别看用量可以在外层脚本里给每个工作区打日志前缀而不是给每个 run 建一把新 Key否则你又会回到“每新增一个任务就多一份凭证”的老路上。还有一点容易忽略Codex 的config.toml是用户级配置多个工作区会共享同一个文件。如果你确实需要不同工作区用不同模型优先用命令行参数或项目级配置覆盖model字段而不是复制多份config.toml到不同目录否则下次改base_url又会漏掉其中一份。长时任务最怕的不是模型慢而是某个工作区悄悄用了旧地址跑到一半才开始报错。5. 并发 run 的验证与报错对照5.1 先跑单 run再开多工作区不要一上来就同时开五个工作区。先用一个小仓库跑一次 Codex确认它读到了正确的model和base_url再逐步增加并发。也可以在 TaoToken 模型对话 里用同一把 Key 发一条测试消息先验证 Key 本身有效、模型 ID 存在再去排 Codex 侧的配置。这样能把“凭证问题”和“配置文件问题”分开不至于在一个 401 上耗掉整个下午。单 run 通过后再开第二个工作区。观察两个 run 是否都正常提交改动、是否分别开 PR。如果第二个 run 报 401优先检查它的 shell 是否继承了TAOTOKEN_API_KEY而不是先去改 config.toml。5.2 三类高频报错怎么对现象可能原因处理401 Unauthorizedenv_key没读到或用了轮换前的旧 Key确认TAOTOKEN_API_KEY在当前 shell 生效Key 来自 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end模型不存在 / model not foundmodel字段与模型广场列表不一致回到模型广场复制当前 ID不要凭记忆补后缀404 或路径找不到base_url被写成https://taotoken.net/api/v1或粘了落地页的查询参数改回https://taotoken.net/api末尾不加斜杠与参数长时任务里的报错还会披一层外衣不是第一次调用就失败而是跑到中途才 401那多半是 token 过期或 Key 被换掉不是 harness 逻辑问题。遇到这种情况先看调用时间点再核对 Key 的创建时间必要时在控制台重新创建一把更新到当前 shell 后再恢复并发。6. 长时任务跑稳之后把用量和下一步放在同一处6.1 对一下这次数小时 run 的调用记录Codex 连续跑完几小时后回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的控制台看用量确认这几个 run 的调用都记在了同一把 Key 下。如果同时开了多个工作区用量会集中在一起这正好可以用来判断 Planner、Generator、Evaluator 哪个角色更耗 token再决定要不要给某个角色换更轻的模型。对账这件事不需要很频繁但每次调整角色分工之后看一眼能避免长时任务悄悄把预算跑穿。6.2 接着要做的三件事想先在网页里试模型和角色分工打开 模型对话。准备把长时编码任务常态化看 Coding Plan 的套餐是否覆盖你的并发量。要再建一把 Key 给别的 run 用或者轮换旧 Key去 控制台 API Keys。需要在另一台机器上配 Claude Code 作为 Evaluator 的执行工具对照 Claude Code 接入文档。Harness Engineering 讲的三个 Scaling 维度本质上是让 Agent 跑得更久、更多、更宽。这三件事能不能同时成立很多时候取决于凭证层是不是足够简单。Planner 换模型只改一行 IDEvaluator 增加并发不再新建 Key多个工作区共用同一个base_url长时任务才不会在第三个小时被一个配置错误打断。把 Key 收到一处、把 Base URL 统一成https://taotoken.net/api之后角色和 run 才真正是在同一个 harness 里协同而不是各自背着一套环境变量互相打架。

相关新闻

Macro工程团队实战:PR、任务、频道三方联动的研发工作流

Macro工程团队实战:PR、任务、频道三方联动的研发工作流

Macro工程团队实战:PR、任务、频道三方联动的研发工作流 【免费下载链接】macro Macro is a unified workspace for teams: email, chat, docs, tasks, agents, calls, and CRM — -linked together with shared AI memory. 项目地址: https://gitcode.com/GitHub…

2026/9/18 23:20:07 阅读更多 →
用PyTorch实现GRU进行股票收益率预测:从数据准备到滚动训练

用PyTorch实现GRU进行股票收益率预测:从数据准备到滚动训练

简介:面向量化投资与深度学习交叉领域的学习资料,聚焦如何用门控循环单元(GRU)神经网络对104的时序股票数据建模,实现未来收益率的预测。内容围绕PyTorch框架展开,适合已掌握RNN基础、希望完成量化金融课程…

2026/9/18 23:20:07 阅读更多 →
Chart.js 轴标签技术指南:轴标题配置与自定义刻度格式

Chart.js 轴标签技术指南:轴标题配置与自定义刻度格式

Chart.js 轴标签技术指南:轴标题配置与自定义刻度格式 【免费下载链接】Chart.js Simple HTML5 Charts using the tag项目地址: https://gitcode.com/gh_mirrors/ch/Chart.js 当使用 Chart.js 创建图表时,为了让查看者理解正在查看的数据含义&#…

2026/9/18 23:20:07 阅读更多 →

最新新闻

WorkBuddy 定时更新不够,DeepSeek Harness 改走 TaoToken 后按需触发

WorkBuddy 定时更新不够,DeepSeek Harness 改走 TaoToken 后按需触发

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

2026/9/19 0:06:38 阅读更多 →
接口地址填好后,Agent 跑 Skill 的 Token 账对 TaoToken

接口地址填好后,Agent 跑 Skill 的 Token 账对 TaoToken

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

2026/9/19 0:06:38 阅读更多 →
HelloAgentsLLM 多模型切换要改代码?TaoToken 这样填 Base URL

HelloAgentsLLM 多模型切换要改代码?TaoToken 这样填 Base URL

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

2026/9/19 0:06:38 阅读更多 →
FPGA实现DDS信号发生器:相位累加器与ROM查表原理

FPGA实现DDS信号发生器:相位累加器与ROM查表原理

简介:本资源是一份面向电子工程、通信与FPGA开发初学者及本科毕设学生的完整技术论文,聚焦基于FPGA实现高精度DDS信号发生器的设计与验证。论文系统阐述DDS核心原理(相位累加器、ROM波形查找表、DAC与低通滤波器)、Verilog模块化实…

2026/9/19 0:06:38 阅读更多 →
TMS320F28335 ADC寄存器配置原理与精准采样实战

TMS320F28335 ADC寄存器配置原理与精准采样实战

1. 为什么ADC在TMS320F28335上不是“配好就能用”的模块?很多人第一次接触DSP28335的ADC模块时,会下意识把它当成STM32那种“开箱即用”的外设——调个库函数、设个采样通道、启动转换,数据就出来了。我当年也是这么想的,结果在实…

2026/9/19 0:06:38 阅读更多 →
VoxCPM:面向端侧部署的轻量级语音扩散模型

VoxCPM:面向端侧部署的轻量级语音扩散模型

1. VoxCPM是什么:一个专为语音生成设计的轻量级扩散模型架构VoxCPM不是某个具体可下载的软件包,也不是某家公司的商业化产品名称,而是一个学术研究项目提出的新型语音合成(TTS)建模范式。它首次出现在2024年初的一篇预…

2026/9/19 0:05:38 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →