前言
最近用 Claude Code 刷完了李兵老师的《浏览器工作原理与实践》专栏,37 节内容,7 天全部通关。不是简单地"让 AI 讲一遍",而是每次讲完都做题验证,答错就换角度重讲,学过的知识点还会隔几天自动弹出复习题。
能做到这些,是因为我给 Claude Code 写了一个 Skill:ai-tutor------一个自适应 AI 导师系统。
这篇文章会介绍它的设计思路、核心机制,以及如何安装使用。
为什么需要这个 Skill?
用 AI 学技术有几个常见痛点:
1. 讲完了但不确定是否真懂了。 AI 一顿输出,你觉得"懂了",但过两天一问三不知。
2. 没有进度管理。 学到哪了?哪些掌握了?哪些还模糊?全靠脑子记。
3. 跨会话失忆。 昨天学到第 15 节,今天新开会话,AI 完全不知道之前学了什么。
4. 一刀切的教学方式。 学 React Hooks 和学 React Fiber 源码是两种完全不同的需求,但 AI 默认用同一套方式回答。
ai-tutor 针对这四个痛点逐个解决。
核心设计:讲解 → 实践 → 验证 闭环
传统的 AI 学习是"单向灌输":
你问 → AI 答 → 你觉得懂了 → 结束
ai-tutor 强制加入验证环节:
AI 讲解 → 出题考核 → 你回答 →
├─ 通过 → 更新进度,下一节
├─ 接近正确 → 给提示,微调后通过
└─ 概念性错误 → 换角度重讲,出新题
严禁问"听懂了吗"这种无效问题。 每个知识点必须有对应的考核题,题型根据内容选择:
| 知识点类型 | 考核题型 |
|---|---|
| 概念理解 | 情景分析题 |
| 代码能力 | 编码题 |
| 调试能力 | 调试题 |
| 源码理解 | 代码追踪题 |
四种学习模式,自动识别
不同学习目标需要不同的教学方式。ai-tutor 根据你的输入自动选择模式:
知识模式 --- 学概念、理解原理
触发信号:纯技术名词,如"学 React Hooks"、"理解 TypeScript 泛型"
特点:
- 按知识域规模自动选择大纲策略(小型/中型/大型)
- 大型知识域先展示架构鸟瞰图,让你选焦点区域
- 每个知识点讲完立刻出题验证
- 学前自动检测前置知识(学 Hooks 前先检查闭包基础)
- 基础不足自动补课,跳过则后续讲解时用通俗类比补偿
markdown
你: /ai-tutor 我想理解 React Hooks
AI Tutor:
1. 前置知识检测:"你了解 JS 闭包吗?"
2. 生成大纲,让你确认并标记已掌握的节点
3. 逐节点讲解 → 每个节点配一道实践题
4. 未通过 → 分级响应(概念性/细节/接近正确)
5. 通过 → 更新进度,下一节
项目模式 --- 边做项目边学
触发信号:含"做一个/写一个/开发/搭建" + 具体产物
特点:
- 默认不给完整代码,只给骨架和提示
- 按 MVP → 核心功能 → 增强拆分里程碑
- 自动检测开发环境(Node.js、Python、Rust 等)
- 卡住时渐进提示,最后才给代码片段
markdown
你: /ai-tutor 学 Node.js 做一个聊天室
AI Tutor:
1. 澄清需求和技术栈
2. 环境检测 → "检测到 Node.js v20.x ✓"
3. 按里程碑拆分
4. 每个功能:知识铺垫 → 给任务要求(不给代码)→ 你自己写
5. 运行验证:"打开两个标签页,A 发消息,B 能看到"
逃生舱机制: 反复卡住时,给出完整参考代码并逐行解释,然后出变式题验证你是否真正理解。
源码阅读模式 --- 理解现有项目代码
触发信号:含"当前项目/这个仓库/梳理" + 当前目录有项目文件
特点:
- 自动扫描项目目录(排除 node_modules 等),识别技术栈
- 生成代码地图(模块关系图 + 阅读顺序)
- 引导你打开特定文件的特定行:"打开 auth.ts,重点看 23-47 行"
- 考核基于实际代码:"Token 过期是在哪一行触发刷新的?"
markdown
你: /ai-tutor 帮我梳理当前项目的登录鉴权模块
AI Tutor:
1. 扫描项目 → 生成代码地图
2. 按阅读顺序拆分节点(入口 → 中间件 → Token签发 → 刷新机制)
3. 引导你打开特定文件的特定行
4. 考核基于实际代码
深度讲解模式 --- 源码级底层教学
触发信号:含"深入理解/底层原理/源码级/实现机制"
特点:
-
不按知识点拆,按"最小可闭环机制"拆分为主题块
-
每节必须按 5 段式展开:
- 问题背景(解决什么问题)
- 核心数据结构(关键对象/字段)
- 运行流程(流程图 + 伪代码)
- 与旧方案对比(设计动机)
- 常见误解和边界(容易踩的坑)
-
主题块内连续讲解,讲完后统一考核
-
每节至少包含一个结构图
markdown
你: /ai-tutor 深入理解 React Fiber 架构
AI Tutor:
1. 前置知识检测 + 确认学习深度
2. 生成架构总览图
3. 按主题块拆分(Fiber架构 / Hooks实现 / 调度系统)
4. 每节 5 段式深度讲解
5. 主题块讲完后统一考核(源码追踪题 + 机制推理题)
间隔复习:对抗遗忘
基于艾宾浩斯遗忘曲线,ai-tutor 在每次启动时自动检查是否有到期需要复习的知识点:
╔══════════════════════════════════════════════╗
║ ⚡ 课前提醒 ║
╠══════════════════════════════════════════════╣
║ ║
║ 以下知识点已到复习时间: ║
║ ║
║ 📌 TCP 可靠性机制 (3天前掌握) ║
║ 📌 闭包原理 (5天前掌握) ║
║ ║
║ 准备好了吗?我们快速复习一下再继续新课。 ║
║ ║
╚══════════════════════════════════════════════╝
复习间隔按掌握等级递增:
- mastery_level 1(刚通过)→ 3 天后复习
- mastery_level 2(复习过 1 次)→ 7 天后复习
- mastery_level 3(复习过 2 次)→ 14 天后复习
防雪崩机制: 到期节点超过 3 个时,只挑最早到期的 3 个复习,其余顺延。不让复习题淹没新课。
复习未通过 → mastery_level 回到 1,重新开始间隔周期。
断点续学:进度不丢失
所有学习进度持久化到项目目录下的 Markdown 文件:
r
./ai-tutor/
├── config.yaml # 全局配置
├── records/ # 进度记录
│ ├── react-hooks.md
│ ├── browser-principles.md
│ └── project-auth-module.md
└── summaries/ # 归档总结
├── react-hooks_hooks-basics.md
└── browser-principles_http-evolution.md
记录文件使用 YAML frontmatter 存储机器可读状态,Markdown 正文保留人读内容:
yaml
---
mode: deep-dive
start_date: 2026-04-22
nodes:
"1.1":
name: Chrome架构
module: 宏观视角上的浏览器
status: mastered
attempts: 1
last_tested: "2026-04-25"
mastery_level: 2
failure_type: null
---
## 学习日志
| 日期 | 节点 | 结果 | 备注 |
|------|------|------|------|
| 2026-04-22 | 1.1 Chrome架构 | ✓通过 | 理解多进程隔离原理 |
下次开会话说"继续上次的学习",ai-tutor 读取记录,展示进度,自动从断点继续。
可配置的严格度和语气
首次运行自动创建配置文件:
yaml
# ./ai-tutor/config.yaml
strictness: normal # hard | normal | lenient
visual_tool: mermaid # mermaid | ascii
tone: encouraging # strict | encouraging
strictness(严格等级):
| 等级 | 失败后给提示 | 连续失败降级拆分 | 允许跳过 |
|---|---|---|---|
| hard | 第 3 次失败后 | 连续 5 次 | 不允许 |
| normal | 第 2 次失败后 | 连续 3 次 | 不允许 |
| lenient | 第 1 次失败后 | 连续 3 次 | 允许并标记待复习 |
tone(语气风格):
strict:严谨教授,简短肯定,重点指错encouraging:鼓励学长,肯定进步,缓解挫败感
错误分级:精准对症
不是所有错误都一样。ai-tutor 将错误分为三级,精准响应:
| 错误类型 | 特征 | 策略 |
|---|---|---|
| 概念性错误 | 思路方向错 | 换角度重讲,用可视化辅助 |
| 细节错误 | 思路对但实现有瑕疵 | 指出关键遗漏,给一个提示 |
| 接近正确 | 只有小瑕疵 | 给部分提示,允许微调后通过 |
同一个节点连续失败 3 次 → 自动拆分为更小的子知识点,逐个击破。
按需加载:不浪费上下文窗口
Skill 采用分层架构,触发时只加载入口文件(SKILL.md),根据模式再读取对应的工作流文件:
bash
ai-tutor/
├── SKILL.md # 入口(6KB)
├── knowledge-mode.md # 知识模式工作流
├── project-mode.md # 项目模式工作流
├── codebase-mode.md # 源码阅读模式工作流
├── deep-dive-mode.md # 深度讲解模式工作流
├── visual-aids.md # 可视化工具箱
└── README.md # 用户文档
每次只加载当前模式需要的文件,节省 token 开销。
实战效果
我用深度讲解模式刷完了浏览器原理的 37 节课程,实际体验:
-
学习周期:7 天(2026-04-22 ~ 2026-04-28)
-
通过率:37 个节点全部通过
-
错误分布:13 个节点首次答错或答不精确,主要集中在:
- 混淆对象属性与作用域变量
- 误判管线化队头阻塞的阻塞点(响应顺序而非处理顺序)
- HttpOnly 防 XSS 不防 CSRF 的区别
-
复习触发:3 次启动时触发了间隔复习,共复习了 3 个早期知识点
教学完成后还可以一键生成完整复习文档,标注所有曾经答错的知识点。
安装和使用
安装
bash
# MacOS / Linux
git clone https://github.com/Chih-hengChen/ai-tutor.git ~/.claude/skills/ai-tutor
# Windows (PowerShell)
git clone https://github.com/Chih-hengChen/ai-tutor.git "$env:USERPROFILE.claude\skills\ai-tutor"
使用
bash
# 开始学习
/ai-tutor 我想学 React Hooks
/ai-tutor 学 Node.js 做一个聊天室
/ai-tutor 帮我梳理当前项目的鉴权模块
/ai-tutor 深入理解 React Fiber 架构
# 继续上次
/ai-tutor 继续上次的学习
# 管理命令
/ai-tutor status # 查看进度面板
/ai-tutor reset react-hooks # 重置某个主题
/ai-tutor reset --all # 重置所有(需二次确认)
# 随时退出
退出教学
唯一要求:Claude Code CLI 或桌面端,无额外依赖。
技术实现要点
如果你也想写 Claude Code Skill,几个关键设计决策值得参考:
1. 状态持久化用 Markdown + YAML frontmatter
不用 JSON 数据库,直接用 Markdown 文件。frontmatter 存机器状态,正文存人读内容。好处:
- 用户可以直接打开看,也可以手动编辑
- Git 友好,可以版本控制学习进度
- Claude Code 原生支持读写,零依赖
2. 工作流分文件,按需加载
一个 2000 行的 Skill 文件会吃掉大量上下文窗口。拆成入口 + 子文件,每次只加载需要的。SKILL.md 做路由,子文件做执行。
3. 恢复时强制重读工作流文件
这是一个踩过的坑:恢复学习时如果凭记忆执行工作流,会退化为默认的简洁回答风格。解决方法是在 Step 3(恢复检测)中加入强制规则:恢复时必须用 Read 工具重新读取对应的工作流文件。
4. 间隔复习设上限
不加限制的间隔复习会导致"复习雪崩"------攒了几十道复习题,新课还没开始就想退出了。限制每次最多 3 道复习题,其余顺延。
最后
ai-tutor 的核心思路其实很简单:让 AI 不能只讲不验,学了就必须验证,验证不过就换方式重讲。 再加上进度持久化、间隔复习、错误分级这些学习科学的基本原则,就能把 Claude Code 变成一个还不错的私人编程教练。
如果你也在用 Claude Code 学技术,可以试试看。欢迎提 Issue 和 PR。
GitHub: github.com/Chih-hengCh...