☰
为什么每次试验都是 Git 提交?深入 Codex Autoresearch 的安全回滚与审计追踪机制
2026/10/3 16:51:14 网站建设 项目流程

为什么每次试验都是 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"),技能会:

  1. 先和你确认目标、目标值、允许改动的范围与度量命令;
  2. 每一轮只改动一个聚焦的问题;
  3. 把改动提交成试验提交,然后运行度量命令测量;
  4. 指标改善且回归守卫通过 → 保留提交;否则 → 用 git revert 回滚;
  5. 追加一条审计事件,重复直到达成目标。

一句话概括分工: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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询