把本仓从「Master 分解→派发→单评审」重构为去中心化自组织蜂群,并设为唯一行为
(本仓即 swarm 运行时,模式选择在仓外,无 ENABLE_swarm 开关)。依据:heicodeDocs 弱中心
定义 + 蜂群文章(stigmergy)+ OpenAI Swarm(handoff)。
流程(全部无条件生效):
- 播种 build_seed_task_specs(不主控分解)→ 自选 swarm_dispatch(能力+τ+负载+预算,唯一派发)
→ 自主分解 task_proposal(autonomous_tasks)→ 竞争/接管 task_bid/yield/takeover(task_competition)
→ 同伴交叉评审 ≥2 评审者(cross_review,取代单 critic)→ 收敛 ConvergenceReport+termination_reason
(convergence)→ 守卫 guard.diagnose(检测无法运作并列原因)。
删除:planner 主控分解、贪心/ACO/scored 派发与 scored_matchmake、单 critic 评审环、
全部 ENABLE_* swarm 构建开关。master_agent.synthesize 作为汇总工具保留。
测试:test-workflow-e2e 改写为真实 swarm 全流程;test-merge-smoke 改为 seeder/cross-review;
新增 test-swarm-{seed,dispatch,autonomous,competition,cross-review,convergence,guard} + 模块单测;
CI 同步。本地 18 套全绿。
影响范围:agent_swarm(orchestrator + 新模块 + 测试 + docs + CI)。不改 Manager↔Swarm 事件契约
(新事件均为运行时内部状态/遥测,不进 HM 注册表);不影响 Client/计费/密钥/审计/发布链路。
无新增长期开关。
诚实边界:不动 benchmark 验收(G_E 仍需真实 run,#13);convergence 暂为解释性(不强制覆盖
run.status);前端可见状态为跨端(#18);「去中心化是否更优」未证(需 Group C)。
#6 的 DoD(Path B 决策 + 定位文档)本 PR 已满足并实现 Path B → 关闭 #6。
#7/#8/#11/#12 的运行时机制已落地(事件 + e2e),但其 DoD 含前端可见状态(跨端 #18)与
多 Agent 回放,故以 Refs 链接、不自动关闭,留维护者在前端/验收就绪后关闭。
Closes #6
Refs #7
Refs #8
Refs #11
Refs #12
Refs #18
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.4 KiB
4.4 KiB
蜂群定义差距分析(Swarm Definition Gap)
状态:现状差距分析。逐条比对 heicodeDocs「弱中心蜂群」定义与本仓当前 Master 中心化实现,引用具体文件/行号,并标注每条差距由哪个工单(#7/#8/#9/#11/#12)关闭。回应工单 #6。
配套:
product-positioning.md、README.md 能力边界表、benchmark/decision-engine.md、benchmark/IMPORTANT-metric-coverage-gaps.md。标准源声明:heicodeDocs 为唯一标准源。本文引用的「弱中心蜂群」四要素(共享态势感知 / 自主生成·竞争任务 / peer 交叉评审 / 自组织收敛)若与 heicodeDocs 表述存在歧义,以 heicodeDocs 为准;如发现文档与代码冲突,按 CLAUDE.md 要求输出冲突点,不自行选边。
1. 一句话差距
heicodeDocs 期望 Agent 自主感知共享态势、竞争/认领任务、互相交叉评审、自组织收敛;本仓所有这些决策点目前都集中在单一主控 + 中心编排循环:Agent 是被动接收任务的执行单元,不感知全局态势,不竞争任务,不互评,收敛由中心评审单点裁决。
2. 差距对照表
| # | 弱中心蜂群定义(heicodeDocs) | 本仓当前实现(中心化) | 证据(文件:行) | 差距 | 关闭工单 |
|---|---|---|---|---|---|
| G1 | Agent 感知共享态势/全局状态,据此自主行动 | Agent 仅被动收 task_assignment;全局态势由编排器在派发时单向注入上下文,Agent 无共享态势视图 |
orchestrator/main.py:361-366(单向下发)、main.py:186-222 build_dispatch_context(中心注入依赖产物/peer 信息)、master_agent.py:1-17(认知集中于 master) |
Agent 无共享态势感知,无法据全局自主决策 | #11 |
| G2 | Agent 自主生成/竞争任务(任务由群体涌现,非中心下发) | 任务由中心生成:Manager 分工优先,否则单一 planner 回退(静态/LLM 计划),Agent 不生成任务 | orchestrator/planner.py:62-85(静态计划)、planner.py:87-116 build_plan、master_agent.py:35-39 plan |
任务来源中心化,无群体涌现/竞争 | #7 |
| G3 | Agent 竞争认领就绪任务(多 Agent 对同一任务竞标/抢占) | 中心派发循环按到达顺序遍历空闲 Agent,对每个 Agent 取能力匹配的第一个就绪任务;非 Agent 主动竞争 | orchestrator/main.py:290-332 task_dispatch_loop、task_queue.py:114-138 get_ready_pending_task、task_queue.py:181-186 can_agent_run_task(能力子集匹配) |
单边、中心驱动的能力子集匹配,无双边竞争 | #8、#9 |
| G4 | peer 交叉评审(Agent 之间互评结果,质量由群体判定) | 评审为中心化单点裁决:master 调 planner.review 给出 accepted/retry_tasks;peer 间仅消息路由协作,不互评质量 | orchestrator/planner.py:118-171 review、master_agent.py:41-53 review_and_decide、docs/peer-communication-logistics.md(peer 仅协作非互评) |
质量裁决单点中心化,无 peer 交叉评审 | #12 |
| G5 | 自组织收敛(群体在无中心调度下趋于终态) | 收敛由中心驱动:评审不达标→中心 reopen_task 重开,受 MAX_REVIEW_CYCLES 中心上限约束;终态由编排器刷新判定 |
orchestrator/task_queue.py:398-423 reopen_task、orchestrator/main.py:376+ refresh_swarm_run_status、planner.py:118-171(中心裁决驱动循环) |
收敛逻辑中心化,非群体自组织 | #11、#12 |
注:
ENABLE_ACO_DISPATCH(main.py:309-328)开启时引入 τ/η/P 概率派发,但仍是中心循环按到达顺序对单个 Agent 采样候选任务(Option A 单边),不构成 Agent 间竞争或去中心;学习常开但选择门控(见benchmark/decision-engine.md)。它不关闭 G3 的双边竞争差距。
3. 结论
- 上述 G1–G5 共同构成工单 #6 所指「实现仍为 Master 中心化、与弱中心蜂群定义不一致」的具体证据。
- 每条差距的关闭归属对应工单(#7/#8/#9/#11/#12);是否推进、以及按 Path A / Path B 哪条路径处理,属 ARB 决策,见
product-positioning.md§4。 - 在差距关闭并经对应验收前,对外文档不得宣称本仓已是弱中心蜂群(组织规则 #9,不伪造已实现能力)。