一个AI机器人,连续28天自己写自己的代码,从200行长到了3万行
你敢信?
一个 AI 编程助手,从 200 行代码起步,没人给它写需求,没人给它排优先级。它自己读自己的源码,自己找 bug,自己加功能,自己写测试。
28 天后:3万行 Rust 代码,1346 个测试用例,14 个核心模块。
项目叫 yoyo-evolve,GitHub 上完全开源,每一条 commit 都是机器人自己提交的。
先看它怎么进化的
它的进化不是乱来的,每次都遵循一个严格的循环:
第1步:自我评估(assessment)
读一遍自己的全部源码,像一个代码审查员一样,找出当前最值得改进的地方。可能是一个 bug,可能是一个缺失的功能,也可能是一个性能瓶颈。
第2步:制定计划(session plan)
根据评估结果,列出本轮要做的事情。跟人类开发者写 TODO list 没区别。
第3步:动手改代码
实现改进。写新功能、修 bug、重构代码,所有人类程序员会做的事它都做。
第4步:自测自纠
跑测试。不过就修,修完再跑。代码格式不符合规范就自动格式化。
第5步:记录经验(learnings)
把本轮学到了什么记下来,下次不会再犯同样的错。
第6步:总结收尾(session wrap-up)
收尾,提交代码,准备下一轮。
每隔几小时重复一次。一天可能循环好几次。28 天,从不间断。
28天,它学会了什么?
粗略翻了一下它的 commit 记录,几个比较有代表性的进化节点:
早期(Day 1-7):打地基
把 200 行的 CLI demo 扩展成完整框架。加了文件读写、shell 命令执行、多轮对话这些基础能力。就像一个刚入行的程序员,先学会写 CRUD。
中期(Day 8-20):长能力
- 学会了上下文管理:对话太长就自动压缩摘要,防止撑爆 token 限制
- 加了 11 个大模型的支持:Anthropic、OpenAI、Google、DeepSeek 等随意切换
- 实现了子代理(Subagent):可以把复杂任务拆分给”助手”并行处理
- 加了 MCP 协议支持:可以调用外部工具
- 做了安全沙箱:限制危险命令执行
近期(Day 21-28):精细化
- 遇到主 API 挂了?自动切换备用模型继续工作
- 终端响铃提醒:长时间运算完成后通知开发者
- 流式输出、语法高亮、代码折叠这些体验优化
- 甚至开始”社交学习”——从社区和其他项目中汲取灵感
最有意思的三个设计
1. 测试即护栏
这是整个项目最核心的设计。AI 改完代码必须跑通全部测试才能提交。
为什么这很重要?因为 AI 生成代码有一个致命问题:它可能会”好心办坏事”——修了一个 bug 引入三个新 bug。
yoyo-evolve 用测试套件当安全网。每次改动必须通过验证,确保代码只变好不变坏。1346 个测试用例,就是这个项目的进化护栏。
2. 结构化记忆
它不是每次都从头开始思考。它维护了几个关键文件:
- learnings:跨 session 的经验教训
- journal:每次改动的思考过程
- assessment:当前状态评估
这跟人类程序员的习惯一模一样——好记性不如烂笔头。
3. 预防性上下文压缩
这个设计很巧妙。AI 对话有个硬限制:上下文窗口大小。对话越长,越可能因为超限而崩溃。
大多数方案是”用完了再压缩”。yoyo-evolve 的做法是:到 70% 就开始预防性压缩,不等爆了再救。
就像你在高速公路上不会等油箱见底才找加油站。
这意味着什么?
yoyo-evolve 不只是一个编程工具,它展示了一种新的软件开发范式:
AI 驱动的自主进化。
传统的软件迭代是:产品经理写需求 → 开发者写代码 → 测试验证 → 发布。周期按周算。
yoyo-evolve 的迭代是:AI 自己发现问题 → 自己设计方案 → 自己实现 → 自己验证。周期按小时算。
当然,它现在还做不到完全自主。它的进化方向受限于训练数据和系统提示。但它证明了一件事:
AI 可以成为自己最好的使用者。
谁最了解一个代码库的缺陷?每天跟它打交道的人。如果这个”人”是 AI 本身,它可以 24 小时不间断地审视、改进、进化。
最后
这个项目还有一个细节让我印象深刻:所有 commit 的作者都是 yoyo-evolve[bot],没有一条是人工提交的。
28 天前的第一条 commit 是一个 200 行的 CLI demo。28 天后的今天,它是一个功能完整的 coding agent,55 个命令,支持 11 个模型,1346 个测试。
没有 roadmap,没有 sprint,没有站会。只有代码、测试、和不断的进化。
这可能就是未来软件开发的样子。
项目地址:https://github.com/yologdev/yoyo-evolve
看完觉得有意思的,欢迎转发给你的程序员朋友。
评论区