为什么每次试验都是 Git 提交?深入 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
Codex Autoresearch 是一款面向 Codex 的自驱动 AI 实验技能:给它一个可量化的目标,它就循环执行"修改代码 → 度量指标 → 保留或丢弃",每一轮试验都会自动成为一次 Git 提交。配合基于 git revert 的安全回滚与只追加的审计追踪日志,长时无人值守的自主运行也全程可追溯、可安全回退。
先认识 Codex Autoresearch:AI 的自运行实验循环 🧪
给它一个数字化的目标(例如"把解析器错误数降到 0"),技能会:
- 先和你确认目标、目标值、允许改动的范围与度量命令;
- 每一轮只改动一个聚焦的问题;
- 把改动提交成试验提交,然后运行度量命令测量;
- 指标改善且回归守卫通过 → 保留提交;否则 → 用 git revert 回滚;
- 追加一条审计事件,重复直到达成目标。
一句话概括分工:Codex 负责提出假设和写代码,控制脚本负责 Git 边界、度量、回滚与状态(见 README.md 的循环说明)。正是这种分工,让"每一步可回滚"成为可能。
为什么每次试验都必须是 Git 提交?
新手常问:AI 只是在反复试错,大部分尝试还会失败,提交历史不会被"污染"吗?项目的回答很明确:Git 就是实验的记忆与回滚边界,离开 Git 它甚至拒绝运行。
1. 变成提交,才能"精确回滚"
Codex 改完代码后,控制脚本会创建一个统一前缀为autoresearch:的试验提交(实现见 scripts/autoresearch_core.py)。这个提交就是检查点:
- 保留→ 提交留在历史中,改进成为基线的一部分;
- 丢弃→ 脚本对该提交执行 git revert,生成一个"反向补丁"提交。
注意:它不是抹掉历史的硬删除,而是加一笔可追溯的反向操作。失败尝试不会从仓库里消失,而是被记录在案——这正是审计的含义:任何时候你都能回答"AI 试过什么、为什么回滚"。
2. 提交是状态校验的"锚点"
每轮开始时,脚本都会核对当前 HEAD 与分支是否与记录一致。如果 Git 被外部挪动(包括 AI 自己越权操作),运行立即停止并给出精确错误,而从不"猜"结果。运行状态也不存在对话记忆里,而是从事件日志逐条重放验证得出。
3. 提交是指标的"证据链"
每个指标数值都对应一个具体提交哈希,因此度量轨迹可以逐点标注来源,报告里的每一行历史都能回溯到 Git 对象。
安全回滚的三道防线:严格在哪里?🔒
这个技能的安全模型刻意严格——项目原话是:"静默恢复会让长时自主运行变得不可信"(安全模型见 README.md)。具体有三道防线:
第一道:范围校验。只能触碰你确认过的路径,且autoresearch-results/与.git被硬性保护。越界改动、分支切换、HEAD 漂移,任何一种都会立刻中止运行。
第二道:改进 + 守卫双通过才保留。只有"指标变好且回归守卫测试通过"才算 keep;即使指标改善,守卫失败同样触发回滚——避免"分数涨了、功能坏了"。
第三道:失败绝不静默。度量命令超时、输出格式错误、回滚失败时,运行进入错误状态,报告精确错误信息与日志路径,绝不"重建、猜测或悄悄修复"状态。
审计追踪存在哪里?📜
全部实验数据写入autoresearch-results/目录(该目录永不暂存、不提交):
| 文件 | 作用 |
|---|---|
run.json | 一次运行唯一且不可变的确认配置 |
events.jsonl | 只追加的实验历史:基线、每次迭代、停止、完成 |
logs/ | 每次度量、守卫与后台进程的完整输出 |
report.html | 可随时重新生成的可视化报告快照 |
核心是events.jsonl:每条迭代事件记录轮次、结果(keep/discard)、试验前/试验中/保留后的三个指标值、试验提交哈希、回滚提交哈希与日志路径。它是只追加且序号严格连续的——任何缺口、矛盾或篡改都会被判定为错误(校验逻辑见 scripts/autoresearch_core.py 的状态重放)。
基于这些验证过的事件,你可以让 Codex 直接查看:
show experiment history→ 在终端打印验证过的历史表格;export experiment history as TSV→ 导出表格用于分析;generate an HTML report→ 生成自包含的可视化报告。
在报告的历史表中,被丢弃的第 1 轮迭代同时标注了试验提交与回滚提交两个哈希——这就是安全回滚机制最直观的样子:每次回滚都留下成对的痕迹。
新手常见疑问速查 💡
- 没有 Git 能跑吗?不能。Git 是实验记忆与回滚边界,且一次运行只管理一个仓库。
- 为什么历史里多了不少提交?这是"非破坏性、可追溯回滚"的成本——额外的回滚提交换来任何内容都不会被悄悄删除。
- 为什么后台运行要求 Full Access?因为每轮都要写 Git 提交与回滚,受限沙箱可能禁止写
.git。 - 能暂停和恢复吗?能。前台用 Codex Goal 暂停/恢复;后台通过技能查询状态、停止或带新方向恢复。
相关文档与模块参考 📚
- 完整用法、生命周期与状态说明:docs/GUIDE.md
- 安装与验证:docs/INSTALL.md
- 实用提示词与度量模式示例:docs/EXAMPLES.md
- 技能入口与循环规则:SKILL.md
- 提交/回滚等 Git 原语实现:scripts/autoresearch_core.py
- 工作流与后台运行细节:references/workflow.md、references/background.md
一句话收尾:提交不是负担,而是信任的锚点——它让你敢放手让 AI 试错,并在事后验证每一步、随时安全回退。
【免费下载链接】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),仅供参考