
Teach Skill:让AI成为你的私人导师,在工作区中构建知识体系
Teach Skill:让AI成为你的私人导师,在工作区中构建知识体系
不是一次对话,而是持续学习。知识+技能+智慧,三步掌握任何主题。
痛点
你想学个新东西——
找一堆教程,看一遍觉得懂了,过两天全忘光。
或者:
让AI给你讲一遍,当时觉得懂了,过两天又忘了。
问题在哪?
- ❌ 没有明确的学习目标
- ❌ 没有系统的知识管理
- ❌ 没有互动练习
- ❌ 没有间隔重复
- ❌ 没有长期跟踪
学得快,忘得也快。
Teach Skill
Matt Pocock开源的教学技能——
让AI成为你的私人导师,在工作区中构建完整的知识体系。
核心理念
要深度学习一个主题,需要三件事:
- 📚 知识(Knowledge) — 从高质量、高信任资源中获取
- 🎯 技能(Skills) — 通过高度相关的互动课程获得
- 💡 智慧(Wisdom) — 来自与其他学习者和实践者的互动
不是一次对话讲完,而是持续学习、持续练习、持续积累。
教学工作区
Teach Skill把当前目录变成一个教学工作区,在这里管理整个学习过程:
文件结构
workspace/
├── MISSION.md # 学习使命(为什么学这个)
├── RESOURCES.md # 资源列表(高质量学习资源)
├── NOTES.md # 笔记(用户偏好、工作笔记)
├── reference/ # 参考资料目录
│ ├── glossary.html # 术语表
│ ├── syntax.html # 语法参考
│ └── algorithms.html # 算法参考
├── learning-records/ # 学习记录
│ ├── 0001-key-insight.md
│ └── 0002-another-lesson.md
├── lessons/ # 课程目录
│ ├── 0001-first-lesson.html
│ └── 0002-second-lesson.html
└── assets/ # 可重用组件
├── stylesheet.css
├── quiz-widget.js
└── diagram-helper.js核心文件
1. MISSION.md — 学习使命
为什么想学这个?目标是什么?
格式参考:MISSION-FORMAT.md
作用:
- 让所有教学都有明确目标
- 避免学习太抽象
- 判断下一步该学什么
示例:
# Mission
我想学习TypeScript,因为:
- 我的项目正在从JavaScript迁移到TypeScript
- 我想提升代码质量和类型安全
- 我希望能在团队中推广TypeScript
## 当前水平
- 熟悉JavaScript(ES6+)
- 了解基本的类型概念
- 从未在生产环境中使用TypeScript
## 目标
- 3个月内能在生产环境中熟练使用TypeScript
- 能定义复杂的类型和泛型
- 能处理TypeScript配置和构建流程2. RESOURCES.md — 资源列表
高质量、高信任的学习资源。
格式参考:RESOURCES-FORMAT.md
示例:
# Resources
## 官方文档
- [TypeScript官方文档](https://www.typescriptlang.org/docs/) - 权威、全面
- [TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/intro.html) - 入门必读
## 课程
- [TypeScript基础课程](https://example.com) - 互动性强,适合初学者
- [Advanced TypeScript](https://example.com) - 深入理解类型系统
## 书籍
- 《TypeScript编程》- O'Reilly,全面深入
- 《Effective TypeScript》- 最佳实践
## 社区
- [TypeScript Discord](https://discord.gg/typescript) - 活跃社区
- [Stack Overflow TypeScript标签](https://stackoverflow.com/questions/tagged/typescript)3. learning-records/ — 学习记录
捕获非显而易见的课程和关键洞察,类似软件架构决策记录(ADR)。
格式参考:LEARNING-RECORD-FORMAT.md
命名: 0001-<dash-case-name>.md(编号递增)
示例:
# 0001 - TypeScript的联合类型与交叉类型
## 日期
2026-07-10
## 背景
在学习TypeScript的类型系统时,对联合类型(Union Types)和交叉类型(Intersection Types)的理解不够清晰。
## 学习内容
### 联合类型(Union Types)
使用 `|` 组合多个类型:
```typescript
type StringOrNumber = string | number;交叉类型(Intersection Types)
使用 & 组合多个类型:
type Person = { name: string };
type Employee = { id: number };
type EmployeePerson = Person & Employee;关键洞察
"
- 联合类型是"或"的关系:值可以是A或B
- 交叉类型是"且"的关系:值必须同时满足A和B
- 联合类型常用于函数参数(多种输入)
- 交叉类型常用于对象组合(多重身份)
影响
理解这两个概念后,能更好地设计类型系统,避免类型冲突。
后续行动
- 在实际代码中练习使用联合类型和交叉类型
- 学习类型守卫(Type Guards)
**作用:**
- 记录关键洞察,防止遗忘
- 用于计算最近发展区
- 未来会话的参考
**4. lessons/ — 课程目录**
单次、自包含的HTML课程,教授与使命相关的一个紧密范围的内容。
**命名:** `0001-<dash-case-name>.html`(编号递增)
**特点:**
- 美观(干净的排版和布局)
- 短小(快速完成)
- 紧凑范围(一次学一点)
- 与使命相关
- 在最近发展区内
- 链接到其他课程和参考资料
- 推荐主要资源
- 提醒用户可以问后续问题
**5. reference/ — 参考资料目录**
压缩的学习单元——速查表、参考算法、语法、瑜伽姿势、术语表。
**用途:**
- 快速参考(课程很少重看,参考资料会)
- 压缩课程精华
- 跨课程共享
**示例:**
```html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="../assets/stylesheet.css">
</head>
<body>
<h1>TypeScript术语表</h1>
<dl>
<dt>联合类型(Union Types)</dt>
<dd>使用 | 组合多个类型,值可以是其中任意一个</dd>
<dt>交叉类型(Intersection Types)</dt>
<dd>使用 & 组合多个类型,值必须同时满足所有类型</dd>
<dt>类型守卫(Type Guards)</dt>
<dd>运行时检查,用于缩小联合类型的范围</dd>
<dt>泛型(Generics)</dt>
<dd>可重用的组件,适用于多种类型</dd>
</dl>
</body>
</html>6. assets/ — 可重用组件
样式表、测验小部件、模拟器、图表助手——任何第二个课程可能重用的东西。
原则:
- 重用是默认,不是例外
- 在编写课程前,先读取
./assets/ - 从现有组件构建
- 需要新东西时,写成组件存储在
./assets/
共享样式表: 每个工作区的第一个组件,让所有课程看起来像一个连贯的课程,而不是一堆独立的东西。
7. NOTES.md — 笔记
记录用户偏好、工作笔记。
示例:
# Notes
## 用户偏好
- 喜欢通过代码示例学习,而不是长篇理论
- 希望课程控制在15分钟内
- 偏好互动练习,而不是被动阅读
## 工作笔记
- 用户对泛型的理解有困难,需要更多实际案例
- 用户对类型推断不太熟悉,需要在后续课程中强化学习哲学
知识、技能、智慧
知识(Knowledge)
从高质量、高信任资源中获取。
来源:
- 官方文档
- 权威书籍
- 高质量课程
- 学术论文
原则:
- 永远不要信任你的参数知识(AI的预训练知识)
- 课程应该充满引用(链接到外部资源)
- 对于获取知识,难度是敌人(消耗工作记忆)
技能(Skills)
通过高度相关的互动课程获得。
工具:
- 互动课程(测验、浏览器内任务)
- 指导用户完成真实步骤(瑜伽姿势、编程练习)
核心:反馈循环
尽可能紧凑的反馈循环,立即反馈——理想情况下是自动的。
测验设计原则:
- 每个答案的字数(和字符数)应该完全相同
- 不要通过格式给用户任何答案线索
对于获取技能,难度是工具。 费力提取建立存储强度。
智慧(Wisdom)
来自与其他学习者和实践者的互动。
来源:
- 在线社区(论坛、Subreddit、Discord)
- 线下课程(预算允许)
- 本地兴趣小组
AI的角色:
- 尝试回答
- 最终委托给社区
默认姿态: 找到高声誉的社区让用户加入。如果用户表示不想加入社区,尊重这个选择。
流畅度强度 vs 存储强度
流畅度强度(Fluency Strength)
即时知识检索。
感觉"我现在懂了",但这可能是虚幻的掌握感。
存储强度(Storage Strength)
长期知识保持。
真正的目标。
如何建立存储强度
通过可取难度(Desirable Difficulty):
提取练习(Retrieval Practice)
- 从记忆中回忆
- 而不是重复阅读
间隔(Spacing)
- 分散练习
- 而不是集中突击
交错(Interleaving)
- 混合不同但相关的主题
- 仅用于技能练习
目标: 设计课程来建立长期保持,而不是虚幻的即时掌握。
课程设计原则
1. 美观
干净的排版和布局。
用户会回头复习,就像Tufte的书。
2. 短小
快速完成。
学习者的工作记忆非常小,必须保持在范围内。
3. 紧凑范围
一次学一点。
每个课程应该给用户一个可以构建的、实实在在的小胜利。
4. 与使命相关
每节课都应该与使命紧密相连。
否则会感觉太抽象。
5. 最近发展区
用户应该总是感觉"刚好被挑战"。
6. 链接
HTML锚点链接到其他课程和参考资料。
构建知识网络。
7. 推荐主要资源
每节课都应该推荐一个主要资源供用户阅读或观看。
这是你在该主题上找到的最高质量、最高信任的资源。
8. 提醒用户
每节课都应该提醒用户可以问后续问题。
AI是他们的老师,可以帮助解决任何不清楚的地方。
最近发展区
如何确定
如果用户没有指定想学什么:
- 读取他们的
learning-records - 根据使命判断应该教什么
- 教授最相关且在最近发展区内的东西
什么是最近发展区
用户刚好能学会,但需要一点挑战的内容。
- 太简单 → 无聊
- 太难 → 挫败
- 刚刚好 → 心流(Flow)
使用流程
第一步:明确使命
如果用户不清楚使命,或 MISSION.md 未填充:
先问用户:
"你为什么想学这个?"
理解使命是所有教学的基础。
第二步:收集资源
在 RESOURCES.md 中收集高质量、高信任资源。
不要依赖AI的参数知识。
第三步:创建第一课
基于使命和最近发展区,创建第一课。
课程文件: lessons/0001-first-lesson.html
第四步:互动练习
通过测验、任务等互动方式,让用户练习技能。
立即反馈。
第五步:创建学习记录
记录关键洞察和非显而易见的课程。
文件: learning-records/0001-key-insight.md
第六步:创建参考资料
提取课程的压缩精华,创建参考资料。
文件: reference/glossary.html
第七步:下一课
基于学习记录和使命,确定下一课的内容。
持续迭代。
实战案例
案例:学习TypeScript
初始状态
用户:"我想学TypeScript"
AI:"你为什么想学TypeScript?"
用户:"我的项目正在迁移到TypeScript,我想提升代码质量"创建MISSION.md
# Mission
我想学习TypeScript,因为:
- 我的项目正在从JavaScript迁移到TypeScript
- 我想提升代码质量和类型安全
## 当前水平
- 熟悉JavaScript(ES6+)
- 了解基本的类型概念
- 从未在生产环境中使用TypeScript
## 目标
- 3个月内能在生产环境中熟练使用TypeScript
- 能定义复杂的类型和泛型收集资源
在 RESOURCES.md 中添加:
- TypeScript官方文档
- 《TypeScript编程》
- TypeScript Discord社区
第一课
lessons/0001-basic-types.html
内容:
- TypeScript是什么
- 基本类型(string、number、boolean)
- 类型注解语法
- 互动测验
推荐资源: TypeScript Handbook - Basic Types
学习记录
learning-records/0001-type-annotations.md
记录类型注解的关键洞察。
参考资料卡片
reference/basic-types.html
基本类型的速查表。
下一课
基于学习记录,确定下一课:对象类型。
核心价值
1. 持续学习
不是一次对话,而是持续迭代。
每次会话都基于之前的学习记录和参考资料。
2. 知识管理
不是碎片化学习,而是系统化积累。
教学工作区管理整个学习过程。
3. 互动练习
不是被动阅读,而是主动实践。
测验、任务、反馈循环。
4. 间隔重复
不是学完就忘,而是长期保持。
通过提取练习、间隔、交错建立存储强度。
5. 使命驱动
不是漫无目的,而是目标明确。
每节课都与使命紧密相连。
6. 最近发展区
不是太难或太简单,而是刚好。
总是在心流中学习。
7. 高质量资源
不是依赖AI知识,而是信任权威。
从官方文档、权威书籍中获取知识。
8. 可重用组件
不是每次从头开始,而是积累复用。
资产库持续增长,课程越做越快。
适用场景
场景1:编程技能
学习新编程语言、框架、工具。
示例:
- TypeScript
- React
- Rust
- Docker
场景2:理论学科
学习需要更多知识的主题。
示例:
- 理论物理
- 数学
- 哲学
场景3:实践技能
学习需要更多技能的主题。
示例:
- 瑜伽
- 健身
- 音乐
场景4:专业知识
学习某个领域的专业知识。
示例:
- 产品管理
- 数据分析
- 设计
局限
不是所有场景都适合:
- 需要实时互动的技能 — 如游泳、滑雪(需要现场指导)
- 需要昂贵设备的技能 — 如开飞机、做手术(AI无法提供)
- 需要高度社交的技能 — 如谈判、演讲(需要真人互动)
适合: 可以通过知识+技能+智慧三步掌握的主题。
最后
传统学习方式:找教程、看一遍、过两天全忘。
Teach Skill:持续学习、系统积累、长期保持。
不是一次对话讲完——
而是在教学工作区中构建完整的知识体系。
知识+技能+智慧,三步掌握任何主题。
项目地址:https://github.com/mattpocock/skills/tree/main/skills/productivity/teach
作者:Matt Pocock
License:MIT
关注公众号 Fen9Pi,聊聊AI时代的学习方法。
