项目持久化、agent 用完即弃:120 小时演化出 25 万行 C 编译器

Persistent Recursive Worlds Enable Autonomous Software Evolution

Beichen Huang, Zhenyu Liang, Bowen Zheng, Ran Cheng

cs.SE, cs.AI, cs.MA, cs.NE

2026-08-11

Genesis 让软件项目持久化、agent 用完即弃;用 DeepSeek V4 Flash 从零搭出 25 万行 C 编译器,123 小时、44 美元,通过全部 c-testsuite。

这篇在解决什么

长周期软件开发的时间跨度,比任何一个 coding agent 的寿命都长。上下文会满、成本会涨、agent 会跑偏,现有系统为了续命,基本都在想法子把 agent 本身变长:持久会话、长期记忆、再加一层管理者 agent、或者共享上下文。Genesis(香港理工大学 EMI-Group)把方向反过来:让软件项目持久化,让 agent 用完即弃。他们抛出的问题是,当正在干活的 agent 不在了,到底有什么东西必须留下来?

方法

核心是一套持久递归世界的形式化。一个局部软件世界 w = (v, p):v 是已接受的版本(完整的项目状态与历史),p 是仓库内的相对路径(agent 干活的起点)。版本锁定了存在什么,路径把 agent 安置在项目里的某个位置。

有限生命 agent 在世界 (v, p) 里拿到目标,产出候选改动。它的私有对话和草稿状态不会作为身份传给后面的 agent。递归委派只改工作落点、不改版本:父 agent 在路径 p 上派生一个在路径 q 上干活的子 agent,版本 v 保持不动。叶子执行者直接改代码,根节点和中间层管理者负责拆目标和评审返回结果。只有接受的软件事件才推进版本,从 v 到 v';被拒的改动不改变已接受版本。接不接受由负责的父 agent 用测试、约束和集成证据来定。

所以持久载体是一棵子任务树上的版本控制,连续性活在制品里,agent 是可替换的工人。配置用的是 DeepSeek V4 Flash,xhigh 推理强度,15 万 token 的上下文压缩。

结果

形成:从一个没有编译器实现的仓库出发,搭出一个基于 Rust 的 C 编译器(jcc),248,989 行物理代码(其中 219,676 行 Rust)横跨 750 个文件,归档了 1,019 个 agent 轮次,委派深度到 5,墙钟时间 123.4 小时(合计 666 agent-小时),模型 token 成本 44.38 美元(4.13B token)。测试:c-testsuite 220/220、Csmith 93/93、LLVM 32/36(88.9%)、Rust 单元测试 2,904 个全过。

续写:把一个 GLM 5.2 生成的编译器(commit 37216cf)交给两条分支。GLM 5.2 分支用 98 个 agent、深度 4,在自己保留的 LLVM 测试集上过 1,445/1,448,耗时 21.99 小时;DeepSeek V4 Flash 分支用 178 个 agent、深度 8,过 1,820/1,820,耗时 17.10 小时。两条分支都在反复更换 agent 之后,继续推进了同一个继承来的编译器,而不是从头重建。

再开发(MESA,恒星演化模拟的 Fortran 科学计算包):13 个模块、139,414 行 Fortran 重写成 89,946 行 Rust 工作区,33.22 小时,272 个 agent,10.64 美元,1,052 个测试全过、0 失败。EOS 查表和牛顿求解做到 bit-exact(逐位相同),另四个工作负载相对误差在 5.1e-15 到 3.1e-9 之间。相对 Fortran 中位提速 1.55 到 6.87 倍。

为什么重要

给做长周期 coding agent 的人一条不一样的路。默认直觉是堆上下文、拉长会话、上更复杂的记忆,但这会撞上下文上限、成本和漂移。Genesis 展示了另一种架构:agent 廉价且可替换,版本化的项目来承载连续性。44 美元搭出 25 万行编译器、跨模型交接(GLM 的编译器交给 DeepSeek 还能接着写)都是实打实的存在性证明。MESA 那条还带出 AI4Science 的味道:把老的 Fortran 科学代码自动搬到更快的 Rust,数值逐位对得上,这是真实的工作流收益。

要泼的冷水是,这是一个组织和架构层面的贡献,验证场景是编译器和科学代码重写,两者都有很强的自动测试预言(编译出来的 C 对不对、数值对不对能查)。没有这种明确过或不过判定的领域,迁移过去会更难。

局限与存疑

作者明说没有证明递归在因果上优于扁平或其它组织形式,递归只是实际跑的时候一直被用,但没有受控对照(第 5.2 节)。这不是达尔文式的进化,也不是开放式自我修改,更没有训练基座模型的参数,这里的进化是版本谱系,不是生物学或学习意义上的进化。归档没有记录每一次人工操作,所以他们无法证明整个跑的过程里零人工干预。论文也不声称完整的 C11 合规、生产可用、或者可重复的成功率,这个编译器是研究产物,不是 gcc。再就是前面说的强测试预言依赖:编译器正确性和数值一致性可查,结果能不能泛化到没有明确对错判定的任务,存疑。

术语

原文与代码

相关论文

全部论文解读