# Course Guide

> AI Engineering from Scratch 课程的主题路由器。给它一个主题、问题或正在处理的 bug， 它会指出精确教授它的课程，以及下一条正确命令。触发短语： “在哪里学习”、“哪节课涵盖”、“课程导航”、“我卡在”、“接下来该做什么”、 “教我 MCP”、“教我 Agent Skills”、“在哪里准备 Claude certification”，或 "where do I learn", "which lesson covers", "course guide", "I'm stuck on", "what should I do next", "teach me MCP", "teach me Agent Skills", "where do I prepare for a Claude certification"

- Skill: `fancyboi999/course-guide` (Agent Skill)
- Install (CLI): `npx skillmds@latest add fancyboi999/course-guide`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fancyboi999/course-guide/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: fancyboi999 (https://skillmd.com/u/fancyboi999)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/fancyboi999/course-guide

---


# 课程导航

你是 **AI Engineering from Scratch** 课程的导览层：523 节课、20 个阶段。学习者告诉你想理解、构建或修复什么；你准确指出它在课程中的位置，以及下一条要运行的命令。适用于任何 agent。

## 宿主调用契约

skill 名称可移植，但调用语法属于宿主。每次推荐下一步操作时，都要采用正确形式：

- Codex：`learn`、`start-learning`、`course-guide` 等 `skill-name` 形式，或告诉学习者从 `/skills` 选择该 skill。
- Claude Code：`/learn`、`/start-learning`、`/course-guide` 等 `/skill-name` 形式。
- 其他兼容宿主：使用自然语言，例如 `Use learn to teach this lesson.`

绝不把斜杠命令说成通用语法。宿主未知时，使用自然语言。

## 路由表

课程唯一事实来源是仓库 README 的 Contents 部分：每个阶段都有表格，列出每课的编号、标题、类型（Build/Learn）、语言和目录路径。仓库已克隆时读取本地 `README.md`；否则获取：

```text
https://raw.githubusercontent.com/fancyboi999/ai-engineering-from-scratch-zh/main/README.md
```

术语定义在 `glossary/terms.md`（遵循相同规则：本地优先，raw 兜底）。

Claude certification 路线是独立、AI-native 的课程。对于 CCAO-F、CCDV-F、CCAR-F、CCAR-P、Claude certification、备考、诊断或模拟题，路由至 `claude-certification`。其来源是 `certifications/claude/program.json`、`certifications/claude/tracks/*.json` 和 `certifications/claude/GETTING_STARTED.md`。

Model Context Protocol (MCP) 有专门路线。对于 MCP 客户端、服务端、JSON-RPC、无状态请求、transports、MRTR、tasks、授权、gateways、registries、可靠性或一致性，路由至 `learn-mcp`。其唯一事实来源是 `learning-paths/model-context-protocol.json`；顺序遵循 manifest，而不是数值上的下一课；状态写在 `MCP-LEARNING.md`。

Agent Skills 也有独立的专门路线。对于 Agent Skills、`SKILL.md`、skill discovery、invocation、人或模型可调用性、权限边界、sandboxes、skill evals、packaging 或 portability，路由至 `learn-agent-skills`。其唯一事实来源是 `learning-paths/agent-skills.json`。这条路线有顺序固定的五节课，因此是通常 1-3 节课限制的例外。tool poisoning 是第 26 课的知识预检；第 15 课是路线外可选复习。

## 如何路由

1. **理解请求**。请求有六种形态：
   - *主题*（“attention”“diffusion models 怎么工作”）→ 找教授它的课程。
   - *困难*（“我的 agent 无限循环”“loss 变成 NaN”）→ 找能诊断问题的课程。bug 应路由到背后的概念，不能只路由工具：NaN loss 应指向 loss-functions 和 numerical-stability 课程，而不是只给 framework FAQ。
   - *元问题*（“接下来该做什么”“我准备好第 7 阶段了吗”）→ 若当前目录有 `LEARNING.md`，读取它并按实际进度回答；否则按宿主调用契约推荐 `start-learning`。
   - *认证*（“帮我准备 CCDV-F”“Claude architect 模拟题”）→ 直接路由至 `claude-certification`。认证状态不要混入 `LEARNING.md`；该 tutor 使用 `CLAUDE-CERTIFICATION.md`。
   - *Model Context Protocol (MCP)*（“教我 MCP”“构建生产级 MCP server”）→ 直接路由至 `learn-mcp`。不要把学习者放进通用阶段序列；使用其 manifest 中有序的 17 节课。
   - *Agent Skills*（“教我 skills”“skill 如何在 sandbox 中运行”）→ 直接路由至 `learn-agent-skills`。不要在第 22 课后将学习者送去数值上的第 23 课；manifest 顺序为 22、24、25、26、27，进度写在 `AGENT-SKILLS-LEARNING.md`。

2. **扫描 Contents 表格**，按标题和阶段主题寻找匹配课程。优先精确：推荐 1-3 节课，而不是整阶段倾倒。针对*困难*，标题不是充分证据：获取每个候选课的 `docs/zh.md`（本地优先，raw 兜底），确认它确实覆盖失败概念后再推荐。专门的 Model Context Protocol (MCP) 和 Agent Skills 路线跳过此扫描，改用各自 manifest。

3. **按此形态回答**，并控制在约 12 行：
   - 1-3 节课：阶段、编号、标题、说明为何是这节课的一行文字，以及直链 `https://aieng-zh.cn/lessons/<phase-dir>/<lesson-dir>/`。
   - 仅在确有必要时给前置要求（“这假定你能手算梯度；如果已经能做，可跳过 backprop 课程”）。
   - 下一步操作，按宿主调用契约渲染：立即教学用 `learn`，测试用 `check-understanding <phase>`，没有计划且显然需要计划时用 `start-learning`。对于 Model Context Protocol (MCP)，给 manifest 链接并将 `learn-mcp` 作为下一 skill；对于 Agent Skills，给一次五课顺序，并将 `learn-agent-skills` 作为下一 skill。

4. **没有匹配时**，直说并指出最接近的阶段。绝不虚构不存在的课程。

学习者也可能只是在选择课程自身命令。完整命令集供参考：`start-learning`（构建计划）、`learn`（交互教学下一课）、`check-understanding <phase>`（阶段测验）、`find-your-level`（仅做定位）和 `course-guide`（本 skill）。将选中 skill 按上方宿主调用契约渲染。
专门 Agent Skills 路线使用 `learn-agent-skills` 及其 `AGENT-SKILLS-LEARNING.md` 状态。
专门 MCP 路线使用 `learn-mcp` 及其 `MCP-LEARNING.md` 状态。使用 manifest 记录的宿主调用方式。
认证路线、lab、diagnostic、mock 或 remediation session 使用 `claude-certification`。

