这是一个循序渐进的 Agent 教程仓库,按 demo1 到 demo11 逐步搭建一个越来越完整的 Agent 系统。
如果你是第一次接触 Agent,建议按顺序学习。这个仓库最有价值的地方,不只是把 demo 跑起来,而是能看清楚消息、记忆、工具、规划、工作流、RAG、MCP 这些能力是怎么一层层长出来的。
- 想从零理解 Agent 基本组成的人
- 已经会调用大模型 API,但不清楚如何做成 Agent 的人
- 想学习
memory、tool calling、planning、ReAct、runtime、workflow、RAG、MCP这些核心概念的人 - 想自己写一个轻量 Agent 框架或 coding agent demo 的人
仓库中的示例主要使用 Python、DeepSeek Chat API、智谱 Embedding SDK、PostgreSQL pgvector 和 MCP Python SDK。
先安装根依赖:
建立conda环境管理包,agent是这个包名,可替换为自己想要的:
conda create -n agent python=3.12
# 执行完之后激活本agent环境:
conda activate agent装包:
pip install -r requirements.txt推荐用仓库根目录的 .env 文件集中管理环境变量。先复制模板:
cp .env.example .env然后把 .env 里的值填成你自己的:
DEEPSEEK_API_KEY=你的 DeepSeek API Key
ZHIPU_API_KEY=你的智谱 API Key
PGVECTOR_HOST=你的 PostgreSQL 公网访问地址
PGVECTOR_PASSWORD=你的数据库密码DEEPSEEK_API_KEY:demo1到demo11都需要,去platform.deepseek.com/api_keys 获取ZHIPU_API_KEY、PGVECTOR_HOST、PGVECTOR_PASSWORD:只有demo10需要.env已经在.gitignore里,不会被提交;.env.example是模板,可以提交- 读取
.env用的是python-dotenv,它已经在requirements.txt里,不需要单独安装
所有 demo 都从仓库根目录运行(例如 python demo10/rag_demo.py),所以放在根目录的这一份 .env 能被所有 demo 找到。加载时在各入口文件里、导入 demo 模块之前调用 load_dotenv();注意 demo10/config.py 是在导入时就读取变量的,加载必须发生在它之前。
如果你更习惯临时设置,也可以只在当前终端会话里用 PowerShell 设一次(关掉终端就失效):
$env:DEEPSEEK_API_KEY="你的 API Key"demo10 额外需要:
$env:ZHIPU_API_KEY="你的智谱 API Key"
$env:PGVECTOR_HOST="你的 PostgreSQL 公网访问地址"
$env:PGVECTOR_PASSWORD="你的数据库密码".env 和系统环境变量同时存在时,已有的系统环境变量优先(load_dotenv() 默认不覆盖已存在的变量),所以这种方式仍然可以用来临时替换某个 Key 做测试。
demo10 还需要你自己准备启用了 pgvector 扩展的 PostgreSQL 数据库。
推荐每一节都按这个节奏推进:
- 先运行当前 demo,感受它能做什么
- 再读这一节自己的
README.md - 再看入口文件和关键模块,理解整体流程
- 最后自己改一个小功能,验证是否真的理解
不要一上来就试图把所有代码一次看懂。最好的学习方式,是按节奏逐步往前推。
| Demo | 主题 | 入口 |
|---|---|---|
demo1 |
最小 LLM 调用 | demo1/README.md |
demo2 |
多轮对话与短期记忆 | demo2/README.md |
demo3 |
最小 Tool Calling 闭环 | demo3/README.md |
demo4 |
显式规划与状态推进 | demo4/README.md |
demo5 |
ReAct 风格 Agent 循环 | demo5/README.md |
demo6 |
最小 Agent 框架抽象 | demo6/README.md |
demo7 |
简化版 Coding Agent | demo7/README.md |
demo8 |
固定节点编排的 Workflow Agent | demo8/README.md |
demo9 |
带人工审批的 HITL Workflow | demo9/README.md |
demo10 |
基于 pgvector 的 RAG Agent | demo10/README.md |
demo11 |
基于 MCP Server 的工具接入 | demo11/README.md |
按顺序学习 demo1 到 demo11。每学完一个 demo,都用自己的话回答:
- 这一节比上一节多了什么能力
- 这个能力是靠哪些数据结构和模块实现的
- 如果让我自己重写,我会保留什么,简化什么
可以先快速浏览 demo1,重点读 demo2 到 demo5,再把主要精力放在 demo6 到 demo11。
推荐重点关注:
demo3:工具 schema 和执行闭环demo4:状态与动作设计demo5:ReAct 主循环demo6:框架抽象demo7:面向代码场景的工具设计demo8:节点编排与 workflow 路由demo9:人工确认与安全执行边界demo10:外部知识库、向量检索与 RAG 问答demo11:通过 MCP 接入外部工具生态
学完这套 demo,通常可以建立下面这条认知链路:
- LLM 调用本质上只是一次消息请求
- 多轮对话本质上是维护
messages - Agent 的“记忆”很多时候先从短期上下文开始
- Tool Calling 的关键不是“会调工具”,而是“让模型知道什么时候该调”
- Planning 是把任务拆成可执行步骤
- ReAct 是“思考-行动-观察”循环
- 框架化是把 prompt、工具注册、消息存储、运行时循环解耦
- Coding agent 的核心工作流通常是:先观察,再定位,再修改,再验证
- Workflow 适合稳定步骤和清晰审计链路
- HITL 适合高风险动作前的人类确认
- RAG 让 Agent 在回答前先查资料
- MCP 让 Agent 更容易接入标准化外部工具
顶层 README 现在只保留总览和导航。每一节的完整讲解、关键模块、运行方式、学习重点和建议练习,都已经拆到对应的 demoN/README.md 里。
你可以直接从上面的 demo 导航进入任意一节继续看。