双层架构
原文 §2 · 连续性与吞吐量的权衡每条事件都交给同一 Session,上下文最连续,但受单个 ReAct Loop 串行速度限制,耗时且细节混杂;每条事件都新开会话,吞吐最高,但缺少全局上下文、结果割裂,多个会话各自回复又造成混乱。解法是把“维护全局连续性”与“高并发执行”拆到两层。
Router 层
常驻的全局路由层,承接所有入口的人类交互,是所有跨任务信息与决策的汇总点,充当全局序点、协调点与记忆。为避免成为性能瓶颈,它不直接执行具体任务、甚至不配备 Bash 工具。与常见 Agent Team 不同,它只处理任务之间的高层关联与分派,不介入单任务内部拆解;任务常常没有想象中复杂,较轻量的模型即可兼顾速度与效果。
批处理(Batching)
上一轮推理期间到达的事件会积压,在下一轮一并注入。Router 每步是长输入、短输出,把多条 Trigger 合并进一次调用,Prefill 阶段并行计算,单次耗时增长远慢于 batch 大小。因此在一定范围内,积压越多,单个决定分摊的推理时间越低;上限取决于上下文长度与模型一轮能准确处理多少条事件。
Worker 层
上下文彼此隔离、挂载完整执行工具、在独立上下文中专注完成单一任务,通常配置能力最强的模型。它不直接与人类交互,推理与工具调用不输出到外部信道,而是向 Router 汇报状态、由 Router 统一回复,从而在保障并发与质量的同时避免多会话各自回复的混乱。
Worker 之间
同层 Worker 通常不需要直接通信。冲突多出现在同一个 Pull Request 等共享工作环境,只要它们订阅了对应 Thread,就会收到相同的事件通知,有机会自行发现并解决;少数跨任务协同由 Router 中转。每个 Worker 内部还可以再建 Subagent 或本身就是一个 Agent Team,对上层透明。
Session 应当是系统的实现细节,而不应是用户的认知负担。 — 原文 2. 双层架构