Github 原文:shareAI-lab/learn-claude-code
现在这个 Agents 团队有了规范的办公模式,但是“习惯”可不太好——大家虽然听话,但是都是“摆烂打工人”,干完了之后就开摆,只要不找我我就没事干摸鱼,这可不行!
问题
Agent 的队友能通信、能握手关机。但每个队友等 Lead 分配任务——如果任务看板上有 10 个未认领任务,Lead 得手动认命 10 次,这不能扩展。我们希望的是队友 Agent应该 有“主人翁”意识,自己看任务看板,发现没人做的任务就认领,做完再找下一个。
解决方案
在上一章的基础上,我们这次又加入了一个叫做 idle_poll 的东西,还增加了认领任务和自动认领等内容,具体如下:
-
idle_poll:队友Agent 处于空闲状态时每五秒轮询一次 inbox;
-
scan_unclained_tasks:扫描上方的 work 看板上的可以认领的任务;
-
自动认领:如果有可以认领的任务且空闲,就 claim,说这个活归我了。
这样,一个队友 Agent 就不是只会做东西,发东西这两件事情了,而是会做三件事:
| 行为 | 行为 | 退出条件 |
|---|---|---|
| WORK | inbox → LLM → 工具循环 | stop_reason != tool_use |
| IDLE | 每 5s 轮询 inbox + 任务板 | 60s 超时 |
| SHUTDOWN | 发 summary,退出 | — |
工作原理
空闲轮询
就是刚才说的那个每 5s 轮询一次的 idle_poll,之前队友 Agent 干完活就跑了,现在不是,他会每 5s 就去看一下有没有新的工作,不过,这里是Inbox 优先(可能包含 shutdown_request 等协议消息),任务板其次,也就是说,如果IDLE 阶段收到 shutdown_request 会直接回复并退出,不等到再去找新工作。
扫描任务看板
任务看板怎么找呢?如何判断什么任务是可以接管的?
AI 有三个条件,只要三个全部符合,那就是可以认领的:
-
任务状态必须是 pending;
-
任务 owner 字段为空;
-
任务的所有
blockedby依赖都已经完成。
这时候,我相信我们都已经有了一个思维模式:万一这些 Agent 同时认领同一个任务怎么办?这个是不是要上锁?
答对了!CC 在实际的使用中,就是要上锁,防止多个队友同时认领同一个任务。