一个 Socratic 式的学习引导 skill——把"我想学 X"变成可操作的理解,并且每次会话都留下一个你可以带走的成果物。
learn-x 是一套领域无关的教练框架,面向 AI 助手(以及希望把学习会话开得更好的人类引导者)。它不"讲课":先诊断学习者真正的起点,每轮只引入一个概念,用结构化的 A/B/C/D 选择题代替开放式提问,每 3 轮左右做一次 lock-in 回顾,正确答案后再用"魔鬼代言人(devil's advocate)"追问压深度,最后每次会话都以学习者自己产出的东西作为结束。
无论 X 是一门编程语言、一个数学概念、一个设计模式、一个工具、一个框架、一个领域还是一项软技能,这套框架都适用。
绝大多数学习失败,都是因为讲得太多、太快——在学习者还没把新概念接入自己的心智模型之前,信息已经灌完了。传统"直接解释一遍"的互动会让学习者一边点头一边遗忘,48 小时内几乎完全失效。
learn-x 的设计只围绕一个视角转换:
学习者掌舵(负责把事情想明白)。教练执行(只问,不讲)。
skill 里每一条规则、每一个提问模板、每一步工作流,都是为了让学习者的大脑保持主动而不是被动接收。
当用户说出类似下面这些话时,就该触发本 skill:
- "教我 X" / "帮我学 Y" / "我想搞懂 Z" / "带我入门 ..."
- "help me learn / understand / get good at ..."
- "能不能带我过一遍 ...?"
- "我一直没搞清楚 ..."
尤其适用于:
- 主题复杂、多层次
- 学习者的起点不清楚
- 之前"看看文档就懂了"没能奏效
不适用场景:纯事实查询("Python 是哪年发布的?")、或者需要 Agent 直接替学习者干活(写代码、修 bug)。这些应该路由到其他 skill。
每一轮对话都应该同时激活以下 4 层。只问问题(L3)却不锚定目标(L1)、也不产出任何东西(L4)的对话,会让整场会话逐渐漂移。
| 层 | 作用 | 当轮示例 |
|---|---|---|
| L1 · 锚点(Anchor) | 保持对目标 + 参照样例的视野 | "别忘了你说下个月要做出 X,这个概念就是为这件事服务的。" |
| L2 · 纪律(Discipline) | 控制节奏:先诊断、单概念、lock-in、魔鬼代言人 | "先别急着看我解释——你以为它是干嘛的?" |
| L3 · 战术(Tactics) | Socratic 动作:prime / hypothesize / verify / apply / reflect / challenge | "A / B / C 选一个——哪个更符合你的直觉?" |
| L4 · 产物(Artifact) | 每几轮就要产出一件具体的东西 | "用你自己的话写一个 5 行版本。" |
- 先诊断,再教学。 开场先问目的、先前印象、相邻知识。绝不用内容开场。
- 每轮只引入一个新概念。 多出来的概念进队列,不要堆叠。每个概念都配一个小于 3 分钟的微任务。
- 结构化选择优先于开放式提问。 用"A / B / C——选哪个,为什么?"替代"你会怎么做?"。永远给学习者留一个"选 D(自己的答案)"的空间。
- 每 ~3 轮做一次 lock-in 回顾。 显式复盘:已经锁住的 + 下一步要做的。具体且简短,胜过含糊的大回顾。
- 正确答案之后要用魔鬼代言人追问。 答对很便宜,深度才贵。别停在"答对了",再挤一个假设出来。
每条规则的完整理由见 SKILL.md。
阶段 1 — Onboarding 阶段 2 — 路径提案
(先诊断,不教) ──► (3–7 个里程碑,学习者确认)
│
▼
阶段 4 — 产物 阶段 3 — 里程碑循环
(demo / cheat sheet / ◄── (prime → hypothesize → reveal → verify
mindmap / flashcards ...) → challenge;每 3 轮 lock-in)
阶段 1 — Onboarding。 用 references/diagnose-playbook.md 中的 3–4 个诊断问题起手。此时不教任何东西,即使学习者的先前理解是错的。
阶段 2 — 路径提案。 基于诊断结果,给出 3–7 个有序里程碑,让学习者确认或替换。这一步的目的是让学习者和你共同拥有计划。
阶段 3 — 里程碑循环。 每个里程碑走一遍 6 步微循环:prime → hypothesize → reveal + 微任务 → verify → challenge,每 ~3 轮做一次 lock-in。
阶段 4 — 产物。 每次会话都以学习者产出的东西作为结束:可运行的 demo、自己话写的 cheat sheet、mindmap、反思笔记、flashcards、或者"教回来(teach-back)"。没有产物的会话几乎等于没学。
learn-x/
├── SKILL.md # 完整 skill 规范——哲学、规则、工作流
├── README.md # (本文件)中文总览
├── README-en.md # 英文总览
└── references/
├── diagnose-playbook.md # 开场动作:按主题类型的问题脚本
├── question-templates.md # 6 类 Socratic 模板(prime / hypothesize / verify / apply / reflect / challenge)
└── session-patterns.md # 概念 / 工具 / 技能 / 领域 / 思维习惯 学习的适配工作流
SKILL.md— 规范文件。AI agent 真正加载执行的文件。想用或想移植这个 skill 从这里入手。references/diagnose-playbook.md— 会话前 3–10 分钟的脚本化开场 + 需要倾听的信号。references/question-templates.md— 每个 Socratic 动作的可复用措辞库。需要换个问法或避免用词重复时加载。references/session-patterns.md— 概念学习 vs. 工具上手 vs. 技能构建 vs. 问题解决 vs. 思维习惯,分别该怎么排会话。
skill 规范里明确列了这些反模式,因为这是"好意的会话仍然失败"的最常见原因:
- 整段灌输式解释,哪怕学习者求你"直接告诉我就好"。
- 空洞的表扬("你好聪明!"),只会训练出寻求认可的反射,不会带来理解。
- 无视学习者说过的目标,绕到无关的基础知识上。
- 不分对象的统一节奏,对初学者和已有相邻背景的人用一样的速度。
- 结尾没有产物。
框架是去适配学习者的,不是反过来:
| 情况 | 调整方式 |
|---|---|
| 完全零基础 | 更多 prime、更小粒度、更多复述、更早产物 |
| 有相邻领域经验 | 跳过基础,加大 challenge,节奏放快 |
| 学习者说"直接告诉我就好" | 讨价还价:"那我们先猜一个,一秒钟就好,好吗?" |
| 学习者沉默 | 把抽象度降一级,或者举一个具体例子 |
| 学习者跟你的答案争论 | 鼓励它——认真对待,他可能是对的 |
| 有时间盒 | 压缩里程碑数量;把最后 10% 留给产物 |
通过 skills.sh 安装(支持 Claude Code / Cursor / Codex / CodeBuddy / OpenCode 等 50+ 种 agent):
# 全局安装 — 所有项目共享
npx skills add dimayip/learn-x -g -a claude-code
# 项目级安装 — 随仓库提交
npx skills add dimayip/learn-x -a codebuddy
# 其他 agent:-a 后面换成 cursor / codex / opencode 等或手动 clone 到 agent 的 skills 目录:
# Claude Code(全局)
git clone https://github.com/dimayip/learn-x ~/.claude/skills/learn-x
# CodeBuddy(项目级)
git clone https://github.com/dimayip/learn-x .codebuddy/skills/learn-x兼容 Agent Skills Specification。
支持 skill 加载的平台(CodeBuddy / Claude skills 等):
- 把整个目录放到平台的 skills 文件夹下(例如
.codebuddy/skills/learn-x/); - 当用户的请求匹配 skill 描述(学习、教练、"教我 X" 等)时,agent 会自动加载
SKILL.md; references/下的文件按需加载——agent 只在当前对话真正需要详细脚本、问题措辞或特定场景指引时才读。
如果你是自己当引导者:完整读一遍 SKILL.md 把 5 条规则内化,会话时把三份 reference 文件开在旁边随时查。
- 领域无关优先。 核心规范里的每一条都必须能对任何 X 适用。主题相关的微调只能放在
references/session-patterns.md里,不能污染主规则。 - 规则优于建议。 5 条规则是难以绕过的硬规则。软建议会在压力下被忽略;硬规则会幸存。
- Reference 按需加载。
SKILL.md保持精简,让 agent 能便宜地持有;更深的材料按轮次 opt-in。 - 没有产物 = 没学。 整套框架以留存为优化目标,而留存最高杠杆的一招是产出可带走的东西。
除非单独文件另有说明,本仓库内容遵循 MIT License。详见 LICENSE。
由 @dimayip 设计并维护。融合了 Socratic 教学、认知负荷理论、retrieval practice 以及 "harness engineering" 中"掌舵/执行分离"的思路——压缩成一套在真实会话里跑得动的规则集。