今天改 Superloop 的时候,我其实一直在想 Codex 的 `/goal`。一开始我问的是一个很表层的问题:它是不是会自动拆 sub-agent?后来发现这个问题不够关键。真正有用的是另一件事:长期任务不能只活在聊天记录里。
聊天记录太脆。上下文一压缩,模型一换,或者中间隔了几个小时,下一轮 agent 很容易只记得“要继续”,但不知道继续哪一关。它会重新读一堆历史,然后猜。猜对一次可以,长期任务靠猜就会变形。
Sub-agent 也救不了这个问题。它适合并行做旁路任务,比如查一个 API、跑一组测试、审一个独立模块。但上下文一致性不是靠人多解决的,而是靠一个共享账本:当前 mission 是什么,哪一轮正在执行,哪些 gap 没闭环,什么证据才允许说完成。
所以这次 Superloop 没有先去加更多 agent。我先补了 `context / next-prompt`。它会把 mission、budget、active round、gap ledger、completion audit 拼成一段下一轮提示词。新的会话拿到它,不需要装作自己记得所有历史。
第二个改动是 `start-round`。以前的 `record` 更像事后写日志,做完再总结。现在每轮动手前要先写 hypothesis、change、round gate 和验证计划。这样中途断掉也没那么尴尬,回来时能看到自己到底停在哪个 gate 前面。
第三个改动更硬:`record --mission-complete` 必须带 completion evidence。不能只写“任务完成”。这条看起来小,但它挡住了 agent 最常见的偷懒方式:测试没跑完、线上没验证、stop rule 没回看,就用一句完成收尾。
现在我会这样用 Superloop:先 `resume` 看使命和历史,再用 `context` 或 `next-prompt` 拿到接力上下文;动手前 `start-round` 固定本轮判断;执行、测试、提交后 `record`;最后用 `timeline` 看这轮是不是真的闭合。
这也是我想放进 YoloLab 的原因。Agent workflow 不能只停留在“我用了什么工具”。它应该留下证据:这轮想解决什么,改了什么,在哪里验证,为什么下一轮该继续或者停。没有这些,所谓长期 agent 任务只是一次更长的聊天。