Loop It(循环控制) 是做什么的?
将开放式编码目标转变为有边界、可验证的循环。Loop It 也是一个循环库:选择合适的起点循环,根据用户上下文进行调整,并跟踪进度,使下一步迭代目标清晰可见。
决策
首先确定用户所需的模式:
- 从库中选取:为用户目标选择一个捆绑的循环。
- 根据进度推荐下一步:检查
.loop-it/progress.json或.loop-it/LOOP.md,并推荐下一步循环。 - 仅设计:生成一个可复用的循环提示或项目本地的循环文件。
- 立即运行:每次执行一个有限制的迭代,验证结果,并判断是否需要继续下一次迭代。
- 导出/安装:为 Codex、Claude Code、Cursor 或其他兼容 SKILL.md 的智能体适配相同的循环。
如果任务表述模糊,不要提出宽泛的发现式问卷。首先推荐最合适的库中循环,并说明其假设前提。只有当目标、成功标准、仓库范围或审批边界确实存在阻碍时,才最多提出三个有针对性的问题。
契约
每次循环执行前都需要包含以下字段:
- 目标:具体的产出成果,而非主题。
- 范围:仓库、文件、功能区域、数据源或环境。
- 成功检查:命令、基准测试、人工检查、审查标准或可衡量的阈值。
- 迭代上限:最大执行次数或时间预算。
- 停止条件:成功、无有意义改进、反复失败、访问被阻止、不安全操作或需要审批。
- 证据:每次通过后应记录的内容。
- 审批关卡:生产写入、外部消息、支付、破坏性 Git 操作、凭证、部署或不可逆的数据变更。
如果用户提出的循环仅仅是“持续改进”而没有检查标准,应予以拒绝。转而提供一个带有明确检查机制的更小范围的循环。
选择循环
优先使用捆绑的循环库,而非从头设计循环。
如果选择脚本可用,请使用以下命令:
node <skill-dir>/scripts/select-loop.mjs list
node <skill-dir>/scripts/select-loop.mjs search "failing ci"
node <skill-dir>/scripts/select-loop.mjs recommend --goal "fix failing checkout test"
node <skill-dir>/scripts/select-loop.mjs next --cwd <project>
将 <skill-dir> 解析为此技能的文件夹。在 Claude Code 中,${CLAUDE_SKILL_DIR} 可能可用。在其他智能体中,请找到包含此 SKILL.md 的目录。
选择时:
- 当用户询问下一步循环时,首先检查
.loop-it/progress.json。 - 如果没有进度记录,则将用户的目标与
references/library/loops.json进行匹配。 - 推荐一个循环,最多两个备选方案。
- 用一句话解释匹配原因。
- 仅在必要时提出该循环的核心问题。
- 如果没有匹配的库循环,则设计一个自定义循环,并说明待其证明有用后应考虑加入库中。
仅在选择脚本不可用或需要手动检查时,才读取 references/library/loops.json。当任务需要通用的持久状态模板时,请读取 references/loop-template.md。
当前库类别包括:
- 工单到已验证修复:复现、诊断、修补、添加回归测试、验证。
- 失效 CI 修复:检查失败输出、复现、修补、重新运行失败检查。
- 文档扫描:将文档与实现对比、更新过时文档、验证示例或链接。
- 产品评估:定义场景和标准、测试、修复遗漏、重新运行受影响及全部检查。
- 性能优化循环:测量基准、进行一次聚焦更改、重新测量、仅保留有证据证明的改进。
- 审查修复循环:审查差异、修复阻塞性发现、重新运行检查、重复直到只剩可接受风险。
- 全新设置循环:从干净环境开始、按照文档设置、修复隐藏的假设、干净地重试。
- 发布就绪:在发布前验证包、部署或公开安装路径。
- UX 打磨、依赖升级、安全加固、重构隔离和测试覆盖缺口循环。
草拟循环
使用以下结构创建循环提示和状态文件:
- 说明目标和非目标。
- 在一个紧凑周期内定义重复动作:检查、行动、验证、记录、决策。
- 明确说明验证命令或人工检查的具体名称。
- 定义迭代上限和停止条件。
- 定义最终报告必须包含的内容。
保持版本 1 的范围狭窄:一个仓库、一个主要角色、一个主要成功检查。在手动循环被证明有用之前,延迟安排、仪表盘、多智能体编排和生产自动化。
当需要持久状态文件时,根据 references/loop-template.md 创建 .loop-it/LOOP.md,或运行:
node <skill-dir>/scripts/create-loop.mjs --name "Loop name" --objective "Concrete outcome" --check "Verification command or criterion"
node <skill-dir>/scripts/create-loop.mjs --from failing-ci-repair
基于库的循环文件还会创建 .loop-it/progress.json,除非传递了 --no-progress。
运行循环
每次迭代:
- 重新阅读目标、成功检查、上限和审批关卡。
- 仅检查下次有界行动所需的上下文。
- 做出最小的可信更改。
- 首先运行最窄的相关验证,仅在需要时才进行更广泛的检查。
- 如果存在状态文件,则在
.loop-it/LOOP.md中记录证据;如果存在.loop-it/progress.json,则更新它。 - 决策:停止、继续、请求审批或报告阻塞。
如果继续执行需要基于关于安全、凭证、生产数据、计费、用户消息、破坏性 Git 操作或部署审批的隐藏假设,则立即停止。
不要将已耗尽、受阻或部分验证的循环描述为完成。应准确说明导致停止的条件以及在何种证据基础下停止。
导出
在跨工具使用时,保持相同的循环文本,仅更改调用方式:
- Codex:安装到
.agents/skills/loop-it/或作为 Codex 插件,然后通过$loop-it调用。 - Claude Code:安装到
.claude/skills/loop-it/,然后通过/loop-it调用。 - Cursor:安装到
.cursor/skills/loop-it/,然后通过在 Agent 对话中输入/loop-it或要求进行循环来调用。对于始终保持的项目约定,请使用 Cursor 规则,而非此过程性循环。
导出时,保持一个规范的循环体,除非工具强制要求特定语法,否则避免使用工具特有语法。