用 Loop Engineering 开发Android App
最近loop engineering很火,它的本质是通过反复测试验证目的是否达到,来驱使AI一遍一遍替我们干活儿,直到干好为止。在网上找时,说理论的文章很多,但实际例子很少,今天我以开发一个android app为例,来说明一下如何实现 loop engineering,本次实验我们用cc+glm来做尝试,然后用码道来做复现。
首先,我们要让code agent能自测试,否则它没法loop,而android app比网页自测试要难多了,但好在现在凡事不懂都可以问code agent。在与agent多轮对话后,我按照它的建议,通过usb连接了一个真的android手机到电脑上,开启开发者选项模式,安装了android studio。然后让code agent测试一下是否能连接手机并进行操作和截图,这步ok后,等于给agent装上了眼睛,它可以自己编译apk,自己安装到手机,然后通过截图来看功能是否正常。

正所谓磨刀不误砍柴工,如果一个项目无法由AI进行自测试,那就没法自动loop。之前我也试过一个微信小程序开发,但由于小程序开发者工具还没有很好的mcp支持,没法自动化编译提交和预览测试,因此无法自动loop。web网页项目我也试过,那是比较容易自动化测试的,通过playwright就能模拟浏览器访问,可以自动loop。因此我们在开始一个项目前,要思考能否自动测试,如果不能,那就没法走loop这条路了。
环境准备好了后,我们只需要对agent说:请用loop engineering思维给我开发一个英语学习android app应用。它会自己规划好如何loop,这里我也吃过一次亏,由于loop模式上下文涨的特别快,很容易就爆了,我就爆了一次,导致得从头开始。因此我特意跟它说了:请把开发过程结果尽量都保存到skill或其它格式,防止意外终止后无法自动恢复。这样我们就能高枕无忧了,不管是上下文爆了,还是电脑死机重启了,咱们都可以快速恢复,避免白白浪费了一堆tokens。

我们可以看一下agent它自己设计的单个loop,里面包含了设计、开发、测试、修复、代码提交,这等于一个大循环里套了很多小循环,是不是很精妙 :)

我们看它在执行 L0 步骤时,在小循环里,能够自动发现编译错误、测试错误(因为中间我拔掉了手机),它能自动修复错误,依赖人类介入的会发出提醒(需要人类重新usb连接手机)。


我重新连接手机后,它会继续完成L0这个小loop,并产出阶段成果。然后沿着大循环去跑L1及后面的任务了。



在 loop过程中遭遇上下文爆炸问题,这里扯不清是agent问题,还是llm所属的maas问题,但不管怎样,由于我们让agent保存了loop进展,因此它可以很快自己从clear中恢复。

在loop过程中,我观察到一个细节,在一个小循环里,如果一个任务预计时间会比较长,agent会自己去并行执行其它任务。例如这次,它发起了题目数据llm生成任务,这个任务预计要比较长的时间。而数据细节与代码无关,只有数据结构与代码有关,数据结构已然是确定的,因此agent同步去写代码去了,真是个勤劳的孩子,一点都不想偷懒。

在loop过程中,我们不妨看一下agent的过程记录文件,它把loop过程进展记录到了 “LOOP_ENGINEER.md” 文件,从这个文件可以看到它把整个loop规划都写好了,每完成一部分就更新一些标记,此时如果中断了,或者换一个code agent,只要重新读一下这个文件,就知道怎么继续往下干了。



在L1 loop时,我们可以看到app各个子界面已经成型了,agent通过adb命令自己操作手机界面在测试单词练习,我们只需要看着手机画面在自动的不停的翻页和点击就行了。这种感觉太好了,有人替我们写代码,还有人替我们测试,当它发现测试不对时还会回头去改代码。



回顾这次loop engineering实践,我们可以发现code agent进步很快,屏蔽了很多harness, loop细节,我们只用自然语言跟它对话,它就能帮我们把这个loop工程搭建好,当它缺少一些工具或环境必须人类来帮它时(比如usb连接手机),它也会向我们发出求助。它对于人类的编程能力和工程能力要求越来越低了,我们只需要保持好奇心就行,有目标,告诉它,然后坐等实现!
- 点赞
- 收藏
- 关注作者
评论(0)