ARTICLE DETAIL

资讯详情

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

Addy Osmani 的 Loop Engineering:用 TaoToken 统一 Key 让系统替你向 Agent 发 Prompt

Addy Osmani 的 Loop Engineering:用 TaoToken 统一 Key 让系统替你向 Agent 发 Prompt 1. 从「手写 Prompt」到「系统发 Prompt」Loop Engineering 到底在解决什么如果你最近也在用 Coding Agent 写代码大概率经历过这个循环打开对话框敲一段 Prompt等它改完读 diff再敲下一段。一天下来真正写代码的时间可能还没「组织语言描述需求」的时间多。Addy Osmani 提出的 Loop Engineering循环工程说的就是把这件事反过来——你不再亲自向 Agent 发 Prompt而是设计一套系统让系统按循环自动向 Agent 发 Prompt。这个思路并不玄乎。Peter Steinberger 有句话被反复引用「你不应该再给 Coding Agent 写 Prompt 了你应该设计能自动向 Agent 发 Prompt 的循环。」Boris Cherny 也表达过类似观点他的工作变成了「写循环」而不是「写 Prompt」。翻译成工程语言就是把一次性的、人肉驱动的对话变成可调度、可复用、可观测的自动化任务流。但这里有个绕不开的现实问题一旦循环跑起来Agent 调用会从「一天几次」变成「一小时几十次」多 Agent、多工具、多模型的调用会同时发生。这时候如果每个 Agent 各自配一套 Key、各自记一套用量你很快就会失去对 Token 消耗的掌控——而 Addy Osmani 本人也特别强调Token 成本是 Loop Engineering 里最需要警惕的变量预算宽裕和预算紧张时使用模式会完全不同。所以这篇要解决的核心问题是如何用 TaoToken 统一 Key 和 API 通道把多 Agent 的调用收敛到一个入口让循环工程真正可落地、可计量、可排障。适合正在用 Claude Code、Codex 类工具做自动化、或者准备把「手动 Prompt」升级成「循环驱动」的开发者。下面我会给出可直接复制的config.toml、settings.json骨架以及一次最小验证动作确认 Agent 确实收到了 Prompt、Token 计量也正常。2. 前置准备用 TaoToken 统一 Key 承接多 Agent 调用Loop Engineering 的循环里通常不止一个 Agent一个负责探索、一个负责实现、一个负责验证。如果每个 Agent 都直连不同的上游、用不同的 Key你会遇到三个麻烦用量分散在多个后台、额度无法统一管理、出问题时不知道是哪个通道挂了。TaoToken 在这里扮演的角色就是统一入口——所有 Agent 的请求都走同一个 API 通道Key 只维护一份。先明确几个地址后面配置里会反复用到官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 基址https://taotoken.net/api 注意这个不带 UTM 参数配置里直接用模型对话体验https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewriteCoding Plan长期编码/Agent 场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite操作顺序建议这样先进控制台确认账户状态再到 API Keys 页面创建一个专用 Key。建议给循环工程单独建一个 Key不要和你日常手动调试的 Key 混用这样后面看用量时能一眼区分「循环消耗」和「人工消耗」。创建好之后把 Key 存到环境变量里不要硬编码进配置文件export TAOTOKEN_API_KEYsk-你的循环专用Key注意环境变量名建议统一后面config.toml和settings.json都引用同一个变量避免多份配置里 Key 不一致导致排障困难。如果你打算长期跑循环、Agent 调用量比较大可以顺带看一下 Coding Plan 的额度说明避免循环跑飞了才发现额度不够。这一步不用急着做先把最小链路打通更重要。3. 可复制配置config.toml 与 settings.json 骨架Loop Engineering 的循环要落地核心是让 Agent 的调用配置集中、可复用。下面给两份骨架一份是偏 Codex 风格的config.toml一份是偏 Claude Code 风格的settings.json你可以按自己用的工具选也可以两份都留着做对照。3.1 config.toml定义模型通道与子 Agent# ~/.codex/config.toml # 统一走 TaoToken 通道循环内所有 Agent 共用这一份配置 [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat [profiles.loop] model_provider taotoken model claude-sonnet-4-5 # 循环场景建议显式限制单次输出避免跑飞 max_output_tokens 4096 # 子 Agent 定义探索 / 实现 / 验证 三角色分离 [agents.explorer] description 只读探索定位相关文件与调用链 model claude-haiku-4-5 reasoning_effort low [agents.implementer] description 按规范实现改动 model claude-sonnet-4-5 reasoning_effort medium [agents.verifier] description 对照规范与测试验证实现独立于实现者 model claude-sonnet-4-5 reasoning_effort high这里的关键点有三个。第一base_url指向 TaoToken 的 API 基址env_key引用环境变量Key 不进配置文件。第二profiles.loop是给循环用的 profile和日常手动调试的 profile 分开方便切换。第三三个子 Agent 用不同模型和推理强度——探索用快模型省钱验证用高推理强度保证质量这正是 Addy Osmani 强调的「maker 和 checker 分开」。3.2 settings.jsonClaude Code 侧的统一接入{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: ${TAOTOKEN_API_KEY} }, permissions: { allow: [Bash(git worktree:*), Read, Edit] }, hooks: { Stop: [ { matcher: *, hooks: [ { type: command, command: echo \[loop] turn done at $(date -u %FT%TZ)\ .loop/progress.md } ] } ] } }ANTHROPIC_BASE_URL指向同一个 TaoToken 通道这样 Claude Code 和 Codex 侧的调用都收敛到一个入口用量在控制台里是合并可见的。hooks.Stop是循环工程里很实用的一环每轮结束自动往.loop/progress.md追加一条记录这就是 Addy Osmani 说的「记忆必须落在磁盘上」——Agent 会忘但仓库不会。3.3 循环触发配置让系统按节奏发 Prompt循环的「心跳」可以先用最朴素的方式跑起来比如一个定时脚本#!/usr/bin/env bash # loop-tick.sh —— 每轮循环的入口 set -euo pipefail REPO$1 cd $REPO # 1. 每轮开一个隔离 worktree避免并行 Agent 互相踩 WT.loop/wt-$(date %s) git worktree add -b loop/$(date %s) $WT /dev/null # 2. 把本轮任务交给 Agent这里用 codex exec 举例 codex exec \ --profile loop \ --cd $WT \ 读取 .loop/progress.md挑一个未完成项实现完成后更新进度文件 # 3. 记录本轮结束 echo - $(date -u %FT%TZ) tick done .loop/progress.md配合 crontab 就能形成最小循环# 每 30 分钟跑一轮 */30 * * * * /path/to/loop-tick.sh /path/to/repo /path/to/loop.log 21到这一步你已经有了「系统按循环自动向 Agent 发 Prompt」的雏形。接下来必须验证它真的通了。4. 最小验证确认 Agent 收到 Prompt 且 Token 计量正常配置写完不验证等于没配。循环工程最怕的就是「以为在跑其实每轮都静默失败」。所以先做一次最小验证只跑一轮确认两件事Agent 确实收到了 Prompt以及Token 计量在 TaoToken 控制台里能看到。第一步手动触发一轮不要等 cronbash loop-tick.sh /path/to/your-repo第二步检查 Agent 是否真的收到了 Prompt。最直接的方式是看它有没有产生预期输出。可以在 Prompt 里加一个显式回显要求比如让它把收到的任务原样写进文件codex exec --profile loop --cd $WT \ 把这句话原样写入 .loop/echo.txtLOOP_OK然后读取 .loop/progress.md 并总结当前进度跑完后检查cat $WT/.loop/echo.txt # 期望输出LOOP_OK如果echo.txt里是LOOP_OK说明 Prompt 完整送达、Agent 正常执行、文件写入权限也没问题。这一步排除了「配置指向错误通道」和「Agent 根本没启动」两类最常见故障。第三步验证 Token 计量。打开控制台进入用量页面确认刚才这一轮调用产生了记录控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite你应该能看到一条新的调用记录包含模型名、输入/输出 Token 数、时间戳。如果控制台里没有记录但本地又确实跑出了结果那大概率是请求走了别的通道比如某个 Agent 还残留着旧的环境变量需要回头检查ANTHROPIC_BASE_URL和base_url是否都指向了 TaoToken。第四步确认循环的「记忆」在累积tail -n 5 .loop/progress.md应该能看到每轮追加的时间戳记录。这条记录是后面判断「循环是否卡住」的关键依据——如果时间戳不再更新说明循环停了。提示验证阶段建议把max_output_tokens调小、cron 频率调低先确认链路通再放开跑。循环跑飞的成本往往就出在「没验证就上量」这一步。5. 本篇常见错排查循环工程落地时报错往往不在代码本身而在配置和调用链上。下面这几个是我在接入过程中遇到频率最高的。报错一401 Unauthorized / invalid api key。九成是环境变量没生效。config.toml里写的是env_key TAOTOKEN_API_KEY但如果你是在 cron 里跑cron 默认不加载你的 shell 环境变量。解决办法是在脚本开头显式 source或者把变量写进脚本能读到的位置# 在 loop-tick.sh 开头加上 source ~/.bashrc 2/dev/null || true # 或者直接 export注意别把 Key 提交进仓库 export TAOTOKEN_API_KEY$(cat ~/.taotoken_key)报错二Agent 跑起来了但控制台看不到用量。说明请求没走 TaoToken 通道。检查顺序先看ANTHROPIC_BASE_URL是否被其他配置覆盖再看是否有旧的ANTHROPIC_API_KEY残留在系统里。可以用一条命令快速确认当前生效的基址env | grep -i -E anthropic|taotoken报错三多 Agent 并行时文件冲突。这是没上 worktree 的典型症状。两个 Agent 同时改同一个文件diff 会互相覆盖。回到第 3 节的git worktree add确保每个并行 Agent 有独立工作目录。Addy Osmani 特别强调过worktree 解决的是机械冲突但你的审查带宽才是真正的上限别一次开太多。报错四循环跑了几轮后卡住不动。先看.loop/progress.md的时间戳是否还在更新。如果停了多半是某一轮 Agent 卡在等待输入或者max_output_tokens太小导致输出被截断、任务没完成。把单轮输出上限调大并在 Prompt 里明确「不要提问直接执行」。报错五Token 消耗远超预期。循环场景下这是最需要盯的指标。排查方向验证型子 Agent 是否用了高推理强度模型却跑了高频任务探索 Agent 是否每次都在全量扫描仓库。把探索类任务换成快模型、给验证类任务加触发条件只在实现完成后跑通常能压下来一大截。6. 把循环接进你的工作流下一步怎么走到这里你已经有了一个能跑通的最小循环统一 Key 走 TaoToken 通道、config.toml和settings.json定义好模型与子 Agent、cron 按节奏触发、.loop/progress.md记录记忆、控制台能看到 Token 计量。接下来要做的不是加更多 Agent而是先让这一个循环稳定跑几天观察用量曲线和失败率。如果你主要在做长期编码和 Agent 自动化建议把循环专用 Key 和 Coding Plan 的额度规划一起看避免循环和手动调试抢额度Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite如果你还在调 Prompt 和模型选择阶段先用模型对话把单轮效果调好再把它固化进循环比直接上循环更省 Token模型对话https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite接入过程中遇到通道或鉴权问题直接对照接入文档排查最快接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite最后说一句实在的Loop Engineering 改变的是工作方式不是把工程师从流程里拿掉。循环跑得越顺你越需要亲自读它产出的代码、确认它说的「完成」是真的完成。设计循环的人和按下启动按钮的人是两种角色——Addy Osmani 那篇文章的落点也在这里。先把最小循环跑稳再谈规模化。
返回列表