封面:AI 学习系统六步法

接上篇:《Claude 六步提示词系统(上):核心框架 + 学习阶梯 + 20 小时 80/20》

本篇覆盖提示词 3-6 与串联系统、落地模板、避坑指南。


四、提示词 3:考我直到我崩溃——主动回忆找漏洞

4.1 核心逻辑

被动阅读看起来很有成效。主动回忆才能揭示真相。

这个提示词把 Claude 变成 严格考官

  • 一次只问 1 题,等你答
  • 10 题分 4 梯度:新手 1-3 → 中级 4-6 → 高级 7-8 → 专家 9-10
  • 每答一题:评分 → 指出对/错 → 只重讲漏洞 → 弱则追问 → 强则升级
  • 最后给:总分、强项、弱项、复习计划、5 道挑战题

4.2 完整提示词(可直接复制)

我刚刚学习了 [主题],我想测试一下我到底理解得怎么样。

请扮演一位严格但有帮助的考官。你的工作是通过主动回忆找出我理解的边界。

首先,问我 10 个问题,一次一个。

规则:

1. 让问题逐步变难:
   - 第 1-3 题:新手级别
   - 第 4-6 题:中级水平
   - 第 7-8 题:高级水平
   - 第 9-10 题:专家水平

2. 一次只问一个问题,并等待我的回答。

3. 每次回答后,做四件事:
   - 给我的答案打分(满分 10 分)
   - 告诉我哪些地方答对了
   - 指出确切的漏洞、错误或薄弱点
   - 只用简单的语言重新讲解我遗漏的部分

4. 如果我的答案很弱,在继续下一个问题之前,先追问一个问题。

5. 如果我答得好,稍微增加难度。

6. 最后,给我:
   - 最终得分
   - 我最强的领域
   - 我最弱的领域
   - 一个简短的复习计划
   - 5 个最终的挑战题来掌握这个主题

不要一次性给我所有答案。让这个过程感觉像一次真正的学习访谈。

4.3 实战演示:Rust 所有权考官对话(节选)

考官:「Q1(新手):解释『所有权』的三条规则,每条用一句话。」

:「每个值有一个所有者;同一时刻只有一个所有者;所有者离开作用域值被丢弃。」

考官:「✅ 9/10。遗漏:『赋值/传参会发生 move』——这导致新手最常见的 use of moved value 报错。重讲:move 语义 = 所有权转移,旧变量失效。」

考官:「Q2(新手):let s1 = String::from("hi"); let s2 = s1; println!("{}", s1); 会发生什么?为什么?」

:「编译报错,s1 被 move 了,不能再用。」

考官:「✅ 10/10。下一题升级。」

考官:「Q4(中级):什么时候用 &T、什么时候用 &mut T、什么时候用 Box?给决策树。」

:「…」

4.4 进阶用法

场景 追加指令
模拟面试 「按 [Google / 字节 / Rust 基金会] 面试风格出题,含系统设计开放题」
考证冲刺 「对齐 [CKAD / AWS SAA / PMP] 真题库风格,每题标注知识点编号」
团队复盘 「输出 Markdown 报告:姓名、各题得分、共性弱项、团队复习计划」
间隔重复 「把 10 题 + 5 道挑战题按 Anki 卡片格式导出:正面=题,背面=答案+漏洞解析」

五、提示词 4:创建一页速查表——大脑记结构不记段落

5.1 核心逻辑

你的大脑记忆结构比记忆段落更容易。

压缩到 一页纸,5 分钟复习

  • 定义(简单语言)
  • 核心概念/规则/公式/步骤(要点)
  • 图表/流程图/表格/思维模型
  • 3-5 个现实例子
  • 常见错误/易混淆点
  • 使用前检查清单
  • 5 个快速测试题

5.2 完整提示词(可直接复制)

我想要一份 [主题] 的一页速查表。

请扮演一位专家教师,能够将复杂想法简化为一份快速复习表。

创建一份我可以在使用该主题前 5 分钟内复习完的速查表。

请包括:

1. 该主题的简短定义,用简单的语言。
2. 最重要的概念、规则、公式或步骤。
3. 清晰的要点,而不是长段落。
4. 一个简单的带标注的图表、流程图、表格或思维模型(如果有助于解释主题的话)。
5. 3-5 个具体例子,展示该主题在现实生活中的运作方式。
6. 我应该避免的常见错误或容易混淆的部分。
7. 一个快速的"使用前检查清单"。
8. 5 个快速测试题来检验我的记忆。

保持实用、可视化、对新手友好且易于扫描。

5.4 实战输出样例:Rust 所有权速查表(Markdown 可直接存 Obsidian)

# 🦀 Rust 所有权·借用·生命周期 — 一页速查表

## 定义
内存安全无 GC 的核心:编译期通过**所有权/借用/生命周期**三套规则,确保无空悬指针、无数据竞争、无双重释放。

---

## 核心规则(背下来)
| 规则 | 口诀 | 代码后果 |
|------|------|----------|
| **所有权** | 有主、唯一、离开即丢 | `let s2 = s1` → s1 失效(move) |
| **借用** | 要么多读、要么单写、引用不超主 | `&mut` 独占、`&` 共享、不可共存 |
| **生命周期** | 引用活得比被引用久 | `'a` 标注,编译器自动推导 90% |

---

## 思维模型:三角铁律
   ┌──────────────┐
   │   所有权      │ ← 唯一拥有者,决定 drop 时机
   └──────┬───────┘
          │ move / 借用
  ┌───────┴────────┐
  ▼                ▼

┌─────────────┐ ┌─────────────┐ │ 不可变借用 │ │ 可变借用 │ │ &T │ │ &mut T │ │ 多读共存 │ │ 独占写 │ └─────────────┘ └─────────────┘ ▲ ▲ └───────┬────────┘ │ 引用生命周期 ≤ 拥有者生命周期 ▼ ┌──────────────┐ │ 生命周期 │ ← 编译期约束,运行期零成本 └──────────────┘


---

## 3 个现实例子
1. **函数参数**:`fn foo(s: &String)` → 只读借用,调用者保留所有权
2. **方法链**:`vec.iter().map(|x| x*2).collect()` → 连续不可变借用,安全
3. **线程传递**:`thread::spawn(move || { ... })` → `move` 夺走所有权,'static 生命周期

---

## ⚠️ 常见错误(避坑榜)
| 错误 | 现象 | 修正 |
|------|------|------|
| 循环里 push 同 vec | `cannot borrow as mutable` | 先收集索引,再改;或用 `split_at_mut` |
| 闭包捕获环境变量 | `does not live long enough` | 加 `move` 或显式标注生命周期 |
| 结构体存引用不标注 `'a` | 编译报错 | `struct Foo<'a> { x: &'a i32 }` |
| `&mut` 后又用原变量 | `borrow later used here` | 缩小作用域 `{ ... }` 或 `clone()` |

---

## ✅ 使用前检查清单(写代码前 30 秒)
- [ ] 谁拥有这块数据?(所有者)
- [ ] 我要读还是写?(`&` vs `&mut`)
- [ ] 引用能活多久?(生命周期 ≤ 拥有者)
- [ ] 需要跨线程吗?(`Send + Sync` / `'static`)
- [ ] 会不会同时 `&` 和 `&mut`?(编译期拦截)

---

## 🧪 5 秒自测题
1. `let mut v = vec![1,2,3]; let r = &v[0]; v.push(4);` → 编译?为什么?
2. `fn foo(x: &i32) -> &i32 { x }` 生命周期省略规则是什么?
3. `Box::new(5)` 和 `&5` 在栈/堆上有何区别?
4. 什么是 `Pin<Box<Future>>`?解决什么问题?
5. `Rc<RefCell<T>>` 组合实现什么模式?(内部可变性 + 共享所有权)

5.5 进阶用法

场景 追加指令
打印贴墙 「输出 A4 版式:左栏规则、右栏图表、底部检查清单,PDF 就绪」
Anki 导入 「把 5 道测试题 + 5 个常见错误按 正面::背面 CSV 导出」
团队共享 「生成 Notion Page:含数据库视图、标签筛选、版本历史」
考前突击 「只保留『检查清单』+『5 道测试题』,其余折叠」

=== END PART 2 ===