| name | autoloop |
| description | 把一个 role / prompt / 工作流对着你定义的 benchmark 可量化地越改越好:变异 → 评测 → 多裁判打分 → 赢则保留、输则回滚,在护栏内(变异上限 / 停止条件 / 证据门槛)迭代,可无人值守过夜跑。当想让某个 agent / 角色在能打分的任务上自我改进(而非只重试)时用;前提是先有可机器打分的 eval。 |
Autoloop — 自改进循环
通用 skill,装进项目用。 优化的是你这个项目自己的 role / prompt / 工作流(对着你领域的 benchmark)—— 比如把一个 QA / 安全 / 交易 / 研究 角色越练越准。ccteam 只是提供 session_* / advise 这套执行底座;这个 skill 不改 ccteam 本身,改的是你项目里被优化的那个产物。
普通循环是「执行 → 重试」,把烂流程转一千遍还是烂。Autoloop 只多一样东西:eval(评测基准) —— 有了它,每轮能并排问「新版 vs 旧版,在我真正在意的指标上哪个更高」,循环才是爬坡而不是空转。选手和裁判都是 session,全程用 ccteam 的 session_* + advise 工具,不写代码。
铁律:没有 eval 就没有 autoloop。 开跑前先能回答「机器可评分的『好』长什么样」。答不上来 → 先去写 benchmark —— 这是第一步,也是最多人跳过的一步。eval 不是前提条件,eval 就是产品本身。
准备三样
- 优化目标:一个持久产物 —— 通常是 role 文件
.claude/agents/<role>.md(或一段工作流 / 方法)。autoloop 改的是这个文件本身(vendor 自己读它),绝不是运行时注入。
- eval 包:一组 benchmark 任务 + 每个「好结果」的可打分标准。能跑测试 / 比指标的最好;否则给评分卡(如 正确性 > 安全 > 简洁 > 性能,或用户自定)。
- 在一个能调
session_* + advise 的 session 里跑(默认 cto)。
循环
- 基线:用当前目标
session_spawn 一个候选,把 benchmark 任务 session_dispatch 给它、session_collect 收齐,按 eval 打分 → 记下基线分。
- 变异(一次一处、要小):提一个聚焦的目标变体(改 role.md 的某一段 / 加一条约束 / 换个打法)。先把原文件存一份备份 —— 赢了才知道是哪处赢的,输了好回滚。
- 评测:用变体
session_spawn 新候选 → 把同一套 benchmark 原样 session_dispatch → session_collect 收齐产物(改代码就比 diff / 产物,不只比说辞)。
- 打分(多裁判治噪声):把变体产物交给
advise vote / advise parallel(≥3 裁判) 按 eval 盲评打分,叠加可程序化的硬检查(测试 / 指标)。单裁判会飘,多裁判 + 投票才稳。
- 赢留、输回:只有变体分超过证据门槛(提升够大 + 裁判够一致)才保留(写回 role.md);否则回滚(丢弃变体、恢复备份)。
- 记账:每轮把「变异内容 / 基线 vs 变体分 / 留 or 回」追加进一份日志 —— 结束时留下的不是一个空转的循环,而是一串可证明的小胜。
护栏(开跑前必设,否则别走开)
- 变异上限:最多 N 轮,不无限发散。
- 停止条件:达标分,或连续 K 轮无改进 = 停。
- 证据门槛:分差 < 阈值 / 裁判不一致 = 当没赢,回滚(防被噪声带偏)。
- 成本刹车:每轮 = 一批 agent run,通宵很烧 —— 盯住 24h 预算上限;证据门槛 + 变异上限 + 预算上限是三道刹车。
护栏齐了就走开:ccteam 的 session 扛重启、能过夜跑;醒来拿到一个在你在意的指标上可量化变好的目标 + 那串胜利记录。
变体
只换法、不改骨架:优化对象换成工作流 / 工具配置;变异交给一个专门的 mutator session 提案;判法换成锦标赛 / best-of-N / 把多方合成更优的一版;并行跑多个变体再选最优(多 session_spawn + advise parallel 一起评)。