
1. 从「手动跑测试」到「AI 自己 debug」我为什么盯上 Claude Code 子代理先说清楚这篇要解决什么。Claude Code 是 Anthropic 推出的命令行编码代理能读你的仓库、改文件、跑命令。而它最近让我真正用起来的功能是子代理Sub Agent配合自动循环——简单说就是让 AI 在写完代码后自己触发验证、自己读报错、自己改改到质量门控通过为止。这套东西适合谁适合本地开发、手里有一堆重复性验证工作、又不想每次都手动复制报错再贴回对话框的人。我之前的日常是这样的写完一个模块手动npm test红了复制报错切到对话框粘贴等它给建议再切回编辑器改再跑。一个下午能来回十几轮。问题不在于 AI 不会修而在于「捕获报错 → 喂给 AI → 应用修复 → 再验证」这条链路全靠人肉搬运。Claude Code 的子代理机制把这条链路变成了一个可编排的循环一个代理负责生成规格一个负责写代码一个负责打分分数不够就带着反馈回到第一步重来。这里的关键词是「量化门控」。传统自动化测试只告诉你 pass/fail而子代理验证器可以输出一个 0-100 的分数加具体反馈列表比如「需求符合度 30 分里拿了 22因为漏了边界条件」。有了这个结构化反馈循环才有方向不然 AI 只会瞎改。但要让这套流程在本地稳定跑起来绕不开一个现实问题Claude Code 需要能持续访问模型接口。本地环境里网络链路、Key 管理、模型 ID 配置任何一环出问题自动循环就会在「捕获报错」那一步直接断掉——AI 还没开始 debug自己先报错了。所以下面我会先讲怎么用 TaoToken 把通道配好再讲子代理工作流本身。顺序不能反通道不稳后面全是空谈。2. 前置用 TaoToken 统一 Key 与 API 通道接入 Claude CodeClaude Code 的配置入口是环境变量和 settings 文件。官方默认指向 Anthropic 的端点但在本地开发环境里我们更希望有一个统一的 Key 和 Base URL 管理方式避免每个工具各配一套。TaoToken 在这里扮演的角色就是统一通道一个 Key、一个 Base URLClaude Code、Cline、Codex 这些工具都能复用。先拿 Key。打开 https://taotoken.net/api-keys 登录后在控制台创建 API Key。注意这个 Key 只在创建时完整显示一次复制下来存到本地密码管理器或者.env里别直接写进会提交到 git 的文件。拿到 Key 之后Claude Code 的接入有两种方式环境变量和 settings 文件。环境变量适合临时验证settings 文件适合长期使用。我建议两个都配环境变量用来快速测通settings 用来固化。环境变量方式在~/.zshrc或~/.bashrc里加export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的TaoToken密钥改完执行source ~/.zshrc让它生效。这里有个坑Claude Code 读的是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY这两个变量名别写成OPENAI_开头的不然它不认。settings 文件方式Claude Code 会读项目根目录或用户目录下的.claude/settings.json。项目级的配置长这样{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }注意ANTHROPIC_MODEL这个字段它决定了子代理循环里每次调用用哪个模型。验证器代理需要较强的推理能力来打分执行器代理需要稳定的代码生成我实测下来 Sonnet 系列在两者之间平衡得比较好。如果你要做长期编码任务模型 ID 写错会直接导致 404所以复制的时候核对一遍。配好之后用一条命令验证通道是否通claude -p 回复 OK 两个字母即可如果返回OK说明 Base URL、Key、Model ID 三件套都对上了。如果报 401往下看第 5 节的排查。这一步别跳过通道没通就去配子代理后面每个代理调用都会失败你会以为是工作流写错了其实是 Key 的问题。3. 可复制配置子代理工作流与 settings 片段现在进入正题。Claude Code 的子代理本质上是放在.claude/agents/目录下的 Markdown 文件每个文件用 YAML frontmatter 定义名称、描述、可用工具正文写这个代理的职责。工作流则通过一个自定义命令文件来编排放在.claude/commands/下。先建目录结构mkdir -p .claude/agents .claude/commands第一个代理规格生成器.claude/agents/spec-generation.md--- name: spec-generation description: 根据功能描述生成需求与设计文档 tools: Read, Write, Grep --- 你是规格生成代理。接收一个功能描述输出 requirements.md 包含验收标准、边界条件、输入输出定义。每条验收标准必须可测试。第二个代理代码执行器.claude/agents/spec-executor.md--- name: spec-executor description: 根据规格文档实现代码 tools: Read, Write, Edit, Bash --- 你是代码执行代理。读取 requirements.md实现对应代码。 实现完成后运行项目测试命令把原始输出保留下来。第三个代理质量验证器.claude/agents/spec-validation.md这是整个循环的门控--- name: spec-validation description: 对代码进行多维度验证输出 0-100 量化分数 tools: Read, Grep, Write, Bash --- 你是代码验证协调器。系统分析代码是否符合规格。 输出必须是包含分数和反馈的 JSON。 评分标准总分 100 - 需求符合度 30是否覆盖 requirements.md 全部验收标准 - 代码质量 25可读性、可维护性、结构清晰度 - 安全性 20无硬编码密钥、有输入验证 - 性能 15无明显瓶颈 - 可测试性 10结构是否易于单元测试 输出格式 分数 95 时 decision 为 PASS 分数 95 时 decision 为 FAIL并给出 feedback 列表每条包含具体改进建议。第四个代理测试生成器.claude/agents/spec-testing.md--- name: spec-testing description: 为通过验证的代码生成测试套件 tools: Read, Write, Bash --- 你是测试生成代理。为通过质量门控的代码编写完整测试用例 覆盖正常路径、边界条件、异常输入。生成后运行测试并报告结果。然后是编排文件.claude/commands/spec-workflow.md--- description: 启动带质量门控的自动开发流程 --- ## 用法 /spec-workflow 功能描述 ## 你的角色 你是工作流调度器严格按以下链条执行。 ## 子代理执行链 1. 使用 spec-generation 子代理为 功能描述 生成规格说明。 2. 使用 spec-executor 子代理根据规格实现代码。 3. 使用 spec-validation 子代理对代码质量量化评分。 4. 如果分数低于 95使用 spec-generation 子代理根据验证反馈改进规格 然后重复步骤 1-3。 5. 如果分数等于或高于 95使用 spec-testing 子代理生成测试套件。这套配置里settings.json的 env 段和第 2 节的一致不用重复写。如果你用的是 Cline 或 CodexBase URL 和 Key 的填法一样只是配置文件路径不同Cline 在扩展设置里填Codex 在~/.codex/auth.json里填。三件套永远是 Base URL、Key、Model ID缺一不可。4. 验证请求跑一次完整的 AI 自修复闭环配置写完了得真跑一次才知道行不行。我拿一个故意留 bug 的小函数来测这样能观察到验证器是否真的会打回。先建一个测试项目mkdir -p ~/demo-autofix cd ~/demo-autofix npm init -y写一个带 bug 的文件calc.jsfunction divide(a, b) { return a / b; } module.exports { divide };这个函数没处理b 0的情况也没做输入类型校验正好用来触发验证器的安全性和需求符合度扣分。现在在项目里启动 Claude Code输入工作流命令claude进入交互后输入/spec-workflow 实现一个安全的除法函数要求处理除零和非法输入接下来观察它的执行链。第一步 spec-generation 会生成requirements.md里面应该包含「b 为 0 时抛出明确错误」「非数字输入抛出 TypeError」这类验收标准。第二步 spec-executor 会改calc.js加上校验逻辑。第三步 spec-validation 会读代码、跑检查、输出 JSON。我实测下来第一次验证经常拿不到 95 分因为执行器可能只处理了除零漏了类型校验。这时验证器会输出类似这样的反馈{ score: 82, decision: FAIL, feedback: [ 需求符合度扣 8 分未处理非数字输入requirements.md 第 3 条未满足, 安全性扣 10 分缺少输入类型校验 ] }看到 FAIL 和分数后调度器会自动回到 spec-generation把反馈带进去改进规格再走一遍执行和验证。第二轮执行器补上类型校验验证器重新打分这次输出{ score: 96, decision: PASS, feedback: [] }PASS 之后spec-testing 代理接手生成calc.test.js并运行。终端里能看到测试通过的结果。整个过程从输入命令到测试通过我这边大概两分钟中间没有手动干预。这就是「AI 自己 debug、自己修复」的实际形态不是它一次写对而是它自己发现不对、自己带着反馈重来。这里有个细节值得说验证器的反馈必须是结构化的否则循环会退化成「AI 反复改但不知道改什么」。上面 JSON 里的feedback列表就是循环的燃料每条都要指向具体文件的具体问题。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth自动循环跑不起来八成不是工作流写错而是通道或配置的问题。我把踩过的坑按报错对照列出来。401 Unauthorized。最常见。原因通常是 Key 没生效或写错。先确认echo $ANTHROPIC_API_KEY能打印出完整 Key再确认echo $ANTHROPIC_BASE_URL是https://taotoken.net/api注意结尾不要多加/v1或斜杠。如果环境变量对但 settings.json 里也写了一份检查两份是否冲突——Claude Code 的优先级是项目 settings 覆盖用户 settings环境变量又覆盖 settings任何一层写错都会 401。改完记得重启终端或重新source。local proxy failed。这个报错说明 Claude Code 尝试走本地代理但连不上。检查你的 shell 里有没有残留的HTTP_PROXY/HTTPS_PROXY环境变量有的话unset掉。另外确认没有其他工具占用了 Claude Code 想用的本地端口。这个错和 Key 无关纯粹是链路问题。reading choices 相关报错。通常出现在模型返回格式不符合预期时比如 Model ID 写成了一个不存在的模型接口返回了错误结构Claude Code 解析choices字段就失败了。回到 settings.json 核对ANTHROPIC_MODEL用官方文档里存在的模型 ID。我建议先用第 2 节那条claude -p 回复 OK验证模型可用再跑工作流。OAuth 相关报错。如果你之前登录过官方账号本地可能残留了 OAuth tokenClaude Code 会优先用它而不是你的 API Key结果就是认证失败。清理掉旧的凭据缓存确保走的是ANTHROPIC_API_KEY这条路径。具体位置在用户目录下的.claude配置里把旧的认证文件移除后重新用 Key 登录。排查顺序建议固定先claude -p 回复 OK确认通道再跑单代理确认子代理文件被识别最后跑完整工作流。任何一步失败就停在那一步查别跳。通道问题解决后如果还想验证不同模型在验证器角色上的打分差异可以去 https://taotoken.net/api 的模型对话页面试几条对比输出稳定性。6. 把循环用起来从单次修复到长期编码跑通一次闭环之后你会发现这套东西的价值不在「修一个 bug」而在「把验证标准固化下来」。验证器里的评分标准一旦写好每次代码变更都会自动过一遍同样的门控标准统一不依赖当天状态。这对个人开发者尤其有用——你不需要一个同事来 review门控就是那个不会累的 reviewer。如果你打算长期用这套流程做编码和 Agent 任务建议把 Key 和额度规划一下。TaoToken 的 Coding Plan 适合这种持续调用的场景比按次零散调用更可控具体可以在 https://taotoken.net/api 的 coding-plan 页面看。接入文档在 https://taotoken.net/api 的 doc 页面里面有各工具的 Base URL 和配置示例配 Cline 或 Codex 的时候对着抄就行。最后留一个实用技巧验证器的评分标准不要一次写太严。我一开始把门控设成 95 分且要求覆盖所有边界结果循环跑了五轮还在打回因为有些边界条件在当前需求下根本不需要。后来我把标准拆成「必须满足」和「加分项」两类必须满足的不过就打回加分项只影响分数不影响 decision循环效率立刻上来了。门控的目的是让代码达标不是让 AI 无限自我折磨。