2025 年 Agent 开发完整学习路径
系统化资源教开发者构建生产级 Agent,解决早期 Agent 易崩溃问题。社区互动 202 次验证高价值。
系统化资源教开发者构建生产级 Agent,解决早期 Agent 易崩溃问题。社区互动 202 次验证高价值。
CopilotKit 现已支持 AngularAngular 支持 · 使用 Angular 构建智能体应用与生成式 UI · 现已推出
过去,大多数 AI 智能体只要接入真实应用就会立即出问题。根源在于缺少共享协议。
但这种情况正在迅速改变。过去一年中,AG-UI(用户交互)、A2A(智能体间通信)和 MCP(工具访问)等协议已经改变了整个生态系统。
因此,我借此机会学习了这些协议,并弄清楚它们如何协同运作。本文涵盖了我对这些协议(AG-UI、ACP、A2A、MCP)的所有理解。
你还会看到一系列适合学习和构建 AI 智能体的优秀教学仓库。
这份清单将为你提供所需的基础知识和工具。
目前已经有一些可靠的多步骤智能体框架。但当你尝试把智能体接入真实应用时,问题就开始出现:
在不搭建自定义 WebSocket 服务器的情况下,逐 token 流式传输响应
实时显示工具执行进度、暂停以获取人工反馈,同时不丢失上下文
保持大型共享状态(代码、表格、数据)同步,而不必每次将全部内容重新发送到 UI
允许用户在任务执行过程中中断、取消智能体或回复智能体,同时不丢失状态
大多数智能体后端(LangGraph、CrewAI 等)都有自己的流格式、状态逻辑和工具调用 API。因此,一旦切换技术栈,你就需要重写所有内容,而这种方式无法规模化。
AG-UI 是 CopilotKit 推出的开源协议,旨在弥合这一鸿沟。它让开发者能够极其轻松地将兼容的智能体接入前端客户端。
它使用服务器发送事件(SSE),将结构化 JSON 事件从智能体后端流式传输到前端。
一共有 16 种事件类型,每种类型都有明确定义的载荷,例如:
TEXT_MESSAGE_CONTENT:用于流式传输 token。
TOOL_CALL_START:用于显示工具执行过程。
STATE_DELTA:用于更新共享状态(代码、数据等)。
AGENT_HANDOFF:用于在智能体之间平滑移交控制权。
你可以使用以下命令创建一个新的 AG-UI 应用:
npx create-ag-ui-app@latest <my agent framework>
各类框架对它的采用进展迅速,目前已经支持 LangGraph、CrewAI、Mastra、LlamaIndex 和 Agno。
🎯 AG-UI 在智能体协议栈中处于什么位置?
AG-UI 与另外两个主流智能体协议形成互补:
MCP 将智能体连接到工具
A2A 将智能体彼此连接
AG-UI 将智能体连接到最终用户
AG‑UI 的作用类似于人类与智能体交互中的 REST 层,几乎不需要样板代码,并且可以轻松集成到任何技术栈中。
在 GitHub 上查看 AG-UI ⭐️
智能体系统的能力正变得越来越强,但它们没有一套共享语言。
如果智能体 A 想请智能体 B 协助完成某项任务,就需要:
因此,使用不同框架(LangGraph、CrewAI……)构建的智能体最终会形成一个个孤岛,无法相互协调。
A2A(Agent-to-Agent)是 Google 推出的协议,它通过 JSON-RPC 和 SSE 标准解决了这一问题。借助 A2A,智能体可以:
发现彼此的能力。
决定如何通信(文本、表单、媒体)。
在长时间运行的任务中安全协作。
在不暴露内部状态、记忆或工具的情况下运行。
要开始使用,请安装 Python SDK 或 JS SDK。
pip install a2a-sdk
or
npm install @a2a-js/sdk
🧠 A2A 的工作方式(流程)
1)智能体发布 JSON 格式的 Agent Card(包含能力、端点和身份验证信息)。其他智能体获取它,从而知道“该调用谁以及如何调用”。
2)通过 JSON-RPC 委派任务
客户端智能体使用 tasks/send 或 sendSubscribe 发起任务
通过 HTTP 使用结构化输入进行调用
远程智能体返回任务 ID 并开始执行
1)通过 SSE 流式传输进度和中间产物(TaskStatusUpdate、TaskArtifactUpdate)。
2)任务执行过程中的交互式输入
远程智能体可以暂停并发出 input-required
调用方智能体使用同一个任务 ID 提供额外输入
5)智能体通过结构化的“Parts”和“Artifacts”交换文本、数据及文件(例如音频和视频)。
✅ 示例:端到端智能体协作
下面是一个非常简单的示例:
用户向智能体 A 提交一项复杂任务
智能体 A 将其拆分成多个子任务
它通过 Agent Card 找到智能体 B、C、D
它使用 A2A 调用委派工作
这些智能体并行运行、流式发送进度更新,并请求额外输入
智能体 A 收集并合并结果
这就是智能体相互通信的方式。
尽管 A2A 仍然很新,但它有助于标准化智能体之间的协作,就像 MCP 标准化智能体与工具之间的交互一样。
MCP 扩展了单个智能体的能力,A2A 则扩展了智能体之间的协作方式,并且不受具体后端或框架限制。
GIF 来源:dailydoseofds.com
如果你有兴趣进一步了解,可以阅读 Auth0 的 MCP 与 A2A 对比。
MCP(Model Context Protocol)是 Anthropic 为标准化应用程序向 LLM 提供上下文和工具的方式而做出的尝试。
就像硬件领域的 USB‑C 一样,MCP 是一种通用接口,让 AI 模型能够“接入”数据源和工具。
你不再需要为每项服务(GitHub、Slack、文件、数据库)编写自定义封装,而是可以通过 MCP 暴露工具,使其能够:
列出可用工具(tools/list)
调用工具(tools/call)
获取结构化、有明确类型的结果
这与函数调用 API 类似,但可以跨平台和服务工作。
此前的规范相当精简,主要使用基于 stdio 或 HTTP 的 JSON-RPC。身份验证没有明确定义,因此许多实现完全跳过了身份验证。
随着 MCP 的采用率不断增长,Anthropic 在新的规范更新(MCP v2025-06-18)中做出了重大改进,尤其是在安全性方面。
MCP 的核心采用客户端—服务器架构,其中一个宿主应用可以连接多个服务器。各组件的协作方式如下:
MCP hosts——Claude Desktop、Cursor、Windsurf 等应用,或希望通过 MCP 访问数据的 AI 工具。
MCP Clients——维护与 MCP 服务器一对一连接的协议客户端,充当通信桥梁。
MCP Servers——轻量级程序,每个程序都通过标准化的 Model Context Protocol 暴露特定能力,例如读取文件、查询数据库等。
Local Data Sources——MCP 服务器可以安全访问的本地文件、数据库和计算机上的服务。例如,浏览器自动化 MCP 服务器需要访问你的浏览器才能工作。
Remote Services——MCP 服务器可以连接的外部 API 和云端系统。
如果你有兴趣进一步了解,下面有几篇不错的文章:
Medium 上的《The guide to MCP I never had》
Builder.io 团队的《What is the Model Context Protocol (MCP)?》
ACP(Agent Communication Protocol)以 A2A 的许多理念为基础,并在此之上更进一步。
它是一种用于 AI 智能体、应用程序和人类之间通信的开放协议。它通过标准化的 RESTful API 工作,并支持:
多模态交互
有状态或无状态模式
在线和离线智能体发现
为长时间运行任务设计的异步优先模式(同时也支持同步调用)
它主要包含两个组件:
a)ACP client:由智能体、应用程序或服务用于通过 ACP 协议发起请求
b)ACP server:托管一个或多个智能体、接收请求,并使用 ACP 返回结果。智能体正是通过这种方式以 REST 接口对外开放。
高级多智能体编排的架构流程
该协议足够简单,可以直接使用 curl、Postman 或浏览器请求等标准 HTTP 工具。如果你更希望以编程方式集成 ACP,也可以使用官方 Python SDK 和 Typescript SDK。
你可以使用以下命令添加 ACP SDK:
uv add acp-sdk
🎯 ACP 与 A2A 有何不同?
虽然两者都支持任务委派、流式传输、多模态内容和智能体发现:
A2A 专注于智能体之间的协作
ACP 将交互范围扩展到了人类和应用程序
ACP 使用 REST + OpenAPI + multipart 格式
A2A 使用 JSON-RPC + SSE
智能体发现通过 Agent Manifest 完成,类似于 A2A 的 Agent Card。
ACP 作为 Linux Foundation 标准进行开发,BeeAI Platform 是其参考实现。
该协议不依赖任何内部实现,并确保服务于更广泛的生态系统,而不是任何单一厂商。
如果你刚开始学习,可以查看 DeepLearning.AI 的短期课程和快速入门指南。
另外,也可以查看示例智能体,了解如何在主流 AI 框架中使用 ACP。
Microsoft 推出的这套开源课程提供了一条结构化学习路径,其中包含真实使用场景。
它提供了使用 C#、Java、JavaScript、TypeScript 和 Python 等主流语言编写的实用代码示例。
通过遵循这个课程,你可以轻松掌握 MCP 生态系统,并了解如何从零开始构建或扩展符合 MCP 规范的系统。
虽然网上有很多优秀的博客,但它们无法涵盖所有细节。
以下是课程涵盖的完整主题列表。
| 模块 | 主题 | 你将学习 |
|---|---|---|
| 00 | MCP 介绍 | 为什么 MCP 很重要,真实用例(Gitee) |
| 01 | 核心概念 | 客户端-服务器架构、消息传递模式 |
| 02 | 安全 | 威胁、最佳实践、OAuth2 示例 |
| 03 | 入门指南 | 环境设置、用多种语言构建第一个服务器与客户端 |
| 3.1–3.3 | 实战 | 构建服务器、构建客户端、集成 LLM 客户端 |
| 3.4–3.6 | 开发工具 | 接入 VS Code、使用 SSE 和 HTTP 流 |
| 3.7–3.9 | 工具与部署 | 使用 AI Toolkit、测试和部署 MCP 服务器 |
| 04 | 实践实现 | 真实多语言 SDK 示例与调试 |
| 05 | 高级主题 | 多模态工作流、扩展、路由、安全、网络搜索、OAuth2、root-contexts |
| 5.x | 深度研究 | Azure 集成、多模态、OAuth2 演示、采样、路由与扩展策略 |
| 06 | 社区贡献 | 如何报告问题、贡献代码/文档 |
| 07 | 早期使用者经验 | 真实用例研究与部署见解 |
| 08 | 最佳实践 | 可靠性、性能、测试与容错 |
| 09 | 案例研究 | 深度架构分解与示例 |
| 10 | 实战实验室 | VS Code 中使用 AI Toolkit 的端到端 MCP 服务器 |
尽管 LLM 变得越来越强大,但构建可靠的 AI 软件仍然取决于你如何围绕它们进行工程设计。
这个由 Dex Horthy 开发的仓库将构建生产级 AI 智能体的经验总结为 12 个核心原则。
每个 LLM AI 智能体的核心是一个循环:
但说到底,这种方法还是达不到我们想要的效果。
每个因素都附带视觉示例、详细解释和代码片段。
以下是所有 12 个因素的快速概览(附带详细了解的链接):
自然语言转工具调用:将用户输入转换为结构化操作(JSON 或函数调用),以便确定性代码可以可靠地处理执行。
掌控你的提示词:不要把提示词工程外包给框架。像对待代码一样对待提示词(版本控制、测试、易于更新)。
掌控你的上下文窗口:只向模型发送重要信息。删除所有不必要的内容,以保持速度并避免超出限制。
工具只是结构化输出:当你的 AI 智能体使用工具时,让它用干净、易读的 JSON 响应,以便你的代码能够理解。
统一执行状态和业务状态:将 AI 智能体的步骤追踪(它在做什么)和业务数据(它在处理什么)保持在一个地方。这个统一视图让你可以轻松重放、调试和监控 AI 智能体的行为。
使用简单 API 启动/暂停/恢复:AI 智能体应该能通过直接的 API 进行控制,用于启动、暂停和恢复工作流。
使用工具调用与人交互:每当 AI 智能体需要帮助或输入时,让它使用与自动化任务相同的工具(如通知、批准请求)与人交流。
掌控你的控制流:不要让工具隐藏 AI 智能体在做什么。保持步骤清晰,以便你可以检查或修改它们。
将错误紧凑地放入上下文窗口:总结错误并将其包含在 AI 智能体的上下文窗口中,以便模型可以学习并从错误中恢复。不要发送完整日志,只发送有助于修复问题的内容。
小型、专注的 AI 智能体:设计 AI 智能体做好一件事,遵循可组合性原则。小型、专注的 AI 智能体更容易构建和测试。
从任何地方触发,在用户所在的地方接触他们:允许 AI 智能体由任何来源的事件触发(API、cron 作业、用户操作),以便它们适合不同的工作流。
让你的 AI 智能体成为无状态归约器:设计 AI 智能体用来处理输入并返回输出,无需在运行之间保留内部状态。无状态 AI 智能体更容易扩展、测试和从错误中恢复。
这是最有价值的仓库之一。它涵盖了 AI 智能体的历史(我们如何走到这里)、当 LLM 变得更聪明时会发生什么以及更多具有视觉示例的内容。
如果你对如何将你的生成式 AI 智能体想法从概念转化为生产环境感到好奇,这个仓库是你的分步指南。它充满了实用的、代码驱动的教程,旨在帮助你构建生产级 AI 智能体。
每个教程都独立存放在自己的文件夹中,附带可运行的笔记本和代码示例,以便你可以在几分钟内从概念转变为可工作的 AI 智能体。
你会找到整个生成式 AI 智能体生命周期的覆盖,从原型设计到部署,附带可重用的模式和现实世界的蓝图。
一些教程亮点:
GPU 部署:使用 Runpod 大规模部署 AI 智能体以进行高性能推理
可观测性:使用 LangSmith 和 Qualifire 添加追踪、日志和调试,以便你可以实时监控 AI 智能体。
多智能体协调:使用 A2A 协议的 AI 智能体工作流和消息交换
安全与护栏:学习使用 Qualifire、LlamaFirewall 和 Apex 的示例攻击来防止提示注入和有毒输出。
记忆系统:使用 Redis 设置由语义搜索支持的混合短期和长期记忆。
网络搜索集成:构建 AI 智能体来获取和处理使用 Tavily API 的实时网络数据。
还有微调、前端、打包等教程,都使用流行框架和最佳实践。
这个仓库是学习、构建和分享生成式 AI 智能体(社区)的绝佳资源,范围从简单的对话机器人到复杂的多智能体系统。
每个概念都通过可运行的笔记本进行教学,约 40+ 个项目通过黑客松添加。它很实用,超级有用。
你会找到使用 LangGraph、CrewAI、OpenAI Swarm、LangChain、PydanticAI 等的示例。
类别列表及覆盖内容:
初学者友好
你可以在 readme 中查看广泛的实现列表。
这个仓库有一个很棒的 LLM 应用集合,使用 RAG、AI 智能体、多智能体团队、MCP、自主游戏玩耍智能体、语音智能体等构建。
使用来自 OpenAI、Anthropic、Google 的模型,以及可以在本地计算机上运行的开源模型,如 DeepSeek、Qwen 或 Llama。
一些突出的项目:
AI 表情包生成智能体(浏览器)
AI 系统架构智能体
AI 社交媒体新闻和播客智能体
AI 竞争对手情报智能体团队
语音 RAG 智能体(OpenAI SDK)
带记忆的本地 ChatGPT 克隆
与 YouTube 视频聊天
AI 旅行规划 MCP 智能体
如果你正在使用 LLM 构建,这个仓库就像一个创意金库。
OpenAgents(由 xlang‑ai 开发)是一个开源平台,使日常用户和开发人员可以轻松通过简单的网络界面与真实世界的 AI 智能体互动和构建。
以下是它如何设计的快速概览:
它目前具有三个强大的 AI 智能体:
数据智能体:让你通过聊天直接运行 Python 或 SQL 查询、清理数据并创建可视化。
插件智能体:连接到 200+ 日常插件(如天气、购物或 Wolfram Alpha),并可以巧妙地为任务选择合适的插件。
网络智能体:使用 Chrome 扩展为你浏览网站(如填表、发布到 Twitter、获取方向)
你可以查看官方文档以获取演示视频和完整演练。
简而言之,OpenAgents 就像 ChatGPT Plus,但是开源的、可定制的,使其能够进行数据分析、工具使用和自主浏览,所有这些都可以轻松扩展或自托管。
这个仓库是一个巨大的系统提示词和配置文件库,来自 15+ 真实 AI 产品,如 v0、Cursor、Manus、Same.dev、Lovable、Devin、Replit Agent、Windsurf Agent、VSCode Agent、Dia Browser、Trae AI、Cluely、Xcode & Spawn,甚至开源智能体如 Codex CLI、Bolt、RooCode。
拥有超过 7,500 行内容,它是对任何想了解现代 AI 系统如何"被指示"表现、推理和交互的人来说最大的、最实用的参考资源之一。
如果你正在做以下事情,这是非常有用的:
构建 LLM 智能体或副驾驶
创建更好的系统/指令提示词
对 AI 智能体行为背后的逻辑进行逆向工程
此外,还有另一个不错的资源合集(约 3k⭐️),你可能会觉得很有用。
如果你对 AI 智能体在现实世界中的应用感兴趣,这个仓库展示了 500 多个用例,涵盖医疗、金融、教育、零售、物流、游戏等行业。
每个用例都链接到一个开源项目,因此它并不只是一份创意清单,更是一份实践指南。
许多示例使用 CrewAI、AutoGen、LangGraph 和 Agno 等框架构建。例如,CrewAI 工作流包括:
撰写书籍或剧本
营销策略生成器
落地页生成器
你还会看到一些独特的智能体架构,例如集成 NVIDIA 的 LangGraph 智能体。
这是一个非常适合浏览和获取灵感的仓库。它在 GitHub 上拥有 1.8k 个 star。
协议听起来可能很枯燥,但它们正是智能体能够真正应用于现实世界的原因。
框架会改变,协议不会。因此,你应该花点时间学习这些基础知识。
如果你有任何问题或反馈,或者最终构建出了什么很酷的东西,请在评论区分享。
祝你今天愉快!下次见 :)
在 Twitter 上关注 CopilotKit 和 AG-UI,并来打个招呼!
如果你想构建一些很酷的东西,欢迎加入 AG-UI Discord。
订阅我们的博客,即可在收件箱中收到 CopilotKit 的最新动态。