victordibia/designing-multiagent-systems · 上手攻略
- 仓库:victordibia/designing-multiagent-systems
- 链接:https://github.com/victordibia/designing-multiagent-systems
- 分类:book-code / multi-agent-framework (教学导向)
- 作者:spark
- 更新:2026-08-26
1. 是什么
这是 Victor Dibia(Microsoft Research 首席研究软件工程师、AutoGen 与 AutoGen Studio 作者)所著《Designing Multi-Agent Systems: Principles, Patterns, and Implementation for AI Agents》(2025)的官方配套代码仓库。仓库核心交付物是 PicoAgents——一个从头实现、仅用于教学的多 Agent 框架,配套 15 章书籍内容,覆盖从概念到生产落地的完整路径。
⚠️ 这不是"又一个生产级 Agent 框架"竞品。它的核心价值在于 "剥掉框架黑箱":每一个组件(agent 推理循环、工具调用、记忆、orchestration)都被以"教学可读"的标准重新实现。
书籍与仓库统计数据(来自作者 Newsletter 2025-11-23 自述):15 章 / 186 段代码片段 / 50 张图表 / 26 张表 / 76 个提示框 / 73 篇参考文献。
2. 解决什么问题
当下 Agent 学习的典型痛点:
- 文档全在讲 LangGraph / AutoGen / CrewAI 怎么调 API,但没人讲 agent loop / tool dispatch / middleware 内部到底怎么跑。
- 框架迭代极快,刚学完 v0.2,v1.0 改了 API,前面的笔记全部过时。
- 想评估"这个 multi-agent 设计到底有没有效"时,缺乏统一的评测视角。
这本书+仓库的应对:
- First-principles:从 0 写一个 agent loop(
code_along/ch04_v1_agent.py→v2_tools.py→v3_memory.py→v4_streaming.py)。 - Framework-agnostic:核心模式可迁移到 LangGraph、Microsoft Agent Framework、Google ADK 等。
- Production-aware:评测、优化、部署单独成章(Ch 10 起)。
3. 快速安装
3.1 三种"零安装"路径
- GitHub Codespaces(推荐新手):
https://codespaces.new/victordibia/designing-multiagent-systems?quickstart=1
打开后 export OPENAI_API_KEY='your-key',即可 python examples/agents/basic-agent.py。
-
Google Colab:README 表格里每个章节附 Colab badge,直接点开在浏览器跑。
-
本地源码安装:
git clone https://github.com/victordibia/designing-multiagent-systems.git
cd designing-multiagent-systems/picoagents
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e . # 核心
pip install -e ".[web]" # Web UI + API server
pip install -e ".[mcp]" # MCP 客户端 + Playground(mcp>=2.0.0)
pip install -e ".[persist]" # 运行/评测持久化
pip install -e ".[computer-use]" # 浏览器自动化
pip install -e ".[examples]" # 跑 examples/ 下脚本
pip install -e ".[all]" # 上面所有(不含 persist / otel / dev / frameworks)
export OPENAI_API_KEY="sk-..."
⚠️
[persist]不在[all]里——README 明确点出,按需单独装。
4. 核心用法
4.1 最小 Agent(来自 README 示例)
from picoagents import Agent, OpenAIChatCompletionClient
def get_weather(location: str) -> str:
"""Get current weather for a given location."""
return f"The weather in {location} is sunny, 75°F"
agent = Agent(
name="assistant",
instructions="You are helpful. Use tools when appropriate.",
model_client=OpenAIChatCompletionClient(model="gpt-4.1-mini"),
tools=[get_weather]
)
response = await agent.run("What's the weather in Paris?")
print(response.messages[-1].content)
4.2 多 Provider 切换(统一接口)
| Provider | Client 类 | 备注 |
|---|---|---|
| OpenAI | OpenAIChatCompletionClient |
默认 |
| Azure OpenAI | AzureOpenAIChatCompletionClient |
走 Azure 部署 |
| Anthropic | AnthropicChatCompletionClient |
Claude 3.5 Sonnet 等 |
| GitHub Models | OpenAIChatCompletionClient + base_url |
免费额度 |
| 本地 Ollama / vLLM | 同上 + base_url |
OpenAI 兼容端点 |
# GitHub Models(免费层)
client = OpenAIChatCompletionClient(
model="openai/gpt-4.1-mini",
api_key=os.getenv("GITHUB_TOKEN"),
base_url="https://models.github.ai/inference"
)
# 本地 Ollama
client = OpenAIChatCompletionClient(
model="llama3.2",
base_url="http://localhost:11434/v1"
)
4.3 启动 Web UI(MCP Playground + Eval Dashboard)
picoagents ui
# 或
picoagents ui --dir ./examples
UI 自动发现当前目录的 agents / orchestrators / workflows,含:
- 流式 chat
- 实时 debug 面板
- 运行历史(History 页)
- MCP Playground:连 MCP 服务器、调工具、看 JSON-RPC
- Eval Dashboard:数据集 / 目标 / 批量运行
仓库自带 5 个 demo MCP server,覆盖 tools、mid-call input、notifications、interactive UIs、OAuth-protected access。
4.4 章节 ↔ 代码对照表(节选)
| 章节 | 主题 | 关键代码 |
|---|---|---|
| Ch 4 | 第一个 Agent | examples/agents/basic-agent.py、memory.py、middleware.py、structured-output.py |
| Ch 5 | Computer Use | examples/agents/computer_use.py + picoagents/agents/_computer_use/ |
| Ch 6 | Workflow | picoagents/workflow/ + examples/workflows/ |
| Ch 7 | 自治编排 | round-robin.py、ai-driven.py、plan-based.py(Magentic One 模式) |
| Ch 8 | 现代 Agent UX | examples/app/(FastAPI+SSE 极简)+ picoagents/webui/(生产 React UI) |
| Ch 9 | 多 Agent 框架对比 | examples/frameworks/(Microsoft Agent Framework、Google ADK、LangGraph) |
| Ch 10 | 评测 | examples/evaluation/agent-evaluation.py |
| Ch 14 | 商业案例 | examples/workflows/yc_analysis/(分析 5,000+ 公司,带成本优化 + checkpoint) |
| Ch 17 | SWE Agent | examples/agents/swe_agent/(带 coding 工具 + workspace 管理) |
4.5 License
Apache-2.0(GitHub Topics 显示)。
5. 典型适用场景
- 第一次系统学 multi-agent:不想被某个框架 API 绑架,从 PicoAgents 的 250-500 行核心代码读起最友好。
- 教学 / 培训:作者是 AutoGen 50k+ stars 项目的核心维护者,书 + 仓库构成完整的教学材料。
- 评估框架选型前:Ch 9 直接给了 Microsoft Agent Framework / Google ADK / LangGraph 的横向对照。
- 生产落地参考:Ch 14 的 YC 分析 pipeline 演示了 checkpointing + cost optimization;Ch 17 的 SWE Agent 是完整可跑的工程化示例。
6. 坑与注意
- ⚠️ 仓库不等于生产框架:作者明确说 PicoAgents "built entirely from scratch for the sole purpose of teaching",不要直接把它当生产 Agent runtime 用。
- ⚠️ 章节编号有跳:README 列出的代码对照表是 Ch 1/2/3/4/5/6/7/8/9/10/14/17——中间章节(11/12/13/15/16)README 没给代码示例,应以原书为准。
- ⚠️ 依赖矩阵复杂:
[persist]不在[all]里;[mcp]要求mcp>=2.0.0;用 Codespaces 路径反而最稳。 - ⚠️ OPENAI_API_KEY 是默认假设:Anthropic / GitHub Models / Ollama 都要自己改 client 类。
- ⚠️ 书籍是付费的(Digital / Paperback / Hardcover),仓库不包含书稿正文——只含代码 + 章节摘要。读完仓库 ≠ 读完书。
- ⚠️ 示例中提到的
claude-3-5-sonnet-20241022是 README 字符串原样,未校验该模型 ID 当前是否仍可用——以 Anthropic 文档 为准。
7. 与同类对比
| 项目 | 形态 | 目标 | 是否带书 |
|---|---|---|---|
| victordibia/designing-multiagent-systems | 教学框架 PicoAgents + 配套书 | 从零讲清 multi-agent 设计 | ✅ 15 章 |
| LangGraph 官方教程 | 框架官方文档 | 教 LangGraph API | ❌ |
| AutoGen 官方示例 | 框架示例集 | 教 AutoGen | ❌ |
| HKUDS/CLI-Anything | Agent harness 工具集 | 让任意软件变 agent-native | ❌ |
| LLM-Agent 综述论文 | 论文 | 学术综述 | ❌ |
横向对比表数据均来自各仓库 README 一手摘要;HKUDS/CLI-Anything 在本指南撰写时仅通过 web_fetch 见过入口,未深入核验。
8. 一句话推荐
想真正搞懂 multi-agent 内部机制、而不是停留在调 API 层面的人,从这本书 + 这个仓库开始——PicoAgents 几百行核心代码 + 15 章系统讲解,比直接啃 LangGraph / AutoGen 源码友好得多。
9. 不确定处 / 待核验
- ⚠️ README 列出的章节对照表有编号跳跃(11/12/13/15/16 缺代码示例),可能书籍后续章节仍会补 commit。
- ⚠️
claude-3-5-sonnet-20241022模型 ID 是 README 原样,未独立核验是否仍可用;建议上手时按 Anthropic 官方最新 model name 替换。 - ⚠️ "Stars 819 / Forks 213 / Watching 25" 来自 web_search 摘要快照,未在 GitHub 直接核验最新数;趋势数据以工作队列卡片为准(~812 stars,持平)。
- ⚠️ 书籍 ISBN 9798993101200 来自 Amazon 页面摘要,未独立核验封面/页数。