光芒香香
1
介绍一款笔者近期在手里盘好的 闪卡 和 渐进阅读 插件——Syro,它原本只是给自己设计的一款插件,但现在我觉得它足够好了。在正式上线插件商城前,希望能在 Obsidian 论坛里找到第一批愿意尝鲜的 Ob 社区的老鸟,收到些真实反馈和收集一些功能建议。
为谁设计
介绍这款插件前,让我先谈谈制作 Syro 的动机。大伙都知道间隔重复能有效对抗遗忘。但若您把笔记拆碎导进 Anki 这类闪卡软件,往往会丢失记录时的上下文(也就是所谓的语境),而闪卡复习时如果丢失制卡的语境,往往会浪费大量宝贵时间进行无意义的无语境回想。于是 Syro 为此而生。自诞生之初 Syro 的理念之核心就是要做到 “尽可能保留语境”。让我举个例子说明吧,在 Syro 的设置选项,只要您想,甚至可以拉到全文作为闪卡的上下文——虽然性能上不是很建议吧,,但因此 Syro 提供了多种上下文选项,也就是说您大可以选择适合您设备性能的任何一个自定义上下文抓取规则。使用这款插件您会发现 ”尽可能保留语境" 这个理念几乎贯穿了 Syro 的每一个功能设计。
你说这么多,有啥功能?
In short, 这款插件它主要提供了这些功能:
回溯语境的闪卡:完全兼容 Obsidian 的原生 MD 语法,制作闪卡不会破坏您的文本格式,直接在行内挖空制作 Cloze 卡或制作问题卡。在 Syro 设置里您可以自由的选择任何一种合适的上下文方案,来最高程度的回到当前闪卡的语境。
- 嗯… 理论上应该也能兼容另一款 Obsidian-Spaced repetition 插件的卡片,不过这会损失过去您在那款插件的历史复习数据。
渐进阅读(增量阅读):几十本书籍或者有着庞大数量的待读网页直接丢进右侧边栏的“待读队列”,收藏的网页和书籍数量太多队列太乱?Syro 支持标签筛选整理阅读列表。今天不想读或者读过了,走你,交给算法推送下次的阅读时间。(or 由你来定一个下次阅读的时间,新版本的 Syro 更新已经实现了这个功能。)
- 笔者本人早就是渐进阅读忠实的狗了,您仅需安装 Syro 和 Epub Importer 即可实现同时阅读几十本书籍巨著的同时,顺手使用一些 Obsidian 官方支持快捷键的标记语法制作能保留语境的闪卡,它将帮助你记住任何在巨著的旮旯角落里任何你想要记住的细节。Obsidian 你牛逼克拉斯呀。
时间线 Timeline:熟悉 Git 的哥们开始笑了,这这你这功能不就是 Commit 吗!? 它搭配渐进阅读排程,长文读了几行懒得读了今天,打个标记,Syro 自动记录你当下的滚动百分比,下次再推给你时,点击就能跳回前几次读到的位置。
- 实现渐进阅读的核心无非是维持语境。但就像我说的, Syro 为此而生,您完全可以去提交几份甚至一份的详细 Commit 信息以让下次的复习迅速回到当前的语境。
现代 UI 设计:笔者对 UI 设计有一定的追求,那种不能看的半成品 shit 是 绝 对 不会发出来的。相信这款插件在您的知识库里应该也能装点门面了。如果您仍觉得丑的话那那我很抱歉:(
- 以及已简单的接入了 Obsidian Style setting 插件,虽然选项实现的还不够多,目前只实现了在多数场景的圆角和直角的切换,但未来是会慢慢支持更多自定义样式的这点大家可以拭目以待。就算是在目前版本的插件设置里也已支持大量的自定义选项。
蛙趣,用爽了,想支持项目发展
这里和大家坦诚下:插件采用了 “项目支持者有特殊功能” 的维护模式。
不过请放心,您免费使用的版本绝不是半成品或者什么 狗 屁 不 通 的东西。FSRS 算法、闪卡、渐进阅读这些核心功能在免费版里都是完全彻底的开放的。支持者版主要只覆盖一些硬核需求(比如复杂嵌套填空、代码块/LaTeX 填空解析、无限条的 Timeline 历史追溯),这也是为了让项目能长期更新的一种尝试。且当前定价极低,若您使用核心版感觉还不错,想支持项目发展,欢迎用一杯咖啡钱去买个 Key 玩玩。
但如果您懒得掏手机点点点又确实对这款插件的支持者功能产生了兴趣,直接私信我也可从这拿个早鸟 key 一试。
是项目早期,所以肯定还有我没踩到的 Bug 或者交互不够直觉的地方。若您读到这里,对这款插件仍感兴趣,也欢迎下载试用一下。若您读完觉得扫兴了,那果咩,您可以在帖子下留言告知我您认为间隔重复插件需要有哪些功能才能够达到预期。
有任何吐槽批评、Bug 或是改进建议,都欢迎直接在帖子里回复,或者去 GitHub 提 Issue。每一个真实反馈都很感谢。如您觉得好用请给项目一颗宝贵的星~(没怎么宣传呃呃现在星好少的)
Syro website | Github 仓库
3 个赞
光芒香香
2
同步 Anki 的功能已经做好了大半,现在支持复习的双向增量同步,不过考虑到还不太稳定所以没加进来。
移动端的 UI 还在设计,暂时只支持桌面端。
1 个赞
希望能够兼容Obsidian-Spaced repetition 插件历史复习记录就好。移动端支持,我就觉得很不错了,多谢大佬的插件
2 个赞
泉客
4
体感很棒的插件,在电脑端简单试用了一下,有几个想法请你斟酌。
一是在复习队列侧边栏增加视觉指示,在标签下方或右侧以直线或环形显示上一次记录的阅读进度百分比。以跟踪笔记元数据或者时间线里有几次是100%阅读进度来显示笔记的阅读次数。
二是在筛选上是否可以增加文件夹筛选,用epub importer导入的话可能会生成一本书的多个章节文件,直接将多本书的文件夹加入追踪的话侧边栏就会显得混乱,同时也可能会影响阅读的连贯性。虽然可以为每本书的子文件都添加标签,但这样流程就繁琐了一些。
三是闪卡是否可以添加排除文件夹或者在闪卡界面增加颜色指示显示权重,这样使用这可以对一些专著性比较低或娱乐性质的书籍的高亮内容进行比较直观的选择。
我也不知道这些想法是否成熟,又是否可行,只是从使用者的角度提一些想法,具体情况请你斟酌。我之前分离出了一个手机端专用的阅读库,阅读大部分放在了手机端,所以期待插件移动端支持
1 个赞
现在发现多端并不同步复习记录,不知道是否bug还是功能没有
1 个赞
光芒香香
6
@vvzeng 如果是电脑端同步的话,那也许是 Bug 导致的,因为一切复习数据都在
your vaults/.obsidian/plugins/syro/*
此路径下以 .json 格式的格式文件储存,所以如果方便的话您可以先自己排查一次这个路径的文件是否正确同步了。因为我猜很可能是同步策略导致自动忽视了 .json 格式的文件。同步后也可以执行一次 Obsidian 命令 Syro: Rebuild Cache (Full Parse),也许能够刷新出您的复习数据。
确认有问题后您可以在仓库提个 Issue,我会尝试复现解决这个问题的,因为确实还没有测试过同步其他设备的场景,感谢您的使用反馈。
光芒香香
7
感谢反馈,现在 0.0.8 版本发布了,应该能解决前两个场景。
侧边栏更多视觉指示
笔记侧边栏 UI 添加了一个能够不点击时间线就能直观看到的阅读环形进度在标签的左侧(如果更新前没打开需要找到设置选项开启,新用户默认开启)
顺手做了个一直想做的相对路径 Tooltips ,支持设置里开启和关闭。

对导入书籍或其他场景的优化
对渐进阅读侧边栏加入文件夹管理我还没想好怎么去实现这样的功能,不过对这个场景的管理我觉得可以对标签功能做些优化。
因此简单制作了一个关于文件夹追踪的轻量模态框。现在对导入的书籍的父级文件夹在添加文件夹追踪时可以批量添加子文件 Tags,比如 Author/Borges,它会自动应用到该文件夹层级下的所有文件。以后给这个文件夹添加文件也会自动打上自动标签列表的 Tags。
但是如果侧边栏因为刚导入书籍所以大量为新这种场景确实很难管理,因此下个小版本我打算给 Overdue、New、Due 制作一个点击收纳的开关和持久化。配合上方的标签筛选应该能再降低些标签管理的难度。以及还有难点就是没想好如何支持标签层级,所以,我想说,如果有插件用户兜里还有好点子别藏着掖着 可 以 直 接 在 帖 子 下 回 复 我 。
补充一下,关于场景 3,如何排除无用文件的牌组,目前版本有类似 Anki 的牌组选项设置可以给无关的牌组设置少量到期或者无卡片到期。建议已采纳,会在后续版本更新增加对应的忽视文件路径的设置。对应的,也会增加功能来仅给一些标签单独抓取闪卡,用于只背诵有抓取标签的文件。
1 个赞
光芒香香
10
v0.0.9 发布,移动端适配上线,欢迎体验。
另外刚才简单测试了下,如果将库完整打包到移动端,复习数据在我手机上可正常同步使用。所以如果说各位现在同步仍存在问题的话请给项目提 issue,很感谢所有反馈。
移动端 UI gif 演示

另外补充一个侧边栏渐进阅读的 Mobile 演示

泉客
11
在手机端使用了一下
一是侧边栏字体希望可以减小一点或者直接和ob设置的字体大小同步
二是打开右侧边栏的时候希望可以直接定位到当前打开的笔记
三是像notebook navigater一样添加按指定元数据排序,直接追踪一个具有许多子文件的多重嵌套文件夹之后,要在右侧边栏找对应文件和依序阅读就变得相当困难
四是使用复习此笔记的卡片时是打开整个卡牌界面,库内文件一多就会很抓手,可以的话希望能直接打开对应卡片
下附相关图片
1 个赞
光芒香香
12
收到,我打算下次更新优先推 style setting 的自定义样式的进度,让用户定义侧边栏或牌组这些样式修改,比如牌组缩进距离、字体大小,且最好实现分设备保存,小尺寸竖屏设备会特别需要这些。
建议 2 和 4 也采纳了因为特别实用且实现很简单,而且我记得对于问题 4 ,原本是有这样一个 Obsidian 命令,但是我刚刚去测试发现已经失效了,下版本恢复它。
对建议 3 我就先去研究一下你提到的插件方法,确实对这种文件数目如果只依赖重要性排序还是不行,用户要有额外的备选方案…
weiwu
13
我有一些想法倒是,不过相对都不是特别紧急。
考虑增加渐进任务,渐进写作之类的应用场景吗?
考虑加入sm的算法吗?
相对严格的渐进阅读会将阅读内容拆分,有时会刷到阅读过的部分内容,这部分有实现的想法吗
考虑对数据做标准化,迁移友好的处理吗?开源插件停止维护永远是用户需要考虑的风险
1 个赞
光芒香香
14
嗯… 渐进阅读的一些想法可能需要你们出些点子了,如果我觉得适合该插件的设计风格,会考虑加入插件更新的待办清单。
如你所见确实插件这套并不完全是标准的渐进阅读流程,因为在制作插件时我考虑到如果实现标准流程那毫无疑问会超级超级加剧插件的体量和维护难度。但我会认真考虑你的建议,比如我已经打算好未来给我的插件新增启动页,就像 Remnote 那样,那么再对渐进阅读增加个独立模块的话,这些想法也未必不能实现。只不过最近在学校有点忙,所以这些点子在插件稳定后会慢慢制作的。(也许会放在上线之后
至于渐进写作,如果只是简单的流程,目前已经能够用该插件实现。比如新增一个 Incremental Writing 的文件的元属性 Tag,在想写作时先用标签筛选,并且在写完后花一点时间复盘记录流程,配合时间线的跳转和记录的 Commit,多个局部的写作也许可以同时进行。但以上这些只是我的理解,如果使用中不合你的预期,那你可以尝试简单的描绘一下你想要的渐进写作的流程该如何最简单实现。
默认参数的 FSRS 算法应该可以平替 SM-2 算法,所以目前暂时没有计划上 SM-2。
数据标准化是指将一切复习数据存储在内容处或者笔记元属性吗?不瞒你说,我之前就是无法忍受那些复习插件会将那些排程数据全部塞到我的笔记正文里,无论是用 css 或者其他手段隐藏它,但它就是会污染我的文件原文本本身。所以我做的插件里用的是上下文打分加上行号偏移来匹配数据的,它确保只遗留最轻量的 Markdown 记号在文件内容里。
大多用户希望导出的复习数据格式可能都不大相同或者说各有要求,而目前复习数据是本地存储在 Json 文件,所以我觉得若用户希望导出成什么样的标准化格式,都能够让 AI 生成最轻量的转换脚本实现想法。
另外就是补充一句,因为复习数据都存储在本地,希望各位用户能常备份该插件文件夹,防止复习数据因某些操作失误而遗失。
1 个赞
aoout
(aoout)
15
有个问题,为什么不让 epub importer 不去分那么多文件夹呢?
1 个赞

我打开花括号转填空的功能,这样写了一个填空题,插件识别不出来是怎么回事?
高亮和加粗两种方案都可以正常使用。
1 个赞
aoout
(aoout)
17
其实目前这样几乎已经是最优解了。也就是笔记本体是通用的 markdown 格式,其他格式用 json 来存储。
也就是这样。
或者说,更彻底的可迁移的数据在理论上就是不存在的。
不过如果可以同步到某个热门软件,也算是增加了可迁移性了。
2 个赞
光芒香香
18
一会打个补丁,我自己没有使用这个格式所以发布前很少测试,果咩,,
weiwu
19
我尝试进行了渐进阅读,不过有点搞不清楚“new notes”应该怎么使用,提交了包含类似 2d:: 之类标记的时间线似乎不会将笔记移出新笔记队列对了 用命令good之类的倒是会。
new notes 队列里有很多笔记,但是状态栏显示

这里应该等待新笔记到期再处理,还是什么流程
还有插件很多地方都是英文的没有找到语言的设置(但是也有一点点地方是中文的)
另外我的笔记很多时候是用属性维护的,有没有想法加一个通过属性过滤的功能
1 个赞
光芒香香
20
使用的是 Obsidian 的界面语言设置,支持简中和英文,如果已经是的话那就是没见过的 bug。