Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

支持间隔复习 #6710

Closed
88250 opened this issue Nov 25, 2022 · 42 comments
Closed

支持间隔复习 #6710

88250 opened this issue Nov 25, 2022 · 42 comments
Assignees
Labels
Milestone

Comments

@88250
Copy link
Member

88250 commented Nov 25, 2022

之前的提议:

项目:https://github.com/siyuan-note/riff
间隔重复算法:https://github.com/open-spaced-repetition/free-spaced-repetition-scheduler
间隔重复实现:https://github.com/open-spaced-repetition/go-fsrs
鸣谢:@L-M-Sherlock @ImSingee


卡包(Deck)

使用间隔复习功能前需要先创建卡包,卡包用于保存闪卡(Flashcard)。

卡包主要有两个属性:

  • 唯一的名称,用于筛选卡包
  • 间隔重复算法,FSRS

闪卡(Flashcard)

用户可将内容块放入到卡包中,这样就自动将该内容块设置为闪卡了。==标记==元素作为挖空答案。其他类型的卡片(比如图片遮挡)暂时不考虑了。

制卡入口:块标菜单 - 闪卡 - 卡包,同一个内容块可以放到多个卡包中

复习入口

复习功能入口放在顶栏 闪卡,编辑器里不实现嵌入。

导出

用户可以导出卡包分享给其他用户。

导出可能会分两种模式:

  • 带上下文全量导出:按闪卡内容块所在文档进行导出
  • 仅导出闪卡内容块:将闪卡内容块抽取汇总到一个文档中导出

这里还没有考虑清楚,以后如果需要继续考虑。

实现

项目:https://github.com/siyuan-note/riff

数据保存在 data/storage/riff/ 文件夹下:

  • 卡包:{id}.deck
  • 闪卡:{id}.cards

用户完成一轮复习后进行数据持久化,将内存结构通过 MessagePack 序列化后写入文件。

通过现有的 dejavu 同步数据,拉取到新数据后需要重新加载 deck。

@Joe-rq
Copy link

Joe-rq commented Nov 25, 2022

采用supermemo的算法吗
能将supermemo的渐进阅读引入就很棒了

@88250
Copy link
Member Author

88250 commented Nov 25, 2022

采用supermemo的算法吗

不确定,但肯定是找个开源的算法来实现。

@tcmtom
Copy link

tcmtom commented Nov 25, 2022

不知道有没有用,供参考

@luo-chuan
Copy link

念念不忘,必有回响。

还是建议对标Remnote来实现

@terwer
Copy link
Contributor

terwer commented Nov 25, 2022 via email

@aptexd
Copy link

aptexd commented Nov 25, 2022

哎呀,这个饼有点香,希望可以早日吃上 [滑稽]

@Dammyxy
Copy link

Dammyxy commented Nov 25, 2022

采用supermemo的算法吗

不确定,但肯定是找个开源的算法来实现。

关于开源算法可以看下 @L-M-Sherlock 基于 DSR 模型开发的间隔重复算法 https://github.com/open-spaced-repetition/free-spaced-repetition-scheduler 他本人也是 anki 和 supermemo 的热心使用者,后面又反哺中文间隔重复社区,对推广间隔重复和自由学习做出了很多贡献,目前 anki 的自定义算法 Fsrs4Anki 是他移植到 anki 上的,RemNote 的 CEO 也找到过他开发算法插件,最重要的是和中文开发者交流更容易,而且他的算法也在不断更新维护,期待 D 大和 叶哥来波联动。

@L-M-Sherlock
Copy link

我最近正在给 Anki 写新的算法,比 SM-2 先进一些。

https://github.com/open-spaced-repetition/fsrs4anki

关于这个算法的介绍:

https://github.com/open-spaced-repetition/fsrs4anki/wiki/Free-Spaced-Repetition-Scheduler

https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-fundamental-of-FSRS

@88250
Copy link
Member Author

88250 commented Nov 25, 2022

@L-M-Sherlock @Dammyxy 感谢反馈,fsrs 好像有个 golang 实现,能帮我问问作者是否还在维护吗? open-spaced-repetition/go-fsrs#1

@L-M-Sherlock
Copy link

能帮我问问作者是否还在维护吗?

估计没在了,最近 FSRS 重构了一次,最新的实现可以参考:https://github.com/open-spaced-repetition/fsrs4anki/blob/main/fsrs4anki_scheduler.js

@88250
Copy link
Member Author

88250 commented Nov 25, 2022

收到,后面我试着看下应该如何使用,主要是我时间能力有限,想找一个直接包装好的 golang 实现。

@L-M-Sherlock
Copy link

收到,后面我试着看下应该如何使用,主要是我时间能力有限,想找一个直接包装好的 golang 实现。

这样啊,那我去维护一下,之前在字节的时候写过 golang,不过需要点时间。

@88250
Copy link
Member Author

88250 commented Nov 25, 2022

@L-M-Sherlock 多谢,你有空的话慢慢搞,我们这边这个特性还没有确切的时间计划,目前还是在近期计划阶段。

@88250 88250 changed the title 间隔复习 支持间隔复习 Nov 28, 2022
@88250 88250 added this to the 2.6.0 milestone Nov 28, 2022
@Yuminis98
Copy link

Supermemo🤩🤩🤩🤩🤩

@Yuminis98
Copy link

可以参考一下这个工作流
【翻译】示范:我的渐进阅读工作流程 - 知乎

@wslrj123
Copy link

@Dammyxy
Copy link

Dammyxy commented Nov 30, 2022

思源里间隔重复功能的实现

间隔重复的制卡和提高使用体验的功能做起来有些复杂,我简单地将其分为三个改造阶段,D 大 V 大看情况做:

  • 短期第一阶段的特性,适合 2.6.0 就做出来
  • 比较费时间的第二阶段,涉及到一些大的改动,适合当做大版本的计划
  • 画大饼的第三阶段

如果思源不想在间隔重复的制卡上深入,那么简单的完成第一阶段就可以了

如果思源想把握对间隔复习刚需的用户和潜在用户(大部分是应试用户,少部分是自由学习的用户),那么制卡向 RemNote 靠齐完成第二阶段就很有优势了,完全可以替代 Anki

第三阶段完善后的间隔重复功能是一种新的脚手架,和笔记系统结合后加入了时间轴,能帮助学习者转变复杂的学习任务,而得益于 @L-M-Sherlock 的贡献,渐进阅读的吸引力也很大,它是另一个制卡入口,可以作为思源 PKM 系统的延伸(画个大饼)

第一阶段:实现简单的制卡和复习

所需要的功能有:

  • 制卡

    • 简单的问答卡、挖空卡,可以通过思源目前的功能实现
  • 复习界面

  • 复习粒度

第二阶段:优化制卡功能,实现快捷制卡和预览

所需要的功能有:

  • 通过块菜单、斜杠菜单、快速输入能实现制卡

    • 基础问答卡

    • 图片遮挡卡

      • 直接在思源里遮挡制作
    • 清单套卡

      • 对清单类或者步骤类知识创建一组套卡
  • 卡片预览功能

    • 能在卡片预览界面更改卡片类型
    • 能显示卡片正背面
    • 反转问题和答案
    • 生成双向套卡

第三阶段:完善间隔重复功能,实现间隔一切

所需要的功能有:

  • 优先级
  • 自动排序
  • 自动延期
  • 手动安排复习间隔
  • 手动安排卡片当天的队列位置
  • 渐进阅读的功能(可选项)

先看下其它笔记软件的实现情况:


Roam Research
RemNote
logseq RoamEdit(旧版) 合桃笔记 Obsidian
原生或插件 Memo 插件 原生 原生 插件 原生 spaced-repetition 插件
算法 SM2 变体 将来有 FSRS 算法插件 SM5 未知 未知 SM2 变体

在双链笔记里 Roam Research、RemNote、logseq、RoamEdit、合桃笔记 是有 Flashcard 功能的,可以从制卡方式、复习界面和复习粒度这三方面简单地来看下它们是怎么做的:

制卡方式

Roam Research - 最简单的制卡实现

  • 不改动编辑器(因为是靠插件实现的),利用大纲 +[[主题]]​​​​​​​制卡
  • 父级 block 为卡片正面,所有子级 block 为卡片背面,在父级节点处引用设定好的复习 Page 即可完成制卡,例如 [[card]]​​​​​​​​、#card​​​​​​​​,支持引用多个 Page
  • image

RemNote - 因为一开始开发就在做记忆卡功能,能通过改动编辑器来满足制卡需求,所以它的制卡方式多、制卡体验好

  • 在斜杠菜单里唤出卡片类型进行制卡

    • image
  • 点击 REM 菜单插入制卡

    • image
    • image
  • 使用快捷输入进行制卡

    • 正面 >>​​​​​​​​ 背面
    • 背面 <<​​​​​​​​ 正面
    • 双向 <>​​​​​​​​​​ 双向
  • 点击按钮可以编辑卡片类型,调整卡面的正背面或者变成两张反转卡(变成两张卡,正面背面互换)

    • image
    • image
  • 悬浮菜单挖空制卡

    • image
    • image

logseq - 制卡类似 RR

  • 利用大纲 +[[主题]]​​​​​​​​制卡,父级 block 是卡片正面,所有子级 block 是卡片背面,在父级节点处引用 [[card]]​​​​​​​​、#card​​​​​​​​ page 或者右键菜单里 Make a Card​​​​​​​​即可完成制卡
  • image

RoamEdit

  • 在笔记里用 {empty} 挖空,在 [[roam/srs]]​​​​​​​​ 页面进行搜索复习

合桃笔记 - 制卡类似 RR

  • 利用大纲制卡,父级 block 是卡片正面,所有子级 block 是卡片背面,在右键菜单里选择“加入记忆”完成制卡
  • image
  • image节点处有复习信息

Obsidian - 快捷输入制卡

复习界面

Roam Research

  • 点击左侧栏的 Review​​​​​​​ 按钮进入复习界面,此时会聚焦到复习界面,点击旁边区域或着右上角的关闭按钮跳出复习界面

    • image
    • image
  • 有面包屑,在复习界面点击面包屑、引用锚文本后编辑器跳到对应位置,复习界面不退出

    • 点击显示上下文面包屑,默认隐藏,是不想通过上下文线索回忆起答案
    • image
  • 复习界面点击引用后,编辑器跳转到对应页面,复习界面不退出

  • 能直接编辑卡片

  • 复习时有五种选项

    • image
  • 可以在插件里设置复习的 [[主题]]​​​​​​​

    • image
    • image
  • 主题页面能看到发送过来的卡片

    • image

RemNote - 细节多,手感棒

  • 左侧栏点击 flashcards​​​​​​​ 进入复习界面

    • image
  • 有文档结构的面包屑,大纲结构则变成卡片里的上文,在复习界面点击文档面包屑、引用锚文本后编辑器跳到对应位置,复习界面不退出

    • image
    • image
    • 大纲结构生成的上文如果也有记忆卡片,则只显示卡片按钮左边的内容
  • RN 把大纲的上文变成编辑器正文是因为它的记忆卡和概念-描述符结构有关,这是它自己独特的用法,可能抄不了这个作业,详情阅读:How to Use the Concept/Descriptor Framework | RemNote Help Center

  • 在复习界面可以调整大小,右上角点击按钮退出(避免误触),默认不能编辑卡片,有编辑模式,能在复习界面选择复习

    • image
  • 进入编辑模式可对卡片进行改动,也能写下当时想要编辑的内容标记一下之后再改卡

    • image
  • 能嵌入复习界面到编辑器里

    • image

logseq

  • 左侧栏点击 记忆卡片​​​​​​​ 进入复习界面

    • image
  • 也能嵌入到 page 里,斜杠菜单唤出 /cards​​​​​​​即可复习

    • image
  • 有面包屑,在复习界面点击面包屑、引用锚文本后编辑器跳到对应位置,复习界面不退出

    • image
  • 复习有随机模式

  • 复习界面能直接编辑卡片,能缩放大小,点击非复习界面位置退出

RoamEdit

  • 点击左侧导航栏的的 温习​​​​​​​ 进入 [[roam/srs]]​​​​​​​ 主题,在该主题之下创建 Bullet 设置搜索条件安排复习计划
  • image
  • image
  • 不显示面包屑,能直接编辑卡片,点击引用锚文本直接在复习界面里跳到对应位置
  • 复习界面不能缩放大小,点击关闭按钮退出

合桃笔记

  • 点击左侧栏的 间隔重复记忆​​​​​​​ 进入复习界面
  • image
  • 有面包屑,在复习界面点击面包屑、引用锚文本后编辑器跳到对应位置,复习界面不退出
  • 复习界面不能能缩放大小
  • 点击按钮或非复习界面位置退出
  • 阅读​​​​​​​ 和 回顾​​​​​​​ 两种模式,阅读模式可以在复习界面浏览卡片而不用做复习,复习界面下有复习数据

Obsidian

  • 点击左侧栏的 复习卡片​​​​​​ 进入复习界面
  • image
  • 有标题级的面包屑,但不能点击跳转
  • 不能直接编辑
  • 在复习界面点击引用锚文本不能跳转
  • 点击非复习界面区域退出复习

复习粒度

Roam Research - 按 Page

  • 在复习界面可以选择设定的对应 Page 进行复习
  • image

RemNote

全局、文档、嵌入三种粒度

logseq

默认全局,可以通过查询复习部分卡片

RoamEdit

跟随搜索条件

合桃笔记

只有全局

Obsidian

分卡组

  • 通过标签或者文件夹的方式设定卡组
  • image

直接制卡的实现有三种方法:

  1. OB 插件的快捷输入制卡

    • 制卡简单,比第二种方案好一点的是能快速制作反转套卡,但因为思源是块级,有些场景可能不适用,如果选择做这种制卡,我们需要商讨出对块制卡的方案,或者只在一个段落块内完成制卡
  2. Memo 插件、logseq 、合桃 的标记制卡

    • 这种利用原生功能制卡的实现方法简单,不需要改动太多,用大纲父子级 block 作为卡片正背面,用引用或者属性标记完成制卡,而且因为是块级思源用也能满足简单的需求,制作问答卡、挖空卡是足够了
    • 一些其它需求的卡片制作起来就略显麻烦,反转卡片要手动再敲个父子级,步骤套卡、图片遮挡卡做起来就更麻烦
    • 对于思源来说,除了用列表项块制卡,还得考虑到文档型用户的体验,和列表项块逻辑对应的“标题块 + 下方内容”也得能完成制卡
  3. RN 的制卡体系

    • RN 的制卡体验在笔记软件里属于独一档,各种卡片类型都能很轻松制作,比如图片的遮挡卡在其它笔记软件里需要自己事先手动遮挡再插入,在 RN 里只需要点几下就能完成制卡,步骤套卡也能一键生成
    • 之后 D 大收到的关于间隔重复的需求大多数应该是制卡类,比如说图片遮挡卡、反转套卡、步骤卡之类的快捷制卡,这些功能一直是刚需,无论是在 anki 还是 supermemo
    • 但我们现在做起来就比较难做,这种快捷制卡的功能可能得慢慢来,可以把它当做一个大版本的计划,比如 4.0 版本计划,做出来之后思源的优势也很大

复习界面大家都差不多,需要 D 大 V 大考虑的是:

  • 复习界面的入口在思源里放顶栏还是放侧栏

  • 我们是否要为复习界面新增一种块类型

    • 或者说用挂件块的方案实现复习界面,将来挂件槽出来也能联动
  • 我们是否要做在编辑器里唤出复习界面的功能

    • logseq 是用指令在编辑器里唤出复习界面,并且能搭配查询功能进行复习
    • RN 是利用 Portal 功能将复习界面嵌入到编辑器里
  • 在进入复习界面后,其它区域会变暗,达到一种聚焦的效果

  • 我们要选择呈现哪种面包屑:

    • RN 的面包屑 - 显示文档路径,将大纲结构显示为上文

    • 其它 - 显示标题和大纲层级结构的面包屑

      • 我推荐这一种,改动小
  • 复习界面能直接编辑还是分只读模式和编辑模式

    • 思源目前有只读模式,不用怪可惜的
  • 点击非复习界面区域是否会退出

    • RN 不能退出,避免误触,但做了个大大的关闭按钮放在左上角
    • 其它的则能退出,用起来很流畅,但有时候会误触
  • 复习界面是否能调整大小

  • 复习界面是否做个筛选入口

    • RN 有筛选入口,分全局和文档

      • image
    • RR 的 Memo 插件则是在实现设定好的 Page 上切换

      • image

关于复习粒度

  • 我们可以把以下三种粒度都做了:

    • 全局
    • 文档块
    • 搭配 SQL 查询
  • 全局和文档块满足普通用户的需求,这个粒度足够了

  • logseq 是能搭配查询复习卡片,思源不好搭配嵌入块做,所以我们可以考虑在复习界面放一个 SQL 查询入口,就像搜索栏那里一样

间隔一切

以上是间隔重复的记忆卡方案,是间隔重复任务里最常见的任务,也是目前绝大多数人的需求,一个间隔重复系统的优劣,完全取决于制卡者是否能做出一张准确提取自己记忆的好卡片,但间隔重复系统的用法不止于此,更广泛的用法是**:将任务通过间隔重复系统(以下统称为 SRS )发送到时间轴上,使任务的摩擦力降低,让“过去-现在-未来”不同阶段的自己重复参与这些任务,时间轴上的自己在不断变强,而时间轴可以随着使用者的行动而变化**,Andy 称它为间隔一切,实例有:

  • 记忆卡:通过回忆加强记忆,背后的机制是提取练习,和 SRS 结合能通过间隔重复变成长期记忆,它需要算法支持以最小的摩擦实现最大化收益,比如 FSRS
  • 笔记:发展模糊的想法、完善创意框架、探索问题,从中积累思考,通过外化和表达参与自我建构,增强学习,和 SRS 结合时它需要手动安排间隔时间,比如有所得就要扩大时间间隔,增加时间再去积累;无所得则要缩小时间间隔,摘取积累的时间就在近期
  • 阅读队列:文本、网页、PDF、书籍等等一系列阅读的内容,在 supermemo 里这类归属为 topic ,和记忆卡是两种算法,只会慢慢增加时间间隔,但还是手动安排比较爽
  • 习惯养成:比如将反思卡加入 SRS 里,它有益于知识的迁移,和 SRS 结合时它需要手动安排间隔时间
  • 程序性知识的练习:例如学习输入法、骑自行车、弹钢琴等运动类任务,通过 SRS 安排简单的练习
  • 写作:写作分为故事创作和文章创作,和笔记不同的是,笔记是自我的建构,而写作 + SRS 则是变成了非线性写作,不必按照故事的时间线或者文章的逻辑创作。如果创作的时间是永无止境的,我们可以凭借“我有一个点子我好想写出来它”的欲望来持续非线性创作,但受限于时间压力,我们需要定期完善框架,而 SRS 能把握住每一个点子和定期安排写作任务。和 SRS 结合时它需要手动安排间隔时间
  • 材料的阅读、摘录和改写:在阅读和摘录材料的时候会担心错过没注意到的细节,在改写摘录时害怕当前自己做的越多错的越多,加入 SRS 阅读的材料会在之后出现,不用害怕错过,在 SRS 里改写摘录时每次遇到只进行一步处理,这样就能在时间成本和机会成本找到平衡,和 SRS 结合时它需要手动安排间隔时间

总而言之,我们可以利用 SRS 管理我们的注意力,看到有趣的事物就可以将它加入 SRS ,而不用担心错过了什么、它什么时候出现,在这个过程中我们需要这些功能来改善体验:

  • 优先级 - 用到后期卡片肯定会刷不完导致堆积,而面对卡片堆积的压力在于“我担心里面会有重要的卡片,错过会后悔”,这时我们就需要一个优先级功能,优先级高的卡片在到期时优先被复习
  • 手动安排复习间隔 - 用来渐进处理任务
  • 手动安排卡片当天的队列位置 - 比如将某张难处理的卡片、摘录、任务安排到队列最后,处理完其它任务后再去完成它

渐进阅读的需求

  • 渐进阅读能辅助制卡,将渐进阅读做进笔记软件里可能不是一个好的选择,因为在体会快感后会往软件里塞海量材料,这样就会遇到性能问题,搜索时也会遇到麻烦,所以我一直将剪藏和笔记完全解耦,但是思源又有剪藏插件的用法,或许可以在思源里做出渐进阅读来实现 PKM 系统的延伸

  • 目前实现渐进阅读的软件有:supermemo 和墨屉 — 终身知识,深入脑海 (tiddlymemo.org)

  • supermemo 里的基本元素有:

    • Topic → 它由和 SM 记忆算法不同的算法控制,始终递增。它通常是剪藏的长文 topic、对长文摘录生成的 topic、对摘录 topic 继续摘录生成的 topic

    • Item → 挖空卡和问答卡,可以手动制作,但大多数是 Topic 里改写后挖空产生的。它由 SM 的记忆算法控制

    • Concept → 它和 topic 在复习过程中没有区别,不是分类类别,可以大而广也可以是小而精,因为自我建构出的认知总是由粗到细的。它更多是用于自我建构,类似:

      • 双链软件里第二阶段的 Page (面对主题记录),统合第一阶段 daily notes 里的底层信息
      • RemNote 里的概念框架,帮助理解复杂的信息
  • 在 supermemo 里渐进阅读的流程是这样的,导入完材料后 Supermemo 会推送卡片:

    1. 未作处理的剪藏原文 topic → 边阅读边对其进行摘录

    2. 被摘录过几次的剪藏原文 topic → 浏览看是否还有遗漏的地方,如果没有遗漏信息,就直接跳过或者 dismiss 排除复习

    3. 经过摘录产生的 topic → 进行阅读和改写,如果完全无法理解其内容,可以通过 ctrl+↑​​​ 回到上一级的剪藏原文尝试理解:

      • 这个 topic 不是重点 → 只是当时理解有限而产生的误解,可以直接删掉,找到剪藏原文真正重点进行摘录
      • 缺少这个 topic 的前置知识 → ctrl+j​​​ 安排到未来某天复习或者 ctrl+shift+j​​​ 推迟这个 topic 到当天队列末尾,需要补充新的材料学习后再来处理它
    4. 经过多次摘录和改写后 topic → 如果这时候知识点足够聚焦,可以对其进行挖空(alt+z​​​),生成 item

    5. 遇到 item

      • 提取记忆回答问题
      • 出现了孤立的卡片,无法理解问题,忘记为什么会有这张卡片 → 使用 ctrl+↑​​​ 回到上一级的 topic ,或者多按几次回到上上级 topic、剪藏原文重新阅读和思考
      • 回答有问题 → 答案不一致,观察问题出现在哪里,是不够聚焦、不够明确,还是自己的储备知识增加,导致回忆起的答案也增加,这时候需要根据制卡原则重新改卡
      • 卡片比较难处理 → ctrl+shift+j​​​ 推迟到复习队列末尾
      • 回答时出现了新的理解 → 制作一张新的 topic 渐进完善
      • 回答时发现了之前没注意到的知识点 → 制作新的 item
    6. ……

  • 完成基本的渐进阅读过程,我们需要这些功能:

    • 基本的间隔重复

      • 算法、复习界面
    • 摘抄原文材料上快速生成摘抄卡片(topic)的功能

      • SM 摘抄时是有父子级关系的,也能利用快捷键返回原文,在思源里,因为部分系统有七层子文档的限制,在用文件系统的父子级关系实现时——也就是用 新建文档内容为​​​这个功能实现生成子级卡片时会有些限制
    • 在摘抄卡片上挖空生成问答卡片(item)的功能

    • 在复习界面里返回上级卡片的功能

      • 比如从摘录的 topic 卡片返回剪藏的原文材料 topic
    • 优先级

      • 导入的文章材料被设置了优先级,则摘录生成的 topic 会继承这个优先级
    • 自动排序

      • 对复习卡片进行优先级排序,优先级高的卡片在到期时优先被复习
    • 自动延期

      • 对卡片进行自动延期,优先级低的卡片会被延迟到未来,长间隔的卡片会被保护,不会被推迟
  • 一个劣化的渐进阅读方案:

    • 将复习界面嵌入到思源编辑器里,安排阅读、制卡、改卡,这个过程在思源编辑器里完成

    • 使用属性标记内容块来加入复习,例如我用属性标记了一个文档块,那么这个文档块会加入复习队列

    • 在阅读时,对重点内容使用块引用做摘录,块引用所在块继承属性,也会加入复习队列

      • 块引用右键锚文本转换为“文本 *”的选项可以当做摘录功能,可以随便改动,也能通过“*”触发浮窗浏览原文或者返回原文
    • 对块引用所在块改写后完成制卡

  • 这个方案的需求是属性标记完成制卡,并且标记的内容块其反链也要继承复习的属性,需求的功能少但是实现起来很勉强,对于新手来说不好理解

  • 这个方案有个有趣的点子,涉及到间隔重复和双链的联动:我们将一个内容块制卡后,它的反链需不需要一起加进复习队列?它正文引用的内容块需不需要加入复习队列?

    • 在 SM18 里,这种复习被称作神经复习,SM 中的 Concept 能连接其它元素,神经复习的路径则是沿着 Concept 关联的元素和 Concept 所在知识树进行扩展激活复习,是在 Roam Research 的反链和正链里进行漫游的渐进学习版

@holduan
Copy link

holduan commented Nov 30, 2022

@Dammyxy 你的评论太长了,不方便回复。

我用sm的用法跟你的区别还是挺大的,我比较注重渐进阅读,所以我的想法跟你很不一样,但还是可以再交流。我想的是初步时就要有一个大的主框架,一样是后面再逐步完善。

看FSRS的介绍,是基于sm,更偏向自由学习/非应试学习。我自己也认为,相比应试学习,自由学习对个人发展有更多的积极作用,纵观一生,自由学习也比应试学习多得多,所以对于「思源里间隔重复功能讨论」我会更关注自由学习,并且偏向于非集中学习(集中学习/传统学习:短时间内持续学习同类学科,且不能进行长期且合理的复习安排)。

在讨论具体操作前,应该先明确方法论。从下图可以看出,sm的间隔重复系统中,至少运用了以下高效率的学习方法:

练习测试/测试效应-Practice testing (高效);
分布练习/间隔效应-Distributed practice(高效);
交叉练习/跨学科学习-Interleaved practice(中效);

8d3fe8e7f14749e67ef143a23bfd0baf_720x315

利用间隔重复实现的渐进阅读是很重要的,渐进阅读在自由学习中是关键步骤——除了上面的三点优势,渐进阅读时,还能更多地实现自述信息-Self-explanation(中效),在摘取内容后多次重读,改为用自己的话重述,并逐渐精炼语句,这是内化过程,sm的很多材料都强调理解后再记忆,所以不应该被跳过而急于粗暴地制作问答卡(Item)。*

*要实现渐进阅读,需要阅读功能,兼容各类材料也需要考虑。

因此,渐进阅读是在一开始就必须要考虑的功能,而不是可选项。

制卡

复习界面功能和渐进阅读会影响制卡的操作。
所以先考虑要不要用独立的复习界面,而且卡片内容应该用朴素的文字展示,不需要过多的样式,不然影响注意力,特别是答问卡。
我的想法是用独立复习界面,然后直接复刻sm的操作。初步制卡操作想法:

从笔记界面开始的操作:

  • 文档和块有浮标[SRS]发送至复习复习界面;
  • 复习界面保留文档树结构,只是块发送至[SRS]会建立在父级文档下,卡片类型是Topic,并可以在文档树里用其他图标作区分。对[SRS]里的文章做摘录时,也是在该文档下建立类似的子卡片(Topic)。
  • 从笔记界面发送至[SRS]的文档或者Topic可以定位溯源回笔记界面,有重读上下文/文档的时候。
  • 修改后的Topic有选项可是实现「是否同步更新至源笔记」,因为有时候修改后的卡片(Topic)并不一定跟原笔记意见一致,又需要保留原笔记作证据等。检索时,两个界面没有过同步更新的块判定为同一个块,只显示笔记界面的,不更新的则都显示,并可以选择只显示笔记页面或者复习界面的内容。
  • 其实如果有渐进阅读功能就不用那么麻烦了,即使Topic修改后自动同步更新源笔记,也不影响可以定位溯源的原材料(PDF,web,epub,TXT,音视频等)。sm里更改子Topic后,父级内容一样不会更新,而且只能返回上一级,不能准确定位,这点,SiYuan可以做得比它好。

从复习界面开始的操作

  • 需不需要从复习界面新建的的卡片的功能。待续...

不过即使有FSRS,除非思源能做出体验很流畅的间隔重复操作,不然我还是会继续用sm,毕竟叶峻峣也在用sm,而且sm也没有特别难用,现在已经有不错的渐进视频、图片遮挡流程,等SMA修复了中文bug,就能实现渐进PDF了。

@L-M-Sherlock
Copy link

不过即使有FSRS,除非思源能做出体验很流畅的间隔重复操作,不然我还是会继续用sm,毕竟叶晓骏也在用sm,而且sm也没有特别难用,现在已经有不错的渐进视频、图片遮挡流程,等SMA修复了中文bug,就能实现渐进PDF了。

虽然但是,你把我名字打错了(

@holduan
Copy link

holduan commented Dec 1, 2022

不过即使有FSRS,除非思源能做出体验很流畅的间隔重复操作,不然我还是会继续用sm,毕竟叶晓骏也在用sm,而且sm也没有特别难用,现在已经有不错的渐进视频、图片遮挡流程,等SMA修复了中文bug,就能实现渐进PDF了。

虽然但是,你把我名字打错了(

失礼了 😘

@88250

This comment was marked as outdated.

@Dammyxy
Copy link

Dammyxy commented Dec 1, 2022

可以的,先做出来以后看需求改造

带上下文全量导出:按闪卡内容块所在文档进行导出

这种导出带上下文的卡包可以配合思源当做助记媒介来用,也就是作者为他的文章制作一系列卡片嵌入到文章里,导出分享给读者,读者将文章导入进思源阅读并跟随卡片的引导思考、回答、应用知识,这种卡片比较难写,相当于教材里关键的习题,但可设计性要超过习题。

之后也能配合 D 大的内容块集市,要比单纯地分享一篇文档块强。

@linglongyoudoufu
Copy link

密切关注
速度可以慢一些,但是一定要做到Dammyxy说到的第三阶段

@Yuminis98
Copy link

Yuminis98 commented Dec 4, 2022

  1. 可以导入文档,其实现在就可以了
  2. 可以对文档和自己的笔记进行摘取,作为预备卡片
  3. 通过改写和挖空形成可以使用的卡片,并且设置标签,优先级(优先级能影响推送频率)
  4. 提供复习入口,思源按照频率推送卡片复习
  5. 支持邮箱和微信推送,可以便捷地在移动端进行卡片复习。

还有作为双链笔记,双链和制卡之间肯定能有操作空间。比如让悬浮双链作为复习时的提示信息。

@Yuminis98
Copy link

双链笔记+复习制卡+白板脑图+内容块集市+插件集市+链滴平台=生态化反♻️

88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit to siyuan-note/riff that referenced this issue Dec 23, 2022
88250 added a commit to siyuan-note/riff that referenced this issue Dec 23, 2022
88250 added a commit to siyuan-note/riff that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit to siyuan-note/riff that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 23, 2022
88250 added a commit that referenced this issue Dec 24, 2022
88250 added a commit that referenced this issue Dec 24, 2022
88250 added a commit that referenced this issue Dec 24, 2022
@Zuoqiu-Yingyi
Copy link
Contributor

将分割线添加到卡包时会在分割线前添加一个换行, 应该是个 🐛?
image

@Zuoqiu-Yingyi
Copy link
Contributor

Zuoqiu-Yingyi commented Dec 25, 2022

@Vanessa219 闪卡复习界面 z-index: 305;, 鼠标悬浮显示窗口 z-index: 205;, 这会导致鼠标悬浮在闪卡复习界面面包屑的块标时弹出的悬浮显示窗口会被完全遮挡
若将某个嵌入块设置为了闪卡, 嵌入块的面包屑也有该问题

@Zuoqiu-Yingyi
Copy link
Contributor

将某个块添加到卡包时计数器由于设置了 .popover__block 类选择器, 鼠标悬浮时会将其视为 块引用计数器, 导出控制台输出错误: Uncaught (in promise) TypeError: Cannot read properties of null (reading 'refIDs')

image

Vanessa219 added a commit that referenced this issue Dec 26, 2022
@Vanessa219
Copy link
Member

感谢反馈,以上已修复

Vanessa219 added a commit that referenced this issue Dec 26, 2022
@Zuoqiu-Yingyi
Copy link
Contributor

@Vanessa219 闪卡 dialog z-index 设置为 200 后在移动端中又被设置菜单遮挡了

@Geo123abc
Copy link

能否增加个设置,功能是, 闪卡复习时 是否自动显示上下文

@Vanessa219
Copy link
Member

Vanessa219 commented Dec 28, 2022

@Zuoqiu-Yingyi

#6935

@Vanessa219
Copy link
Member

能否增加个设置,功能是, 闪卡复习时 是否自动显示上下文

可以点击面包屑查看

@lingr7
Copy link

lingr7 commented Dec 28, 2022

目前有日程提醒功能和重复日程提醒功能么?

这种功能使用日历软件,或者使用outlook这种办公软件里面带的日历比较好吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests