Keep the repository root focused on README while moving the remaining planning and swarm test documents under docs/ and indexing them there. Constraint: The user explicitly requested that documents should live under docs/. Rejected: Leaving older root-level Markdown files in place | it keeps the homepage cluttered and splits the documentation surface. Confidence: high Scope-risk: narrow Directive: Keep future ordinary documentation under docs/ unless it is a root entrypoint such as README.md. Tested: git diff --cached --check; find . -maxdepth 1 -type f -name '*.md' shows only README.md. Not-tested: No runtime tests rerun because this is a documentation path-only move. Co-authored-by: OmX <omx@oh-my-codex.dev>
7.9 KiB
7.9 KiB
基于掘金《Agent 蜂群模式(Swarm)》的测试标准
依据文章:Agent 蜂群模式(Swarm)
本文档把该文章中的蜂群定义、核心特征、执行流程、通信机制、系统组件和监控指标,转换成 swarm-minimal 的测试标准。后续判断“像不像蜂群”,以本文档为主;LangGraph Swarm 只作为 handoff 实现参考,不作为蜂群标准本身。
1. 文章核心定义
文章对 Agent 蜂群模式的核心定义可以归纳为:
每个 Agent 仅依据局部环境信息和简单规则进行决策,
通过信息素、消息广播或状态共享等方式间接通信,
最终在整体层面涌现出复杂、高效的智能行为。
因此,测试不能只看“多个模型被调用”或“最终有一个结果”。必须证明:
- Agent 有局部感知。
- Agent 有自主决策。
- Agent 通过共享环境间接协作。
- 单个 Agent 失败不破坏整体结果。
- 多个局部行为能产生整体收敛。
- 系统能观测收敛过程和关键指标。
2. 文章核心特征到测试项
| 编号 | 文章特征 | 测试标准 | 当前状态 |
|---|---|---|---|
| J-SW-01 | 去中心化 | Task Orchestrator 只能注入初始任务,不能逐步命令每个 Agent 做什么;Agent 必须通过任务池和共享环境自主 claim/decide。 | 部分满足:当前 SwarmCoordinator 仍是中心循环,需继续弱化。 |
| J-SW-02 | 自组织 | Agent 根据任务池、信息素、共享状态自主形成执行顺序,而不是固定链路。 | 部分满足:已有 pheromone claim 测试,但 live 路径仍偏顺序。 |
| J-SW-03 | 涌现性 | 多个局部弱信号聚合后,群体结果强于任一单个局部判断。 | 已有确定性测试 B02/C02。 |
| J-SW-04 | 鲁棒性 | 单个 Agent 出错后,其他 Agent 继续完成,整体仍可收敛。 | 已有确定性测试 B01/C01。 |
| J-SW-05 | 可扩展性 | Agent 数量应能在 3-7 个范围内增减,任务池和环境结构不变。 | 待补规模测试。 |
| J-SW-06 | 隐式协作 | Agent 不通过中央指令直接串联,而通过信息素、共享状态、消息流协作。 | 部分满足:PostgreSQL/Redis/Blob live 闭环已有,隐式协作测试还需加强。 |
3. 文章执行流程到测试项
文章给出的执行循环是:
① 初始化 -> ② 感知 -> ③ 决策 -> ④ 交互与更新 -> ⑤ 收敛判断
未收敛则继续迭代,已收敛则输出结果。
对应测试标准:
| 阶段 | 测试标准 | 当前状态 |
|---|---|---|
| 初始化 | 创建 N 个 Agent、初始任务池、信息素地图、共享状态和终止条件。 | 已满足基础形态。 |
| 感知 | 每个 Agent 读取局部环境:可用任务、信息素、共享状态、上一轮摘要。 | 部分满足:代码有 shared_state 传入,但缺少显式 perceive() 抽象。 |
| 决策 | Agent 基于感知结果选择任务、候选答案或 handoff 对象。 | 部分满足:claim 基于 capability/pheromone;缺少策略对象。 |
| 交互更新 | Agent 完成动作后更新任务、信息素、共享状态、事件流。 | 已在 PG/Redis/Blob live 路径中实现基础闭环。 |
| 收敛判断 | 不能只是“取最高分”;应有阈值、margin、多轮或任务完成率判定。 | 已新增本地多轮共识收敛;尚未接入 Azure live 主路径。 |
4. 三种通信机制到测试项
文章列出的通信机制:
- 信息素通信(Stigmergy)
- 广播通信(Broadcast)
- 交接通信(Handoff)
对应标准:
| 机制 | 合格标准 | 当前状态 |
|---|---|---|
| 信息素通信 | Agent 修改环境分数,后续 Agent 感知并调整选择概率或 claim 顺序。 | 已有 B03/C03 确定性测试;Redis sorted set 已承担 live score。 |
| 广播通信 | Agent 的状态变化进入消息流,其他 Agent 可观察。 | Redis Stream 记录事件,但尚未做“其他 Agent 消费广播后改变决策”的测试。 |
| 交接通信 | Agent A 把上下文交给 Agent B,B 基于 payload 继续执行。 | 已有 B04 测试;但按文章它只是蜂群通信方式之一,不是唯一核心。 |
5. 系统组件到测试项
文章架构组件:
| 组件 | 文章职责 | 当前实现 / 缺口 |
|---|---|---|
| Agent Pool | 管理所有 Agent,每个 Agent 有状态、行为规则和通信接口。 | 目前是 Agent 列表;缺少状态生命周期和利用率统计。 |
| Environment | 任务池、信息素地图、共享状态、约束条件。 | InMemorySwarmStore 和 PostgresRedisBlobSwarmStore 已有四资源模型。 |
| Message Bus / Shared Memory | 间接通信。 | Redis Stream + PG shared_state 已有基础;消费侧测试不足。 |
| Monitor / Logger | 状态监控、收敛指标、性能日志。 | 缺少统一 metrics 报告。 |
| Task Orchestrator | 只注入初始任务,不参与调度,以保持去中心化。 | 当前 SwarmCoordinator 仍参与执行循环,需进一步改造。 |
6. 文章监控指标到测试项
文章列出的关键监控指标:
| 指标 | 文章含义 | 测试标准 |
|---|---|---|
| 收敛速度 | 达到目标质量所需迭代次数。 | 输出 rounds_to_converge,并验证小于最大轮数的 50% 或业务阈值。 |
| Agent 利用率 | 每个 Agent 忙碌时间占比。 | 输出每个 Agent claim/complete 次数,目标 > 60% 仅适合压测,不适合小样本。 |
| 任务完成率 | 成功完成任务比例。 | 小样本应为 100%;故障注入场景应证明整体仍收敛。 |
| 平均响应时间 | 从任务提交到结果产出的时间。 | live 路径需要记录每个 task started/completed 时间。 |
| 信息素分布 | 信息素浓度均匀程度,文章建议基尼系数 < 0.5。 | 待实现 pheromone Gini 计算和测试。 |
7. 当前测试结论,按文章标准重述
当前 swarm-minimal 已经证明:
- 有四类共享资源:任务池、信息素/得分、共享状态、结果收敛。
- 有真实 Azure-backed live 闭环:PostgreSQL、Redis、Blob、NewAPI。
- 有多模型调用和任务拆分。
- 有单 Agent 失败隔离的确定性测试。
- 有局部弱信号聚合为群体更优结果的涌现测试。
- 有信息素影响 claim 顺序的测试。
- 有 handoff 上下文连续性测试。
- 已新增本地多轮共识收敛,证明不是简单最高分选择。
但按文章标准,当前还不能说是完整蜂群系统,因为仍有缺口:
SwarmCoordinator仍偏中心循环,不够“无单一控制节点”。- live 路径还没有真正的并发多 worker 自主 claim。
- Agent 缺少显式
perceive -> decide -> act生命周期。 - Redis Stream 目前更多是日志/事件,不是已验证的广播决策输入。
- 多轮共识收敛还没接入 Azure PG/Redis/Blob 主路径。
- 缺少 Agent 利用率、响应时间、收敛速度、信息素 Gini 的统一 metrics。
- 缺少 3-7 Agent 扩缩容下的稳定性测试。
8. 后续实现优先级
按文章标准,下一步不是再堆安全测试,而是改造蜂群运行时:
- 把 Agent 拆成
perceive()、decide()、act()三段。 - 把
SwarmCoordinator降级为只初始化任务和停止条件。 - 引入 worker loop:每个 Agent 自主从任务池 claim。
- 把 Redis Stream 的事件变成 Agent 可消费的广播输入。
- 把多轮共识收敛接到 Azure live store。
- 增加 metrics:收敛轮数、任务完成率、Agent 利用率、平均响应时间、信息素 Gini。
- 增加 3、5、7 个 Agent 的扩缩容测试。
9. 严谨结论
当前原型已经覆盖文章中蜂群模式的部分关键性质:
鲁棒性、涌现性、信息素间接协作、共享环境和 handoff。
但它还不是完整意义上的文章式蜂群系统:
去中心化、自组织 worker loop、广播驱动决策、完整监控指标和 live 多轮收敛仍需补齐。