name: study description: 开始一个专注的学习会话,记录时间和进度。Use when user wants to start a learning session.
请使用 TodoWrite 工具创建以下任务列表,然后逐步执行:
任务列表
会话开始阶段
- 确认学习项
- 设定会话目标
- 进入学习模式
会话进行阶段(根据用户需求)
- 概念解释模式
- 笔记记录模式
- 实践练习模式
- 知识检验模式
会话结束阶段
- 总结本次学习
- 更新进度文件
- 设置下次目标
会话开始阶段
步骤 1: 确认学习项
验证检查:
# 检查学习项目录是否存在
if [ ! -d "[学习项名称]" ]; then
echo "错误:学习项不存在"
echo "请使用 /new-learning [学习项名称] 创建新的学习项"
# 提供选项:
# 1. 列出现有学习项
# 2. 创建新学习项
# 3. 取消操作
fi
读取状态文件:
- 读取
[学习项名称]/progress.md- 了解当前进度 - 读取
[学习项名称]/README.md- 了解当前阶段和路线图 - 列出
[学习项名称]/notes/目录 - 查看已有笔记
显示当前状态:
确认学习项:[学习项名称]
当前阶段: Novice
已学习:X 小时
已有笔记:X 篇
完成度:X%
步骤 2: 设定会话目标
使用 AskUserQuestion 询问用户:
问题 1: 本次计划学习多长时间?
- 选项:15分钟、30分钟、1小时、2小时、自定义
问题 2: 想要学习哪个具体主题?
- 从 README.md 的当前阶段中选择
- 提供具体建议(基于未完成的任务)
- 选项:自定义主题
示例对话:
用户: /study regular-expressions
AI: 确认学习项:Regular Expressions
当前阶段: Novice
已学习:0.5 小时
已有笔记:1 篇
基于你的学习路线图,接下来可以学习:
1. 字符类:[abc], [^abc], \d, \w, \s (推荐)
2. 量词:*, +, ?, {n}, {n,m}
3. 锚点:^, $, \b, \B
4. 自定义主题
你想学习哪个主题?
步骤 3: 进入学习模式
显示今日学习目标:
今日学习目标
主题:字符类
时长:30 分钟
目标:掌握 \d, \w, \s 和字符集合的用法
提示:
- 随时可以提问:"什么是...?"
- 要求解释:"用简单话说明..."
- 记录笔记:"记下来"
- 测试理解:"考考我"
会话进行中(交互模式)
根据用户需求,提供不同的学习模式:
模式 1: 概念解释
触发条件:
- 用户问:"什么是 X?"
- 用户说:"解释一下 X"
- 用户说:"我不懂 X"
执行步骤:
- 使用费曼技巧:用简单语言+类比解释
- 提供具体示例(代码、图表、案例)
- 解释后提出 1-2 个检验性问题
示例对话:
用户: 什么是字符类?
AI: 好问题!让我用简单的方式解释...
字符类就像是给字符"贴标签"的方式。
想象你在一个超市里:
- \d 就像是"数字区"的标签(只匹配 0-9)
- \w 就像是"字母区"的标签(匹配字母和数字)
- \s 就像是"空白区"的标签(匹配空格、制表符等)
具体例子:
- \d+ 匹配 "123" 但不匹配 "abc"
- \w+ 匹配 "hello123" 但不匹配 "hello world"
检验一下:
如果你想匹配一个电话号码(如:123-456-7890),
你会使用什么模式?
[等待用户回答...]
质量检查:
- 使用了类比或简单语言
- 提供了具体示例
- 提出了检验性问题
模式 2: 笔记记录(康奈尔笔记法)
触发条件:
- 用户说:"记录这个"
- 用户说:"记笔记"
- 用户说:"保存下来"
- 用户说:"笔记"
执行步骤:
- 确定笔记主题(当前讨论的内容)
- 生成笔记文件名
- 使用康奈尔笔记法整理内容(参考模板
_templates/CORNELL_NOTE.md) - 保存到
notes/目录 - 确认保存成功
康奈尔笔记格式:
# 康奈尔笔记 - [主题名称]
| 线索栏(Cue Column) | 笔记栏(Note-taking Column) |
| -------------------- | ---------------------------- |
| 关键词/问题 | 详细笔记内容 |
| 什么是 X? | X 是指...具体解释... |
| X 的应用场景? | 1. 场景一 2. 场景二 |
## 总结区(Summary)
用 2-3 句话总结本页核心内容...
文件命名规则:
[序号]-[主题-简述].md
示例:
01-character-classes.md
02-quantifiers.md
03-email-matching.md
避免命名冲突:
# 检查文件是否已存在
if [ -f "notes/01-character-classes.md" ]; then
# 询问用户:
# 1. 追加到现有笔记
# 2. 创建新版本(01-character-classes-v2.md)
# 3. 覆盖现有笔记
# 4. 取消操作
fi
注意:优先使用上方的康奈尔笔记格式。对于简短的知识点记录,也可以使用简化格式(概念+示例+要点)。 完整模板参考:
_templates/CORNELL_NOTE.md
示例对话:
用户: 记录这个
AI: 好的!让我整理一下我们刚才讨论的字符类内容...
[生成笔记内容]
笔记已保存到:regular-expressions/notes/02-character-classes.md
笔记包含:
- 概念解释(使用超市类比)
- 5 个代码示例
- 3 个关键要点
- 2 个练习题
需要查看或修改笔记吗?
模式 3: 实践练习
触发条件:
- 用户说:"练习一下"
- 用户说:"我想做练习"
- 用户说:"hands-on"
- 用户说:"实践"
执行步骤:
- 设计符合当前水平的练习题
- 提供清晰的任务描述
- 引导用户完成
- 提供反馈和改进建议
- 将代码保存到
projects/目录
练习题设计原则:
- 从简单到复杂
- 与当前主题直接相关
- 可以在 5-15 分钟内完成
- 提供即时反馈
项目保存结构:
projects/
├── practice-01-[主题]/
│ ├── README.md(任务描述)
│ ├── solution.[ext](解决方案)
│ └── notes.md(学习笔记)
示例对话:
用户: 练习一下
AI: 好的!让我们来实践一下字符类的使用...
练习任务:匹配电话号码
目标:写一个正则表达式,匹配以下格式的电话号码:
- 123-456-7890
- (123) 456-7890
- 123.456.7890
提示:
1. 先匹配数字部分
2. 再考虑分隔符
3. 测试你的模式
[等待用户尝试...]
用户: 我写了 \d{3}-\d{3}-\d{4}
AI: 很好!这个模式可以匹配第一种格式
让我测试一下:
123-456-7890 匹配成功
(123) 456-7890 不匹配
123.456.7890 不匹配
改进建议:
要匹配所有三种格式,可以考虑:
1. 使用选择符 |
2. 使用字符类匹配分隔符
想要继续尝试吗?
[练习结束后...]
练习已保存到:projects/practice-01-phone-matching/
- README.md(任务描述)
- solution.txt(你的解决方案)
- notes.md(反馈和建议)
想要再做一个练习吗?
模式 4: 知识检验
触发条件:
- 用户说:"测试我"
- 用户说:"检验理解"
- 用户说:"考考我"
- 用户说:"quiz"
执行步骤:
- 提出 3-5 个由浅入深的问题
- 根据回答判断理解程度
- 指出知识薄弱点
- 提供针对性建议
问题设计原则:
- 第 1-2 题:基础概念(回忆)
- 第 3-4 题:应用理解(应用)
- 第 5 题:综合运用(分析)
示例对话:
用户: 测试我
AI: 好的!让我检验一下你对字符类的理解...
知识检验:字符类
问题 1(简单):
\d 匹配什么内容?
A) 任何字母
B) 任何数字
C) 任何空白字符
[等待用户回答...]
用户: B
AI: 正确!\d 匹配任何数字(0-9)
问题 2(中等):
要匹配 "a1b2c3" 中的所有字母和数字,
应该用什么模式?
[等待用户回答...]
用户: \w+
AI: 很好!\w+ 会匹配 "a1b2c3"
不过,如果你想分别匹配每个字符,
应该使用 \w 而不是 \w+。
问题 3(较难):
如何匹配一个不包含数字的单词?
提示:可以使用否定字符类
[等待用户回答...]
用户: [^\d]+
AI: 非常好![^\d]+ 会匹配不包含数字的字符序列
检验结果:3/3 正确!
你对字符类的理解很扎实!
下一步建议:
- 尝试更复杂的模式
- 结合量词使用
- 练习实际应用场景
会话结束阶段
步骤 8: 总结本次学习
触发条件:
- 用户说:"/end-study"
- 用户说:"完成"
- 用户说:"结束学习"
- 用户说:"好了"
- 达到预定学习时长
总结内容:
学习会话总结
本次学习内容:
1. [概念 1] - [简要描述]
2. [概念 2] - [简要描述]
3. [概念 3] - [简要描述]
完成的学习任务:
- [ ] 任务 1
- [] 任务 2
- [] 任务 3
创建的笔记:
- notes/02-character-classes.md
完成的练习:
- projects/practice-01-phone-matching/
学习时长:X 分钟
步骤 8.5: 自动生成闪卡
从本次学习内容中提取关键知识点,生成闪卡:
- 分析本次学习的概念和笔记
- 提取 3-5 个核心知识点
- 为每个知识点创建正面(问题)和反面(答案)
- 保存到
[学习项名称]/flashcards/目录 - 使用模板
_templates/FLASHCARD_DECK.md
闪卡格式:
### 卡片 X
**正面(问题):**
[关于核心概念的问题]
**反面(答案):**
[简洁准确的答案]
**难度:** 基础/中等/困难
**标签:** [相关主题标签]
示例:
正面:\d 在正则表达式中匹配什么?
反面:匹配任何单个数字字符(0-9),等价于 [0-9]
步骤 8.6: 更新间隔重复计划
将本次学习内容添加到间隔重复追踪:
- 读取
[学习项名称]/reviews/spaced-repetition.md - 添加新的复习条目
- 计算未来复习日期(基于艾宾浩斯遗忘曲线)
- 标记首次复习时间(20分钟后 / 次日)
复习时间表(自动计算,基于艾宾浩斯遗忘曲线):
学习日期:YYYY-MM-DD
第 1 次复习(R1):+1 天 -> YYYY-MM-DD
第 2 次复习(R2):+3 天 -> YYYY-MM-DD
第 3 次复习(R3):+7 天 -> YYYY-MM-DD
第 4 次复习(R4):+14 天 -> YYYY-MM-DD
第 5 次复习(R5):+30 天 -> YYYY-MM-DD
第 6 次复习(R6):+90 天 -> YYYY-MM-DD
注意:此时间表与
/daily-reviewskill 和_templates/SPACED_REPETITION.md保持一致。
步骤 9: 更新进度文件
更新 progress.md:
- 读取现有 progress.md
- 添加新的进度日志
- 更新总学习时长
- 更新完成百分比
- 检查是否达成阶段里程碑
进度日志格式:
### YYYY-MM-DD
**学习时长**: X 分钟
**完成内容**:
- [任务 1]
- [任务 2]
- [任务 3]
**关键收获**:
- [收获 1]
- [收获 2]
**待解决问题**:
- [问题 1]
**下次计划**:
- [下次学习内容]
阶段升级检查:
# 检查当前阶段里程碑是否全部完成
if [ 当前阶段所有任务完成 ]; then
echo " 恭喜!你已完成 [阶段名称] 阶段!"
echo "是否升级到 [下一阶段]?"
# 使用 AskUserQuestion 询问
fi
步骤 10: 设置下次目标
推荐下次学习主题:
下次学习建议
基于你的进度,建议下次学习:
1. [主题 1] - [原因]
2. [主题 2] - [原因]
待解决的问题:
- [问题 1]
- [问题 2]
学习资源:
- [资源 1](链接)
- [资源 2](链接)
庆祝与鼓励:
太棒了!你今天取得了不错的进步!
进度更新:
- 学习时长:0.5h → 1.0h (+0.5h)
- 完成度:5% → 10% (+5%)
- 距离下一阶段还有:90%
保持这个节奏,你很快就能完成 Novice 阶段!
错误处理与恢复
中断会话处理
如果会话意外中断:
- 创建临时会话文件:
.session/[学习项名称]-session.json - 记录会话开始时间、主题、已创建的文件
- 恢复时询问用户是否继续
会话状态文件格式:
{
"learning_item": "regular-expressions",
"session_start": "2026-02-02T18:00:00",
"planned_duration": 30,
"topic": "character-classes",
"notes_created": ["notes/02-character-classes.md"],
"exercises_completed": ["projects/practice-01-phone-matching/"],
"interrupted": true
}
常见错误处理
| 错误情况 | 处理方式 |
|---|---|
| 学习项目录不存在 | 提示创建新学习项或列出现有项 |
| progress.md 文件损坏 | 备份损坏文件,创建新的 progress.md |
| 笔记文件名冲突 | 提供选项:追加、新版本、覆盖、取消 |
| 无法保存文件 | 检查权限、磁盘空间,提供详细错误信息 |
| 预定时间到达 | 询问用户是否延长学习时间或结束会话 |
示例完整会话流程
用户: /study regular-expressions
AI: 确认学习项:Regular Expressions
当前阶段: Novice
已学习:0.5 小时
已有笔记:1 篇
基于你的学习路线图,接下来可以学习:
1. 字符类:[abc], [^abc], \d, \w, \s (推荐)
2. 量词:*, +, ?, {n}, {n,m}
3. 锚点:^, $, \b, \B
4. 自定义主题
[AskUserQuestion...]
用户: 选 1,计划学习 30 分钟
AI: 今日学习目标
主题:字符类
时长:30 分钟
目标:掌握 \d, \w, \s 和字符集合的用法
[开始概念解释...]
用户: 什么是 \d?
AI: [使用费曼技巧解释...]
用户: 记录这个
AI: 笔记已保存到:notes/02-character-classes.md
用户: 练习一下
AI: [提供练习任务...]
用户: [完成练习]
AI: 练习已保存到:projects/practice-01-phone-matching/
用户: /end-study
AI: 学习会话总结
本次学习内容:
1. 字符类基础概念
2. \d, \w, \s 的用法
3. 字符集合 [abc] 和否定 [^abc]
学习时长:30 分钟
总进度:0.5h → 1.0h (+0.5h)
[更新 progress.md...]
下次学习建议:
1. 量词:*, +, ? (这是下一个主题)
2. 复习字符类(巩固基础)
继续保持!