§04六个零件:搭一个Loop需要什么

Six Parts: What It Takes to Build a Loop

Addy的原话是「A loop needs five things and then one place to remember stuff」,五样东西,再加一个记东西的地方,我把它合成六个零件。

零件和动作对得上:发现靠skill,交付靠worktree,验证靠子agent,持久化靠memory,调度靠automation。

零件一:Automations(自动化/调度)

Automation是那个让loop自己动起来的东西。它挂在一个时间表或者触发器上,到点了就自动发现、自动分诊,不用人在旁边盯着按。它排第一,因为它是「循环」这个词的根。

原话:Automations are what make a loop an actual loop and not just one run you did once.

自动化,才是让循环成为真正循环的东西,而不只是你跑过一次的那一次。

automation里该触发的是一个skill,不是一整面墙的指令。你贴一大段prompt进定时任务,没人会再去更新它;触发一个有名字的skill,逻辑变了改skill就行。

调度的形态不止一种:有的跑在你自己机器上,机器得开着;有的跑在云端,机器关了也照转。怎么选在§06。

零件二:Worktrees(git worktree隔离)

Worktree是git自带的机制,让你在同一个仓库里开出多个互相独立的工作目录。每个agent在自己的worktree里改代码,互不干扰。loop一旦同时跑多个agent,文件写冲突就是迟早的事。

原话:Two agents writing the same file is the exact same headache as two engineers committing to the same lines and nobody talked to each other first.

两个agent同时写一个文件,跟两个工程师事先谁也没打招呼、就往同几行代码上提交,是一模一样的头疼。

这个零件的价值随并行规模放大。一个loop同时只跑一个agent,worktree可有可无;你想让它早上同时修五个bug,五个agent各改各的,没有隔离就是五份改动搅在一起,最后谁也不知道哪行是谁写的。

零件三:Skills(用SKILL.md复用知识)

Skill是把项目知识固化成一个文件(SKILL.md),让agent每次都能直接取用,不必每一圈都重新推一遍上下文。

不固化,你就得在每次运行里重新告诉agent这个项目是怎么回事、规矩是什么、坑在哪。这种反复交代的成本,Addy有一篇文章专门讲,叫意图债(intent debt)。把一次想清楚的东西写下来,之后每圈都省掉重新推导。

零件四:Plugins & Connectors(MCP连接器)

Connector是让loop接到外部世界的接口。issue tracker、数据库、staging环境的API、Slack,都靠它连进来,技术底座是MCP(Model Context Protocol)。

原话:A loop that can only see the filesystem is a tiny loop.

一个只能看见文件系统的循环,是个很小的循环。

Codex和Claude Code都走MCP,同一个MCP服务器两边都能挂。持久化那一步里,connector自动开PR、更新ticket,就是这个零件在收尾。只接文件系统,它能看的就是几个目录;接上issue tracker,它知道还有哪些活没干;接上Slack,它能把结果告诉你。每多接一个外部系统,loop能自主完成的链条就长一截。

零件五:Sub-agents(生成者和评判者分开)

子agent的关键用法,是把写东西的和评判东西的拆成两个。一个agent负责生成,另一个指令不同、有时模型也不同的agent负责挑刺。同一个agent既当运动员又当裁判,裁判会偏心。

原话:The model that wrote the code is way too nice grading its own homework. A second agent with different instructions and sometimes a different model catches the stuff the first one talked itself into.

写代码的那个模型,给自己的作业打分时太客气了。换一个指令不同、有时模型也不同的agent,能抓住第一个自我说服放过去的东西。

Anthropic Labs团队的Prithvi Rajasekaran在做长时间运行的应用时也得出过同一个结论:把一个独立的评判者调得足够挑剔,比让生成者对自己的作品狠下心来,容易得多(§05)。

零件六:Memory(持久化状态)

第六个零件,Addy在正文里把它叫the memory,他的表格里这一行写作State。它是loop活在单次对话之外的记忆,一份markdown文件,或者一块Linear看板。agent的上下文窗口一清空,它就什么都不记得了,loop要想今天接着昨天跑,记忆就得落到磁盘上。

原话:the model forgets everything between runs so the memory has to be on disk and not in the context. The agent forgets, the repo doesnt.

模型在两次运行之间什么都会忘,所以记忆得待在磁盘上,不能待在上下文里。agent会忘,仓库不会。

上下文是agent这一轮能看到的东西,会随着窗口刷新被冲掉。memory是写在磁盘上的东西,跨轮、跨天都还在,需要时再读回来。

六零件速查表

零件是什么对应动作一句话原话
Automations挂在时间表、触发器上自动调度make a loop an actual loop
跑
Worktrees隔离并行agent的工作目录交付same headache as two engineers
Skills固化项目知识、还意图债发现fire $skill-name instead of a wall of
instructions
ConnectorsMCP接外部系统持久化、发only see the filesystem is a tiny loop
现
Sub-agents生成者与评判者分离验证too nice grading its own homework
Memory磁盘上的持久状态持久化the agent forgets, the repo doesnt