循环工程:从提示AI到设计自动系统的范式转变

Codex与Claude Code的循环设计实战,循环工程让系统自己跑起来了。

本文介绍了循环工程的核心概念,即通过设计自动化系统替代人工逐轮提示AI编程助手。文章详细阐述了构建循环所需的五个核心组件:自动触发器、隔离工作间、技能说明书、插件连接线以及生成与验证分离的子智能体机制,并强调了状态记忆的重要性。同时分析了在代码审查、理解债务和思维惰性三个方面的挑战,指出循环工程是编程工作模式的演进方向。

你已经不是打字员了,你的新工作是“造个机器人替你去打字”

核心观点:以前,你写一句提示词,AI回一句代码,你像打字员一样一个一个敲命令。现在,你的任务不再是“不断问AI问题”,而是“设计一个系统,让这个系统自己去问AI问题”。这个系统能自己找活干、自己检查成果、自己记录进度,然后一直转圈干活直到你喊停。这叫“循环工程”。它就是未来你写代码的方式。

设计一个不停转圈的机器人,比写一百条提示词都管用

我们先从最熟悉的场景说起。

你以前是怎么用AI写代码的?你打开对话框,输入“帮我写一个登录页面”。AI吐出一堆代码。你看看,发现有bug,就再输入“密码框不对,改成圆角的”。AI再改。你再看,再输入“加一个记住我的复选框”。AI再加。你就像个监工,每走一步都喊一嗓子,AI才能走下一步。

这种玩法,你全程都得盯着屏幕。你说一句,它动一下。你停,它就傻站着。这个过程叫“单轮提示”。它很累人,而且你没法睡觉。因为AI不会自己发现问题,不会自己决定下一步做什么。

现在不一样了。有人开始换玩法了。比如Anthropic公司Claude Code团队的负责人就说:“我不再提示Claude了。我跑着一个循环,这个循环自己去提示Claude该干什么。我的工作就是写这个循环。”

什么叫“循环”?你想象一下,你有个小机器人。你给它一个目标,比如“把这个代码库里所有的拼写错误修好”。
然后你就不管了。
这个机器人自己会:
第一,扫描整个代码库找到拼写错误;
第二,自己调用AI去修改每个错误;
第三,自己跑测试检查改对了没有;
第四,自己记录哪些文件改过了;
第五,如果还有错误没修完,它就自己从头再来一遍。它一圈一圈地转,像洗衣机一样自动运行,直到目标完成为止。

你要干的活,就是把这个机器人设计出来。写一次设计,它替你干一千次活。这就是“循环工程”的核心:把你自己替换成你设计的一套系统。

一个靠谱的循环,只需要五块积木加一张便签纸

好,既然循环这么厉害,它到底由什么组成?你别怕,它不复杂。一个完整的循环,只需要五块积木,外加一个放便签的地方。目前市面上最强的两个编程AI工具,Claude Code和Codex,都已经把这五块积木配齐了。

第一块积木,叫“自动触发器”。这个触发器像你手机上的闹钟。你可以设置它每天早上八点自动启动一次。它会自己跑到你的代码仓库里,看看昨天有哪些测试失败了,有哪些新的bug被报上来了,有哪些人提交了新代码。它自己做完一圈“侦察”工作,然后把结果整理好放到你的收件箱里。你根本不用每天亲自去翻那些日志和报错单。Codex有个“Automations”标签页,你就在那里设个时间,写个简单的指令,比如“每天检查CI失败”,它就自动开干。Claude Code也能用“/loop”命令实现同样的效果,或者直接把任务丢给GitHub Actions,你合上电脑,它还在云上跑。

第二块积木,叫“隔离工作间”。这个特别重要。你想啊,如果一个循环里同时跑两个机器人,一个在改登录页的代码,另一个也在改登录页的代码,两个同时写同一个文件,那不乱套了吗?就像两个厨子同时抢一口锅炒菜,谁也炒不好。解决办法就是给每个机器人一个独立的“工作间”。Git的“worktree”就是干这个的。它像一个分身,每个分身有自己的文件夹,自己的分支,互相碰不着。Codex和Claude Code都支持这个。你只需要告诉系统“开两个隔离工作间”,两个机器人就能同时干活,不会互相踩脚。

第三块积木,叫“技能说明书”。这个是最能帮你省口水的。你想让AI帮你干活,总得告诉它你们项目的规矩吧?比如“变量名要用驼峰拼写法”“测试文件要放到tests文件夹下面”“提交代码前必须跑一遍lint检查”。这些规矩,你要是每次启动循环都重新跟AI讲一遍,那跟在对话框里一句一句提示有什么区别?正确的做法是:你把这些规矩写成一份“技能说明书”,存成一个叫SKILL.md的文件。每次循环启动,AI第一件事就是去读这份说明书。它看一眼就知道“哦,这个项目习惯这么干”。你只写一次,AI读一千遍。这就像你给新员工发了一本员工手册,而不是每天上班都给他从头讲一遍公司规定。

第四块积木,叫“插件和连接线”。一个只看得见自己文件夹的循环,是个小矮子。你得让它长高,让它能伸手摸到你日常用的那些工具。比如让它自己去查Jira或者Linear上的任务清单,让它自己连上数据库查数据,让它自己去Slack频道里发消息说“我修好了一个bug”。这就靠“连接线”。现在AI工具都支持一个叫MCP的通用接口,你给Claude Code写的连接线,基本也能直接给Codex用。你再把这些连接线和技能说明书打成一个包,就叫“插件”。队友装一次插件,就全都有了。

第五块积木,叫“检查和写代码分开”。这是整个循环里最聪明的一招。你想啊,让那个刚写完代码的AI自己去检查自己写的代码,这跟让学生自己批改自己的考卷一样,他能给低分吗?他肯定觉得自己全对。所以正确的做法是:找另一个AI来当评委。这个评委AI拿的指令不一样,有时候甚至用不同的AI模型。它不看面子,只挑毛病。Codex允许你自己定义这种“子智能体”,写个TOML文件就行。你可以分三种:一个负责翻代码找问题(探索型),一个负责动手写代码(实施型),一个负责对照你的要求挑刺(验证型)。Claude Code也一样。这个“写和检查分开”的机制,是你敢离开电脑去睡觉的唯一理由。因为评委AI会在你睡着的时候继续挑毛病,直到它觉得“行了,差不多了”,才叫你起床验收。

那第六样东西呢?是一张便签纸。就是最普通的Markdown文件,或者Linear任务板。它用来记录“当前这个活干到哪一步了”“哪些文件已经改过了”“还剩几个bug没修”。为什么需要这个?因为AI有个致命弱点:它的短期记忆跟金鱼一样。你这次跟它聊完关了对话框,下一次再打开,它把你上次说过的话忘得干干净净。但是你的代码仓库(repo)不会忘。所以你把进度记在那个Markdown文件里,下一次循环启动,AI第一件事就是去读那张便签纸,“哦,昨天修了3个bug,还剩2个没修,从第4个继续”。AI忘记没关系,便签纸记得。

把这五块积木和一张便签纸拼起来,一个能自己转圈的机器人就造好了。

你早上喝咖啡的时候,你的循环已经开始干活了

我给你画个具体的场景,你就明白这东西怎么运转的了。

假设你是个程序员,每天早上九点到公司,打开电脑。以前,你第一件事是打开邮件、打开Jira、打开GitHub,花半小时搞清楚“昨天有啥新bug”“昨晚测试崩没崩”。

现在你不用了。因为你昨晚已经设计好了一个循环。

今天早上九点,你的循环自动触发了。它的触发器闹钟响了。触发器按照你写好的指令,调用了一个叫“每日巡检”的技能说明书。这个技能说明书里写着:“第一步,去GitHub查昨晚的CI测试结果;第二步,去Jira查新报的bug;第三步,去Git log查昨天的代码提交记录;第四步,把所有发现写到一个叫daily_report.md的文件里。”

你的循环老老实实执行完这四步。然后它发现:昨晚有一个测试挂了,是一个用户登录超时的bug。好,它根据技能说明书里的另一条规则:“如果发现bug等级是‘重要’,就自动打开一个隔离工作间,派一个探索型子智能体去分析原因”。探索型子智能体进去了,翻了五分钟代码,回来报告:“我发现问题了,是session超时设置成了30秒,但服务器响应有时候要31秒”。

循环拿到这个报告,马上派实施型子智能体进去改代码。这个实施型子智能体先把“30秒”改成“60秒”,然后自己跑了一遍测试,发现能通过。接着,循环派验证型子智能体进去挑刺。验证型子智能体说:“你光改了一个数字,但你没检查其他地方的session设置是不是也超时太短”。好,实施型子智能体又进去把所有session配置都查了一遍,全部改到60秒。验证型子智能体再查一遍,嗯,没问题了。

这时候,循环通过连接线插件,自己打开了GitHub,提交了一个Pull Request。然后它自己打开Jira,把这个bug任务的状态从“待处理”改成“已修复,待审核”。最后它自己给Slack频道丢了一条消息:“张三,你昨天报的超时bug,我帮你修好了,PR链接在这”。

你九点端着咖啡坐下,打开Slack,看到这条消息。你点开PR,看了三十秒代码改动,点点头,点了“合并”。整个过程,你只花了三十秒。而你的循环替你干了一个小时的分析、修改、测试、提交、发通知的活。

这就是循环。你只需要设计一次,它每天早上自动跑一遍。你今天喝咖啡的功夫,它已经把今天最无聊的脏活干完了。

但循环不是把你从工作里删掉,它只是把你推到更高的位置上

听起来很爽对不对?但是有三件事,循环跑得越好,这三件事反而越难。

第一件,最终检查还是得你来。循环里的评委AI再认真,它也只是个AI。它会漏掉一些逻辑漏洞,它看不懂产品经理那种含糊的需求,它不知道“这个按钮用户体验好不好”。所以那个验收环节,永远得你亲自来。循环给你的是“我猜应该是这样了”,你得给它盖章“是的,就是这样”。你的脑子才是最后一道过滤器。

第二件,你自己不能变懒。循环越顺,代码越不是你亲手写的,你就越容易跟代码“断联”。有一天你突然发现,代码库里多了一千行代码,你完全不知道它们是怎么工作的。因为全是循环写的。这叫“理解债务”。你如果不逼着自己定期去读循环提交的那些PR,你很快就会变成只会按启动按钮的机器人操作员,而不是工程师。你的理解力会像不用的肌肉一样萎缩。

第三件,也是最危险的:舒服的姿势最容易让你翻车。当你发现循环自己跑得很好,你很容易就开始“没意见了”。循环说修好了,你就点同意。循环说开PR,你就点合并。你不再想“这里有没有更好的写法”,你只想快点把这个通知点掉。这就叫“自动驾驶陷阱”。设计循环这件事,本身是件好事,因为它替你省时间。但如果你用它来逃避思考,它就是最毒的毒药。同一个动作,你用脑子做,它是加速器;你不动脑子做,它是滑坡。

你现在做的不是提示词工程,你是在造一台能自己拐弯的车

所以回到开头那句话。你现在的身份变了。你不是那个在对话框里一字一句敲提示词的人。你是那个设计一套系统,让这套系统自己去敲提示词的人。

这两件事难度完全不一样。写一条好提示词,像教一个人怎么踩油门。设计一个循环,像造一辆能自己看路、自己拐弯、自己刹车、自己加油的自动驾驶汽车。前者你教一次,它跑一次。后者你设计一次,它一直跑,而且它跑得比你快。

但这辆车不会替你决定你要去哪。路线图还是你画。你要去哪个城市,走高速还是走国道,路上要不要停服务区,全是你定。循环只是帮你把方向盘和油门踏板接管过去。

你现在应该干什么?
第一,去翻翻你的Claude Code或者Codex,找到那五块积木在哪。
第二,把你项目里那些每天都要重复说的规矩,写进一个SKILL.md文件里。
第三,设一个最简单的触发器,比如每天下午五点自动跑一遍测试。

就这么三步。

别等你学会所有理论再动手。你先把你手上最烦、最重复、最不需要动脑子的那件活拎出来,试着把它的执行过程设计成一个循环。你看一次它自己跑完一圈,你就懂了。

循环不会让你失业。但是“不懂得设计循环”这件事,可能真会让你比隔壁工位那位早一年变成纯打字员。