Codex Autoresearch 的7种运行状态详解:active、complete、blocked 何时出现?
【免费下载链接】codex-autoresearchCodex Autoresearch Skill — A self-directed iterative system for Codex that continuously cycles through: modify, verify, retain or discard, and repeat indefinitely. Inspired by Karpathy’s autoresearch concept.项目地址: https://gitcode.com/gh_mirrors/co/codex-autoresearch
Codex Autoresearch 是一个面向 Codex 的自主迭代实验 Skill:它让 AI 在 Git 仓库中持续执行"修改 → 验证 → 保留或回退 → 重复"的循环,直到数值指标达到目标。本文用通俗的语言详解 Codex Autoresearch 的 7 种运行状态(active、complete、blocked、stopped、error 等),帮助你一眼看懂自动实验循环当前进行到哪一步、该做什么。
先了解:状态是怎么来的?
Codex Autoresearch 的核心思路是把一个仓库级目标变成一个受控的实验循环:
检查现状 → 只改一处 → 验证指标 → 好就保留、差就回退 → 无限重复
它有两份"账本"(位于autoresearch-results/目录):
| 文件 | 作用 |
|---|---|
run.json | 不可变的运行配置(目标、指标、范围、目标值) |
events.jsonl | 只追加的事件历史,是状态的唯一真实来源 |
系统每次都会逐条校验全部事件来推导当前状态,而不是靠记忆或缓存。相关规则见 references/experiment.md 和 SKILL.md。
7 种运行状态速览
官方在 docs/GUIDE.md 中给出了完整定义,下表是精简版:
| 状态 | 含义 | 类比 |
|---|---|---|
not_initialized | 还没有任何运行 | 白板 |
initialization_failed | 基线初始化失败 | 起跑时摔了 |
active | 还可以继续做实验 | 比赛中 |
complete | 指标达到目标 | 冲过终点 |
stopped | 用户停止或达到迭代上限 | 被按了暂停 |
blocked | 需要外部条件才能继续 | 等红灯 |
error | 命令、Git 或状态契约出错 | 发动机故障 |
逐一看清每种状态
1. not_initialized:全新起点
当你第一次对某个仓库调用该 Skill 时,status命令会返回not_initialized,表示"这里还没有实验"。这是唯一被视为全新运行的状态——此时 Codex 会检查仓库、向你提议目标/范围/指标/目标值,等你确认后才初始化。
2. initialization_failed:基线没跑起来
初始化需要采集基线指标(baseline),如果基线命令输出不合法、guard 在基线就失败、或仓库不干净,就会落在这个状态。此时可能只有init-error.json而没有run.json。处理方式:查看诊断日志,执行archive归档失败尝试后再重试(详见 references/workflow.md)。
3. active:正在比赛,别打扰 🏃
active是最常见的"进行态"。只要指标还没达标、迭代数没超限、也没有终端事件,状态就是active。
在active期间,每一轮迭代的流程是:
- Codex 读取已验证的状态和历史事件
- 在确认的范围内做一个聚焦修改
- 控制脚本创建试验提交,运行验证命令和 guard
- 指标变好且 guard 通过 →
keep(保留提交);否则discard(自动 revert)
⚠️ 常见误区:"没进展"不等于 blocked。假设失败、指标暂时不涨都属于active,只有真正被外部条件卡住才算 blocked。
4. complete:指标达标,终点线 🏁
当保留下来的指标(retained metric)达到你确认的目标值时,finish命令会写入complete事件,运行终止。注意:complete是不可恢复的——想跑新目标,必须先归档(archive)再初始化。
上图就是一次典型complete运行的 HTML 报告:基线为 2 次错误,3 轮迭代后指标降到 0(目标达成),其中 1 次试验被 discard 回退、2 次被 keep 保留。
5. stopped:主动暂停或迭代用尽
两种触发方式:
- 用户主动停止(后台运行的
stop命令):可以resume --note <新方向>继续; - 达到迭代上限:这类运行不能直接恢复,需归档后用重新确认的上限重新开始。
6. blocked:等待外部条件变绿 🚦
blocked是最有门槛的状态。它只在以下情况出现:
- 所有有意义的实验都依赖不可用的外部资源:人类信息、凭据、数据、硬件、服务访问等;
- 前台运行还要求同一阻塞因素连续 3 轮 Goal 都未解除,才允许记录
block。
"难 bug"、"假设失败"、"暂时没改善"统统不是blocked。解除方式:外部条件变化后执行resume --repo <repo> --note <变化说明>。
7. error:故障即停,拒绝猜测
只要发生以下情况就会进入error:指标输出格式非法、命令超时、Git 状态意外、回滚失败、事件日志损坏等。
设计哲学是"故障即停,不重建、不猜测":错误会指名具体的不变量违规和完整日志路径,你修好原因前无法 resume。如果错误还残留着一个未回退的试验提交,系统会直接拒绝恢复——必须手动恢复 Git 后归档。
附赠:后台模式的 3 个运行时状态
后台(background)运行还有一个runtime.json,其中的state字段是独立维度(见 references/background.md):
| 运行时状态 | 含义 |
|---|---|
running | 控制器正在驱动 worker 循环 |
orphaned | 事件日志说 active,但记录的控制器进程已消失 |
not_started | 尚未启动 |
orphaned需要你先确认 worker 是否还活着:活着就不能 stop/resume/archive;都不活了才能用stop关闭事件状态。
如何查看当前状态?
三个只读命令,都通过控制脚本 scripts/autoresearch.py 执行:
# 查看当前运行状态(核心命令) python3 <skill-root>/scripts/autoresearch.py status --repo <repo> # 查看实验历史(终端表格) python3 <skill-root>/scripts/autoresearch.py history --repo <repo> # 生成 HTML 报告(指标轨迹 + keep/discard 时间线) python3 <skill-root>/scripts/autoresearch.py report --repo <repo>history和report都会先校验完整事件历史再渲染,保证你看到的数字和状态绝对可信。
总结
| 你想了解的 | 看哪里 |
|---|---|
| 7 种状态的权威定义 | docs/GUIDE.md |
| 每种状态下的恢复操作 | references/workflow.md |
| blocked 的判定标准 | references/experiment.md |
| 事件校验源码 | scripts/autoresearch_core.py |
| 快速上手示例 | docs/EXAMPLES.md |
一句话记住:active 是默认姿态,complete 是唯一不可逆的终点,blocked 必须等外部,error 必须先修原因。掌握这 7 种状态,你就能在 Codex Autoresearch 的自主实验中做到心中有数。
【免费下载链接】codex-autoresearchCodex Autoresearch Skill — A self-directed iterative system for Codex that continuously cycles through: modify, verify, retain or discard, and repeat indefinitely. Inspired by Karpathy’s autoresearch concept.项目地址: https://gitcode.com/gh_mirrors/co/codex-autoresearch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考