Core 运行时:actor 式的消息层
本章讲 AutoGen 最底下那块:消息怎么在 agent 之间流动。上层所有 agent 和团队最终都靠它收发消息。先建直觉,再看真实实现。
1. 它要解决的小问题
多个 agent 要协作,就得能互相"说话"。但"说话"有两种截然不同的需求:
- 点对点、要回话: 我想问某个特定 agent 一个问题,等它把答案返回给我(像函数调用)。
- 广播、不要回话: 我想把一条消息发到一个"频道",所有关心这个频道的 agent 都收到,但我不等任何人回复(像发通知)。
Core 把这两件事分别做成 send_message 和 publish_message,这是理解整个框架的关键分叉。
2. 直觉:actor 模型 + 一个事件循环
AutoGen Core 是经典的 actor 模型(每个 actor 有地址、有自己的状态、靠收消息驱动行为)的一个 asyncio 实现。
三个核心概念,用"公司内部通讯"类比:
| 概念 | 类比 | 是什么 |
|---|---|---|
AgentId | 员工工号(部门+座位号) | (type, key) 二元组,唯一标识一个 agent 实例 |
TopicId | 一个广播频道 | 发布消息的目标命名空间 |
Subscription | "谁订阅了哪个频道" | 把一个 topic 映射到应该收到它的 agent |
关键设计:agent 不是一直存在的对象,而是按需创建的。 你注册的是一个"工厂函数"(register_factory),运行时第一次需要某个 AgentId 时才调用工厂把它造出来,之后缓存。这让"