用AI开发者空间做一个间隔重复闪卡工具:调度算法与安全发布实践
一、背景
背单词和复习知识点最怕两件事:一是不知道今天该复习什么,二是复习节奏全凭感觉。间隔重复(Spaced Repetition)正好解决这个问题:记得牢的卡片隔久一点再看,记不住的卡片尽快重复。我在华为云 AI 开发者空间体验版里,让 AI Shell 从零生成了一个纯前端闪卡工具“碎片背卡”,并发布到了开发者作品展览馆。
二、功能设计
- 卡片翻转:点击正面查看答案,支持空格键和回车键翻转;
- 三档评分:忘记、模糊、记住,评分后自动安排下次复习时间;
- 卡片组管理:新建、编辑、删除,支持 JSON 导入导出;
- 学习统计:今日待复习数、连续打卡天数、累计复习次数;
- 纯前端单页,数据存 localStorage,跟随系统深浅色,适配手机,不依赖任何 CDN。
三、简化版调度算法
完整的 FSRS 需要拟合记忆模型参数,对一个小工具来说偏重。这里采用接近 SM-2 的简化思路,每张卡片只记录三个量:间隔天数 interval、难度系数 ease(初始 2.5)和复习次数 reps。
- 记住:ease 增加 0.1(上限 3.5),interval 乘以 ease;
- 模糊:ease 减少 0.15(下限 1.3),interval 乘以 1.3;
- 忘记:ease 减少 0.2(下限 1.3),interval 重置为 1,明天再复习。
首次复习后间隔 1 天,第二次 3 天,之后按难度系数逐步拉长。评分按钮上会实时显示“下次复习时间”的预测值,用户在点之前就能看到这次选择的后果,比只显示三个字更直观。
这个方案的取舍很明确:牺牲 FSRS 的个性化精度,换来零参数、可解释、几十行就能写完。对于每天几十张卡片的个人使用场景已经足够。
四、让 AI 写代码时的约束
体验版环境集成了 hcloud 和各类云资源管理能力,所以需求里我专门加了边界:只在项目目录内读写文件,不调用任何云 API。AI Shell 识别到这条约束后,没有走云端编码通道,而是直接在本地写文件,最后用 python3 -m http.server 启动预览,并用 curl 确认三个资源都返回 200。
五、发布流程里的三处改进
上一次发布作品时踩过几个坑,这次在发布指令里提前写明,全部规避掉了:
- 先写 .gitignore 再 git init。发布 Skill 会安装到项目下的 .agents/ 目录并生成 skills-lock.json,如果先提交再补忽略规则,这些文件就会留在公开仓库的历史里。这次提交前就用 git ls-files 确认只有 5 个项目文件。
- 凭证不落进输出。GitCode 授权后的 token 存在本地配置文件里。这次要求 AI 不要直接打印文件,而是用 Python 的 tomllib 读取后只在内存中使用,日志里只打印字段结构和 token 类型。顺带发现 token 类型是 Bearer,认证头要写成 Authorization: Bearer,而不是 token 前缀。
- 复用已有的身份校验委托。首次发布会创建一个用于身份校验的 IAM 自委托,再次发布时直接复用,不重复创建,也不改动其他 IAM 资源。
六、总结
这次从提需求到作品上线,大部分时间花在等待依赖下载和封面生成上,真正需要人工介入的只有 GitCode 授权和选择投稿活动两步。比起写代码本身,更值得投入精力的是把边界写清楚:哪些目录能动、哪些云资源不能碰、凭证怎么用。AI 执行得很快,规则写在前面,比事后清理省事得多。
项目代码已开源在 GitCode:hid86006757/study-flashcard。
- 点赞
- 收藏
- 关注作者
评论(0)