SOTA Sync
全部文章
模型进展2026-04-06

我用开源工具建了一个持续学习的 AI 编程 Agent

基于 Prime Intellect 的开源生态,用 rollouts CLI 构建个人持续学习编程 Agent。每次对话记录真实轨迹,自动推送到 HuggingFace 数据集,RL 训练后的 checkpoint 自动部署到本地 OpenCode。

作者读完 Cursor 每五小时发布一个新 Composer checkpoint 后,想建一个类似的系统。发现开源生态里已经有现成的工具和基础设施,只需要做"管道"把它们连接起来。

#rollouts CLI

作者做了 rollouts CLI,把持续学习循环简化为四个命令:

rollouts setup
rollouts learn start my-session --config rl.toml
rollouts learn use my-session
rollouts learn continue my-session

用的是 Prime Intellect 的开源生态(OpenCode + Inference + 训练基础设施)。

#核心思路

作者笔记本上有约 21.8 亿 token 的 Codex 使用量。每条消息里都有大量有价值的信号——这些是真实的、多轮的、难以人工标注的训练数据。传统做法是基于用户消息内容、工具输出等做 SFT 变体,但真正有价值的是让 Agent 在沙盒里产生真实的 rollout,然后基于实际是否成功来给奖励。

#完整流程

  1. 通过 Prime Inference 把基础模型加入 OpenCode,使用它
  2. OpenCode 插件在每个用户和助手 turn 都用 git bare repos 对代码库做快照。为什么每个 turn?因为用户可以在 Agent 完成后、发送下一条消息前继续编辑代码,所以每个 turn 都快照才能判断 Agent 的修改是否持久有效(这也是 Cursor 用的指标)
  3. 把 git bare repos 推到 GitHub,把 OpenCode session 推到 HuggingFace 数据集
  4. 为 Prime Intellect 的托管训练写一个 base TOML 配置文件
  5. 启动 RL run
  6. 如果模型有提升就部署 checkpoint,并更新 OpenCode 配置指向新模型
  7. 继续

#奖励设计

作者做了一个简单的环境和基于"任务是否成功"的占位奖励函数。可以 fork 后接入自己的奖励函数。下一个要加入的奖励是简洁度——希望编程 Agent 写出简洁的代码,而不是默认生成大量防御性代码、重复抽象、忽略现有类型等。

#难的部分没变

数据、评估(evals)和评分规则(rubrics)仍然是核心挑战。这三个不是靠 CLI 自动化能解决的,需要人工设计和迭代。CLI 只是把"管道"部分自动化,让研究者把精力集中在真正重要的地方。