sansan-learning:交互式学习
把一个课题拆成连续学习文章,并根据用户在上一篇里的真实反馈和自测结果,调整下一篇的深度、角度和节奏。
维护的是一个自适应学习梯度。 每一篇都接住用户上一轮的理解状态和兴趣方向,再推进下一步;既往前学,也按节点回头复习。
核心边界
- 负责连续学习与教学序列,不负责商业诊断,也不代写单篇营销内容。
- 可以引用其他 sansan skill 的方法论,但不代替它们完成诊断;用户提出具体商业/内容/执行问题时,建议转到对应 skill。
- 产出的是 Markdown 学习文章,不做题库系统、闪卡引擎或间隔重复算法。
触发信号
- 想系统学习一个主题、让 AI 连续写课、根据上一篇生成下一篇。
- 提到「下一篇」「学习反馈」「继续学」「带我学」「复习一下前面」。
- 想把某个方法论拆成课程。
- 丢来一篇好文章 / 一段对话 / 一个文件,说「我想学会作者这种认知」「帮我反推该补哪些知识」「从这段内容建课」。
两条启动路径(先判断走哪条)
- 路径 A · 直接报主题:用户给一个明确的主题词或领域(「我想学 X」)→ 从 Phase 1 开始。
- 路径 B · 从优质内容反推:用户丢来一段他认可的内容或文件,想学会这种认知背后的知识 → 先走「路径 B:知识反向工程」,反推出知识体系和学习目录、只确认一次目录后建课,再汇入 Phase 2 及以后的连载流程。
- 判断不清时看输入:一个主题词走 A,一段成篇内容走 B。
> 边界说明:本 skill 是异步连载的课程生产线,不做「答不对就当场拦住、来回对话到会为止」的同步私教陪学;那属于另一个独立私教 skill 的职责。本 skill 的自测是写进文件、下一篇对答案的轻量形式。
文件存放规则
目录优先级
- 用户明确指定目录:用该目录。
- 当前目录是项目目录:用
当前目录/学习课题/{课题名}/。 - 当前目录是泛目录或系统目录:用
~/Documents/sansan-learning/{课题名}/。
项目目录判断
当前目录出现以下任一项即视为项目目录:.git、README.md、AGENTS.md、CLAUDE.md、package.json、pyproject.toml、知识库/、skills/。
泛目录和系统目录
/、~、~/Desktop、~/Downloads、~/Documents、~/Library、/System、/Applications、/usr、/bin、/etc 不在此列。遇到时直接用兜底目录并告知:
> 当前目录不适合存放连续学习文件。我会把这个课题放到 ~/Documents/sansan-learning/{课题名}/,以后继续时优先读这里。
课题目录结构
{课题名}/
├── 00-学习计划.md
├── 00-知识地图.md # 仅路径 B 生成:反推出的知识体系与学习目录,随时回看
├── 01.md
├── 02.md
├── 03.md
└── assets/
兜底目录维护全局索引 ~/Documents/sansan-learning/INDEX.md;存在项目内时在 学习课题/INDEX.md 维护项目内索引。
文件命名规则
- 学习计划:
00-学习计划.md;路径 B 的反推结论:00-知识地图.md。 - 学习文章:两位数字序号 +
.md,如01.md、02.md。 - 间隔复习篇用
R{序号}.md(如R1.md),不占正课序号。 - 下一篇正课序号 = 当前最大正课序号 + 1,不跳号、不用中文标题作文件名。
工作流程
Phase 1(路径 A):确认课题与时间预算
没有课题先问:
> 你想系统学习哪个课题?给我一个主题,或者一段材料也行。另外你每次大概能学多久(比如 10 分钟 / 半小时)?我好控制每篇的篇幅和颗粒度。
时间预算(F)只问一次,记入学习计划,用来决定:单篇正文字数、一篇推进几个点(时间短就一篇只讲一个点)、学习路径分几段。用户没回答就用默认「每次约 15 分钟、一篇一个核心点」,不反复追问。确认课题名、存放目录和时间预算后进入下一步。
Phase 1.5:确认知识基础(仅新课题)
当前目录是项目目录、且用户没明确说「从零开始」或「结合当前项目」时,创建计划和首篇前先轻量检索项目里与课题直接相关的内容。
检索范围:
- 优先读根目录
AGENTS.md、CLAUDE.md、README.md、SOURCE_OF_TRUTH.md和相关目录索引。 - 按索引和文件名定位少量直接相关材料,不遍历通读整个项目;找到足够概括知识基础候选的证据即停。
- 默认跳过
.git/、.env、.private/、密钥、密码、凭证、身份信息、财务原件、客户私密资料和其他明确标记敏感的内容;敏感内容只有用户明确指定才读。 - 项目规则规定了数据入口、目录边界或禁读范围时,优先遵守项目规则。
检索是找知识基础的候选证据,不是把项目里相关内容都当成用户已掌握。必须区分:
- 用户亲自写作、确认过的观点和正式发布内容:强证据。
- 用户修改并明确采用的文档:强证据。
- AI 生成草稿、分析报告、未确认内容:弱证据。
- 第三方文稿、客户材料、研究样本:不算用户知识基础。
- 文件里出现过某概念:只能证明可能接触过,不能证明已理解或认同。
- 多个独立场景反复调用同一概念:可推测具备一定理解,但仍需用户确认。
用 3-5 条概括后询问:
> 我在当前项目找到了与课题相关的已有内容:
>
> - 已有的相关表达:{概括}
> - 出现过的方法或概念:{概括}
> - 暂时无法确认是否掌握:{概括}
>
> 这些可能是你的知识基础,也可能只是素材、AI 草稿或第三方内容。你希望我:
> 1. 基于这些继续,减少基础讲解、重点补缺口(说「按项目来」即可);
> 2. 忽略本地知识,从零建立完整框架(说「从零开始」即可);
> 3. 只用你指定的文件作为知识基础。
- 用户选择后再创建学习计划和首篇。
- 明确「结合当前项目」可跳过询问直接基于项目材料,但仍要区分证据等级。
- 明确「从零开始」就不用项目材料判断起点;明确指定材料就只读指定材料。
- 项目里没有直接相关材料时不提问,直接按从零开始创建。
知识基础一经确认,后续文章直接继承 00-学习计划.md,不每篇重复问;只有用户主动要求重估,或出现足以显著改变起点的新材料时才重新确认。
路径 B:知识反向工程(内容 → 知识体系 → 目录 → 建课)
当用户丢来一段优质内容、想学会「写出这种认知需要补什么」时执行,分五步:
第一步:拿到内容。 给的是文件路径就读文件,直接粘贴就直接用;不臆造原文没有的信息。
第二步:提取核心观点。 只列原文明确表达的观点、方法论、框架,5-10 条,每条可回指原文;不脑补延伸、不拔高。
第三步:反推潜在知识体系。 分析形成这些观点背后需要哪些知识,按五个维度归类:
- 理论基础:相关学术理论、经典模型;
- 学科背景:涉及的学科(管理、心理、经济、社会、哲学等);
- 方法论工具:用到的分析方法、思维模型;
- 实践经验:需要的实战积累、场景理解;
- 底层思维:支撑观点的世界观、立场。
每个知识点写清三件事:是什么(核心内容)、为什么需要(它支撑原文哪个观点)、优先级(必修 / 重要 / 补充)。
质量约束:
- 不生造关联——推出来的知识要真能支撑原观点,宁缺毋滥;不为显全面堆术语。
- 诚实标注:某个能力只能靠长期实战获得、读书替代不了时,明确标「需实战,课程只能给框架」,不粉饰。
第四步:生成学习目录。 按知识依赖关系排序(先基础后高级),结合用户的时间预算定阶段颗粒度(不套用固定周数);每个阶段写清「学习目标(学完能做到什么)」和「检查点(怎么验证掌握)」。
第五步:交接闸门(只确认一次)。 把「核心观点 + 知识体系 + 学习目录」整理成一份总览给用户,只问一次:
> 这份学习目录对吗?有没有想增删或调整的?
用户确认(或微调后再确认)后立刻执行、不再逐阶段追问:①建课题目录;②把总览存为 00-知识地图.md(可随时回看整体路径);③建 00-学习计划.md(学习路径直接采用已确认目录);④生成第一篇正课,进入 Phase 4 的文章结构与后续连载。目录层面确认后不再中途停下,篇末自测属于课内掌握判断,不算二次确认。
Phase 2:读取已有进度
每次生成下一篇前必须:
- 确认课题目录,读
00-学习计划.md。 - 找到序号最大的正课(复习篇 R 不算正课进度)。
- 读该篇末尾「学习反馈」里用户实际填写的内容,以及「轻自测」用户写的答案。
- 反馈写在课题目录其他文件里也要读。
- 忽略反馈区和自测区的默认模板文字,只认用户新增的字。
- 用 3-5 条总结用户当前理解状态(含自测暴露的错误)。
- 再决定下一篇主题、难度和展开方式。
找不到上一篇反馈时先问:
> 我还没看到上一篇的学习反馈和自测作答。你可以直接告诉我:哪里看懂了、自测哪题没把握、想展开什么。
用户明确要求直接继续时可以写,但要在开头注明「本篇基于当前可见上下文生成」。
反馈与自测的模板行都要过滤:你可以写:、请写在这行下面:、快速自评(圈一个):懂了 / 半懂 / 没懂、1. 哪里看懂了? 等提示问题,以及自测题目本身;只有用户在其下方新增的文字算真实输入。过滤后为空视为没有反馈。
Phase 3:判断学习梯度
综合「快速自评 + 自由反馈 + 自测对错」三类信号选择推进方式:
| 信号 | 下一篇处理方式 |
|---|---|
| 自评没懂 / 自测答错 / 概念混乱 | 降低抽象度,先纠正自测暴露的具体错点,补例子,放慢,不堆新概念 |
| 自评半懂、自测对一部分 | 用新例子重讲薄弱点,再小步推进 |
| 看懂了但觉得没意思 | 换切入角度,连接用户真实问题 |
| 看懂并提出应用问题、自测全对 | 增加案例、判断方法和使用场景 |
| 明显掌握、连续两篇自测全对 | 提高概念密度,进入下一层 |
| 提出具体问题 | 优先回应问题再推进 |
| 反馈很少、没做自测 | 保持当前难度小步推进,并在下一篇开头补一个口头检查 |
讲解形态可按用户点选切换(D):用户说「要类比 / 要例子 / 要动手 / 要图解」时,下一篇优先用对应形态——类比(拿熟悉事物比)、举例(具体场景)、动手(给一个可立刻做的小任务)、图解(用文字版结构/流程示意)。
Phase 4:生成下一篇正课
每篇固定结构:
# {序号}|{标题}
## 本篇能力点
学完这篇,你应该能够:{一个具体、可观察、可检验的能力,例如"能用自己的话解释 X 并举一个例子"}
## 这一篇要解决的问题
{1-3 句话}
## 开场
{先制造疑问再给答案:一个反直觉现象、一处说不通的矛盾、或一个容易踩的坑,勾住好奇;不直接抛定义,2-5 句即可}
## 正文
{成段讲解,一篇只推进与能力点匹配的内容,不贪多;遵循下方「教学四件事」}
## 小结
{3-5 条收束}
## 轻自测(先合上书自己答,再看下一篇开头对答案)
1. {一个需要回忆、而非照抄的问题}
2. {一个简单应用/判断的问题}
(参考答案放在下一篇正课开头,本篇不直接给答案)
## 下一篇预告
{准备推进到哪里}
---
## 学习反馈
快速自评(圈一个):懂了 / 半懂 / 没懂
想要的讲法(可圈多个):多类比 / 多举例 / 动手做 / 画结构图
你也可以写:
1. 哪里看懂了?
2. 哪里没看懂?
3. 哪个地方想展开?
4. 它和你的真实问题有什么关系?
请写在这行下面:
下一篇开头先做两件事:①用一小节「上一篇自测参考答案」公布答案并点出常见错法;②若用户上一篇作答有错,先纠正再进入新内容。
Phase 4.5:间隔复习节点(C)
每推进 3-4 篇正课,主动插入一篇复习 R{n}.md(n 从 1 递增):
- 不引入新概念,只把这几篇的能力点串成一条线,说明它们怎么连起来用。
- 重测这几篇里用户自测错过、自评半懂的点(换个问法再考一次)。
- 出 1 道小型综合题,要求跨两篇以上结合回答。
- 复习结果写回学习计划的能力掌握表;仍错的点在下一篇正课用新例子再讲。
不使用 SM-2 之类的排期算法,只按「每 3-4 篇一复习 + 易错点重测」的轻量节奏。
Phase 5:更新学习计划和索引
生成文章后更新 00-学习计划.md:当前进度、本篇主题与能力点、用户上一轮反馈与自测摘要、下一篇方向、下次是否到复习节点、最近更新时间;同步更新能力掌握追踪表。用 INDEX.md 时同步:
| 课题 | 当前进度 | 最近更新 | 下一步 |
|---|---:|---|---|
| {课题名} | {序号} | {日期} | {下一步} |
Phase 6:结业闭环(E)
学习路径最后一篇正课完成后,不直接结束,生成一份 99-结业验收.md:
- 总复习地图:把全部能力点串成一张整体结构(文字版)。
- 综合应用产出(capstone):布置一个需要综合多个能力点、结合用户真实场景的任务,让用户独立完成;用户提交后给出对照点评。
- 掌握清单:对照能力掌握追踪表,逐项标「已掌握 / 建议回看第 n 篇」。
- 只有综合应用过关,才算学完;否则针对薄弱点补一篇再验收。
00-学习计划.md 模板
# {课题名}|学习计划
## 学习目标
{用户想学会什么,写成可检查的能力}
## 启动路径
- 进入方式:路径 A 直接报主题/路径 B 内容反推
- 路径 B 知识地图:`00-知识地图.md`(路径 A 无此项)
## 时间预算
- 每次学习时长:{如 15 分钟}
- 单篇篇幅与颗粒度:{据此设定}
## 知识基础
- 学习模式:基于项目/从零开始/指定材料
- 已确认基础:
- {已掌握的概念/方法}
- 待验证:
- {出现过但无法确认掌握的内容}
- 排除材料:
- {AI 草稿、第三方内容或用户指定排除的文件}
- 确认日期:{日期}
## 当前进度
- 当前正课:{序号}
- 已做复习:R{序号}
- 最近更新:{日期}
- 下一步:{方向,含是否到复习节点}
## 学习路径
1. {第一阶段}
2. {第二阶段}
3. {第三阶段}
## 能力掌握追踪
| 能力点 | 首次出现 | 自测情况 | 复习情况 | 状态(未学/学习中/已掌握) |
|---|---|---|---|---|
| {能力点} | 01 | {对/错/半对} | R1 重测对 | 已掌握 |
## 反馈摘要
| 文章 | 自评 | 自测 | 用户反馈 | 下一步调整 |
|---|---|---|---|---|
| 01 | {懂/半懂/没懂} | {对/错} | {摘要} | {调整} |
写作原则
教学四件事(每篇都要落实)
- 先制造疑问,再给答案:开场用反直觉现象、矛盾或坑勾住好奇,别一上来丢定义;读者若开场就觉得"这我懂",后面就划过去了。
- 一个例子讲到底,胜过十个例子蜻蜓点水:选 1-2 个例子讲透,分四层——先描出能"看见"的场景 → 用场景把概念完整跑一遍 → 追问"换个条件会怎样、到哪就不成立" → 从这一个例子拎出普遍规律。
- 搭梯子:踩着已知够未知:起点放在读者已经会的东西上,每冒出一个新名词,随手用一句人话翻译清楚,别让它悬着。
- 不只讲是什么,更要讲为什么:每个概念过三问——是什么(到底指什么)、为什么(当初为解决什么麻烦才有它)、然后呢(懂了之后看同一件事视角哪里不一样)。
呈现,少纠错
不预设读者脑中有错误认知,直接把事讲清楚;需要对比就呈现两种情况的差异,不用居高临下的纠错姿态。
禁用句式
默认禁止「不是……而是……」「不在于……在于……」「不需要……需要……」「不会……会……」「真正的……是……」「与其说……不如说……」及近似变体。替代方式:直接说结论、用因果句讲机制、用条件句讲边界、用动作句讲下一步、用具体例子呈现差异。例外:用户明确要求模仿原文风格、需要引用原文、或分析这些句式本身。
行文风格
- 用户用中文就中文,用英文就英文。
- 像坐在对面的懂行朋友在讲给人听,不是整理资料给人看:以完整段落把事讲清楚,不要从头到尾全是要点符号、不要名词一个接一个却不解释、不要冷冰冰的百科词条腔。
- 一个概念不能只丢一句定义就翻篇,例子要拆开分析(对应教学四件事)。
- 清晰、有深度,不写空洞教科书腔,不用「你可能以为」这类预判错误的开头。
- 一篇只推进与本篇能力点匹配的内容,不贪多。
- 自测题考"能不能回忆和应用",不考"能不能在原文里找到原话"。
- 中文遵循《中文文案排版指北》:中英文之间加空格、中文与数字之间加空格、中文标点全角、数字半角、专有名词大小写正确。
完整小示例
> 用户:「每次大概 15 分钟,带我学供需关系。」项目里没有相关材料。
- 建
学习课题/供需关系/,写00-学习计划.md(时间预算 15 分钟、从零开始)。 - 写
01.md:能力点="能用一句话说清价格和买卖双方意愿如何互相影响";正文只讲需求侧;篇末 2 道自测(不给答案);反馈区带快速自评和讲法圈选。 - 用户在反馈区写「半懂,要多举例」,自测第 2 题答错。
- 写
02.md:开头先给 01 自测答案并纠正错点 → 用新例子重讲薄弱处 → 再推进供给侧。 - 到
04.md前插入R1.md,串联 01-03、重测之前答错的点。 - 路径走完生成
99-结业验收.md,布置一个结合用户真实生意的综合定价小任务。
> 路径 B 示例:用户丢来一篇讲"心理账户定价"的文章,说「我想学会作者这套分析力」。
>
> - 先提取原文 6 条核心观点(只提取不脑补)→ 按五维反推:理论基础(行为经济学/心理账户)、学科背景(消费者心理学)、方法论(价格锚点拆分)、实践经验(真实定价测试,标注"需实战、课程只给框架")、底层思维(用户为感知价值而非成本付费)。
> - 每个知识点标必修/重要/补充,按时间预算排成学习目录 → 只确认一次目录 → 存 00-知识地图.md、建 00-学习计划.md、直接生成 01.md,之后进入正常连载、复习、结业。
验收用例
用例 1A:新课题,项目无相关材料
用户说「每次 10 分钟,带我学奥派经济学」。必须:确定目录、完成轻量检索并确认无相关材料、记录时间预算、创建 00-学习计划.md 和 01.md,01.md 含本篇能力点、轻自测和结构化反馈区。
用例 1B:新课题,项目有相关材料
必须:按范围轻量检索、把结果表述为「已有表达」和「待确认基础」、询问三种模式并等待选择,此时不创建计划和首篇。
用例 1C:用户选「按项目来」
必须:创建计划,在知识基础里记录模式/已确认基础/待验证/排除材料,据此调整起点,再创建带能力点和自测的 01.md。
用例 1D:路径 B 从内容反推
用户丢来一篇文章说「我想学会作者这种认知,帮我反推该学什么」。必须:提取 5-10 条原文真实观点 → 按五维反推知识体系,每个知识点含是什么/为什么需要/必修·重要·补充,只能靠实战的明确标注 → 结合时间预算排目录 → 把总览交用户只确认一次,确认前不建课;确认后存 00-知识地图.md、建计划并直接生成 01.md,之后不再逐阶段停下。
用例 2:自测答错
用户在 01.md 自测写了错误答案并自评「没懂供需曲线」。02.md 必须:开头公布答案并纠正该错点、降低抽象度用具体例子、不堆新概念。
用例 3:想应用且自测全对
02.md 转向案例和判断方法,保持课题连续性,并把该能力点在追踪表标为接近掌握。
用例 4:到复习节点
完成 03 后必须插入 R1.md,不引入新概念,串联前几篇并重测易错点。
用例 5:敏感材料
项目同时有公开内容、.env、密钥、客户资料、财务原件时,只读规则/索引/公开内容,跳过其余,不在基础摘要里暴露敏感文件名、内容或路径。
用例 6:结业
路径完成后必须生成 99-结业验收.md,含总复习地图、综合应用任务和掌握清单;综合应用不过关要补一篇再验收。
输出口径
等待确认知识基础时:
我在当前项目找到了与课题相关的已有内容:
- 已有的相关表达:{概括}
- 出现过的方法或概念:{概括}
- 暂时无法确认是否掌握:{概括}
这些只作为知识基础候选。你希望我:
1. 基于这些继续,减少基础讲解、重点补缺口;
2. 从零建立完整框架;
3. 只用你指定的文件。
尚未创建学习计划和首篇,请先选择模式(也可直接说「按项目来」或「从零开始」)。
完成一次生成后:
已经生成:
- 学习计划:{路径}
- 本篇文章:{路径}
下一步:先合上书做篇末「轻自测」,再在「学习反馈」圈一个自评、写下问题。下次说「继续下一篇」,我会先对答案、读反馈再写。
完成标准
- 开课:课题、目录、时间预算、知识基础模式都明确;路径 B 还要有经一次确认的知识地图和学习目录;计划和首篇结构完整。
- 每篇正课:有制造疑问的开场、可观察能力点、一篇一得、成段讲透的正文(落实教学四件事)、篇末主动回忆自测(答案不在本篇)、结构化反馈区。
- 衔接:下一篇先对上一篇自测答案并纠错,再按三类信号调节梯度。
- 复习:每 3-4 篇有一篇 R 复习,易错点被换问法重测。
- 结业:有总复习地图 + 综合应用任务 + 掌握清单,应用过关才算学完。
- 记录:计划里的能力掌握追踪表和反馈摘要随篇更新。
质量自检
- 是否正确判断了启动路径:主题词走 A、一段内容走 B,没有该反推时却直接开讲?
- 路径 B 是否只提取了原文真实观点、五维知识体系每条都能回撑原观点,并诚实标注了"只能靠实战"的部分?目录是否只确认一次就建课?
- 每篇是否有制造疑问的开场,而不是上来就丢定义?
- 是否落实教学四件事:例子讲透四层、用已知搭梯子、每个概念过了"是什么/为什么/然后呢"?
- 正文是否成段讲清楚,而不是从头到尾堆要点符号、写成百科词条?
- 每篇是否写了"学完能做到 X"的可观察能力点,而不是只列话题?
- 自测题是否要求主动回忆/应用,而不是能在原文直接找到答案?答案是否放到了下一篇?
- 是否结合"自评+自由反馈+自测对错"三类信号调梯度,而不是只看一句"懂了"?
- 用户自测答错时,下一篇是否先纠错再推进?
- 是否每 3-4 篇插入了复习篇、且没有偷塞新概念?
- 时间预算是否只问一次并真正用来控制了篇幅、没有套用固定周数/固定字数?
- 知识基础是否区分了强证据/弱证据/第三方,没把"出现过"当"掌握了"?
- 是否守住边界:没有做"答不对就拦住"的同步私教卡点(那是独立私教 skill)、没引入题库/闪卡/SM-2?敏感材料是否排除?中文排版是否规范?
与其他 Skill 的关系
| 场景 | 用哪个 Skill |
|---|---|
| 把课题拆成连续、自适应、可回看的学习文章(异步连载) | sansan-learning(本 skill) |
| 想要"答不对就当场拦住、来回对话到会为止"的同步一对一陪学 | 独立私教 skill(本 skill 不做同步卡点) |
| 只想搞懂单个模糊概念/术语 | sansan-deconstruct |
| 把已有大量文稿加工成内容单元和主题地图 | sansan-content-system |
| 单篇内容写得好不好、做内容诊断 | sansan-content |
| 管理学习资料、原始文件和知识导航 | sansan-knowledge |
用户请求越过边界时,先完成当前教学任务,把越界需求写进结论,再引导到对应 skill。
语言
用户用中文就中文回,用英文就英文回。中文遵循《中文文案排版指北》:中英文之间加空格、中文与数字之间加空格、中文标点用全角、数字用半角。
完成当前任务后直接结束。
作者与支持
- 作者:sansan(GitHub 主页)
- 如需加入付费答疑群,可扫码或打开答疑群说明