间隔重复插件obsidian

遥远

2023 年6 月 20 日 07:40

1

相对原版的obsidian-spaced-repetition,做了一部分魔改:

复习时间信息可以保存在单独文件内,不修改原笔记文件内容;

在复习笔记时可以显示悬浮栏(跟复习卡片时类似),方便选择记忆效果,且可显隐到下次重复的时间间隔;

可以只转换复习笔记到卡片组,而不是全部库的笔记都转换;

算法可以切换:默认的Anki优化算法、Anki算法、Fsrs算法;

其他待发现的小改动;

注意

没有使用过obsidian-spaced-repetition插件的可以直接用,正在使用obsidian-spaced-repetition插件的话,建议试用前先备份

欢迎大家试用讨论

适用场景

间隔重复复习;

渐进式总结;

增量写作;

下载

推荐BRAT直接添加github链接更方便些

由于仓库转移了,请换用新地址 github: GitHub - open-spaced-repetition/obsidian-spaced-repetition-recall: Fight the forgetting curve by reviewing flashcards & entire notes on Obsidian.md

11 个赞

【求助】有没有像logseq一样的记忆卡片插件

iccth

2023 年7 月 6 日 03:06

2

遥远:

复习时间信息可以保存在单独文件内,不修改原笔记文件内容;

原笔记修改内容后, 复习时间信息还能锁定该条笔记吗?

遥远

2023 年7 月 8 日 11:24

4

更新了点功能:

算法可以切换:默认的 Anki 优化算法、Anki 算法、Fsrs 算法。切换时下次的复习时间信息不变,然后就按新切换的算法计算重复间隔;

卡片/笔记复习,在复习效果旁可显隐到下次重复的时间间隔

Image 20230708-0021187×519 40.3 KB

Image 20230708-0011485×1006 92.1 KB

遥远

2023 年7 月 8 日 11:27

5

笔记可以。

卡片目前还有些不准确,如果不修改卡片信息所在行或改内容不改行,基本也没问题;同时修改内容和行号就找不准确这个卡片的时间信息了

iccth

2023 年7 月 8 日 12:14

6

插入内容改变行号还是挺频繁的, 我现在对笔记的洁癖也没要求了,要不还是让用户自己选怎么保存复习记录吧

遥远

2023 年7 月 8 日 12:56

7

嗯,是可选的,可以像原来那样处理,不过我改动时是以独立保存为基础的,如果要卡片时间信息保存到原笔记中,推荐还用原来的插件就好。

我卡片复习用的不多,主要想重复整个笔记的,不想复习个笔记,原笔记内容就修改了。

Nudletterlet

(Nudletterlet)

2023 年7 月 12 日 01:49

8

哇!好棒

不过如果能用FSRS4ANKI的optimizer就好了

Nudletterlet

(Nudletterlet)

2023 年7 月 12 日 09:27

9

有一个bug,当我使用FSRS算法的时候,如果我去修改request_retention,修改过之后重新打开obsidian,request_retention会重新变成默认的0.9.

不过只是在obsidian中显示的是0.9,如果打开data.json的话,会发现request_retention已经变成我修改过的数值了,即便是重新打开也不会变化。

遥远

2023 年7 月 12 日 23:24

10

多谢反馈,我后续改下

遥远

2023 年7 月 12 日 23:28

11

这块当时大概看了下,代码量太大,没看懂,就先不管了,你可以试着fork一份加进去

Nudletterlet

(Nudletterlet)

2023 年7 月 13 日 01:59

12

我也不懂,我除了MATLAB之外啥编程语言都不会。不过其实可以问问叶大,看看optimizer有没有办法直接输入复习数据

Nudletterlet

(Nudletterlet)

2023 年7 月 13 日 08:21

13

我在知乎问叶大关于optimizer对第三方软件的支持,叶大说remnote端的optimizer支持导入CSV文件,我看看remnote的FSRS插件是什么样的以及导出的CSV格式是怎样的–不过我肯定是没有能力让这个插件支持optimizer​

Nudletterlet

(Nudletterlet)

2023 年7 月 13 日 08:43

14

FSRS4remnote导出的CSV结构大概是这样的,我觉得cid是卡片的ID,id是某一次复习的ID,前者一个卡片复习多少次都是同一个ID,后者每次复习ID都不一样。两个ID似乎都是unix时间戳,前一个是创建时间的时间戳,后一个是复习时间的时间戳

按理说,只要照着导出的CSV按照相同的格式导出就行,id用复习的时间转换成UNIX时间戳,cid的话,我猜想可以用卡片在插件里的ID的哈希替代。

遥远

2023 年7 月 13 日 13:20

15

但用remnote的optimizer又要再转手一次,后边我请教下他,看能不直接输出一个日志文件,在他的fsrs4anki_optimizer上跑

Nudletterlet

(Nudletterlet)

2023 年7 月 13 日 13:34

16

用remnote的optimizer倒也不算是又转手一次,毕竟都是叶大写的,代码大部分也都一样,不过remnote的optimizer确实更新的比FSRS4ANKI的optimizer慢不少,估计FSRS4.0算法的支持也会晚一些。

遥远

2023 年7 月 13 日 14:41

17

这个问题已经改发布了

JarrettYe

(Jarrett Ye)

2023 年7 月 15 日 11:07

18

Optimizer 用的都是同一个包,同步更新的。另外 Anki 导出的数据库,Optimizer 在预处理的时候也是要转成 csv 的。

1 个赞

遥远

2023 年7 月 15 日 14:39

19

感谢叶学委的回复,但看你的optimizer中,说是生成的./revlog_history.tsv,点开这个链接后并没有看到示例文件(我没有使用Anki,无法自己导出数据跑一个 )。

另外,请教下,表格文件的各列含义(df.columns = ['id', 'cid', 'usn', 'r', 'ivl', 'last_ivl', 'factor', 'time', 'type'])

比如,id 是每次的复习的时间(单位s),cid是首次复习时间?

希望能抽空完整说明下,最好带有示例表格文件

FEI

(FEI)

2023 年7 月 17 日 01:17

20

老哥你得点回复,不然楼上是收不到邮箱的消息提醒的。

遥远

2023 年7 月 17 日 01:59

21

是点的回复叶学委,但似乎论坛没按点的方式回复。。。。呵呵了