间隔重复插件obsidian-spaced-repetition-recall 分享

是这个插件所有设置项都恢复默认值了么,可能是你开什么东西影响导致插件下data.json文件丢失了。

这要你一个个排除下,我也没法判断

之前提到,内容和行号不同时改变,就不会影响学习记录的锁定。

行号好理解,那内容改变时,应该会同时改变其后的QA的行号,是否插件会实时跟踪编辑器中的改变,并自动更新学习记录的所有受影响的行号?

已选择了FSRS,复习时,选择较难和一般显示 5分钟,10分钟。
但在win和安卓上都没有实现数分钟后,重新学习。侧边栏也没有看到这种几分钟后再学习的提示。

只要不是同时更新行号和内容,应该不会有问题。

不会主动提示的,如果用电脑的话,状态栏有显示,手机端只有你主动复习了

看了一下,isuue,提到 recall插件 对于 md内容直接修改改名、移动,都能很好地定位学习进度。

我理解为recall能接受Ob的修改触发,同步更新tracked_files.json里的lineno和hash。

但我测试下来,似乎recall并无更新lineno和hash,我是这样测试的:
打开一个有卡片tag和卡片的笔记,修改了相邻三个卡片的内容,中间的卡片增删了行,这样hash和第三个卡片的lineno都会改变。
但tracked_files.json内容并无改变,使用命令面板,选择集中复习笔记中的卡片功能,查看卡片时,点击查看学习记录按钮,又能锁定了学习记录。

所以,还请用伪代码简示一下recall更新trackedfiles和锁定学习记录的机制。

》不会主动提示的,如果用电脑的话,状态栏有显示,手机端只有你主动复习了

我是这样测试的,始终没有看到FSRS的数分钟后能重新复习卡片的效果!
1,配置里,修改了卡片的识别tag为 #记忆背记,修改了卡片识别的keyword,用数个中文空格来标识。
2,新建一个md,加入tag为#记忆背记/测试,做了4个卡片,包括了一行卡片、数行卡片。
3,复习时,直接选择这个tag,4个卡片,分别选择5分钟,10分钟,6天,6天。
4,然后该tag显示的可复习数是0。
5,等5分钟以后,再进入复习,该该tag显示的可复习数仍是0,点击这个tag,也是直接返加主tag。
6,等30分钟后,仍是这样,重启ob仍是这样。

复习时,总是反得弹出这样的notice,代表什么呢?又如何让它不要显示?
2

balance: interval from 6 balanceto 7 days.
^^^^
这个提示,是按回答easy的停留时间,自行调整增减间隔日期吗?

[“plugin”.“SRR”,“func”."复习了还没到期的卡片[object Object]
^^^^^
似乎是反复学习卡片机制,但又不是自己选择了5分钟、10分钟学习的卡片。


学习记录按钮显示的内容,建议按FSRS算法的记录丰富一下,而且似乎显示也不太正确。

比如这个卡片,已学过多次了,但为什么显示的记录还是新?但较难、一般、容易这三个按钮所显示的间隔,又是属于已学习的状态,显示为6天、7天、8天?

只有在选了复习评分后,才会更新json文件。
调整间隔是为了避免同一天的内容累积过多而相邻的又过少的问题,这个提示我下版注释掉不显示了吧,当时是为了方便调试

见86楼的第2点:似乎是对 正反卡片的,反面卡片会出现复习还没到期就学习的提示,但复习数据又是新,但选择较难的天数也会越来越长,似乎是用了正面卡片的复习数据,导致天数异常。

见85楼:现在最大问题是FSRS无办法实现数分钟后再次学习卡片。
我试过换回旧的插件版本,仍然是无法实现。遥远同学能PM我微信联系方式吗? 以便确定问题所在。

我这边使用没有遇到这个问题,复现不了。应该是你没设置好,你发个测试库出来,我看下。

源码就在github上,最近没时间折腾,可以从main.ts的sync_algo函数排查

翻看你前后的贴子,和issue,我想是你使用的是笔记复习,而不是卡片复习,面在fsrs的陈述上,又常把卡片和笔记混洗了。

我实际测试,笔记复习确是可以在数分钟后再复习,但卡片确是不能在数分钟后再次进入due队列!

再者,笔记复习时,你增加了重做这个按钮,而卡片复习里是有个类似的功能叫重置卡片,但代码里又对新卡片禁用了按钮,导致新卡片学习时,不能重来。

输出的ob_revlog.csv,是在插件里已使用了fsrs_optim…来优化学习序列了吗?

不会调试gituhub上的代码,只好直接改下main.js

是的,我修改的侧重笔记复习,但卡片也没问题的。卡片到期没有,应该是设置中 关联卡片到下一天 被打开了,你关闭这个选项,应该就好了。

卡片重来只对复习中的卡片有效,新卡片确实是禁用的,这个是沿用原插件,没有另外改。

优化参数需要单独运行,在项目readme中有说明

不是关联卡片无出现在队列,是这些关联卡片,似乎FSRS取的学习记录是主卡片的,导致这本来是新卡片,却因为主卡片的duedate远在今天之后,就作为错误Notice出来了。
我注意到你的代码,却是魔改,没有全盘考虑,随心修改,只要没有按修改的方式来设置,必然会出现奇怪问题。

现在最重要的问题是,新卡片学习时,有5分钟和10分钟的选项,但选择了,仍是第二天才能学习,在学习进度里,这些卡片的inverval都是0

正反卡片的trackfile:
显示的是反卡片74, 学习前:

{"nextReview":1707122202004,"ID":74,"fileIndex":4,"itemType":"card","deckName":"#记忆背记","timesReviewed":1,"timesCorrect":1,"errorStreak":0,"data":{"due":"2024-02-05T08:36:41.992Z","stability":5.8,"difficulty":3.99,"elapsed_days":0,"scheduled_days":6,"reps":1,"lapses":0,"state":2,"last_review":"2024-01-29T08:36:41.992Z"}},
{"nextReview":0,"ID":73,"fileIndex":4,"itemType":"card","deckName":"#记忆背记","timesReviewed":0,"timesCorrect":0,"errorStreak":0,"data":{"due":"2024-01-25T15:08:01.504Z","stability":0,"difficulty":0,"elapsed_days":0,"scheduled_days":0,"reps":0,"lapses":0,"state":0,"last_review":"2024-01-25T15:08:01.504Z"}},

学习按钮 的hard就是10天,这个卡片在显示学习数据里,显示为新卡片,应该是取了73的数据,而点击了hard按钮,保存的学习数据,correct增加1,error反而不变.

{"nextReview":1707876236528,"ID":74,"fileIndex":4,"itemType":"card","deckName":"#记忆背记","timesReviewed":2,"timesCorrect":2,"errorStreak":0,"data":{"due":"2024-02-14T02:03:56.527Z","stability":9.78374,"difficulty":4.8508,"elapsed_days":5.727,"scheduled_days":10,"reps":2,"lapses":0,"state":2,"last_review":"2024-02-04T02:03:56.527Z"}},

明白你的意思了,是添加时间参数时过滤掉了新卡片,导致索引号没对齐,下版我修复下吧。

reviewId(itemId, option)里,不管option是hard,good,easy,取得的result.correct都是true.

是原版的BUG,还是fsrs的特点?

正常的,只有reset后 error 才会变。
这个参数目前也没有使用,后续是想用于统计显示的。

应是fsrs里加了个Again, option的序号变了,应从原来的1改为2,才是Hard

刚已经更新了一版,你确认下,这个问题应该解决了