用途
Iterate 是一个自主的单指标改进循环。它借鉴 Karpathy 的 autoresearch 思路,把改进工作约束在“一个指标、一个范围、一个循环”之内,由智能体自动完成:修改代码、测量结果、保留改进、丢弃回退,然后重复。循环会一直运行,直到任一停止条件触发或用户中断。
主要能力
- 单指标驱动:围绕一个可机械测量的数字指标进行优化,方向可设为越高越好或越低越好。
- 配置化循环:通过 Goal、Scope、Verify、Direction 等字段定义改进目标、可修改文件、验证命令和优化方向。
- 可选安全网 Guard:运行一个必须始终通过的命令(如类型检查、测试),即使主指标改善但 Guard 失败也会回退。
- 批量与二分定位:Batch 可设为大于 1,一次迭代提交多个独立改动;当批次验证出现回退时,通过 cherry-pick 逐个验证,保留好的、丢弃坏的。
- Git 作为记忆:每个改动单独提交,失败则回退,历史中保留失败实验;使用 iterate/best 标签指向目前最佳指标对应的提交,可随时恢复。
- 停止条件:支持迭代次数上限(Iterations)、达到目标值(Until)、连续无改进(Stagnation)三种条件,满足任一即停止;均不设置则循环无界,直到中断。
- 结果日志:以 results.tsv 记录每次迭代的编号、提交、指标、状态与描述,状态包括 baseline、keep、discard、bisect-keep、bisect-drop、crash。
- 进度输出与最终总结:每 5 次迭代输出一行状态;退出时始终打印最终总结块。
使用方式
通过 /iterate 调用,并在其后以内联配置提供字段。必填字段为 Goal、Scope、Verify、Direction;可选字段包括 Guard、Batch、Iterations、Until、Stagnation、Branch。如果缺少必填字段,智能体会一次性询问所有缺失字段。
循环开始前的准备步骤包括:收集配置、规划策略、检查权限(确保 verify 与 guard 命令可无提示运行)、设置分支(current、auto 或显式名称)、创建任务列表、验证测试与验证命令是否可用、记录基线并创建 results.tsv 与 iterate/best 标签。
主循环每轮依次执行:回顾 git log 与 results.tsv、构思不超过 Batch 个独立改动、逐个应用并提交、运行 verify 与 guard、决定保留或回退(批量时二分)、记录日志、在指标创新高时强制更新 iterate/best 标签、检查停止条件,然后重复。循环中不会询问“是否继续”,除非中断或触发停止。
常用示例包括:设置目标覆盖率到 90% 并限定迭代次数与停滞次数、使用批量 5 处理零 lint 警告、仅提供目标由智能体建议其余字段、以及无界夜间运行并创建独立分支。
适用场景
该模式可适配多个领域,只要提供对应的指标与验证命令。文档中列出的场景包括:测试覆盖率、打包体积、API 性能、机器学习训练验证损失、lint 警告数量、Lighthouse 评分、代码复杂度等。也适用于机械性修复(如 lint、明显的测试缺口、死代码),此时可加大 Batch。探索性工作建议 Batch 设为 1。
限制与注意事项
- 仅限机械验证:不接受“看起来不错”之类主观判断,由数字决定保留或丢弃。
- 范围受约束:只能修改匹配 Scope glob 的文件,不能触碰 verify/guard 目标、测试夹具或范围外配置。
- 一次提交一个改动:原子性要求落在提交层面,以保证可二分。
- 噪声指标需谨慎:对于有运行间波动的指标(如 LLM 评估分数、基准计时),“数字上升就保留”的规则会保留噪声。文档建议先测量噪声底线,若无法测量则不适合直接爬坡;可使用 evals-ops 技能中的门控脚本,并优先提高 Batch/重复次数而非 Iterations。
- 分支不自动删除:智能体不会自动删除分支,合并、PR 或删除由用户决定。
- 无界循环:若未设置任何停止条件,循环将运行至被中断,不会主动请求继续。
- 文档提到 /setperms 用于完整权限设置,但未提供其具体细节。
平台与收费
资料未提供该技能运行所依赖的具体平台、收费模式或价格信息,暂未提供。