十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Harness Engineering 三维度长时 Agent 任务,Key 用 TaoToken

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 里协同而不是各自背着一套环境变量互相打架。
返回列表