阶段4(上):LangGraph、Function Calling、MCP(SDK 2.x)、Agent 评测与运维、Agent 设计专题;run_examples 设置 RUN_EXAMPLES=1

This commit is contained in:
Shikui Wang committed 2026-10-23 16:06:54 +08:00
1 parent 6650f7eb6d
commit caaec830b3
38 files changed
+3515 -64

No files matched your search

+845 -44
View File
@@ -5,30 +5,34 @@
{
"stack": "agent-design",
"domain": "ai",
"title": "Agent 设计:规划、上下文工程与多 Agent",
"title": "Agent 设计",
"index": "topics/ai/agent-design/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": []
"examples": [
"topics/ai/agent-design/examples/agent-patterns"
]
},
{
"stack": "agent-ops",
"domain": "ai",
"title": "Agent 记忆、评测与可观测性",
"title": "Agent 评测与运维",
"index": "topics/ai/agent-ops/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": []
"examples": [
"topics/ai/agent-ops/examples/eval-gate"
]
},
{
"stack": "ai-coding",
@@ -49,14 +53,16 @@
"domain": "ai",
"title": "Function Calling 工具调用",
"index": "topics/ai/function-calling/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 2,
"场景题": 2
},
"examples": []
"examples": [
"topics/ai/function-calling/examples/tool-loop"
]
},
{
"stack": "langchain",
@@ -77,14 +83,16 @@
"domain": "ai",
"title": "LangGraph",
"index": "topics/ai/langgraph/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": []
"examples": [
"topics/ai/langgraph/examples/ticket-flow"
]
},
{
"stack": "llm-serving",
@@ -119,14 +127,16 @@
"domain": "ai",
"title": "MCP 模型上下文协议",
"index": "topics/ai/mcp/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 2,
"场景题": 2
},
"examples": []
"examples": [
"topics/ai/mcp/examples/kb-server"
]
},
{
"stack": "prompt-engineering",
@@ -642,15 +652,65 @@
}
],
"items": [
{
"id": "ai.agent-design.context-skills-multiagent",
"title": "上下文工程、Skills、多 Agent 和 A2A",
"type": "lesson",
"domain": "ai",
"stack": [
"agent-design"
],
"tags": [
"上下文工程",
"Context Engineering",
"Skills",
"多 Agent",
"Supervisor",
"Handoff",
"A2A"
],
"level": "advanced",
"prerequisites": [
"ai.agent-design.react-planning"
],
"related": [
"ai.prompt-engineering.index",
"ai.mcp.protocol-server",
"ai.ai-coding.index",
"ai.agent-design.interview"
],
"est_hours": 3.5,
"week": [
11,
13
],
"order": 2,
"path": "topics/ai/agent-design/02-context-skills-multiagent.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.agent-design.index",
"title": "Agent 设计:规划、上下文工程与多 Agent",
"title": "Agent 设计",
"type": "index",
"domain": "ai",
"stack": [
"agent-design"
],
"tags": [],
"tags": [
"ReAct",
"规划",
"上下文工程",
"Skills",
"多 Agent",
"A2A",
"Agentic RAG"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -662,17 +722,199 @@
],
"order": null,
"path": "topics/ai/agent-design/index.md",
"sections": []
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.agent-design.interview",
"title": "Agent 设计面试题",
"type": "interview",
"domain": "ai",
"stack": [
"agent-design"
],
"tags": [
"ReAct",
"规划",
"上下文工程",
"多 Agent",
"A2A",
"面试"
],
"level": "advanced",
"prerequisites": [],
"related": [
"ai.agent-design.react-planning",
"ai.agent-design.context-skills-multiagent"
],
"est_hours": null,
"week": [
11,
13,
16
],
"order": null,
"path": "topics/ai/agent-design/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.agent-design.react-planning",
"title": "Agent 推理模式:ReAct、Plan-and-Execute、反思和 Agentic RAG",
"type": "lesson",
"domain": "ai",
"stack": [
"agent-design"
],
"tags": [
"ReAct",
"Plan-and-Execute",
"规划",
"反思",
"Agentic RAG",
"工作流 vs Agent"
],
"level": "intermediate",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.agent-design.context-skills-multiagent",
"ai.langgraph.state-graph",
"ai.agent-design.interview"
],
"est_hours": 3,
"week": [
10,
11
],
"order": 1,
"path": "topics/ai/agent-design/01-react-planning.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.agent-design.scenario.report-agent",
"title": "运营报表 Agent:规划、只读 SQL 工具、结构化输出和任务进度",
"type": "scenario",
"domain": "ai",
"stack": [
"agent-design",
"langgraph",
"postgresql",
"fastapi"
],
"tags": [
"报表 Agent",
"Text-to-SQL",
"规划",
"结构化输出",
"任务状态",
"流式进度"
],
"level": "advanced",
"prerequisites": [
"ai.agent-design.react-planning"
],
"related": [
"ai.agent-design.interview",
"ai.langgraph.persistence-hitl",
"ai.agent-ops.observability-cost"
],
"est_hours": 3,
"week": [
11,
13
],
"order": null,
"path": "topics/ai/agent-design/scenarios/report-agent.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.agent-ops.eval-quality-gate",
"title": "Agent 评测和质量门禁:评测集、打分方法、幻觉防护、Bad Case 分析",
"type": "lesson",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [
"Agent 评测",
"评测集",
"LLM-as-judge",
"幻觉",
"质量门禁",
"Bad Case",
"回归测试"
],
"level": "advanced",
"prerequisites": [
"ai.rag.generation-eval",
"ai.function-calling.tool-loop"
],
"related": [
"ai.agent-ops.observability-cost",
"ai.agent-ops.scenario.agent-quality-gate",
"ai.agent-ops.interview"
],
"est_hours": 4,
"week": [
13
],
"order": 1,
"path": "topics/ai/agent-ops/01-eval-quality-gate.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.agent-ops.index",
"title": "Agent 记忆、评测与可观测性",
"title": "Agent 评测与运维",
"type": "index",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [],
"tags": [
"评测",
"质量门禁",
"幻觉防护",
"Bad Case",
"可观测性",
"成本",
"记忆"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -683,7 +925,135 @@
],
"order": null,
"path": "topics/ai/agent-ops/index.md",
"sections": []
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.agent-ops.interview",
"title": "Agent 评测与运维面试题",
"type": "interview",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [
"评测",
"幻觉",
"可观测性",
"成本",
"面试"
],
"level": "advanced",
"prerequisites": [],
"related": [
"ai.agent-ops.eval-quality-gate",
"ai.agent-ops.observability-cost"
],
"est_hours": null,
"week": [
13,
16
],
"order": null,
"path": "topics/ai/agent-ops/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.agent-ops.observability-cost",
"title": "Agent 可观测性、成本和延迟:链路追踪、记忆管理、缓存和降级",
"type": "lesson",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [
"可观测性",
"链路追踪",
"OpenTelemetry",
"LangSmith",
"Langfuse",
"成本",
"延迟",
"记忆",
"缓存"
],
"level": "advanced",
"prerequisites": [
"ai.agent-ops.eval-quality-gate"
],
"related": [
"ai.llm-serving.index",
"ai.agent-ops.interview"
],
"est_hours": 3,
"week": [
13
],
"order": 2,
"path": "topics/ai/agent-ops/02-observability-cost.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.agent-ops.scenario.agent-quality-gate",
"title": "客服 Agent 上线流程:评测集、质量门禁、灰度和线上 Bad Case 闭环",
"type": "scenario",
"domain": "ai",
"stack": [
"agent-ops",
"cicd",
"langgraph"
],
"tags": [
"质量门禁",
"灰度发布",
"Bad Case",
"评测集",
"线上监控"
],
"level": "advanced",
"prerequisites": [
"ai.agent-ops.eval-quality-gate"
],
"related": [
"ai.agent-ops.interview",
"devops.cicd.release-rollback"
],
"est_hours": 3,
"week": [
13
],
"order": null,
"path": "topics/ai/agent-ops/scenarios/agent-quality-gate.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.ai-coding.index",
@@ -716,7 +1086,11 @@
"stack": [
"function-calling"
],
"tags": [],
"tags": [
"Function Calling",
"Tool Calling",
"Agent"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -726,7 +1100,130 @@
],
"order": null,
"path": "topics/ai/function-calling/index.md",
"sections": []
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.function-calling.interview",
"title": "Function Calling 面试题",
"type": "interview",
"domain": "ai",
"stack": [
"function-calling"
],
"tags": [
"Function Calling",
"工具调用",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.function-calling.tool-loop"
],
"est_hours": null,
"week": [
10,
16
],
"order": null,
"path": "topics/ai/function-calling/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
}
},
{
"id": "ai.function-calling.scenario.safe-business-tools",
"title": "让 Agent 安全地调用内部业务接口:权限、确认、幂等和审计",
"type": "scenario",
"domain": "ai",
"stack": [
"function-calling",
"fastapi"
],
"tags": [
"工具权限",
"人工确认",
"幂等",
"审计日志",
"限流",
"提示词注入"
],
"level": "advanced",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.function-calling.interview",
"ai.prompt-engineering.index",
"ai.mcp.index"
],
"est_hours": 2.5,
"week": [
10
],
"order": null,
"path": "topics/ai/function-calling/scenarios/safe-business-tools.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.function-calling.tool-loop",
"title": "工具调用原理:工具定义、调用循环、参数校验、并行调用和错误回传",
"type": "lesson",
"domain": "ai",
"stack": [
"function-calling"
],
"tags": [
"Function Calling",
"Tool Calling",
"JSON Schema",
"调用循环",
"参数校验"
],
"level": "intermediate",
"prerequisites": [
"python.python.typing-errors-testing"
],
"related": [
"ai.mcp.index",
"ai.langgraph.state-graph",
"ai.function-calling.interview"
],
"est_hours": 3,
"week": [
10
],
"order": 1,
"path": "topics/ai/function-calling/01-tool-loop.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.langchain.index",
@@ -757,7 +1254,12 @@
"stack": [
"langgraph"
],
"tags": [],
"tags": [
"LangGraph",
"状态图",
"检查点",
"人机协作"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -768,7 +1270,175 @@
],
"order": null,
"path": "topics/ai/langgraph/index.md",
"sections": []
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.langgraph.interview",
"title": "LangGraph 面试题",
"type": "interview",
"domain": "ai",
"stack": [
"langgraph"
],
"tags": [
"LangGraph",
"检查点",
"人机协作",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.langgraph.state-graph",
"ai.langgraph.persistence-hitl"
],
"est_hours": null,
"week": [
11,
12,
16
],
"order": null,
"path": "topics/ai/langgraph/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.langgraph.persistence-hitl",
"title": "检查点、人机协作和异常恢复:checkpointer、interrupt、RetryPolicy、任务状态",
"type": "lesson",
"domain": "ai",
"stack": [
"langgraph"
],
"tags": [
"checkpointer",
"thread_id",
"interrupt",
"Command",
"RetryPolicy",
"崩溃恢复",
"任务状态"
],
"level": "advanced",
"prerequisites": [
"ai.langgraph.state-graph"
],
"related": [
"ai.langgraph.scenario.refund-approval",
"ai.agent-ops.eval-quality-gate",
"ai.langgraph.interview"
],
"est_hours": 4,
"week": [
12
],
"order": 2,
"path": "topics/ai/langgraph/02-persistence-hitl.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.langgraph.scenario.refund-approval",
"title": "退款工单 Agent:人工审批、任务状态和崩溃恢复",
"type": "scenario",
"domain": "ai",
"stack": [
"langgraph",
"fastapi",
"postgresql"
],
"tags": [
"人机协作",
"审批流",
"任务状态",
"异常恢复",
"幂等",
"流式进度"
],
"level": "advanced",
"prerequisites": [
"ai.langgraph.persistence-hitl"
],
"related": [
"ai.langgraph.interview",
"ai.agent-ops.scenario.agent-quality-gate",
"backend.postgresql.scenario.order-state-audit"
],
"est_hours": 3,
"week": [
12
],
"order": null,
"path": "topics/ai/langgraph/scenarios/refund-approval.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.langgraph.state-graph",
"title": "LangGraph 状态图:状态、节点、边、条件路由和流式输出",
"type": "lesson",
"domain": "ai",
"stack": [
"langgraph"
],
"tags": [
"LangGraph",
"StateGraph",
"reducer",
"条件边",
"流式输出",
"stream_mode"
],
"level": "intermediate",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.langgraph.persistence-hitl",
"ai.agent-design.react-planning",
"ai.langgraph.interview"
],
"est_hours": 3,
"week": [
11
],
"order": 1,
"path": "topics/ai/langgraph/01-state-graph.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.llm-serving.index",
@@ -819,7 +1489,11 @@
"stack": [
"mcp"
],
"tags": [],
"tags": [
"MCP",
"工具",
"集成"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -830,7 +1504,134 @@
],
"order": null,
"path": "topics/ai/mcp/index.md",
"sections": []
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.mcp.interview",
"title": "MCP 面试题",
"type": "interview",
"domain": "ai",
"stack": [
"mcp"
],
"tags": [
"MCP",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.mcp.protocol-server"
],
"est_hours": null,
"week": [
10,
11,
16
],
"order": null,
"path": "topics/ai/mcp/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
}
},
{
"id": "ai.mcp.protocol-server",
"title": "MCP 协议和服务开发:tools / resources / prompts、传输方式、接入客户端",
"type": "lesson",
"domain": "ai",
"stack": [
"mcp"
],
"tags": [
"MCP",
"Model Context Protocol",
"tools",
"resources",
"prompts",
"stdio",
"Streamable HTTP"
],
"level": "intermediate",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.mcp.scenario.internal-tools-gateway",
"ai.ai-coding.index",
"ai.mcp.interview"
],
"est_hours": 3,
"week": [
10,
11
],
"order": 1,
"path": "topics/ai/mcp/01-protocol-server.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.mcp.scenario.internal-tools-gateway",
"title": "企业内部 MCP 服务:统一接入、鉴权、审计和版本管理",
"type": "scenario",
"domain": "ai",
"stack": [
"mcp",
"fastapi",
"nginx"
],
"tags": [
"MCP",
"企业集成",
"鉴权",
"审计",
"工具治理",
"Streamable HTTP"
],
"level": "advanced",
"prerequisites": [
"ai.mcp.protocol-server"
],
"related": [
"ai.function-calling.scenario.safe-business-tools",
"ai.mcp.interview"
],
"est_hours": 2.5,
"week": [
10,
11
],
"order": null,
"path": "topics/ai/mcp/scenarios/internal-tools-gateway.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.prompt-engineering.index",