KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

多 Agent 协作项目:事件响应协作组 — keel 龙骨

Multi-Agent Collaboration 的配套项目:多 Agent 协作项目:事件响应协作组

从一条固定的事件诊断运行开始,逐步把任务契约、Agent 白名单、Ollama Specialist、Supervisor、并行汇聚、Reviewer 和失败策略连起来。先读概念,再运行对应示例;不需要一开始通读全部源码。

准备环境

建议使用 Python 3.11 或更高版本:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r courses/advanced/multi-agent-collaboration/course/project/requirements.txt

真实模型实验还需要本机运行 Ollama:

ollama serve
ollama pull qwen3:8b
$env:OLLAMA_MODEL = "qwen3:8b"

示例会自动把 src 加入导入路径,不需要设置 PYTHONPATH。

按章节运行和观察

第 02/04 章:任务契约和白名单

python courses/advanced/multi-agent-collaboration/course/project/examples/01_task_contract.py

先看 contracts.py,再看 registry.py 和 coordinator.py。把 capability 改成未知值,观察任务如何在执行前失败。

第 03 章:真实 Ollama Specialist

python courses/advanced/multi-agent-collaboration/course/project/examples/02_ollama_specialist.py

这个示例只让模型填写 FindingArtifact。模型不会创建任务、调用工具或修改 TeamRun。输出通过 Pydantic 和 evidence ID 再校验。

第 06 章:两个真实 Ollama Worker

python courses/advanced/multi-agent-collaboration/course/project/examples/07_ollama_team.py

这里把两个不同 capability 的 Ollama Specialist 注册到同一个 Coordinator,并行分析指标和变更证据。模型调用负责产生 Artifact;任务关联、scope、并行上限、结果汇聚和最终状态仍由确定性代码负责。

第 05 章:显式 Handoff

python courses/advanced/multi-agent-collaboration/course/project/examples/06_handoff.py

观察记录中有任务、原所有者、新所有者、原因、工件引用和剩余预算,但没有 credential。交接记录本身不执行任何动作。

第 06 章:并行 Fan-out/Gather

python courses/advanced/multi-agent-collaboration/course/project/examples/03_parallel_team.py

两个 Worker 使用不同延迟,返回顺序可能不同;Coordinator 按 task_id 关联结果。事件只由主线程追加,避免并发写乱序号。

第 08 章:确定性 Review

python courses/advanced/multi-agent-collaboration/course/project/examples/04_review_loop.py

先用代码检查不存在的 evidence ID 和缺失 limitation。能写成确定性规则的约束不必消耗额外模型调用。

第 09 章:部分失败和降级

python courses/advanced/multi-agent-collaboration/course/project/examples/05_failure_recovery.py
$env:DEMO_FAIL_CHANGE = "1"
$env:DEMO_POLICY = "best_effort"
python courses/advanced/multi-agent-collaboration/course/project/examples/03_parallel_team.py

all_required 和 best_effort 会得到不同的运行状态,但成功任务的 Artifact 都应保留下来。

源码阅读顺序

contracts.py       任务、Agent、Artifact、Result、Event、Run
registry.py        Agent 白名单和 capability 路由
workers.py         确定性 Worker、领域工件和失败注入
ollama_agent.py    Ollama Structured Outputs 适配器
coordinator.py     分派、并行、超时、取消和汇聚
review.py          可写成代码的审查规则
domain.py          固定事件证据和任务构造

复杂的 Coordinator.run_parallel() 可以按四段阅读:

创建 TeamRun
  -> 解析 Registry 并提交 Worker
  -> 主线程收集并验证 TaskResult
  -> 按策略计算最终状态并写事件

测试

python -m unittest discover -s courses/advanced/multi-agent-collaboration/course/project/tests -v

测试固定验证:

目前实现的边界

项目是用于学习的单进程实现:Registry 在内存中,协调器使用线程池,Artifact 没有接入外部对象存储,取消不能强杀已经运行的 Python 线程,也没有分布式 worker lease。

这些不是生产系统可以忽略的问题。进入真实项目时,需要补上持久化任务状态、消息队列、幂等提交、租约、身份传播、远程 Agent 健康检查、脱敏事件存储和独立评估集。

返回多 Agent 协作课程 · 回到 Harness · 查看 Tool Calling

进入 keel 阅读