概念基础
围绕 12 周课程分层补齐概念,理解依赖链条。解释会持久化保存,离开页面不丢失。
各层前置要求
基础 · 工具与心智模型
建立代码阅读的基本图式,矫正对 Agent 工作方式的直觉,掌握变量追踪、控制流识别、API 调用模式
前置概念
无——这是课程的起点
补漏重点
- TypeScript 基本语法(变量声明、函数定义、async/await)
- 命令行基础操作(cd、ls、npm run dev)
- HTTP 请求的基本概念(GET/POST、JSON body)
- 代码阅读方法:从「认真看每一行」到「先画骨架再填细节」
理解 · 源码与实战
深入 Agent 各子系统:上下文工程、记忆系统、规划推理、安全护栏、多 Agent 协作、可观测性
前置概念
补漏重点
- LLM API 调用格式(system prompt vs user message 的区别)
- JSON Schema 的基本写法
- PostgreSQL 数据库基础(表、查询、索引)
- 向量和嵌入(embedding)的基本概念
- SSE(Server-Sent Events)与 WebSocket 的区别
- JWT 认证流程(签发→携带→验证)
建造 · 从零搭一个
从零实现最小 Agent 循环,接入 picturebook-kg 现有系统,加日志/质量门禁/retry,综合复盘
前置概念
补漏重点
- Node.js fetch API 的用法(headers、body、response 处理)
- Prisma ORM 基本操作(findMany、create、connect)
- cron 表达式语法(分 时 日 月 周)
- 指数退避算法(1s→2s→4s→8s + 随机抖动)
- 如何写系统 README(架构图、启动步骤、已知局限)
概念依赖链(按周展开)
第 1 周8 个核心概念
结构化阅读代码的系统方法:先画流程骨架,再标注函数意图,最后追踪数据变化
忽略细节,用 3-5 步画出代码的主要执行路径
依赖:代码阅读方法论
手动跟踪一个变量从初始化到最终使用的完整生命周期
依赖:代码阅读方法论
不只看函数做了什么,更要理解它为什么存在、在系统中扮演什么角色
依赖:代码阅读方法论
代码按行号从上到下逐行执行,每行完成后进入下一行
if/else/switch 根据条件选择不同执行路径
依赖:顺序执行
程序中执行顺序的完整路径:顺序→分支→循环→函数调用→返回
依赖:顺序执行 → 条件分支
通过条件拼接动态生成数据库查询的模式,常见于 ORM 层
依赖:控制流 (含间接依赖:3 个)
第 2 周12 个核心概念
Agent 的核心工作循环:接收输入→LLM 推理→决策行动→获取结果→判断是否完成→循环或结束
依赖:代码阅读方法论 → 控制流 (含间接依赖:4 个)
Agent 三步范式:感知环境状态→推理下一步动作→执行动作并观察结果
依赖:Agent 循环 (含间接依赖:5 个)
LLM 在 Agent 循环中的核心作用:根据上下文决定下一步该做什么
依赖:Agent 循环 (含间接依赖:5 个)
根据 LLM 的决策结果,将请求分发到对应工具函数执行的机制
依赖:Agent 循环 → 条件分支 (含间接依赖:5 个)
LLM 一次能「看到」的最大文本量,包括 system prompt + 历史消息 + 用户输入
依赖:Agent 循环 (含间接依赖:5 个)
LLM API 的 messages 参数结构:[{role, content}, ...],按顺序拼接为完整上下文
依赖:上下文窗口 (含间接依赖:6 个)
将 system prompt、历史消息、用户输入按规则拼接成 LLM 可接收的完整 prompt
依赖:上下文窗口 → 消息数组 (含间接依赖:7 个)
每个 LLM 模型有最大 token 上限,超出会截断或报错,需要管理上下文长度
依赖:上下文窗口 (含间接依赖:6 个)
LLM 不直接执行操作,而是输出「调用工具X(参数Y)」的指令,由宿主程序执行
依赖:Agent 循环 (含间接依赖:5 个)
LLM 的一种特定能力:根据 schema 定义,输出结构化的函数名+参数 JSON
依赖:工具调用 (含间接依赖:6 个)
用 JSON Schema 描述一个函数的名称、参数、类型、描述,供 LLM 理解可调用工具
依赖:函数调用 (含间接依赖:7 个)
决定何时让 LLM 调用某个工具的判断逻辑(关键词匹配 / LLM自主判断 / 规则触发)
依赖:函数调用 → 工具路由 (含间接依赖:8 个)
第 3 周12 个核心概念
Agent 的核心工作循环:接收输入→LLM 推理→决策行动→获取结果→判断是否完成→循环或结束
依赖:代码阅读方法论 → 控制流 (含间接依赖:4 个)
LLM 一次能「看到」的最大文本量,包括 system prompt + 历史消息 + 用户输入
依赖:Agent 循环 (含间接依赖:5 个)
LLM API 的 messages 参数结构:[{role, content}, ...],按顺序拼接为完整上下文
依赖:上下文窗口 (含间接依赖:6 个)
将 system prompt、历史消息、用户输入按规则拼接成 LLM 可接收的完整 prompt
依赖:上下文窗口 → 消息数组 (含间接依赖:7 个)
在对话开始时给 LLM 的持久指令,定义角色、行为边界和输出格式
依赖:提示词拼接 (含间接依赖:8 个)
将一个复杂任务拆成多个串行阶段,每阶段的输出作为下一阶段的输入
依赖:系统提示词 → 提示词拼接 (含间接依赖:9 个)
设计、测试和迭代 prompt 的系统方法论,包含角色设定、few-shot、格式化输出等技巧
依赖:系统提示词 → 多阶段提示词 (含间接依赖:10 个)
管理对话历史数组的策略:保留多少轮、何时裁剪、如何保留关键信息不丢失
依赖:消息数组 → Token 限制 (含间接依赖:8 个)
在每次 LLM 调用前动态插入相关信息的模式(如检索结果、用户资料、时间戳)
依赖:历史管理 (含间接依赖:9 个)
通过 AGENTS.md / CLAUDE.md / SKILL.md 等引导文件在启动时注入 Agent 行为规则
依赖:系统提示词 (含间接依赖:9 个)
在 Agent 启动时将预定义的规则文件内容插入 system prompt 的过程
依赖:Agent 规则 (含间接依赖:10 个)
Agent 启动时自动读取的配置文件(如 CLAUDE.md),定义其行为模式和约束
依赖:Agent 规则 (含间接依赖:10 个)
第 4 周8 个核心概念
Agent 记忆分为短期(上下文窗口内)、长期(数据库/向量库)、工作记忆(当前任务状态)
依赖:上下文窗口 (含间接依赖:6 个)
记录每一次 LLM 调用的输入输出、时间戳、token 消耗的结构化日志
依赖:记忆类型 (含间接依赖:7 个)
记录用户行为事件(点击、搜索、浏览)用于后续分析和个性化推荐
依赖:审计日志 (含间接依赖:8 个)
将文本转为向量后存储,支持语义相似度搜索(而非关键词匹配)
依赖:记忆类型 (含间接依赖:7 个)
根据查询的语义含义(而非字面匹配)检索最相关内容,通常基于向量相似度
依赖:向量数据库 (含间接依赖:8 个)
PostgreSQL 的向量扩展,允许在 SQL 中直接进行向量存储和相似度查询
依赖:向量数据库 (含间接依赖:8 个)
用人类可读的文件(如 STATUS.md)记录 Agent 或系统的当前状态
依赖:记忆类型 (含间接依赖:7 个)
持续记录和更新系统各组件的当前运行状态(健康/异常/维护中)
依赖:文件记忆 (含间接依赖:8 个)
第 5 周10 个核心概念
Agent 的核心工作循环:接收输入→LLM 推理→决策行动→获取结果→判断是否完成→循环或结束
依赖:代码阅读方法论 → 控制流 (含间接依赖:4 个)
LLM 不直接执行操作,而是输出「调用工具X(参数Y)」的指令,由宿主程序执行
依赖:Agent 循环 (含间接依赖:5 个)
LLM 的一种特定能力:根据 schema 定义,输出结构化的函数名+参数 JSON
依赖:工具调用 (含间接依赖:6 个)
将一个复杂任务拆成多个串行阶段,每阶段的输出作为下一阶段的输入
依赖:系统提示词 → 提示词拼接 (含间接依赖:9 个)
Reasoning + Acting:LLM 交替进行「思考→行动→观察」直到完成任务
依赖:Agent 循环 → 工具调用 (含间接依赖:6 个)
让 LLM 在给出最终答案前先输出中间推理步骤,显著提升复杂任务的准确率
依赖:多阶段提示词 (含间接依赖:10 个)
LLM 在行动前先生成一个多步计划,然后再逐步执行
依赖:ReAct 模式 → 思维链 (含间接依赖:13 个)
Agent 在多轮交互中形成的一系列决策节点,每个节点影响后续走向
依赖:ReAct 模式 (含间接依赖:7 个)
Agent 在执行后评估自己的输出质量,发现错误时自动修正或重试
依赖:ReAct 模式 → 思维链 (含间接依赖:13 个)
API 调用失败时的指数退避重试策略:等 1s→2s→4s→... 直到成功或达到最大次数
依赖:自我反思 (含间接依赖:14 个)
第 6 周8 个核心概念
在每个 API 请求处理前验证用户身份的中间件模式(JWT 验证 / session 检查)
JSON Web Token:无状态的用户身份凭证,由服务端签发、客户端携带、服务端验证
依赖:认证守卫
约束 LLM 输出的规则系统:包括输入过滤、输出校验、敏感词拦截、格式强制
依赖:函数调用 (含间接依赖:7 个)
限制 LLM 输出必须在预定义范围内(枚举值、正则匹配、类型检查)
依赖:护栏 (含间接依赖:8 个)
检查 LLM 输出的标签/分类是否在预定义的合法值集合中
依赖:输出约束 (含间接依赖:9 个)
为 LLM API 调用设置最大等待时间,超时后中断请求并返回错误
依赖:Agent 循环 (含间接依赖:5 个)
浏览器/Node.js 的 AbortController API,用于取消进行中的 fetch 请求
依赖:超时控制 (含间接依赖:6 个)
限制单位时间内的 API 调用次数,防止超出 LLM provider 的并发限制
依赖:超时控制 (含间接依赖:6 个)
第 7 周10 个核心概念
Agent 的核心工作循环:接收输入→LLM 推理→决策行动→获取结果→判断是否完成→循环或结束
依赖:代码阅读方法论 → 控制流 (含间接依赖:4 个)
LLM 不直接执行操作,而是输出「调用工具X(参数Y)」的指令,由宿主程序执行
依赖:Agent 循环 (含间接依赖:5 个)
在对话开始时给 LLM 的持久指令,定义角色、行为边界和输出格式
依赖:提示词拼接 (含间接依赖:8 个)
多个 Agent(或 Provider)协同工作,各负责不同子任务,通过消息传递协调
依赖:Agent 循环 → ReAct 模式 (含间接依赖:7 个)
根据任务类型或成本/性能需求,将请求路由到不同的 LLM Provider
依赖:多 Agent 协作 (含间接依赖:8 个)
封装不同 LLM Provider 的 API 差异,提供统一调用接口的模式
依赖:Provider 路由 (含间接依赖:9 个)
Server-Sent Events:服务端向客户端单向推送流式数据的 HTTP 协议
依赖:Agent 循环 (含间接依赖:5 个)
LLM 逐 token 返回结果而非一次性返回完整响应,提升用户感知速度
依赖:SSE 协议 (含间接依赖:6 个)
主 Agent 将特定子任务委派给独立的「子 Agent」处理,每个有独立的 prompt 和工具
依赖:多 Agent 协作 (含间接依赖:8 个)
每个子 Agent 有独立的 system prompt 和工具集,互不干扰
依赖:子 Agent → 系统提示词 (含间接依赖:13 个)
第 8 周9 个核心概念
记录每一次 LLM 调用的输入输出、时间戳、token 消耗的结构化日志
依赖:记忆类型 (含间接依赖:7 个)
持续记录和更新系统各组件的当前运行状态(健康/异常/维护中)
依赖:文件记忆 (含间接依赖:8 个)
通过日志、指标和链路追踪了解系统内部运行状态的能力
依赖:审计日志 → 事件日志 (含间接依赖:9 个)
记录每一次操作的时间、执行者、输入输出,形成可回溯的完整操作链
依赖:可观测性 (含间接依赖:10 个)
从用户请求到最终响应的完整调用链路可视化,包含每个环节的耗时和状态
依赖:审计追踪 (含间接依赖:11 个)
在 LLM 输出进入下一步前进行质量检查(置信度、格式、业务规则),不达标则拦截或重试
依赖:思维链 (含间接依赖:11 个)
设定最低置信度分数,低于此值的 LLM 输出将被标记为不确定并触发人工审核或重试
依赖:质量门禁 (含间接依赖:12 个)
中央协调器管理多个子进程/服务的启动、健康检查和故障恢复
依赖:Agent 循环 (含间接依赖:5 个)
定期探测各组件是否正常运行(HTTP /ping、进程存活、端口监听)
依赖:Coordinator 模式 → 状态追踪 (含间接依赖:10 个)
第 9 周5 个核心概念
Agent 的核心工作循环:接收输入→LLM 推理→决策行动→获取结果→判断是否完成→循环或结束
依赖:代码阅读方法论 → 控制流 (含间接依赖:4 个)
用最基础的 fetch() 向 LLM API 发送请求并获取回复,理解原始 HTTP 交互
依赖:Agent 循环 (含间接依赖:5 个)
在 Agent 循环中用 if/else 判断 LLM 是否要求调用工具,是则执行工具否则返回文本
依赖:函数调用 → 工具路由 (含间接依赖:8 个)
Agent 与 LLM 的多轮交互,每轮基于前一轮的结果决定下一步,直到任务完成
依赖:Agent 循环 → ReAct 模式 (含间接依赖:7 个)
判断 Agent 循环何时结束的规则:LLM 返回 finish_reason=stop / 达到最大轮次 / 任务完成标记
依赖:多轮对话 (含间接依赖:8 个)
第 10 周6 个核心概念
Server-Sent Events:服务端向客户端单向推送流式数据的 HTTP 协议
依赖:Agent 循环 (含间接依赖:5 个)
LLM 逐 token 返回结果而非一次性返回完整响应,提升用户感知速度
依赖:SSE 协议 (含间接依赖:6 个)
使用 Prisma ORM 的 findMany/findUnique/create 等方法进行类型安全的数据库操作
不重新写 prompt,而是直接引入和使用已有项目的 prompt 模板
依赖:提示词工程 (含间接依赖:11 个)
用 cron 表达式配置周期性自动执行的任务,让 Agent 在无人干预时自主运行
将 Agent 的流式结果通过 SSE 实时推送到前端页面展示
依赖:流式输出 → SSE 协议 (含间接依赖:7 个)
第 11 周6 个核心概念
Agent 在执行后评估自己的输出质量,发现错误时自动修正或重试
依赖:ReAct 模式 → 思维链 (含间接依赖:13 个)
API 调用失败时的指数退避重试策略:等 1s→2s→4s→... 直到成功或达到最大次数
依赖:自我反思 (含间接依赖:14 个)
在 LLM 输出进入下一步前进行质量检查(置信度、格式、业务规则),不达标则拦截或重试
依赖:思维链 (含间接依赖:11 个)
指数退避 + 随机抖动的重试策略,避免所有重试请求同时发出造成雪崩
依赖:重试退避 (含间接依赖:15 个)
系统性地测试 Agent 在极端输入(空值、超长文本、异常格式)下的行为
依赖:质量门禁 (含间接依赖:12 个)
Agent 在遇到错误时自动检测→重试→降级→恢复的完整闭环
依赖:退避策略 → 质量门禁 → 自我反思 (含间接依赖:17 个)
第 12 周3 个核心概念
系统性地梳理整个 Agent 系统的组件、数据流和设计决策
依赖:Agent 循环 → 提示词工程 → 记忆类型 → ReAct 模式 → 护栏 → 多 Agent 协作 → 可观测性 (含间接依赖:20 个)
端到端理解 Agent 系统:从用户请求到 LLM 调用到工具执行到结果返回的完整路径
依赖:架构回顾 (含间接依赖:21 个)
独立设计一个 Agent 系统的能力:定义目标→选择工具→画架构图→实现
依赖:完整系统视图 (含间接依赖:22 个)
概念补漏助手
遇到不理解的概念?描述你的困惑,AI 给出有洞见的解释。