Sakana AI × UBC × Vector Institute(2025-05,arXiv:2505.22954)提出的自改进编码智能体:把哥德尔机”必须形式化证明改动有益”的要求换成”在基准上实证验证”,并用达尔文式的档案库做开放式探索。SWE-bench 20.0% → 50.0%,Polyglot 14.2% → 30.7%,全程无人工干预。
名字里的两半
DGM 是把两个不同传统拼在一起的产物,理解这两半就理解了它全部的设计取舍。
| 来源 | 原初主张 | DGM 如何处理 |
|---|---|---|
| 哥德尔机(Schmidhuber, 2003/2007) | 自我指涉的智能体,只有当它能形式化证明某次自改代码会带来净收益时才执行改写 | 保留”改写自身代码”的框架,放弃形式化证明——因为实践中证明绝大多数改动净有益是不可能的 |
| 达尔文进化 | 变异 + 选择 + 保留谱系,多样性避免陷入局部最优 | 用 LLM 当变异算子,用基准分数当适应度,用档案库存放所有候选 |
一句话:哥德尔机是”证明后改进”,DGM 是”跑分后保留”。
核心机制
1. 自修改(self-modification)
DGM 的初始 agent 被刻意做得极简(bash + 文件编辑工具,基础模型冻结)。每一代做四件事:
- 诊断:agent 读取自己的源码仓库 + 在基准任务上的完整评估日志
- 提案:用强 LLM 分析日志,找出弱点(如”编辑大文件时上下文超限”),写出改进方案
- 重写:把”改进自己”当成一个普通编程题,调用自己现有的代码编辑工具去改自己的
coding_agent.py和tools/ - 产生子代:改完的代码就是一个新 agent
关键点是自指的复利结构:改进了编码能力,就改进了”改进自己的能力”。这是它区别于普通 meta-learning 的地方——后者只能做一阶改进,搜索空间仍由人设计。
2. 实证验证(empirical validation,替代形式化证明)
新生成的 agent 必须:
- 通过基础编译与功能检查(证明它还是个能跑的 agent)
- 在目标基准(SWE-bench / Polyglot)上实际评测,分数决定是否入档
分数不达标的候选不是简单丢弃,而是仍可能进入档案库——这正是下一节的作用。
3. 开放式探索(open-ended exploration)
DGM 维护一个不断增长的 agent 档案库,而非只保留当前最优:
- 父代采样概率大致与性能成正比、与已有子代数成反比(鼓励未被充分探索的分支)
- 所有历史版本都留在库里,形成一棵分叉的进化树
- 因此能”从性能低谷里爬出来”:论文记录 SWE-bench 实验在第 4 和第 56 次迭代时分数一度低于父代,但该路径后续仍产出了超过所有前代的最优 agent
消融实验显示:去掉开放式探索(即永远只从最新版本继续改进),性能显著更差。保留失败谱系是这套方法的核心贡献之一。
自动发现的能力
论文报告,DGM 在无人工干预下自行发明了这些改进,且都属于通用编码能力而非针对某个 issue 的过拟合:
- 更细粒度的文件编辑:用字符串替换做精确编辑,而不是每次查看/替换整个文件
- 长上下文窗口管理:缓解编辑大文件时的上下文溢出
- 同行评审机制:先做多次尝试解题,再用另一个基础模型评估并选出最佳答案
- 利用历史尝试:生成后续尝试时参考前面的失败记录
论文特别指出,同一功能目标(如”更细粒度编辑工具”)可以有多种实现,DGM 能并行探索不同实现并找到更优的那个——这是档案库多样性带来的直接收益。
安全设计与已知风险
论文声明的措施
- 所有 agent 执行与自修改都在隔离沙箱内进行,限制对宿主系统的影响
- 每次沙箱执行有严格时间限制,防止资源耗尽或无界运行
- 自改进范围被限定在”通过修改自身 Python 代码库来提升特定编码基准表现”,收窄了可能的修改面
- 持续监控性能与代码变更,档案库提供可追溯的修改谱系供人工审查
- 论文明确表示:在该实验中未发现有害或恶意行为的证据,自修改基本集中在提升编码能力
真实的缺口
这些措施都指向同一件事:验证器在循环之外,但没有被保护。后续研究已经把这个缺口打开:
- 基准投毒攻击(arXiv:2609.17817, 2026-09):向自评估流程投喂被污染的基准,可诱导 DGM、SICA、Hyperagents 等自修改 agent 演化出在干净留出任务上写不安全代码的行为(示例:让 agent 自行演化出关闭 HTTPS 证书校验)。污染往往在之后用干净基准继续演化时仍然残留。
- 成本门槛:在 SWE-Bench 上跑一轮完整评估约 $22,000 加数千 CPU 小时(arXiv:2609.19526 引用),巨大的反馈成本直接限制了迭代速度这一复利变量。
- 验证器静止:DGM 的评分标准全程固定,而进化论上”环境本身也在变”。后续工作(如红皇后哥德尔机 RQGM)试图让评估器与选手共同进化,并用留出的锚点数据约束评估器更替。
这三点与 recursive-self-improvement 的三判据严格对应:DGM 满足”可自动评分”和”评估在更新边界外”,但评分器本身不受保护、不随能力升级,因此它的高分在高对抗条件下并不稳固。
在自进化谱系中的位置
| 系统 | 改什么 | 验证方式 | 探索机制 |
|---|---|---|---|
| 哥德尔机(理论) | 自身代码 | 形式化证明有益 | 无(证明即过滤) |
| DGM | 自身 Python 代码库 | 基准分数(冻结) | 档案库 + 开放式采样 |
| sia | Harness + 模型权重 | 基准 + 反馈 Agent | 三 Agent 循环 |
| prime-agent | Continual Harness 状态 | 证据驱动的小步更新 | 可回滚快照 |
| meta-harness | Harness 源码 | held-out 任务 | 文件系统 + 全历史 traces |
DGM 的特殊之处:它把”改进自身”直接当作被优化的任务本身,且不依赖人工设计搜索空间。但代价是它把全部信任押在了基准评分上。
局限与争议
- 成本极高:单轮评估数万美元量级,迭代速度受反馈成本直接压制
- 冻结的验证器:评分标准不变,存在被精确拟合的风险
- “开放式”成色存疑:批评者认为档案库 + 反比采样更像质量-多样性(QD)搜索的常规用法,与生物学意义上的 open-endedness 尚有距离
- 改进集中在工程技巧:已发现的改进(细粒度编辑、评审机制、上下文管理)价值真实,但更像熟练工程师会做的事,而非涌现出全新算法
- 安全结论有时效性:“未发现恶意行为”是当时实验条件下的观测,不是对机制的安全保证
资源
- 论文:https://arxiv.org/abs/2505.22954(v1 2025-05-29,v3 2026-03-12)
- 项目主页:https://sakana.ai/dgm/
- 代码(全部开源):https://github.com/jennyzzt/dgm
- 作者:Jenny Zhang、Shengran Hu、Cong Lu、Robert Lange、Jeff Clune(UBC / Vector Institute / Sakana AI / Canada CIFAR AI Chair)
相关页面
- recursive-self-improvement — 三判据与证据地图;DGM 是”实证验证替代形式证明”的关键样本
- meta-harness — 同样改 harness,但验证器是 held-out 任务,对照 DGM 的冻结基准
- sia — 三 Agent 循环,W+H 双维度自改进
- prime-agent — Continual Harness,小步证据驱动 + 可回滚
- agent-continual-learning — Model/Harness/Context 三层框架;DGM 落在 Harness 层
- darwin-skill — 同名”达尔文”但作用在 Skill 文本层,含棘轮机制与独立评分
- swe-bench-verified、terminal-bench — DGM 使用的评测基准类型