LEARN CLAUDE CODE
S11: Autonomous Agents — 自组织
问题:被动等待指令
到 S10 为止,Teammate 虽然是持久化的,但仍然是被动的——它只在收到消息时才行动。如果 Lead 忘了分配任务,或者 Lead 自己也在忙,Teammate 就一直 idle 着,白白浪费算力。
被动模式(S09-S10):
Teammate-A: [idle] .... [idle] .... [idle] .... 收到消息 [working] .... [idle] .... [idle]
Teammate-B: [idle] .... [idle] .... [idle] .... [idle] .... [idle] .... 收到消息 [working]
Lead: [分配A] .............. [忙别的] .............. [分配B] ................
问题:大量 idle 时间被浪费
Lead 成为瓶颈——所有任务都要经过 Lead 分配
解法:Idle Poll 循环
给每个 Teammate 加一个 idle poll 循环:当 Teammate 进入 idle 状态后,不是傻等消息,而是每隔 5 秒主动扫描任务看板(.tasks/ 目录),查找满足以下条件的任务:
status == "pending"——还没开始owner == null——没有被认领blockedBy.length == 0——没有前置依赖
如果找到这样的任务,Teammate 直接把 owner 字段写上自己的 ID,将 status 改为 in_progress,然后开始执行。无需等 Lead 分配。
自主模式(S11):
Teammate-A: [idle] → 扫描任务板 → 发现 task-003 → 认领 → [working on task-003] → [完成] → [idle] → 扫描 → ...
Teammate-B: [idle] → 扫描任务板 → 发现 task-004 → 认领 → [working on task-004] → ...
┌─────────────────────────────────┐
│ .tasks/ 任务看板 │
│ │
│ task-001: completed ✓ │
│ task-002: in_progress (agent-C) │
│ task-003: pending, no owner ←── A 认领 │
│ task-004: pending, no owner ←── B 认领 │
│ task-005: pending, blockedBy:[002] (等待) │
└─────────────────────────────────┘
Lead 不再是瓶颈——队友自己找活干
Idle Poll 的参数
| 参数 | 值 | 含义 |
|---|---|---|
| 轮询间隔 | 5 秒 | 每 5 秒扫描一次任务看板 |
| 超时 | 60 秒 | 连续 60 秒没找到新任务,Teammate 自动进入 shutdown |
| 认领方式 | 原子写文件 | 通过写 JSON 文件的 owner 字段来认领,利用文件系统的原子性避免冲突 |
Identity Re-injection:压缩后的身份恢复
自主代理面临一个独特的挑战:它们长时间运行,上下文会被反复压缩。压缩后,代理可能忘记自己是谁、自己的角色是什么。解决方案是 Identity Re-injection——每次压缩后,自动把代理的身份信息(名称、角色、能力描述)重新注入到上下文开头。
上下文满了
→
触发压缩
→
摘要替换旧消息
→
注入身份信息
→
代理继续工作
// 压缩后重新注入的身份信息
{
"role": "system",
"content": "你是 agent-frontend,专注于前端开发。\n你的能力:React、TypeScript、CSS。\n你的当前任务:task-003(实现登录页面)。\n你的团队:lead、agent-backend、agent-test。"
}
对比:被动 vs 自主
| 维度 | 被动 Teammate(S09-S10) | 自主 Agent(S11) |
|---|---|---|
| 任务分配 | Lead 手动分配 | 自己从看板认领 |
| idle 行为 | 等待消息 | 主动扫描任务 |
| Lead 角色 | 任务分配器(瓶颈) | 计划制定者(只管创建任务) |
| 扩展性 | 受限于 Lead 的分配速度 | 队友越多,并行度越高 |
| 压缩处理 | 丢失身份 | Identity Re-injection 恢复身份 |
对应官方工具
Agent Swarms 的自主任务认领机制
Claude Code 官方的 Agent Swarms 功能直接实现了 S11 描述的自组织模式。多个代理实例并行运行,通过共享的任务系统自动认领和执行任务。Lead 只需要创建任务计划,不需要手动分配每个任务给具体的代理。
关键洞察:S11 的核心转变是从"推模型"(Lead 推送任务给队友)到"拉模型"(队友主动拉取任务)。这和现实世界的敏捷开发一样——好的团队不需要经理分配每个任务,团队成员自己从看板上拿任务。Lead 的角色从"调度器"变成了"规划者"。