基本完善(鸿蒙Next端原生闪卡式学习记忆软件)(原名记得闪卡))
【记得闪卡】算是我第一个真正做成型的项目。目前已经上架华为应用市场进行了多轮迭代。但是迭代无穷无尽现在又往里面塞了个Agent不知道3.0.0版本会不会因此被卡上线项目地址jidecards-anki-harmonyos:基于 HarmonyOS 与 Anki 内核的闪卡学习客户端项目 - AtomGit记得闪卡jidecards一个 HarmonyOS Next端原生闪卡应用界面和应用层使用 ArkTS / ArkUI底层直接接入 Anki 26.05 的 Rust 后端。目前牌组管理、复习、FSRS、统计、浏览编辑、图片遮挡、导入导出、AnkiWeb 同步、初步的 Agent 制卡和改卡这些主要部分都已经基本完成。整体原理其实不复杂。没有重新实现一套 Anki。我直接把 Anki 的 Rust Core 接到了鸿蒙应用里。整体调用链大致是ArkUI ↓ ArkTS Service ↓ BackendSession ↓ Node-API ↓ C ABI ↓ Rust ↓ Anki rslibArkUI 主要负责界面。比如首页展示牌组学习页展示卡片和四个评分按钮浏览页展示卡片和笔记。真正涉及卡片数据、复习队列、FSRS 调度、模板渲染、数据库、同步等逻辑时会通过 ArkTS 的 Service 层调用 Anki 后端。ArkTS 和 Rust 中间不能直接调用所以中间做了一层很薄的桥。上层实际上主要通过类似下面的接口访问后端openBackend() runMethodRaw() closeBackend()其中runMethodRaw()接收 service、method 和 protobuf 编码后的参数然后通过 Node-API 进入 C再通过 C ABI 进入 Rust。C 层基本不处理业务只负责桥接。Rust 层再把对应请求路由给 Anki rslib。所以很多功能实际上都是直接使用 Anki 原本的实现。例如复习。进入一个牌组后客户端先让 Anki Scheduler 获取当前学习队列然后取出一张卡片。卡片正反面也不是我自己重新解析模板而是交给 Anki 的 Card Rendering 后端生成 HTML再放进 HarmonyOS 的 Web 组件中显示。用户点击 Again、Hard、Good、Easy 后评分继续交给 Anki Scheduler。Scheduler 更新卡片状态并计算下一次复习时间然后客户端继续取下一张卡。基本就是取卡 → 渲染问题 → 显示答案 → 提交评分 → Anki Scheduler 更新 → 取下一张FSRS 也是一样。记得闪卡没有自己实现一套 FSRS而是直接使用 Anki 当前的调度实现。客户端主要负责参数设置、用户操作和结果展示。这样做最大的好处是不用重新维护一整套调度器同时也能继续保持和 Anki 数据体系的兼容。.apkg、.colpkg、笔记类型、卡片模板、媒体、搜索语法、AnkiWeb 同步这些能力本质上也都建立在 Anki Rust 后端上。项目里我自己主要做的是鸿蒙这一侧。包括 ArkUI 界面、应用状态、Service 封装、Native Bridge、卡片展示、统计界面、桌面服务卡片、学习提醒、TTS、牌组管理以及后来加入的 AI Agent雏形现在的结构是用户自然语言 ↓ Agent ↓ 受限工具 ↓ 生成修改草稿 ↓ 用户确认 ↓ 执行器 ↓ ArkTS Service ↓ Anki Rust也就是说模型只能调用预先定义好的工具。比如读取牌组结构、读取卡片、生成新卡草稿、修改字段等。真正写入之前会先生成草稿用户确认之后才执行。删除、修改模板、迁移笔记类型这类操作还会有更严格的确认。这样模型只是负责理解自然语言和决定调用什么工具真正的数据操作仍然走已有的应用逻辑。目前整个项目的主要结构已经比较稳定了。从最开始只能简单读取和复习卡片到现在已经包含 ArkUI、ArkTS、C、Rust、protobuf、SQLite、Web 渲染、同步、系统 API 和 LLM Agent基本把一个完整应用会碰到的东西都碰了一遍。其中尤其是Agent能力让我出奇觉得还不错。其实很多Anki高级兼容这方面我很多都没做什么极度自定义的编辑器等等这玩意接入麻烦一堆而且我的理解是不需要。不说手机操作困难问题我重点觉得重点是可以交给Agent。我现在使用Anki制卡都是描述清楚需求后Agent让后打包成apkg直接安装使用。对于很多耐心有限的用户来说显然放个公告来告知可以去下载个Agent软件来获取独属于你的牌组也是个问题。所以我直接让codex帮我写了个轻量Agent。这个Agent也方便不少了毕竟可以直接应用内使用。而且Agent新增闪卡也可以在现有牌组里面新增Agent改卡更是可以直接修改看不爽的卡片。可以在学习到对应闪卡是进入右上角更多进入AI改卡界面任何需求可以直接说Agent已经锁定了当前指定的闪卡了。这样就会很方便。因此我觉得这个Agent或许在适当完善后完全可以不作为外界Agent的平替而成为记得闪卡不可替代的能力。目前思路是让Agent具有很高的后端数据读取权力但是操作权力受限。AI使用用户自己的API。虽然效果还差点意思但是有提升空间虽然不知道这个版本会不会有AI这个因素而不让上架。从最初尝试把Anki接入到现在Agent雏形接入也过去近一个月了。虽然目前日活只有几十人的样子但大概不再算是个Demo 了。作为准大学生的第一个完整的投入许久的作品只希望带着AI的3.0.0能顺利过审。不行的话只能在应用市场上先去掉AI功能了现在搞了个AI还得去了解一下AI资质和个人企业的事。