用AI开发者空间做一个间隔重复闪卡工具:调度算法与安全发布实践

举报
yd_221565968 发表于 2026/11/06 00:07:48 2026/11/06
【摘要】 在华为云AI开发者空间体验版中,用AI Shell生成纯前端间隔重复闪卡工具,介绍简化版调度算法的设计取舍,以及发布到作品展览馆时在gitignore、凭证处理和IAM委托复用上的改进。

一、背景

背单词和复习知识点最怕两件事:一是不知道今天该复习什么,二是复习节奏全凭感觉。间隔重复(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。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。