Loop Engineering 实战:用 /goal 与 PROGRESS.md 让 Claude Code 自主跑完整个项目
1. 为什么我放弃了手动提示转向 Loop Engineering如果你正在用 Claude Code 写项目大概率经历过这种循环敲一段提示词等 AI 输出看一眼觉得不对再补一段提示词再等再改。一个下午过去项目骨架还没搭完人已经累了。Loop Engineering 要解决的就是这件事——把「提示、检查、决定下一步」这套动作交给一套自动循环系统你只负责定目标和验收。Claude Code 里落地这套方法论的两个核心命令是/goal和/loop配套的状态记忆文件是PROGRESS.md。/goal负责「跑到目标达成为止」适合从零搭建项目、批量重构这类有明确终点的任务/loop负责「按固定间隔反复跑」适合部署监控、定时扫描这类没有终点的持续任务。两者配合PROGRESS.md做状态记忆就能让 AI 在多轮迭代中不丢上下文、不重复劳动。这篇文章面向从零搭建完整项目的开发者。我会给出PROGRESS.md的完整骨架、/goal指令模板、settings.json里接入 TaoToken 统一 Key/API 通道的可复制配置然后演示多轮自动迭代后的验证动作和结果检查。全程可以跟着敲不需要你事先精通 Claude Code。先说清楚一个前提Loop 不是让 AI 无脑重试。没有反馈闭环的循环AI 会把错误当正确答案继续跑越跑越偏。真正能用的 Loop 需要三个要素——可自动验证的停止条件、每轮执行后的反馈闭环、外部文件承载的状态记忆。这三样缺一个循环就会失控。下面所有配置和模板都是围绕这三样展开的。2. 前置准备TaoToken 统一 Key 与 Claude Code 接入在跑/goal之前得先把 Claude Code 的模型通道配好。我实测下来用 TaoToken 做统一 Key/API 通道比较省事一个 Key 就能覆盖 Claude 系列模型不用在多个平台之间来回切换配置。TaoToken 官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。注册后在控制台创建 API Key拿到形如sk-xxxx的密钥接下来写进 Claude Code 的配置文件。Claude Code 的配置分两层一层是环境变量或settings.json里的模型通道配置一层是项目级的CLAUDE.md规则文件。前者决定请求发到哪里后者决定 AI 在你的项目里遵守什么规矩。Loop Engineering 跑起来之后CLAUDE.md里的规则会被每一轮循环反复读取所以规则写得越清楚循环越稳。如果你还没创建 Key可以先去控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 建一个再参考接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 确认最新的参数格式。文档里会说明当前支持的模型名和 base URL 写法配置前扫一眼能少踩坑。有一点要提醒Loop 跑起来之后 Token 消耗是持续累积的所以 Key 的额度管理和熔断设置要提前想好。后面第五节会讲怎么在/goal里加 Token 预算限制。3. 可复制配置settings.json、PROGRESS.md 与 /goal 模板这一节是全文的核心三份配置直接抄就能用。先配通道再建状态文件最后套指令模板。3.1 settings.json 接入 TaoTokenClaude Code 的settings.json一般放在用户目录下的.claude/settings.json项目级配置可以放在项目根目录的.claude/settings.json。我用的是项目级配置这样不同项目可以用不同的 Key 和模型。配置内容如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514, ANTHROPIC_SMALL_FAST_MODEL: claude-3-5-haiku-20241022 }, permissions: { allow: [ Bash(npm run build), Bash(npm run dev), Bash(npx tsc --noEmit), Bash(npm test), Read, Write, Edit ], deny: [ Bash(rm -rf *), Bash(git push --force*) ] } }几个参数说明一下。ANTHROPIC_BASE_URL指向 TaoToken 的 API 入口注意这里不加任何查询参数保持干净。ANTHROPIC_AUTH_TOKEN填你控制台创建的 Key。ANTHROPIC_MODEL是主模型负责执行任务ANTHROPIC_SMALL_FAST_MODEL是轻量模型负责一些快速判断比如/goal里那个独立的判断模型就可以走这个通道省 Token。permissions.allow里我放开了构建、类型检查、测试这些验证命令因为 Loop 每轮都要跑它们。permissions.deny里挡掉了rm -rf和强制推送防止 AI 在循环里做出不可逆操作。这个 deny 列表建议你按自己项目的风险点补充比如数据库迁移命令、生产环境部署命令都值得挡一挡。配好之后在项目根目录跑一次claude进入交互模式随便问一句「当前用的是什么模型」确认请求走通了再往下走。如果报 401多半是 Key 填错或者额度没开如果报连接超时检查 base URL 有没有多写斜杠。3.2 PROGRESS.md 骨架PROGRESS.md是 Loop 的状态记忆文件放在项目根目录。它的作用是让 AI 在每一轮循环开始时先读这个文件知道自己干到哪了避免重复劳动也避免上下文窗口满了之后丢失进度。骨架如下# 项目进度 ## 当前阶段 阶段 2API 路由与数据库层 ## 已完成 - [x] 阶段 1项目初始化create-next-app 依赖安装 - [x] 数据库 Schema 设计sessions 表id, content, token_count, code_lines, project, created_at ## 进行中 - [ ] 阶段 2/api/sessions 的 GET 与 POST 实现 ## 待办 - [ ] 阶段 3仪表盘页面 - [ ] 阶段 4历史列表页搜索 筛选 - [ ] 阶段 5新增表单页 - [ ] 阶段 6端到端验证 ## 遇到的问题 | 轮次 | 问题 | 处理 | 状态 | |------|------|------|------| | 3 | better-sqlite3 原生模块编译失败 | 改用预编译版本 | 已解决 | | 7 | 类型定义缺失导致 tsc 报错 | 补 types 声明 | 已解决 | ## 熔断记录 - 同一问题重试上限5 次 - 单轮 Token 预算200K - 进度停滞检测连续 3 轮无变化则暂停这个骨架的关键在于「遇到的问题」和「熔断记录」两块。前者是调试日志Loop 跑了几十轮之后出问题翻这张表能快速定位是哪一轮埋的坑后者是防死循环的硬约束AI 每轮开始时会读这两块知道自己还剩多少重试额度。3.3 /goal 指令模板把目标、停止条件、循环规则、熔断机制写进一段/goal指令里。模板如下方括号部分按你的项目替换/goal 从零搭建[项目名]。[技术栈描述]。 功能要求 1. [功能点 1] 2. [功能点 2] 3. [功能点 3] 停止条件[可自动验证的条件如 npm run build 无报错、npm run dev 能启动、所有页面正常渲染] 自主开发循环 1. 状态追踪项目根目录维护 PROGRESS.md每完成一个模块更新一次 2. 开发-验证闭环每完成一个模块立即跑构建验证有报错先修复再推进 3. 防死循环同一问题修复超过 5 次仍未解决记录到 PROGRESS.md 后跳过 4. 最终验证全部完成后做一次端到端验证 全程自主开发不要停下来等我确认除非遇到无法自行解决的阻塞问题。 完成后输出 Token 总消耗和项目文件清单。这段模板里「停止条件」必须可自动验证这是 Loop 能自己判断「做完了没」的前提。「防死循环」那条是保命的没有它AI 可能在一个编译错误上耗掉几十万 Token。最后那句「不要停下来等我确认」是让循环真正跑起来的关键否则 AI 每完成一步就停下来等你又变回手动模式了。4. 验证请求与成功结果检查配置写完跑一轮验证。我拿一个「AI 开发日志」全栈小项目做演示技术栈是 Next.js 14 TypeScript Tailwind CSS better-sqlite3。4.1 启动 /goal 并观察执行节奏在项目根目录进入 Claude Code把上一节的模板填好贴进去回车。AI 会按这样的节奏自己跑轮次 1npx create-next-app 初始化安装依赖 轮次 2创建 SQLite Schema 和 db 连接模块 轮次 3写 /api/sessions 路由跑 npm run build —— 报错自己修 轮次 4重跑构建 —— 通过更新 PROGRESS.md 轮次 5写仪表盘页面跑构建 —— 通过 轮次 6写历史列表页跑构建 —— 报错修了 2 轮通过 轮次 7写新增表单页跑构建 —— 通过 轮次 8端到端验证 npm run build npm run dev整个过程我没有干预。AI 每完成一个模块就跑一次构建报错当场修修完更新PROGRESS.md再推进下一个模块。这就是反馈闭环在起作用——不是最后才检查是每一步都在检查。4.2 检查成功结果跑完之后按三个层面验收。第一层看PROGRESS.md的最终状态。所有待办应该都变成已完成熔断记录里如果没有新增条目说明没有触发死循环跳过。第二层跑一遍停止条件里的验证命令npm run build npm run devnpm run build应该零报错退出。npm run dev启动后浏览器访问http://localhost:3000首页仪表盘、历史列表页、新增表单页三个页面都要能正常渲染。新增一条记录刷新历史页能看到说明 CRUD 跑通了。第三层检查 API 路由。用 curl 直接打接口curl -X POST http://localhost:3000/api/sessions \ -H Content-Type: application/json \ -d {content:测试会话,token_count:1200,code_lines:80,project:demo} curl http://localhost:3000/api/sessionsPOST 应该返回创建成功的记录GET 应该返回包含刚才那条记录的列表。如果 POST 报 500多半是数据库文件路径问题如果 GET 返回空数组检查 Schema 里的表名和查询语句是否一致。4.3 用 /loop 做持续监控项目搭完之后如果想让 AI 持续盯着服务状态切到/loop/loop 10m 检查 http://localhost:3000/api/sessions 是否返回 200。连续 2 次返回非 200记录到 health-check.log 并通知我。/loop每 10 分钟跑一次适合部署后的健康检查、CI 状态轮询这类场景。记住/loop会一直跑任务不需要了就手动停掉别让它空烧 Token。5. 本篇常见错排查Loop 跑起来之后报错集中在几个地方。这一节按现象分类方便你对号入座。5.1 401 或模型不可用现象是 Claude Code 一启动就报鉴权失败或者/goal跑到一半提示模型不可用。先检查settings.json里的ANTHROPIC_AUTH_TOKEN有没有填错注意不要带多余空格。再确认ANTHROPIC_BASE_URL写的是https://taotoken.net/api末尾不要加斜杠。如果 Key 没问题去控制台看额度是否充足、模型名是否在当前支持的列表里。模型名写错也会报不可用对照接入文档里的模型列表核对一遍。5.2 /goal 跑飞或陷入死循环现象是 AI 在同一个编译错误上反复修Token 消耗快速上涨PROGRESS.md的「遇到的问题」表里同一问题出现超过 5 次。这说明熔断机制没生效。检查/goal指令里有没有写「同一问题修复超过 5 次仍未解决记录到 PROGRESS.md 后跳过」这条。如果写了还跑飞可能是停止条件太模糊AI 判断不了什么叫「完成」于是无限重试。把停止条件改成可自动验证的命令比如npm run build退出码为 0。5.3 OverbakingAI 自己加需求现象是 AI 搭完你要的功能后开始加用户权限、操作日志、暗黑模式这些你没要的东西。这是 Loop 跑太久、目标约束太松导致的社区叫 Overbaking。解决办法是在/goal指令里明确写「做什么」和「不做什么」比如加一句「不要添加用户认证、权限系统、日志系统等未在功能要求中列出的模块」。同时设轮次上限跑完人工审查再合并。5.4 PROGRESS.md 不更新或进度丢失现象是 AI 跑到一半重启后从零开始或者PROGRESS.md一直是初始状态。检查/goal指令里有没有明确要求「每完成一个模块更新一次 PROGRESS.md」。如果写了还不更新可能是permissions.allow里没放开Write和EditAI 没权限写文件。另外确认PROGRESS.md放在项目根目录路径写对。5.5 构建通过但页面白屏现象是npm run build零报错但浏览器打开页面是空白。这类问题 Loop 的停止条件检测不到因为构建确实通过了。排查方向是看浏览器控制台有没有运行时报错常见原因是客户端组件里用了服务端才有的 API或者数据库连接在客户端被引用。这类问题建议在/goal的停止条件里补一条「浏览器访问各页面无控制台报错」让 AI 用无头浏览器做一次渲染检查。6. 把 Loop 用顺手的几个实操建议跑通一轮之后你会发现 Loop 的杠杆效应很明显——目标拆得清楚它能替你省下大量重复操作目标写得模糊它能把 Token 烧成烟花。我踩过的坑里最贵的一次是没设熔断目标写了「重构整个项目」AI 跑了 50 分钟花了快 80 万 Token效果还不如自己花 2 小时重写。所以启动前先想三件事目标能不能量化做完值不值这个 Token 钱跑崩了有没有 Plan B一个/goal省 2 小时手工操作、花几块钱 Token值跑了半天还搞砸要返工纯浪费。从小目标开始练手。先给 AI 一个小任务让它跑一轮感受下节奏和 Token 消耗顺手之后再上多阶段项目、定时循环、熔断机制这些进阶玩法。PROGRESS.md就是你的调试日志Loop 跑了几十轮后出问题翻它比翻对话记录快得多。如果你还没配好通道先去 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 建一个 Key再对照接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 把settings.json配好。想先感受模型对话效果可以去模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 试几句。如果你打算长期用 Loop 跑编码和 Agent 任务Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 的额度模式会比按次调用更划算具体可以自己算一下每轮循环的平均 Token 消耗再决定。最后一句实在话Loop 是放大器放的是你原本的工程判断力。目标拆得清、停止条件定得准、熔断机制配得全它就是你项目里的自动驾驶这三样缺一个它就是个烧 Token 的无底洞。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →