📖 Agent Engineer KB

《AI Agent 工程师知识库》

从 LLM 与 Prompt 打底,到 Agent 框架、Memory / RAG、评估与部署 —— 一份 5 层学习路径,理清「怎么成为 AI Agent 工程师」。

源仓库:本文档蒸馏自 GitHub 上的 WenyuChiou/awesome-agentic-ai-zh(三语 · 繁中/English/简中 · MIT 许可 · 4k+ stars),一个从「LLM 用户」到「Agent 系统构建者」的 8 阶段结构化学习路线图(240+ 精选资源、23 个动手练习)。

一句话导读:Agent 不是「更强的聊天机器人」,而是「LLM 在一个循环里感知状态→做决策→执行动作→观察结果」的系统。本知识库按「从零到生产」的依赖顺序,把这条路上真正长期有价值的核心概念、原理、易混点和实操坑蒸馏出来,砍掉了原仓库里的纯资源链接、star 数罗列和重复描述,只保留「值得学、学了不过时」的部分。

标注约定:🔴核心必学 / 🟡重要 / ⚪️了解即可。凡属我基于领域知识补充、非源仓库原文的部分,均以「【补充】」显式标注;不确定的概念宁可省略也不编造。

1. 这份知识库怎么用(学习路线总览)

Agent 工程有一条硬依赖链:后面的每一层都建立在前面之上,跳层学会「知其然不知其所以然」。这是本文档的章节顺序,也是推荐的学习顺序:

LLM/Prompt(地基)
   ↓ 靠什么让模型「动手」
Tool Use + ReAct(Agent 的最小内核)
   ↓ 手写循环太累,抽象出来
Agent 框架(LangGraph / CrewAI ...)
   ↓ 模型记不住、知识不够,要喂对上下文
RAG + Memory(上下文工程)
   ↓ 标准化「模型↔外部工具」的接口
MCP / Skills / Plugins(能力封装)
   ↓ 单个 Agent 搞不定复杂任务
多 Agent + 生产化(编排/评估/可观测)
   ↓ 让 Agent 真正操作现实世界
Computer Use / Browser Use / Sandbox(接口)

为什么值得按这个顺序学:Agent 的每个「新能力」都是为了解决前一层的一个具体缺陷(模型不会动手→给工具;循环太繁琐→给框架;知识不够/记不住→给 RAG 和记忆;接口不统一→给 MCP;单体不够强→给多 Agent)。理解「每层解决什么痛点」比记住工具名重要得多。

2. 第一层 · 地基:LLM 与 Prompt

在依赖链中的位置:一切之上的地基。Agent = LLM + 动作 + 循环,LLM 是那个「大脑」。不理解 LLM 的本质与边界,后面所有设计都是空中楼阁。

2.1 LLM 的本质 🔴核心必学

是什么:GPT / Claude / Gemini 这类模型,本质是纯文本变换函数——输入文本,输出文本。它本身不联网、不记忆对话、不会执行任何动作

为什么这点最值得先记牢:初学者最大的误解就是把 LLM 当成一个「无所不能的助手」。实际上,联网、记忆、动手全都是外部系统给它套上的能力(这正是后面 Tool、Memory、Agent 存在的原因)。把 LLM 想成一颗「只会思考、四肢瘫痪、失忆」的大脑,整个 Agent 工程的逻辑就通了。

使用边界 / 坑

2.2 Token 与 Context Window 🔴核心必学

Token:LLM 处理的最小单位,不是字符。约定俗成的估算:中文约 1.5–2 token/字,英文约 1.3 token/词。计费和上下文长度都按 token 算——这直接决定你的成本和能塞多少内容。

Context Window(上下文窗口):模型一次能「看到」的 token 总量。2026 年前沿模型大约在 256k–2M token 之间。

关键坑(务必记住)上下文不是越长越好。模型对「中间部分」的信息容易视而不见(业界称 "lost in the middle")。所以哪怕窗口有 200 万 token,也不能无脑把所有资料一股脑塞进去——该放什么、放在哪个位置,本身是一门工程(这就是后面「上下文工程」的由来)。

2.3 Prompt 工程 🔴核心必学

是什么:设计发给 LLM 的输入文本以获得更好输出。包含:

三个必会技巧

技巧是什么何时用
Zero/One/Few-shot 🔴给 0 / 1 / 2–5 个示范例子Few-shot(2–5 例)通常显著提升准确率,尤其是要固定输出格式、风格时
Chain-of-Thought(CoT,思维链) 🔴让模型「先推理再给结论」;最简单的写法是加一句"一步一步思考"数学、逻辑、多步推理任务;简单事实问答不需要
Structured Output(结构化输出) 🔴让模型输出 JSON / 固定 schema 而非自由文本Agent 的命脉——框架靠它解析模型意图(调哪个工具、传什么参数)

为什么 Structured Output 是 Agent 的前提:Agent 框架需要机器可解析的输出才能知道「模型现在想调用哪个工具、参数是什么」。大多数 LLM API 提供 response_format 之类的开关强制 JSON 输出。这是从「Prompt」跨向「Tool Use」的关键桥梁。

Prompt 工程的边界:Prompt 能调行为、给格式、给少量示例,但改不了模型的底层知识和能力。需要注入大量领域知识→用 RAG;需要模型稳定学会某种行为/格式→考虑微调(fine-tuning)。别指望靠堆 Prompt 解决一切。

3. 第二层 · Agent 的诞生:Tool Use 与 ReAct

在依赖链中的位置:这是「LLM → Agent」的质变点。给瘫痪的大脑装上手脚(工具)和一个循环(ReAct),Agent 就诞生了。这一层是整个知识库最核心的一层。

3.1 Agent 的定义 🔴核心必学

是什么:以 LLM 为核心的系统,在一个循环里「感知状态 → 做决策 → 执行动作 → 观察结果」,直到目标完成。

三要素(缺一不是 Agent)

  1. LLM 推理(大脑)
  2. 动作能力(工具/手脚)
  3. 持续循环(不是一问一答,而是反复迭代直到完成)

判断价值:这个定义值得逐字记住——它是区分「Agent」和「普通聊天机器人 / 单次 LLM 调用」的唯一标准。面试和架构决策时反复用得到。

3.2 Tool Use / Function Calling 🔴核心必学

是什么:让 LLM 调用预先定义好的函数(查数据库、算数、联网、读文件)的机制。

机制(务必理解流程)

  1. 你把工具的「名字 + 描述 + 参数 schema」告诉模型;
  2. 模型不直接回答,而是返回一个结构化的调用请求(调哪个工具、传什么参数);
  3. 你的系统真正执行这个函数(模型自己不执行任何东西);
  4. 把执行结果喂回模型,进入下一轮。

关键认知模型只负责「决定调什么」,真正执行的永远是你的代码。 这既是能力也是安全边界的根源(见第 9 章「致命三元组」)。

3.3 ReAct 模式 🔴核心必学

是什么:最经典的 Agent 循环模式——「Thought(思考)→ Action(行动)→ Observation(观察)」不断重复,直到任务完成。

为什么值得学:几乎所有 Agent 框架内部都实现了 ReAct 的变体。理解了 ReAct,你就理解了 LangGraph / CrewAI / AutoGen 内部到底在转什么圈。建议:先手写一遍最朴素的 ReAct 循环(用 Anthropic SDK 原生 tool_use),再去学框架——否则框架会变成黑盒。

Agent Loop(循环)的终止条件:模型主动发出「完成」信号 / 达到步数上限 / 预算耗尽。这三个终止条件必须显式设计,否则 Agent 可能无限循环烧钱。

3.4 单会话自我改进:Self-Refine vs Reflexion 🟡重要

概念机制有无持久记忆
Self-Refine单次会话内自评自改:Actor 出答案 → Critic 挑问题 → Actor 修订❌ 不需要记忆层
Reflexion在 Self-Refine 基础上,把「反思总结」写进持久的情景记忆;下次任务先检索这些教训再动手✅ 需要记忆

价值判断:这两个是 Agent「自我提升」的入门套路,理解即可;生产中更常用的是外部评估(eval)+ 人工反馈,而非让 Agent 自己反复空转。

这一层学完你能做什么:一个能查天气、能算数、能总结论文的最小 Agent(约 70–150 行代码),完全跑通 ReAct 循环。

4. 第三层 · Agent 框架

在依赖链中的位置:手写 ReAct 循环、状态管理、记忆集成很快会变得繁琐。框架把这些反复出现的模式抽象出来。先手写过、再用框架,才知道框架帮你省了什么。

4.1 为什么需要框架 🟡重要

框架封装了:ReAct 循环、状态管理、记忆集成、多工具组合。核心价值是别重复造轮子,尤其在状态复杂、多 Agent 协作时。

反过来的坑:框架抽象层会掩盖底层机制。不理解 ReAct 就上框架,出了 bug 完全无从下手。框架也有学习曲线和「厂商锁定」成本——简单任务可能手写更快。

4.2 四大框架横评 🟡重要(选一个深入,别都学)

框架核心抽象强项学习曲线什么时候选它
LangGraph基于图的状态机可视化拓扑、复杂/带分支循环的工作流中等流程复杂、需要精确控制状态流转和分支
AutoGenAgent 会话协议多 Agent 对话、群聊、层级模式中等想让多个 Agent「对话式」协作
CrewAI基于角色的任务执行层级编排、角色分工清晰平缓想快速搭「经理+员工」式角色团队
Smolagents轻量循环封装简单、开销小只想在朴素 ReAct 上加一点点封装

学习建议:原仓库的做法是「用 2–3 个框架实现同一个 Agent」以体会架构取舍。判断:这个练习很有价值——同一个需求在不同框架里的写法差异,能让你真正理解每个框架的设计哲学,而不是背 API。

删除说明:原仓库还罗列了大量框架的 GitHub 链接和 star 数,此处砍掉——框架选型看需求,star 数不是学习价值。

5. 第四层 · 上下文工程:RAG 与 Memory

在依赖链中的位置:LLM「知识不够 + 记不住」是两大硬伤。RAG 解决「知识不够」(把外部资料检索进上下文),Memory 解决「记不住」(跨轮/跨会话保留信息)。二者合称上下文工程——工程化地决定「每次调用 LLM 时,上下文窗口里到底装什么」。

5.1 Context Engineering(上下文工程)🔴核心必学

是什么:工程化地设计「每次 LLM 调用时,上下文窗口里放什么信息」——把 RAG 检索结果、记忆、工具 schema、对话历史,组装成最优的上下文。

为什么它是当代 Agent 工程的核心词:因为模型能力越来越强,瓶颈从「模型不够聪明」转向了「给模型的信息对不对」。Garbage in, garbage out 在 Agent 时代被放大——上下文里塞了无关信息、漏了关键信息、或把关键信息放在了「中间被忽略」的位置,Agent 就会犯蠢。

5.2 RAG(检索增强生成)🔴核心必学

是什么:两阶段架构。

【入库阶段】文档 → 切块(chunk) → 向量化(embed) → 存入向量库
【查询阶段】问题向量化 → 语义检索 → 取 top-K 相关块 → 拼进 prompt → LLM 作答

支撑 RAG 的关键概念(这些是「靠什么支撑」的答案):

概念是什么关键坑
Embedding(向量化) 🔴把文本/图像转成 N 维向量,语义相近的向量距离近密集向量用 sentence-transformers 等;稀疏用 BM25
Vector DB(向量库) 🔴为「近似最近邻(ANN)」检索优化的存储,比暴力扫描快几个数量级例:Pinecone / Weaviate / Milvus。别为小数据上重型向量库
Semantic Search(语义检索) 🔴按「意思」检索,"电动车充电" 能命中 "EV 充电教程"对比传统关键词检索(BM25)的「字面匹配」
Chunking(切块) 🔴把长文档切成 200–1000 token 的段切块质量直接决定 RAG 效果;切太碎丢上下文,切太大检索不准
Hybrid Search(混合检索) 🟡语义检索(embedding) + 关键词检索(BM25) 结果合并通常比单用任一种都好,是生产 RAG 标配
Reranking(重排) 🟡先粗检索 top-50,再用更贵的 cross-encoder 精排到 top-5 喂给 LLM例:Cohere Rerank / bge-reranker。提升精度但增加延迟成本
Contextual Retrieval(上下文检索) 🟡向量化时把「文档上下文摘要」和块一起编码解决「孤立的块丢失上下文」问题

RAG 的使用边界(何时不用)

5.3 Memory(记忆)🟡重要

两个正交的分类维度(这是理解记忆的关键框架):

两个维度可以叠加(例如「长期情景记忆」= Reflexion 用的那种)。

RAG vs Memory 的关系(易混,重点):技术上高度相似(都靠向量检索),但目的不同——RAG 是「注入外部知识文档」,Memory 是「记住交互过程中产生的信息」(用户偏好、历史结论、教训)。实现上 Memory 常复用 RAG 的向量检索栈。

5.4 Fine-tuning(微调)⚪️了解即可

是什么:用自定义数据重训模型,把知识/行为编码进权重。与 RAG(推理时加数据)本质不同。

边界:适合固定输出格式、稳定行为;不适合快速变化的事实(改一次事实要重训一次,成本高)。对多数 Agent 场景,优先 RAG + Prompt,微调是最后手段。

6. 第五层 · Claude Code 生态:MCP / Skills / Plugins

在依赖链中的位置:前面 Tool Use 是「一个 Agent 内部」调工具。现实里工具千千万,每接一个都手写胶水代码不可持续。MCP 把「模型↔外部工具」的接口标准化;Skills/Plugins 则是能力的封装与分发单位。这一层是 Track A(CLI 高手)和 Track B(构建者)的共享枢纽。

6.1 MCP(Model Context Protocol)🔴核心必学

是什么开放协议,让任何 LLM host 用同一套接口去连接外部 tool server。标准化了三类东西:Tools(工具)/ Resources(资源)/ Prompts(提示),通过 stdio / SSE / HTTP 传输。

为什么值得学(判断):MCP 是 2024–2026 Agent 生态的关键基础设施,相当于「Agent 工具界的 USB 接口」。学会它 = 你写一次 MCP server,所有支持 MCP 的 host(Claude Desktop、Claude Code 等)都能用你的工具,不用为每个客户端重写。

上手坑(来自源仓库 cookbook):

6.2 Skills 🔴核心必学

是什么:Claude Code 的行为包。核心是一个 SKILL.md 文件,描述「什么时候用、做什么、能用哪些工具」,外加可选的参考文件。

触发机制(关键)SKILL.md 的 frontmatter 描述(description)会自动触发 skill 加载——Claude 读到用户请求,匹配到描述就自动挂载这个 skill。

最大的坑描述含糊 → skill 永远不触发。解法:在 description 里加 2–3 个「当用户说 X 时」的具体触发短语。

6.3 Plugins / Marketplace ⚪️了解即可

是什么:把 Skills + 斜杠命令 + hooks + MCP 配置打包成一个分发单位。Marketplace 支持 claude plugin install 让社区共享扩展。

6.4 Claude Code 其他构件 🟡重要(Track A 必学)

构件是什么用途
Slash Commands/ 开头的指令,把 prompt 存到 .claude/commands/<name>.md 即可自定义封装常用 prompt
CLAUDE.md项目根目录、Claude Code 自动加载的 md 文件存项目级规则、约定、上下文
Hooks在特定事件前后执行的脚本:PreToolUse / PostToolUse / UserPromptSubmit / Stop / PreCompact 等自动化、拦截、注入。「自动化行为」必须靠 hook,不能靠模型记忆
Subagent从主会话派生的子 Agent,有独立上下文窗口和可配置的工具权限隔离复杂子任务、防止污染主上下文
Deep Agent内建规划 + 长期记忆 + 子 Agent 委派 + 可加载 skill 的「自足式」Agent 设计对比「只有 LLM + 工具」的极简 Agent

7. 第六层 · 多 Agent 与生产化

在依赖链中的位置:单个 Agent 有能力上限。复杂任务需要多 Agent 分工;上线则需要评估、可观测、成本控制这套「工程护栏」。这一层是从「玩具」到「产品」的分水岭。

7.1 多 Agent 编排模式 🟡重要

是什么:多个 Agent 协作完成任务。三种经典拓扑:

模式结构适用
Supervisor + Workers层级式,一个主管派活给工人任务可清晰分解、需要统一协调(最常用)
Swarm平等对等,Agent 互相传递无明确层级、动态协作
Debate多 Agent 辩论求共识需要交叉验证、提升答案质量

Handoff(交接):一个 Agent 把任务责任转给另一个,要处理上下文传递和失败兜底——这是多 Agent 系统最容易出 bug 的地方。

判断/坑多 Agent 不是银弹。它引入了协调开销、上下文传递损耗和调试难度。能用单 Agent + 好工具解决的,别上多 Agent。 先问「单 Agent 为什么不够」。

7.2 Harness Engineering(护栏/框架工程)🔴核心必学

是什么:工程化「模型之外的执行/控制层」——包括 Agent 循环、工具注册表、上下文管理、权限、安全、记忆、评估、可观测、重试逻辑。

为什么这是生产化的核心认知:一句话——「模型只是 Agent 的一小部分,真正决定 Agent 好不好用的是外面这层 harness」。理解这点,你才知道生产 Agent 的工程量 80% 在模型之外。

相关的两个工程视角:

7.3 评估与可观测 🔴核心必学

概念是什么工具举例
Eval(评估) 🔴用测试用例集跑 Agent,量化衡量准确率、延迟、成本promptfoo / LangSmith / langfuse evals
Observability(可观测) 🔴记录 Agent 每一步内部动作(LLM 调用、工具、结果)用于调试和回放langfuse / Helicone / weave
Agent-as-Judge 🟡用一个 Agent 去评判另一个 Agent 的输出——

为什么必学没有 eval 的 Agent 迭代 = 蒙眼开车。你改了个 prompt,到底变好还是变坏?只有量化评估能回答。可观测则是出 bug 时唯一能「回放案发现场」的手段。这两个是生产 Agent 与玩具 Agent 的核心区别。

7.4 成本与性能优化 🟡重要

概念是什么何时用
Prompt Caching缓存 prompt 前缀,重复查询享约 90% 折扣长上下文 + 重复请求(如同一份长文档反复问)
Streaming逐 token 返回,提升「体感」响应速度交互式应用
Batch API批量提交非紧急请求,24 小时内处理,约 5 折不适合交互式;适合大批量离线处理

判断:这些是「知道存在、用时再查」的优化手段,不必一开始死磕。优先把功能跑对,再谈优化。

7.5 进阶概念(阅读向)⚪️了解即可

原仓库列了 PAR 循环(Plan-Act-Reflect)、Agent 工作边界、Agent-as-judge 等 12+ 进阶模式。判断:这些属于「读论文/读文档」层面的前沿话题,动手做出前 6 层再回来看,否则消化不了。

8. 第七层 · Agent 接口:Computer / Browser / Sandbox

在依赖链中的位置:前面的工具都是「有 API 的」。但现实世界大量系统没有 API。这一层让 Agent 像人一样「看屏幕、点鼠标、操作浏览器」,并安全地执行自己写的代码。也是 Track A/B 的共享枢纽。

8.1 Computer Use(计算机操作)🟡重要

是什么:Agent 通过「截图 → 视觉理解 → 计算坐标 → 模拟鼠标键盘」来操作真实桌面应用——像人一样交互,无需 API。

边界/坑:慢、脆(UI 一变就失效)、成本高(每步都要视觉模型看截图)。有 API 就别用 Computer Use,它是「实在没别的办法」时的兜底。

8.2 Browser Use(浏览器操作)🟡重要

是什么:Agent 操作网页,优先用 DOM 感知(CSS 选择器)导航,视觉作为兜底。开源参考:browser-use 框架。

判断:比 Computer Use 更实用(DOM 比像素稳)。做网页自动化、爬取交互式站点时的主流方案。

8.3 Code Sandbox(代码沙箱)🔴核心必学(安全相关)

是什么:隔离的执行环境,让 Agent 写的代码「跑起来但伤不到宿主机」。

为什么必学只要你让 Agent 执行它自己生成的代码,就必须有沙箱——否则一个幻觉出来的 rm -rf 就能毁掉你的机器。这是安全红线,不是可选项。

支撑技术(了解即可)

技术特点
FirecrackerAWS 开源的 microVM(Rust 写),驱动 AWS Lambda 和 E2B 沙箱;强隔离 + 快启动
microVM轻量 VM,100ms 内启动,独立内核;兼顾 Docker 的速度和 VM 的隔离强度
gVisorGoogle 的用户态内核,拦截 syscall;隔离性介于容器和 VM 之间

9. 安全与红线

Agent 能「动手」,安全就从「模型会不会说错话」升级成「模型会不会干坏事」。这一章的概念每个做生产 Agent 的人都必须懂。🔴核心必学

9.1 Prompt Injection(提示注入)🔴

是什么:攻击者把恶意指令藏在 Agent 会读到的内容里(网页、邮件、文档),试图覆盖原始指令。

根因LLM 无法区分「哪些是给它的指令、哪些是数据里夹带的指令」——在模型眼里都是文本。这是架构级缺陷,没有彻底的解法,只能缓解。

9.2 Lethal Trifecta(致命三元组)🔴

是什么:三个能力同时具备就构成重大漏洞:

  1. 能访问敏感数据
  2. 会接触不可信内容
  3. 对外通信

为什么值得刻进脑子:这三者齐了,攻击者就能通过注入让 Agent「读你的私密数据 → 打包 → 发到外部」。防御原则:至少砍掉其中一个能力。这是设计任何有外部访问权 Agent 时的第一检查项。

9.3 Guardrails(护栏)🟡

是什么:拦截 LLM 越界行为的规则层——挡提示注入、防 PII(个人隐私信息)泄露、拦有害输出。工具:NeMo Guardrails / Guardrails AI。

10. ★ 易混概念对比表(重点)

这是本知识库最有价值的部分之一。以下概念在学习和面试中极易混淆,逐一厘清。

10.1 【核心】Skills vs MCP vs Tools 🔴

这三个是 Claude Code / Agent 生态里最容易搞混的三兄弟。一句话先定性:Tool 是「一个动作」,MCP 是「工具的传输协议/接口」,Skill 是「一套行为剧本」。 层级不同,不是同类东西。

维度Tools(工具)MCP(协议)Skills(技能)
是什么LLM 能调用的单个函数(查数据库、算数、发请求)开放协议/接口标准,规定「模型 host 如何连接外部工具 server」Claude Code 的行为包(一个 SKILL.md + 参考文件)
抽象层级最底层:一个具体能力中间层:工具的传输/封装标准最上层:何时用哪些工具做什么的剧本
作用让模型「动手」执行一个动作让「一次编写的工具」能被所有 MCP host 复用让 Claude 在合适场景自动加载一组上下文+动作指引
触发/使用模型在 ReAct 循环里主动调用host 与 server 之间的通信管道frontmatter description 匹配用户意图自动挂载
谁在用所有 Agent需要跨 host 复用工具的场景Claude Code(及兼容生态)
类比一个 App 里的一个按钮USB 接口标准一份「遇到 X 情况照这个流程办」的 SOP

关系串起来:一个 MCP server 对外暴露若干 Tools;一个 Skill 的剧本里会声明「本场景可以用哪些 Tools(可能来自 MCP)」。三者是协作而非竞争关系。

10.2 Agent vs Workflow 🔴

维度AgentWorkflow(工作流)
控制流LLM 动态决定下一步做什么预先编排好的固定步骤
灵活性高,能应对未知情况低,只走既定路径
可预测性低(可能跑偏、烧钱)高,可控可复现
成本/延迟高(多轮 LLM 调用)
何时用任务开放、路径无法预知任务明确、步骤固定

【补充】关键判断:业界(如 Anthropic 的工程博客)反复强调——能用 Workflow 解决的,别上 Agent。Agent 的动态性是双刃剑,只有当「无法预先写死步骤」时才值得付出它的不可预测性和成本代价。

10.3 RAG vs 长上下文(Long Context)🔴

维度RAG长上下文(直接全塞)
做法检索 top-K 相关块喂给模型把整份资料塞进上下文窗口
成本低(只喂相关部分)高(每次都为全量 token 付费)
准确性风险检索不准就漏信息"lost in the middle",中间信息被忽略
知识更新改向量库即可,实时每次都要重塞
何时用知识量大、需溯源、频繁更新知识量小、能一次塞下、要求全局理解

判断:不是二选一。小资料直接塞更简单;大资料/要溯源用 RAG;有时两者结合(RAG 检索 + 长上下文放关键全文)。

10.4 ReAct vs Plan-and-Execute 🟡

维度ReActPlan-and-Execute
策略走一步看一步:思考→行动→观察→再思考先制定完整计划,再逐步执行
优点灵活,能随时纠偏步骤清晰,减少中途「迷路」,省 LLM 调用
缺点可能短视、来回打转计划一旦错,后面全错;难应对意外
何时用环境多变、需实时反应任务可提前规划、步骤相对确定

【补充】 实务中常见混合:先 Plan 出大纲,每一步内部再用 ReAct 微调。别把它们当对立面。(小云雀那种「先思考→列计划→逐步执行并实时显示每步」,正是 Plan-and-Execute 的典型形态。)

10.5 A2A vs MCP ⚪️

MCPA2A(Agent-to-Agent)
连接谁Agent ↔ 工具/资源Agent ↔ Agent
定位让 Agent 用工具让 Agent 之间通信协作
关系姊妹标准,互补不冲突Linux Foundation 托管

11. 知识关联图(依赖/支撑/产出)

回答「一个知识点依赖什么、靠什么支撑、最终产出什么」。

核心依赖链(从下往上,下层是上层的前提)

    最终产出 →   生产级 Agent / 多 Agent 系统 / Agent 产品
                          ▲ 靠…支撑
        ┌──────────────┬──────────────┬──────────────┐
        │  Harness      │  评估/可观测   │  安全护栏     │   ← 生产化护栏层
        │  多Agent编排   │  (eval/obs)   │ (致命三元组)  │
        └──────────────┴──────────────┴──────────────┘
                          ▲ 依赖
        ┌──────────────┬──────────────┬──────────────┐
        │ MCP/Skills    │  RAG/Memory   │ Computer/     │   ← 能力扩展层
        │ (工具标准化)   │ (上下文工程)   │ Browser/Sandbox│
        └──────────────┴──────────────┴──────────────┘
                          ▲ 依赖
        │        Agent 框架 (LangGraph/CrewAI...)         │   ← 抽象层
                          ▲ 依赖(框架内部就是它)
        │     Tool Use + ReAct 循环(Agent 最小内核)       │   ← Agent 内核
                          ▲ 依赖
        │  LLM + Prompt(Structured Output 是关键桥梁)    │   ← 地基

几条关键关联(用文字说清)

12. 两条学习路线:CLI 高手 vs Agent 构建者

源仓库把学习者在完成共享地基(第 2–3 章)后分成两条路。判断:这个分叉很有价值——不是所有人都要「从零造 Agent」,很多工程师的诉求是「把现成 CLI Agent 用到极致」。

维度Track A · CLI 高手Track B · Agent 构建者
目标高效使用现成 CLI Agent(Claude Code / Codex 等)从零构建 Agent
共享地基LLM 基础 + Prompt(第 2–3 章)同左
专属路径A1 选型配置 → A2 工作流模式 → A3 生产集成第 3–7 章:Tool Use → 框架 → RAG → 多 Agent
共享枢纽第 6 章 MCP(为 CLI 接工具)+ 第 8 章(委派任务给子 Agent)第 6 章(作为 Agent 运行时)+ 第 8 章(内嵌接口)
时长约 8–10 周约 16–22 周(兼职 5–7 个月)
终点优化 CLI 委派 + MCP 集成生产级多 Agent 系统

怎么选

13. 术语速查表

随时可查。🔴核心 / 🟡重要 / ⚪️了解。

术语一句话定义级别
LLM纯文本变换函数,本身不联网/不记忆/不动手🔴
TokenLLM 处理的最小单位(非字符),计费和上下文长度都按它算🔴
Context Window模型一次能看到的 token 总量;不是越长越好,中间易被忽略🔴
Prompt / System Prompt发给模型的输入 / 定义角色规则的那部分🔴
Few-shot给 2–5 个示例提升准确率🔴
Chain-of-Thought (CoT)让模型先推理再结论("一步一步思考")🔴
Structured Output模型输出 JSON/固定 schema,是 Agent 解析意图的基础🔴
AgentLLM + 动作 + 循环,感知→决策→执行→观察直到完成🔴
Tool Use / Function Calling模型返回结构化调用请求,系统实际执行再喂回结果🔴
ReActThought→Action→Observation 循环,Agent 经典模式🔴
Agent LoopLLM→工具→结果→LLM 的循环;终止=完成/步数上限/预算耗尽🔴
Self-Refine单会话内自评自改(Actor+Critic),无持久记忆🟡
ReflexionSelf-Refine + 持久情景记忆,跨任务累积教训🟡
RAG文档切块向量化入库 → 问题检索 top-K → 拼进 prompt 作答🔴
Embedding文本转 N 维向量,语义近则距离近🔴
Vector DB为近似最近邻(ANN)检索优化的向量存储🔴
Chunking长文切成 200–1000 token 的段,质量决定 RAG 效果🔴
Hybrid Search语义检索+关键词(BM25)合并,生产 RAG 标配🟡
Reranking粗检索 top-50 后用 cross-encoder 精排 top-5🟡
Fine-tuning重训模型把知识/行为编码进权重;适合固定行为不适合易变事实⚪️
Memory两维度:时间(短/长期)×内容(工作/情景/语义/程序)🟡
Context Engineering工程化决定每次调用上下文里放什么🔴
Harness Engineering工程化模型之外的执行/控制层(循环/权限/记忆/eval...)🔴
MCP开放协议,标准化模型 host 连接外部工具 server🔴
SkillsClaude Code 行为包(SKILL.md),描述匹配即自动加载🔴
Plugins/MarketplaceSkills+命令+hooks+MCP 的打包分发单位⚪️
Slash Commands/ 开头的自定义指令🟡
CLAUDE.md项目根目录自动加载的规则/上下文 md🟡
Hooks事件前后执行的脚本(PreToolUse/Stop 等);自动化靠它🟡
Subagent主会话派生的子 Agent,独立上下文和工具权限🟡
Deep Agent内建规划+长记忆+子Agent+可加载 skill 的自足式 Agent⚪️
Multi-Agent多 Agent 协作:Supervisor+Workers / Swarm / Debate🟡
HandoffAgent 间任务交接,含上下文传递和失败兜底🟡
A2AAgent 间通信开放协议,MCP 的姊妹标准⚪️
Eval用测试集量化衡量 Agent 准确率/延迟/成本🔴
Observability记录 Agent 每步动作用于调试回放🔴
Prompt Caching缓存 prompt 前缀,重复查询约 9 折🟡
Prompt Injection内容里夹带恶意指令,根因是模型分不清指令与数据🔴
Lethal Trifecta敏感数据+不可信内容+对外通信三者齐=重大漏洞🔴
Guardrails拦截越界行为的规则层(防注入/PII/有害输出)🟡
Computer Use截图→视觉→坐标→模拟鼠标键盘,像人一样操作桌面🟡
Browser UseDOM 感知导航网页,视觉兜底🟡
Code Sandbox隔离执行 Agent 写的代码防伤宿主机🔴
Firecracker / microVM / gVisor沙箱底层隔离技术,权衡启动速度与隔离强度⚪️

14. 学习验收标准(测试 & 自我检验)

这一章是全书的「体检表」。前面十三章教你「是什么、怎么做」,这一章只回答一个问题:你到底学没学会?

14.0 怎么用这套验收标准

每一层都有三档,按顺序过,不要跳:

  1. 概念自测题 —— 合上书,用嘴(或者对着空气)把每道题讲清楚。讲得出来才算「理解」,只能翻书找答案 = 没懂。侧重「为什么」,不是「背定义」。
  2. 动手验收标准 —— 明确列出「你能独立做出什么」。做不出来,说明这层是纸面知识,回去重做那一层的项目。判据是二值的:能跑通 / 跑不通,没有「大概懂了」。
  3. 易混辨析测试 —— 针对该层最容易混淆的点,判断正误 + 一句解析。这些是面试和实战里最爱翻车的地方。

过关规则:三档全过 → 进入下一层。任何一档卡住 → 回到对应层重学,别硬往下推——Agent 知识是叠罗汉,地基塌了上面全塌。

关于「参考答案」:给的是要点,不是标准答案范文。你的表述只要覆盖要点、逻辑对,就算过。

14.1 第一层 · 地基:LLM 与 Prompt

概念自测题

  1. 为什么说 LLM 本质是「给定上文、预测下一个 token 的概率分布」,这个视角能解释哪些日常现象? 要点:自回归逐 token 生成 → 解释了「幻觉」(高概率≠事实)、「越写越顺 / 也越跑偏」(后文以前文为条件)、「同一个问题换个问法结果不同」(输入即条件)、以及为什么流式输出是逐字蹦出来的。

  2. Context Window 是什么?它和「模型记性」是不是一回事? 要点:上下文窗口 = 单次请求里 input+output 能容纳的 token 上限;模型本身无状态,多轮对话是每次把完整历史重发一遍。「记性」是应用层把历史塞进窗口造出来的错觉,不是模型内部存储。超窗就得截断/压缩/检索。

  3. Token 不等于「字」或「词」,这个区别在工程上会带来什么坑? 要点:token 是子词单位;中文/代码/非英文的 token 密度和英文差异很大 → 成本估算不能按字数拍脑袋、不能用别家分词器估、上下文预算要按实测 token 算。

  4. Few-shot、CoT、Structured Output 各自解决什么问题?给一个「该用哪个」的判断。 要点:Few-shot(给范例)→ 对齐输出格式/风格/边界;CoT(让它先想再答)→ 提升多步推理正确率;Structured Output(约束成 schema)→ 让输出可被程序稳定解析。分类看格式对齐用 few-shot,数学/逻辑用 CoT,要喂给下游代码用 structured output。

  5. 为什么 Structured Output 是 Agent 的前提?(重点理解题) 要点:Agent = 循环里「模型决定下一步动作」。动作要被代码执行,就必须能被可靠解析成结构化指令(调哪个工具、传什么参数)。如果输出是自由散文,程序没法稳定提参数,循环就跑不起来。所以结构化输出不是锦上添花,是 Agent 能自动化的地基。

动手验收标准

易混辨析测试

14.2 第二层 · Agent 的诞生:Tool Use 与 ReAct

概念自测题

  1. 一句话说清 Agent 和「一次 LLM 调用」的本质区别。 要点:Agent = 模型在循环中自主决定下一步动作(调工具→看结果→再决定),直到任务完成;一次调用是「输入→输出」单程,没有反馈回路、没有模型主导的轨迹。

  2. Function Calling / Tool Use 的完整回合是怎么转的?谁执行工具? 要点:模型返回 tool_use(工具名+参数)→ 你的代码执行工具 → 把 tool_result 塞回对话 → 再请求模型。模型只「决定调用」,不亲自执行;结果必须带回上下文模型才知道。

  3. ReAct 里的 Reason 和 Act 分别指什么?为什么要交替而不是「想完一次性做完」? 要点:Reason=推理下一步该干嘛,Act=调工具。交替是因为每步动作的结果不可预知,必须拿到真实结果再决定下一步;一次性规划到底在环境有不确定性时会脱节。

  4. 循环的「终止条件」为什么是 Agent 设计里必须显式处理的?不处理会怎样? 要点:模型不再调工具(如 end_turn)= 正常结束;但还要防死循环——设最大轮次、处理暂停/继续信号。不设上限,一个坏工具或反复试错就能把 token 和钱烧光、卡死。

  5. Self-Refine 和 Reflexion 的区别是什么? 要点:Self-Refine = 同一次任务内「产出→自我批评→改进」的迭代;Reflexion = 跨尝试,把失败的反思写进记忆,下一次尝试带着教训重来。前者是本轮打磨,后者是「吃一堑长一智」的跨回合学习。

动手验收标准

易混辨析测试

14.3 第三层 · Agent 框架(LangGraph / CrewAI / AutoGen / Smolagents)

概念自测题

  1. 你已经能用原生 SDK 手写 Agent 循环了,为什么还要用框架?框架到底替你省了什么? 要点:省的是状态管理、循环编排、多 Agent 通信、持久化/断点续跑、可视化、重试。框架不是新能力,是把你手写的样板工程化。先能手写再用框架,否则框架报错你根本不知道底层出了啥。

  2. LangGraph 的核心抽象是「图(状态机)」,这带来什么好处?适合什么场景? 要点:把 Agent 流程建成节点+边+共享状态的图 → 显式控制流、可循环、可条件分支、可加人工节点、可断点续。适合流程复杂、要精确控制走向、要 human-in-the-loop 的场景。

  3. CrewAI 和 AutoGen 都做多 Agent,它们的组织范式有何不同? 要点(按理解表述即可):CrewAI 偏「角色分工+任务流程」(像一个有明确岗位的团队);AutoGen 偏「多 Agent 对话式协作」(Agent 之间互相发消息协商)。一个更像流水线编排,一个更像会议室对话。

  4. Smolagents 的「code agent」思路(让模型写代码来调用工具)相比传统 JSON tool-call 有什么取舍? 要点:模型直接写代码调工具 → 能用循环/条件/组合,一段代码顶多次 round-trip,表达力强、省往返;代价是要在沙箱里执行代码、安全边界更重、可控性/可审计性下降。

  5. 框架选型时,什么情况下你反而不该上框架? 要点:任务就是「单次调用+一两个工具」、流程线性简单、团队要对每一步精确掌控、或框架抽象反而挡住你调试时——直接原生 SDK 更清爽。别为了用框架而用框架。

动手验收标准

易混辨析测试

14.4 第四层 · 上下文工程:RAG 与 Memory

概念自测题

  1. 「Context Engineering(上下文工程)」这个概念,比单纯的「Prompt Engineering」大在哪? 要点:Prompt 工程管「怎么写这次的提示词」;上下文工程管「在有限窗口里,该放什么、不放什么、怎么组织、何时检索/压缩/清理」——是对整个上下文预算的系统性经营,RAG、Memory、压缩、工具结果裁剪都在其中。

  2. 完整讲一遍 RAG 的全流程(从文档到答案)。 要点:文档 → 切块(chunking)→ 向量化(embedding)→ 存入向量库 → 查询时把 query 也向量化 → 相似度检索 top-k → 把检索到的片段拼进上下文 → 模型基于这些片段生成答案(可带引用)。

  3. Embedding 为什么能实现「语义检索」?它和关键词匹配的本质差别是什么? 要点:embedding 把文本映射到向量空间,语义相近的文本向量距离近 → 检索靠向量相似度,能匹配「意思相同但用词不同」的内容;关键词匹配只认字面,同义换词就失效。

  4. Chunking 的粒度为什么是个需要权衡的工程决策?切太大 / 太小分别会怎样? 要点:切太大 → 单块含无关信息、稀释相关性、浪费 token;切太小 → 上下文割裂、丢失跨句语义、检索到碎片答不全。要按内容结构和检索目标调,常配重叠。

  5. RAG 解决的是「知识」问题,Fine-tuning 解决的是什么问题?什么时候该选哪个? 要点:RAG 注入外部/易变/可溯源的知识(改知识只需改库,不动模型);Fine-tuning 改的是模型的行为/风格/固有能力(学格式、学领域语气、学难以用提示词表达的模式)。要「知道新事实」用 RAG,要「改说话方式/稳定行为」用微调,两者常配合。

动手验收标准

易混辨析测试

14.5 第五层 · Claude Code 生态:MCP / Skills / Plugins

概念自测题

  1. MCP(Model Context Protocol)要解决的核心问题是什么?一句话说清它是什么。 要点:MCP 是一个标准协议,让 Agent/客户端以统一方式接入外部工具、数据源、服务(server)。解决的是「每接一个外部能力就要写一套私有对接」的碎片化问题——它是「Agent 世界的 USB 接口」。

  2. Skills 是什么?它靠什么机制做到「用到才加载」,这对上下文预算有什么意义? 要点:Skill 是一个带 SKILL.md 的文件夹,封装某类任务的指令/流程/最佳实践。默认只把简短描述放进上下文,模型判断相关时才读取完整内容(渐进式披露)→ 保持固定上下文精简,按需加载细节。

  3. Hooks 在 Claude Code 里承担什么角色?为什么「自动化行为」得靠 hook 而不能靠模型自觉? 要点:Hook 是在特定生命周期事件(会话开始、工具调用前后等)由 harness 确定性执行的钩子。要「每次都自动做某事」必须由 harness 保证执行——模型是概率性的,不能保证「每次」,所以自动化规则落在 hook。

  4. Subagent 解决了什么问题?什么场景下你会派一个 subagent 而不是主循环直接干? 要点:subagent 是独立上下文的子任务执行者。用于:并行/独立的工作流、隔离脏上下文(大量搜索结果不污染主线)、用更便宜模型跑子任务、需要专门角色/工具集的探索。主线只留结论,不留过程。

  5. MCP、Skills、Tools 三者在「给 Agent 加能力」这件事上,各自的定位是什么? 要点:Tool = 单个可调用动作(原子能力);MCP = 通过标准协议批量接入一组外部工具/资源(连接层);Skill = 面向某类任务的指令与知识包(教模型「什么时候、怎么做」,本身不一定是可执行动作)。一个是「能做什么」,一个是「从哪接来一堆能做的」,一个是「该怎么做」。

动手验收标准

易混辨析测试

14.6 第六层 · 多 Agent 与生产化

概念自测题

  1. 多 Agent 编排里,「协调者-子 Agent(coordinator/worker)」和「对等对话」两种范式各适合什么? 要点:协调者模式适合「主 Agent 派活、子 Agent 干独立子任务、结果汇总」的分治;对等对话适合需要多方协商/审议/互相质疑的开放性问题。选型看任务能不能干净拆分。

  2. 什么是 Harness?它和「模型」的分工边界在哪? 要点:Harness 是包住模型的那层工程系统——负责跑循环、执行工具、管上下文、做重试、加护栏、记日志。模型负责「决定下一步」,harness 负责「让这个决定安全地、可靠地发生」。能力上限看模型,稳定性/可用性看 harness。

  3. 为什么说 Eval(评估)是 Agent 从 demo 走向生产的分水岭?没有 Eval 会怎样? 要点:Agent 行为是概率性的、改一处可能崩另一处。Eval 提供可量化的回归基线——每次改 prompt/模型/工具都能测「有没有变好/变坏」。没有 Eval,你只能靠「感觉」,线上出问题无法定位、无法防回归。

  4. Agent 的「可观测性(observability)」具体要观测什么? 要点:每一步的 token 用量/成本、工具调用与结果、每轮的 stop reason、延迟、错误率、完整轨迹(trace)。目的是能复盘「它当时为什么这么做」、能定位卡在哪、能算清花了多少钱。

  5. 成本优化有哪些主要手段?为什么「无脑换便宜模型」不是首选? 要点:手段包括 prompt caching(缓存稳定前缀)、按任务分级选模型、控制 effort/思考深度、裁剪上下文(context editing/压缩)、批处理、减少不必要的工具往返。换便宜模型直接牺牲能力上限,是最后手段;先榨干缓存和上下文优化这些「不掉质量」的空间。

动手验收标准

易混辨析测试

14.7 第七层 · Agent 接口:Computer / Browser / Sandbox

概念自测题

  1. Computer Use / Browser Use 让 Agent 具备了什么之前没有的能力?代价是什么? 要点:能力=像人一样操作 GUI/浏览器(截图理解、点击、输入)→ 覆盖没有 API 的系统。代价=慢、脆(UI 一变就断)、易错、需要视觉理解每一步、安全风险高(能点任何东西)。

  2. 为什么 Agent 执行代码/命令要放进 Sandbox?不隔离会怎样? 要点:Agent 生成的代码/命令是不可信的模型输出。沙箱隔离文件系统、网络、权限,限制资源,防止误删/越权/数据外泄/供应链攻击。不隔离 = 把 root 权限交给一个概率性系统。

  3. 「托管容器」和「自托管沙箱」在职责划分上有什么不同? 要点:托管——平台管容器生命周期、隔离、网络,你只声明能力;自托管——容器加固、出网限制、密钥托管、镜像可信、执行隔离全归负责。要把敏感数据/内网留在自己手里就自托管,图省事就托管。

  4. 给 Agent 装浏览器/电脑操作能力时,「哪些动作该单独做成受控工具、哪些交给通用 bash/点击」的判断依据是什么? 要点:不可逆/高危/需要审批/需要专门渲染或审计的动作 → 提成专用工具(可拦截、可门控、可确认);广度探索类交给通用能力。判据核心是「可逆性 + 是否需要门控」。

  5. Agent 做 GUI 操作时,「每步截图 verify」为什么几乎是铁律? 要点:GUI 状态不可预知、UI 会变、上一步可能没生效。每步截图确认当前状态再决定下一步 → 避免在错误状态上盲操作、能螺旋式纠错。不 verify 就是闭眼开车。

动手验收标准

易混辨析测试

14.8 安全与红线

概念自测题

  1. 什么是 Prompt Injection?它和「越狱(jailbreak)」是不是一回事? 要点:Prompt Injection = 攻击者把恶意指令藏进模型会读到的数据里(网页、文档、工具返回、邮件),诱导 Agent 执行非授权动作。它不是让模型「说坏话」(那更偏越狱),而是劫持 Agent 的行为。危险在于:数据和指令在上下文里没有硬边界。

  2. 「致命三元组(lethal trifecta)」是哪三个?为什么三者凑齐才致命? 要点:①能接触私有/敏感数据 ②能接触不可信内容(可能带注入)③能对外发送/外泄(出网/写外部)。三者同时具备时,注入的指令可以「读到秘密→通过外发通道传出去」,形成完整的数据外泄链。缺任一环,攻击就闭不了环。

  3. 为什么「把系统提示写得更强硬(你必须绝对不能…)」不能真正防住 prompt injection? 要点:injection 和系统指令都是文本,模型没有可靠机制区分「可信操作者指令」和「上下文里混进来的恶意指令」。提示词加固能降概率但不是边界。真正的防御是架构级:限制能力(砍掉三元组之一)、门控高危动作、隔离不可信内容、用非文本的操作者通道。

  4. Guardrails(护栏)一般在哪几个位置设?举两类。 要点:输入侧(过滤/校验进入模型的内容)、输出侧(检查/约束模型产出)、动作侧(高危工具调用前的门控/人工确认)、以及工具/权限层(最小权限、白名单)。核心思想:不信任单点,多层设防。

  5. 面对不确定或高风险请求,一个负责任的 Agent 设计应该「默认怎么做」? 要点:不可逆/高危动作默认先确认再执行、外部调用最小权限、拿不准先停下报告而非擅自行动、把敏感信息挡在上下文外。默认保守,把「继续」的决定权留给人。

动手验收标准

易混辨析测试

14.9 整体毕业标准

过了下面这些,你可以说自己入门 Agent 工程师了。注意:每一条都是「能独立做出来的东西」,不是「看过 / 了解过」。

  1. 能不依赖任何框架,用原生 SDK 手写一个多轮 ReAct Agent——多个工具、模型自主决策、循环有明确终止条件、能处理串行多步任务。(证明你懂 Agent 的底层机制,而不是只会调框架。)

  2. 能从零搭一个可用的 RAG 系统——切块→embedding→向量检索→拼上下文→基于检索内容作答且可溯源,并能对检索效果差的 case 做归因调优。(证明你掌握上下文工程的核心。)

  3. 能给一个 Agent 建立最小 Eval + 可观测性——写出可判定的测试用例跑出通过率、能做改动前后的回归对比、能对一次运行做 token/成本归因。(证明你能把 Agent 从 demo 推向可维护的生产。)

  4. 能对一个真实 Agent 做安全审查并加固——完成致命三元组自查、给高危动作加确认门控、构造一个 prompt injection 用例验证并拦下它。(证明你有生产级的安全意识,而不是只会让它跑通。)

  5. 能做出合理的架构选型判断并讲清理由——面对一个具体需求,能说清该用单次调用 / Workflow / 单 Agent / 多 Agent,该用 RAG 还是微调,该走 API 还是 computer use,并解释权衡。(证明你不是套模板,而是理解每个工具的边界和代价。)

一句话总结毕业线:给你一个模糊的真实需求,你能独立设计出方案、手写核心链路、搭好评估、堵住安全红线,并对每个技术选择讲得出「为什么是它、代价是什么」——到这一步,你入门了。


文档说明:本文档 90%+ 内容源自 WenyuChiou/awesome-agentic-ai-zh 的 README 路线图、glossary 术语表、RESOURCES 资源分类和 cookbook 实操坑;对比表(Agent vs Workflow、RAG vs 长上下文、ReAct vs Plan-and-Execute 的实务判断)和依赖关系图为在源仓库骨架上的结构化重组与工程判断补充,凡补充处已标注「【补充】」。未在源中明确的具体数字/版本一律省略而非编造。

由「学习AI的1000天 · 小学」整理 · 蒸馏自开源社区 · 仅供学习。