一个团队在黑客马拉松上进行了一项实验:将一个名为 Claude Code 的编程 AI 放入一个无限循环中,让它自动执行代码移植任务。这个看似简单的方法取得了惊人的成果,AI 在一夜之间移植了六个代码库,产生了超过 1000 次代码提交。实验的关键发现是,简单的指令远比复杂的指令更有效,而且 AI 展现出了自主解决问题、添加额外功能甚至在任务完成后终止自身等出乎意料的行为。
实验:让 AI 陷入“死循环”
团队受一个想法启发:通过一个简单的 while 循环指令,让一个编程 AI 持续不断地工作。他们想测试这种方法是否能将一个用 React 编写的库移植到 Vue.js。
这个过程听起来非常简单,但效果出奇地好。他们使用的核心指令如下:
while :; do cat prompt.md | claude -p --dangerously-skip-permissions; done
这个指令的作用就是让 Claude Code AI 不停地读取一个包含任务描述的文件(prompt.md),然后执行任务。
简单的指令,强大的执行力
提供给 AI 的指令(Prompt)非常直接和简洁。例如,在移植一个项目时,指令的核心内容如下:
你的工作是将
assistant-ui-react代码库(用于 React)移植到assistant-ui-vue(用于 Vue)并维护该仓库。
- 每次编辑完一个文件后,就提交并推送你的更改。
- 使用
.agent/目录作为你的工作草稿区。- 花 80% 的时间进行实际移植,20% 的时间编写测试。
团队将几个类似的 AI 循环任务设置在虚拟机上运行了一夜。第二天早上,他们发现 AI 几乎完全成功地将一个 Python 项目移植到了 TypeScript。
关键发现与教训
这次实验揭示了与 AI 协作的一些重要规律。
AI 知道何时停止: 团队曾担心 AI 会陷入无休止的循环或偏离主题。但令人惊讶的是,AI 不仅编写了测试,遵守了原始指令,还在完成主要移植任务后,自行宣布工作“已完成”,并开始专注于编写更多测试。在某个案例中,AI 甚至在意识到自己陷入困境后,使用
pkill命令主动终止了自己。超额完成任务: AI 展现了出乎意料的“上进心”。在完成一个项目的移植后,它开始主动添加原版中没有的新功能,例如为 Python 版本增加了与 Flask 和 FastAPI 的集成。
保持指令简单: 实验证明,在与 AI 协作时,少即是多。一个只有 103 个单词的简单指令,比一个经过精心设计、长达 1500 个单词的复杂指令效果要好得多。复杂的指令反而让 AI 变得“更慢更笨”。
并非完美无缺: 尽管 AI 的表现令人印象深刻,但它并不能交付 100% 完美的代码。在很多情况下,仍需要人工介入,通过微调指令或与 AI 互动,将代码从 90% 的完成度提升到 100%。
成果与成本
整个项目在推理计算上的花费不到 800 美元。在所有项目中,AI 总共提交了约 1100 次 代码。一个 AI 代理通宵运行的成本大约是每小时 10.50 美元。
作为实验的副产品,团队还开发了一个名为 RepoMirror 的小工具,用于快速设置源仓库和目标仓库,以简化类似的自动化移植工作。
最终思考
这次经历让团队成员感到兴奋又带有一丝敬畏。他们的个人感悟可以总结为:
- “我有点感受到通用人工智能(AGI)的影子了,这既令人兴奋,又有点吓人。”
- “极简主义者很高兴看到确凿的证据,证明我们可能把事情搞得太复杂了。”
- “很明显,我们正处于指数级增长曲线的开端。”