<!-- title: 一个循环干掉群蜂：Claude Code为何不做多智能体 -->
<!-- domain: programming -->
<!-- video: https://www.youtube.com/watch?v=RFKCzGlAU6Q -->

# 一个循环干掉群蜂：Claude Code凭什么不做多智能体

## 导语

2026 年，所有开发者的终端里几乎都住着一个 AI。但有一个产品把所有人逼到了要给它加"每周使用上限"——因为用户会 24 小时不间断地让 Claude Code 帮自己改代码，直到 Anthropic 不得不出手限流。Tom's Guide 报道这件事时，整个行业都在问同一个问题：**为什么是它？**

在 AI Engineer 大会上，PromptLayer 创始人 Jared Zoneraich 做了一场名为《How Claude Code Works》的演讲，把这台"印钞机"的引擎拆开来给人看。答案出乎所有人意料：**它没有任何花活。** 没有 multi-agent swarm（多智能体群蜂），没有 vector database（向量数据库），没有复杂的 state machine（状态机）。它的全部大脑，就是一条 `while(tool_call)` 循环——和计算机科学入门课上最经典的那个 while 循环，本质上是同一个东西。

这场演讲（以及 PromptLayer 团队配套的深度技术文章）给出了一个反直觉的结论：**当模型足够聪明时，最强大的设计不是把架构堆得更复杂，而是把它压到最简。** 这篇文章就来拆解，一条循环凭什么能重构整个代码库，以及它对每一个写代码的人意味着什么。

## 视频背景卡片

| 项目 | 内容 |
|------|------|
| 视频标题 | How Claude Code Works — Jared Zoneraich, PromptLayer |
| 频道 | AI Engineer（AI 工程师大会官方频道） |
| 时长 | 约 66 分钟 |
| 播放量 | 约 9.6 万（持续增长中） |
| 发布 | 2025 年（演讲及配套文章） |
| 核心主题 | 拆解 Claude Code 的极简单循环架构——为什么最强编程代理只用一个 while 循环 |

## 核心内容拆解

### 一、核心论点：极简即无敌，"群蜂"是一场过度工程

演讲开篇就甩出了 PromptLayer 团队逆向分析后得出的中心论点（thesis）：**一个简单、单线程的主循环，配合有纪律的工具和规划，就能交付"可控的自主性"。**

这之所以反直觉，是因为 2024 到 2025 年间，整个 AI 圈都在疯狂追逐"多智能体协作"。CrewAI、AutoGen、LangGraph 让你定义 planner、researcher、coder、reviewer 等一堆角色，让它们互相通信、投票、汇总，配上 vector store 做 RAG 检索，再叠一层 orchestration 图谱。听起来很高级，工程也很炫，但结果往往是：调试地狱、上下文爆炸、token 烧钱、agent 之间互相"幻觉传染"。

Claude Code 走了完全相反的路。Anthropic 团队内部的设计原则被 PromptLayer 从混淆过的源码里扒了出来，原话翻译过来就一句：**"永远先做最简单的那件事"（do the simple thing first）。** 搜索代码用 regex 而不是 embedding；长期记忆用 Markdown 文件而不是数据库；消息历史保持"扁平的一条列表"而不是分叉成多线程。**我的判断是：这其实是 Unix 哲学和"worse is better"在 AI 时代的重演。** 当年的 Linux 靠"够用就好"干掉了理论更优雅的微内核，Git 靠"内容寻址+三个对象"干掉了一堆企业级版本控制系统，Redis 靠单线程模型干掉了无数"更先进"的并发数据库。Claude Code 不过是把这条铁律又验证了一次：**模型已经够聪明，harness（运行外壳）就该足够笨、足够可调试。**

### 二、主循环 nO：一条 while 循环就是全部大脑

Claude Code 的心脏，是一个被 PromptLayer 标注为 `nO` 的主循环（这是逆向混淆源码时看到的符号名，属于内部代号，不是官方命名）。它的伪代码简单得令人发指：

```
while 模型响应中包含工具调用:
    执行这些工具
    把结果塞回模型
    重复
当模型吐出"纯文本、无工具调用"的响应时 → 循环结束，交还控制权给用户
```

Anthropic 官方的 Agent SDK 文档把这个机制讲得非常清楚：每一次"往返"叫一个 **turn（轮次）**——Claude 产出输出（含工具调用）→ SDK 执行工具 → 结果自动喂回 → Claude 再决策。这个过程**中间不会把控制权交还给你的代码**，它会一直转下去，直到某一次输出里没有任何工具调用，循环才自然终止。

这里有两个被刻意强加的约束，正是它们决定了成败。**第一，单线程。** 整个系统只有一条主线、一个扁平的消息列表，不存在多个 agent 人格抢夺控制权。**第二，扁平历史。** 不搞复杂的对话树/线程，所有消息就是一条直线 append 下去。Anthropic 明说，这是为了 **debuggability（可调试性）和 reliability（可靠性）**——当一条线到底时，出了问题你能从头到尾复盘每一步；而一旦允许多个 agent 分叉并发，状态空间立刻爆炸，谁也说不清"它为什么这么干"。

这给我一个很深的感触：**"可控"和"自主"在工程上常常是对立的，而 Claude Code 用一条循环把两者焊在了一起。** 它的自主性来自"循环可以转几十圈不停"，它的可控性来自"每一圈都是同一个可预测的模式"。

### 三、正则胜过向量库：工具设计哲学

这是整场演讲里最让开发者破防的一个细节。Claude Code 要在动辄几十万行的代码库里找东西，它怎么搜？答案是 **GrepTool——一个满血的正则搜索工具，能力对标 ripgrep。**

没错，**它不用 embedding，不用 vector database，不做 RAG。** PromptLayer 文章直接点出 Anthropic 的逻辑：Claude 对代码结构的理解已经深到能自己写出相当复杂的 regex 模式，所以根本不需要维护一套搜索索引。加上 View（默认一次读约 2000 行）、LS（列目录）、Glob（通配匹配）这一套读代码工具，就构成了 agent 的"眼睛"。

这个选择的含金量，做过 RAG 的人都懂。向量检索要切 chunk、算 embedding、建索引、还要处理"召回率调不准"的永恒难题——代码是高度结构化的文本，语义切分极易切坏函数边界。而 regex 是确定性的：搜到就是搜到，搜不到就是搜不到，零幻觉、零索引漂移、零维护成本。**我把它叫"模型够强，索引就让位给算法"。** 当底座模型能把"我想找所有处理用户输入的地方"翻译成精准的正则，复杂的检索基建就成了多余的负担。这是"先做最简单的事"原则在工具层最漂亮的体现。

代码修改侧同样克制：Edit 做外科手术式的 patch/diff，Write/Replace 处理整文件；Bash 工具提供持久的 shell 会话，但自带**风险分级**——危险命令要确认，还会主动过滤注入攻击（屏蔽反引号和 `$()` 这类命令注入构造）。每个工具都遵循同一个接口模式：**JSON 进、纯文本出**，统一、可预测、可审计。

### 四、92% 才压缩：上下文工程才是真战场

如果说前三点讲的是"为什么简单能赢"，这一讲的是"简单能撑多久"。任何 LLM 都有一个硬天花板：context window（上下文窗口）。一个能跑几十轮的 agent，消息历史会迅速膨胀，迟早把窗口塞爆。Claude Code 的解法是一个被标注为 `wU2` 的**压缩器（Compressor）**。

它的触发条件极其精准：**当上下文使用量达到约 92% 时自动启动。** 它会把当前对话摘要化，把重要信息转移到长期存储里。而这个"长期存储"是什么？**一个 Markdown 文件**——也就是大家熟悉的 `CLAUDE.md`。

这一段是全场技术含量最高的部分，它揭示了一个 2026 年的新兴学科：**context engineering（上下文工程）**。PromptLayer 文章点明，agentic engineering 的真正难题不在"写好 prompt"，而在"管理好这个窗口里到底放了什么"。压缩器决定该忘掉什么、该记住什么；子代理隔离决定了"哪些活可以放到独立窗口里干、不污染主上下文"；TodoWrite 的提醒决定了"长任务里模型会不会失忆"。**这些全是在跟一个固定大小的"工作内存"做斗争，跟操作系统的内存管理本质同构。**

我的延伸分析：这其实给所有想自己搭 agent 的人指了明路。与其纠结"用什么模型"，不如先想清楚三件事——你的 context 什么时候会满、满了压缩到哪、压缩后怎么不丢关键约束。Anthropic 的回答是"92% 触发 + Markdown 落盘"，简单粗暴，但因为它是一个**确定性的、可观测的**机制，所以可靠。**在 agent 世界里，可靠性永远比优雅更值钱。**

### 五、h2A 队列：边干边改，不打断

单纯一个死循环有个致命问题：它是个**批处理器**。你按下回车，它闷头干到结束，中途你想插一句话都插不进去——而真实开发中，你恰恰最需要"等一下，再加个约束"这种实时纠偏。

Claude Code 用一个被标注为 `h2A` 的**异步双缓冲队列（async dual-buffer queue）**解决了这个矛盾。它的核心能力是 **pause/resume（暂停/恢复）** 和 **mid-task interjection（任务中途插话）**。当 Claude 正在重构某个模块，你突然意识到要换个方向，不用停掉重来——你把新指令塞进队列，Claude 会在下一个 turn 的衔接点平滑地吸收它，调整计划继续干。

h2A 和 nO 主循环配合，把 Claude Code 从"批处理脚本"变成了"真正的结对编程伙伴"。你体验到的不是"等一个巨大的 completion"，而是动态的来回——可以引导、纠正、增强。**我的观点是，这个组件常被外界低估，但它才是 Claude Code"好用"的真正秘密。** 智能决定它能干多复杂的活，交互模型决定你用得爽不爽。一个不能被打断的 agent，再聪明也只是个黑盒；一个能边干边聊的 agent，才是生产力工具。

### 六、TodoWrite + 单分支子代理：受控的并行

那复杂任务怎么办？演讲讲了两个机制，它们共同回答了"既要简单、又要能处理大工程"的矛盾。

第一个是 **TodoWrite**。面对多步任务，Claude 的第一动作往往是写一份结构化的 JSON 任务清单——带 ID、内容、状态、优先级。这份清单不只是内部记账，UI 会把它渲染成可交互的勾选框，让你**看见 Claude 的计划**。更关键的是，系统会**在每次工具调用后，把当前 Todo 状态作为系统消息重新注入**，充当"提醒"。这专门对付长任务里"模型失忆、忘了原始目标"的顽疾。它只支持整表替换、不支持局部更新——又一个"宁可笨、不可乱"的取舍。还有 `/think` 模式，强制先出计划再动手。

第二个是**受控的子代理**，内部代号 `I2A` / Task Agent，通过 `dispatch_agent` 工具调用。它解决"需要探索多个方向"的需求——比如满代码库广搜，或并行试几种方案。但有三道紧箍咒：**主循环同一时刻最多挂一个子代理分支**；**子代理不能再派生子代理**（防止递归爆炸）；子代理的产出**作为普通工具结果喂回主循环**，从而保持整体的单线程简洁。

这套设计的精妙之处在于：它**表面上允许并行，本质上仍是单线程。** 并行被封装进了"一次工具调用"里，主循环的状态机纹丝不乱。对比那些让 N 个 agent 自由组网、结果还要开会投票的框架，你会立刻理解为什么 Claude Code 能稳定跑通整库重构——**它把复杂性关进了笼子，而不是放任它在系统里蔓延。**

### 七、Diff 优先 + 权限分层：安全靠约束而非自律

最后是安全和透明。Claude Code 的写操作——文件修改、有风险的 Bash、外部工具（MCP/web）——全都走**权限系统**，需要显式的 allow/deny 决策，可配白名单或"始终允许"。命令不仅按风险分级，还会在工具输出后**追加安全提示**，同时提醒模型和用户。

而它对开发者工作流的改造，核心是 **diffs-first（差异优先）**。所有改动以彩色 diff 呈现，鼓励最小改动，便于 review 和 revert。这套机制天然催生**测试驱动**的闭环：Claude 跑测试 → 看失败 → 迭代修复，每一步改动都透明、可回滚。

这里我想强调一个被忽视的点：**Claude Code 的安全模型是"约束驱动"的，而不是"信任驱动"的。** 它不假设模型永远正确，而是假设"模型迟早会干蠢事"，于是用权限、确认、diff 审查把每一道闸都做成手动可拦截。这跟前面所有取舍一脉相承——**相信约束，不要相信智能。** 一个允许模型全自动、无确认地改代码库的 agent，不是产品，是事故。

## 知识结构图

```mermaid
flowchart TD
    U[用户输入] --> Q["h2A 异步双缓冲队列<br/>可中途打断 / 注入指令"]
    Q --> L{"主循环 nO<br/>while 存在工具调用"}
    L -->|模型决策| T[调用工具 JSON 进 / 文本出]
    T --> TR[沙盒执行 + 权限校验 + 风险分级]
    TR -->|结果回灌| L
    L -->|无工具调用| R[返回最终文本，交还控制权]

    L -->|上下文 ~92%| C["压缩器 wU2<br/>摘要写入 CLAUDE.md"]
    C --> L

    T -.派生.-> S["子代理 I2A<br/>单分支 · 不可递归"]
    S -.结果作为工具输出.-> L

    L -->|多步任务| TODO["TodoWrite 清单<br/>系统每轮注入提醒"]
    TODO --> L

    T -->|读写代码| TOOLS["View/LS/Glob/Grep(regex)<br/>Edit/Write · Bash · WebFetch"]
    TOOLS --> TR

    style L fill:#fff3cd,stroke:#d39e00,stroke-width:2px
    style C fill:#d1ecf1,stroke:#0c5460
    style S fill:#d4edda,stroke:#155724
```

## 实战启示

**第一，重新理解你手里的 AI 编程工具。** 当你知道 Claude Code 的本质是"一条循环 + regex + Markdown 记忆"，你使用它的方式就该升级：它不是"问问题的人形搜索引擎"，而是一个需要你**喂好上下文**的执行体。所以把项目约定、技术栈、禁忌写进 `CLAUDE.md`——那是它的长期记忆，比反复在对话里说一遍高效得多。

**第二，规划是你的杠杆。** 既然 Claude 靠 TodoWrite 和 `/think` 来保持长任务的连贯，那你在下达复杂指令时，**先让它出计划、你 review、再放它跑**，远比一句"把这个模块重构了"然后祈祷要靠谱。把大任务拆成可验证的小步，每步都能跑测试、看 diff——这正是它设计上鼓励的闭环。

**第三，自己搭 agent 时，别迷信"多智能体"。** 这场演讲给工程界最大的方法论礼物，是一个可复用的判断标准：**当一个设计能用"一条循环 + 几个好工具"解决，就不要上 swarm、不要上 vector DB、不要上状态机图谱。** 先跑通最简单的版本，把可调试性做到极致，再按需加复杂度。绝大多数"非得上 RAG"的场景，一个精准的 grep 就够了。

**第四，把"上下文"当成稀缺资源来经营。** context engineering 是 2026 年每个工程师都该补的课：明确你的 agent 在什么时候会撑爆窗口、压缩策略是什么、子任务的上下文是否隔离。这三件事想清楚，你的 agent 就比 90% 的原型更接近能用。

**第五，安全靠约束。** 无论你用哪个 agent，都默认开启 diff 审查、命令确认、写权限白名单。永远不要给一个 LLM"全自动改生产代码"的权限——不是因为它不够聪明，而是因为约束比信任便宜得多。

## 延伸学习路径

1. **Anthropic 官方《How the agent loop works》文档**（code.claude.com/docs/en/agent-sdk/agent-loop）——权威的一手资料，逐字段解释 turn、message、tool execution、context window 与 automatic compaction，是理解 agent 内核的最佳起点。
2. **PromptLayer 博客《Claude Code: Behind-the-scenes of the master agent loop》**（blog.promptlayer.com）——本场演讲配套的深度技术文章，含逆向源码得出的内部代号（nO / h2A / wU2）与完整架构图。
3. **Anthropic《Building Effective Agents》工程文章**——区分 workflow 与 agent，论证"为什么简单的工具组合往往胜过复杂编排"，与本场论点互为印证。
4. **《Inside the Agent Harness: How Codex and Claude Code Actually Work》**（Medium）——横向对比 OpenAI Codex 与 Claude Code 两条技术路线的 harness 设计，适合想横向理解整个赛道的读者。
5. **ripgrep 官方文档与"Code Search at Scale"相关实践**——理解为什么"模型 + regex"能在巨型代码库上跑赢向量检索，顺带掌握 GrepTool 背后的真正引擎。

## 一句话总结

**Claude Code 用一条 CS101 级别的 while 循环证明了一件事——当模型足够强，最强大的 agent 不是把架构堆到最复杂，而是把它压到最简、可调试、可约束。**

## 参考来源

1. [How Claude Code Works — Jared Zoneraich, PromptLayer（AI Engineer 大会演讲）](https://www.youtube.com/watch?v=RFKCzGlAU6Q) — 本次解读的核心视频
2. [Claude Code: Behind-the-scenes of the master agent loop — PromptLayer Blog](https://blog.promptlayer.com/claude-code-behind-the-scenes-of-the-master-agent-loop/) — 演讲作者团队配套的深度技术文章（含 nO / h2A / wU2 等逆向代号）
3. [How the agent loop works — Anthropic Claude Code 官方文档](https://code.claude.com/docs/en/agent-sdk/agent-loop) — 一手权威：turn、message、tool execution、context window、automatic compaction
4. [Inside Claude Code: The architecture behind tools, memory, hooks, and MCP — Penligent](https://www.penligent.ai/hackinglabs/inside-claude-code-the-architecture-behind-tools-memory-hooks-and-mcp/) — 工具、记忆、hooks、MCP 的架构补充
5. [Tom's Guide：Anthropic 因用户 24/7 使用而加入每周限制的相关报道](https://www.tomsguide.com/) — "为什么是它"的行业背景佐证
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
## 完成摘要（What was done）

**关键取舍：**
- 字幕 API 因 YouTube IP 限制失败（预期内），按规则基于"步骤2-3"的元数据+技术资料完成分析，所有技术细节均来自 Anthropic 官方文档与演讲作者本人博客，可溯源
- 内部代号（nO/h2A/wU2）明确标注为"逆向混淆源码所得，非官方命名"，保证严谨

## 下一步计划

1. **若需进一步深挖**：可专门做一期"context engineering"专题（92% 压缩、子代理上下文隔离、CLAUDE.md 记忆机制），这是 2026 年独立的新方法论话题
2. **若需横向对比**：可拆解 Codex vs Claude Code 两条 agent harness 路线的差异
3. **Round 13 预告**：下一轮为 **business（商业与创业）** 分类，可从 Stripe/Costco/Shein 等已覆盖方向之外的赛道切入（如 AI 公司的商业模式、新型订阅经济等）

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
