1. 为什么 2026 年 6 月大家都在聊 Loop Engineering
如果你最近刷技术社区,会发现一个词反复出现:Loop Engineering。它不是又一个被包装出来的概念,而是 Google 的 Addy Osmani 在 2026 年 6 月那篇同名长文里,把一线工程师们零散的实践收拢成了一套可复用的骨架。核心定义其实一句话就能说清:你不再亲自给 AI 写提示,而是设计一个能自己发现工作、分配任务、验证结果、记住状态的系统 。你定义意图,AI 反复迭代直到完成。 这跟很多人第一反应里的"让 AI 自动干活"完全不是一回事。Loop 不是更聪明的自动化脚本,也不是 Prompt Engineering 的升级版。它是在更高一层做事:把"你作为提示智能体的人"替换掉,转而由你设计那个提示的系统。就像你从每天手写代码改 bug,变成设计一套 CI/CD 和代码审查流程,让事情自己发生。 那为什么这篇要配 TaoToken?因为 Loop Engineering 落地时,第一个卡住大多数人的不是概念,而是接入层 。一个 Loop 系统里往往同时跑着 Claude Code、Cline、Codex 风格的 Agent、子智能体验证器,每个工具都要 Key、要 Base URL、要模型映射。如果每个工具各配一套凭证,你的"状态"和"上下文"还没开始设计,光管 Key 就够乱了。TaoToken 在这里扮演的角色就是统一 Key/API 通道:一个 Key、一个入口,把多工具的模型调用收敛到一处,让你能把精力放在六个零件的组装上,而不是散落在各处的配置里。 这篇面向的是已经在用多个 AI 编码工具、想往"系统化"走的开发者。我会交付可复制的 骨架、CC Switch 与 Cline 的接入步骤,以及逐零件验证 Loop 闭环是否跑通的具体动作。你不需要先成为 Agent 专家,跟着配、跟着验就行。 在拆六个零件之前,得先把通道打通。TaoToken 的定位是统一 Key 通道,官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数,配置里填的就是这个干净地址。 你需要先拿到 Key。登录后进入控制台,在 API Keys 页面创建一个新 Key,复制出来。这个 Key 就是你后面所有工具共用的那一把——这正是"统一通道"的意义:Claude Code 用它、Cline 用它、子智能体验证器也用它,模型切换和额度都在一处看。 提示:Key 只显示一次,创建后立刻存进你的密码管理器或本地 ,不要直接硬编码进会提交到 git 的配置文件。 接入文档在 https://taotoken.net/doc ,里面列了各工具的 Base URL 填法和模型名对照。我建议你先花两分钟把文档里的模型列表扫一遍,因为后面配 时,模型名要跟文档保持一致,写错了会直接 404 或 401。 一个常见的误区是把 TaoToken 当成"某个编辑器的替代品"。它不是编辑器,也不是 IDE 插件,它是你和模型之间的通道层。你的编辑器还是你的编辑器,Agent 还是那个 Agent,TaoToken 负责让它们都能用同一套凭证说话。理解这一点,后面六个零件的配置才不会拧巴。 这一节是全文最该动手的部分。我按"统一通道 + 多工具"的思路给你两套骨架,你按自己用的工具挑着改。 Claude Code 系工具通常读 或项目级配置。下面这份骨架把 Base URL 指向 TaoToken,模型名按文档填: 关键点有三个。第一, ,对应"模型忘记、仓库不会"的原则。 Cline 这类插件走的是 ,字段名不同但形状一样: 用了不同的模型和更高的 reasoning effort——这不是随便写的,制造者给自己打分不可靠,换模型、换指令才能形成独立检查。 如果你用 CC Switch 管理多个 Claude 配置,接入 TaoToken 的步骤是: CC Switch 的好处是你可以为"实现"和"验证"各存一套配置,切换时不用手改文件。这跟六零件里的分工思路是一致的。 配好通道只是开始,真正要确认的是六个零件是否各自到位、能否串成闭环。下面按零件给你可执行的验证动作。 自动化是让 Loop 从"单次工具"变成"持续系统"的启动器。验证方法:写一个最小定时任务,让它扫描仓库里失败的测试。 跑通的标准是: 里开始按时间累积记录,且失败项进入待处理队列。如果文件一直是空的,说明自动化没真正触发,先查 cron 权限和路径。 工作树解决的是并发写冲突。验证方法:让两个子智能体同时改同一个文件的不同函数,看是否各自在独立目录里工作。 跑通的标准是 。 Skill 是把"我们怎么做事"写成系统可读的外部知识。验证方法:在仓库放一个 ,写清构建步骤和一条"别碰某函数"的约定,然后让 Agent 执行一个相关任务,看它是否遵守。 跑通的标准是 Agent 的输出里体现出它读到了这条约定,比如主动提示"该文件受约束,未改动"。如果它照改不误,说明 skill 没被加载,检查文件路径和调用方式。 连接器让 Loop 能开 PR、更新工单、发通知。验证方法:配一个最小连接器,让 Agent 在完成任务后创建一个 GitHub PR。 跑通的标准是任务结束后真的出现了一个 PR,而不是只在本地改了文件。如果只改了本地,说明连接器没接上,检查凭证和权限范围。 这是六零件里最容易被忽略、也最关键的一环。验证方法:故意让实现者写一段有 bug 的代码,看验证者能否独立发现。 跑通的标准是验证者报告了实现者没发现的问题。如果验证者总是说"没问题",很可能是它和实现者用了同一套指令或同一个模型,独立性不够。 状态是 Loop 的记忆。验证方法:跑一轮任务后,检查 是否记录了"在做什么、上次结果、什么在等人类处理"。 跑通的标准是重启工具后,Loop 能读到这份状态并接着上次继续,而不是从零开始。如果每次都是冷启动,说明状态没被正确读写。 配 Loop 系统时,报错大多集中在接入层和隔离层。下面几个是我见过频率最高的。 401 / 403:Key 没生效。先确认 出来,再确认配置文件里引用的是环境变量而不是写死的旧 Key。CC Switch 用户注意切换配置后要重启工具。 404:模型名或 Base URL 写错。Base URL 必须是 ,不要多加路径。模型名对照接入文档,大小写和连字符都要一致。 两个 Agent 改同一个文件冲突。这是 worktree 没生效的典型症状。检查 配置。 验证者永远说"通过"。 大概率是制造者和验证者用了同一个模型、同一套指令。按 4.5 把验证者换成不同模型并给独立指令。 状态文件不更新。检查 排除导致 Agent 读不到,或者路径写成了绝对路径而工具在别的目录运行。用相对仓库根的路径最稳。 Token 消耗过快。 这是 Cobus Greyling 提醒过的成本问题:每次循环都生成实现者加验证者,调用量会翻倍。设计时让分类环节廉价,只在状态显示可操作时才生成子智能体。 注意:排障时优先看接入层(Key、URL、模型名),这三样占了我遇到的报错里的大多数。接入层没问题,再往隔离和状态层查。 到这里,六个零件和统一通道的骨架都给你了。如果你卡在接入或排障上,先去 API Keys 页面确认 Key 状态,再对照接入文档核对 Base URL 和模型名:API Keys 在 https://taotoken.net/api-keys ,文档在 https://taotoken.net/doc 。想先验证模型通不通,可以直接在模型对话里发一条测试请求:https://taotoken.net/models 。如果你打算长期跑编码 Agent、把 Loop 当日常系统用,Coding Plan 更适合你:https://taotoken.net/coding-plan 。 最后留一句 Addy 的话给你收尾:构建循环,但要以一个打算继续做工程师的姿态去构建它。循环设计在你带着判断做时是解药,在你为避免思考而做时是加速器。同一个动作,相反的结果。你仍然是这个系统的总工程师。config.toml/settings.json2. 先把 TaoToken 接入层搭好
.envconfig.toml和settings.json3. 可复制的配置骨架:config.toml 与 settings.json
3.1 Claude Code 风格的 config.toml
~/.claude/config.toml# ~/.claude/config.toml # 统一走 TaoToken 通道,多工具共用同一把 Key [api] base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" # 从环境变量读取,别写死 timeout_seconds = 120 [model] # 主模型:负责探索与实现 primary = "claude-sonnet" # 验证模型:负责独立检查,建议换一个模型或至少换一套指令 verifier = "claude-haiku" max_tokens = 8192 [loop] # 对应 Loop 六零件里的 Automations 与 State state_file = ".loop/state.json" worktree_isolation = true max_parallel_agents = 3api_key用环境变量占位,运行时export TAOTOKEN_API_KEY=你的Key,这样配置文件可以安全进仓库。第二,primary和verifier刻意分开,这是后面"制造者-检查者分离"的配置基础。第三,state_file指向仓库内的.loop/state.json3.2 Cline / VS Code 风格的 settings.json
settings.json{ "cline.apiProvider": "openai-compatible", "cline.baseUrl": "https://taotoken.net/api", "cline.apiKey": "${env:TAOTOKEN_API_KEY}", "cline.model": "claude-sonnet", "cline.loop": { "stateFile": ".loop/state.json", "useWorktree": true, "subAgents": [ { "name": "explorer", "role": "implementer", "model": "claude-sonnet", "reasoning": "medium" }, { "name": "verifier", "role": "checker", "model": "claude-haiku", "reasoning": "high" } ] } }subAgents这一段直接对应六零件里的 Sub-agents。注意verifier3.3 CC Switch 接入步骤
taotoken-loop。https://taotoken.net/api。echo $TAOTOKEN_API_KEY确认环境变量已生效,再启动 Claude Code。4. 逐零件验证 Loop 闭环是否跑通
4.1 Automations:确认系统能自己发现工作
# 每 10 分钟扫描一次测试状态,结果写入 triage */10 * * * * cd /your/repo && \ npm test --silent > .loop/test-report.txt 2>&1; \ echo "{\"ts\":\"$(date -Iseconds)\",\"status\":\"$?\"}" >> .loop/triage.jsonl.loop/triage.jsonl4.2 Worktrees:确认并行不互相污染
git worktree add ../repo-agent-a -b loop/agent-a git worktree add ../repo-agent-b -b loop/agent-b git worktree listgit worktree list能看到两个独立 checkout,且两个 Agent 的提交互不干扰。合并时走正常 git 流程。如果两个 Agent 还在同一个目录里写,说明隔离没生效,检查配置里的worktree_isolation4.3 Skills:确认 AI 不再冷启动
SKILL.md# SKILL.md ## 构建 - 使用 pnpm,不要用 npm ## 约定 - 不要修改 `src/legacy/pay.ts` 的签名,下游三个服务依赖它4.4 Plugins / Connectors:确认能在真实流程中行动
{ "connectors": { "github": { "enabled": true, "actions": ["create_pr", "comment"] } } }4.5 Sub-agents:确认制造者与检查者分离
# .codex/agents/verifier.toml name = "verifier" description = "独立检查实现者的输出,按测试和规范验证" instructions = "你不参与实现,只做检查。发现任何未通过测试的改动都要报告。" model = "claude-haiku" reasoning_effort = "high"4.6 State:确认记忆落在磁盘上
.loop/state.json{ "current_goal": "让所有测试通过", "last_attempt": "修复了 auth 模块的 3 个失败用例", "pending_human": ["确认是否合并 loop/agent-a"], "updated_at": "2026-06-07T10:30:00Z" }5. 本篇常见错排查
TAOTOKEN_API_KEY在当前 shell 里能echohttps://taotoken.net/apigit worktree list,确认每个 Agent 有独立目录。如果还在共享目录,回到 3.1 的worktree_isolation.loop/目录是否被.gitignore6. 把通道和零件都跑起来