把知识放进去,
剩下的交给重复。
数据、模板、引擎三层解耦——
用自定义模板学习任何内容。
DragonCard 不决定你的卡片长什么样,也不替你安排复习节奏。它只提供一个稳定的容器:你把知识放进去,然后每天来。
DragonCard 不是 Anki。
它没有复杂的间隔重复算法,只有一种很简单的分类学习方法。
把知识快速呈现在你面前:标记未掌握的内容,难点靠前,熟词靠后。仅此而已。
它不替你安排复习节奏,也不承诺"多少天记住"。因为记忆的本质从来不是技巧,而是重复。
记忆的本质从来不是技巧,
而是重复。
艾宾浩斯用一生证明:记忆的关键就是重复。所以我们相信的是你——你的坚持本身。
大脑是一个极其擅长偷懒的器官。当你长期坚持做同一件事,它不会一直停留在最初吃力的状态,而会逐渐演变成一件越来越省力的事。
DragonCard 利用的,正是这个机制——它提供的不是魔法,而是一个简单的容器:你把知识放进去,然后把"重复"这件最朴素的事,交给每天都来的自己。
持之以恒,必有收获。
我们不做承诺,只做容器。
DragonCard vs Anki
| 维度 | Anki | DragonCard |
|---|---|---|
| 调度单元 | 单张卡片独立计算下次复习时间 | 完整有序列表为单元,靠排序实现优先级 |
| 时间约束 | 严格日期驱动 | 弹性,什么时候继续、间隔多久由使用者决定 |
| 熟词处理 | 达标后降低复习频率,甚至退出复习池 | 全程保留在列表尾部,轻量刷一遍维持记忆 |
| 优势 | 理论记忆效率上限更高 | 流程简单稳定、断卡后更容易续上、保留词条上下文顺序 |
| 短板 | 任务量不可控,断卡后维护成本高 | 不会精准在遗忘临界点触发复习,单条记忆效率理论上限略低 |
我们把自己的短板也写在表里。DragonCard 不追求理论上限,它追求的是——你还能坚持明天再来一次。
数据、模板、引擎,三层解耦
一个 JSON 模板文件,定义一张卡片的一切。框架只提供"货架":学习流程与后端 API 固定不变。
数据只是数据
卡片内容是纯 JSON 数组,字段名由模板自己定义。想学什么,就填什么——没有任何预设的字段结构。
// cards.json —— 一个词条就是一条 [ { "item_order": 1, "word": "spect / spic", "meaning_en": "to look, to see" }, { "item_order": 2, "word": "dict", "meaning_en": "to say, to speak" } ]
模板定义卡片的一切
HTML 结构、CSS 样式、交互逻辑、发音语言、埋点事件——全部封装在一个 JSON 文件里。框架通过 window.cardTemplate 的 render / init / update 与它对话。
// template.json { "name": "My Card", "lang": "en", // 决定 TTS 语音 "cardHtml": "<div class=\"card\">…</div>", "cardCss": ".card { padding: 16px }", "cardJs": "window.cardTemplate = { render, init }", "trackedActions": [ { "action": "audio_play", "label": "发音" } ] }
引擎只做一件事:让你重复
标记未掌握 → 重排 → 多轮学习,进度自动持久化。它不认识你的内容,也不知道你在学英语还是化学——它只维护一个有序列表,和你在其中的位置。
// 学习引擎的固定流程 GET /v1/learn/page → 取一页卡片 POST /v1/learn/mark → 标记未掌握 POST /v1/reorder → 重排:难点靠前,熟词靠后 GET /v1/rounds → 进入下一轮
整套机制,就是这四步
下面这个列表是可以真的操作的。点几张卡标记为"未掌握",再点重排,看看会发生什么。
重排之后:未掌握的词条浮到前面,已掌握的沉到列表尾部——但不会消失,它们只是排在你后面,等下一轮轻刷一遍。
一张卡片能自定义到什么程度
答案是:几乎全部。框架只要求你的模板暴露 render,其余交给你。
自定义 HTML / CSS / JS
结构、样式、交互全在你手里。Tailwind 工具类与 Font Awesome 开箱可用。
语言感知 TTS
模板声明 lang(en / ja / zh…),发音自动匹配对应语音,并按语言分组记忆。
最多 5 个动作 + 埋点
trackedActions 声明事件,框架自动统计,按模板隔离,可在观测页查看。
字段可隐藏
模板声明 fields,学习时可在字段抽屉里逐项开关,也可锁定不可隐藏的字段。
管理面板实时预览
上传模板即刻渲染真实卡片效果,边改边看,不用进学习模式。
本地优先
Flask + SQLite,开箱即用,数据在你自己的机器上,无需任何外部服务。
你的坚持,应该看得见
不为焦虑而设计,只是把"你来了多少次"如实画出来。
活动热力图
掌握度分布
轮次金字塔
让它跑起来,只需要一句话
安装依赖、建虚拟环境、改端口这些事,交给 AI 工具就好。把仓库交给下面任意一个,让它帮你跑起来。
WorkBuddy
把仓库丢给它,说"帮我跑起来",剩下的它来做。
Codex
命令行里的 AI 助手,适合直接在仓库目录里操作。
OpenCode
开源终端 Agent,可自由选择模型来部署和调试。
它很简陋,而且是有意的
DragonCard 不是一款“功能齐全”的产品。它是作者基于一个朴素信念做出来的简单版本:把知识放进去,然后每天来。
它没有替你决定该学什么,也没有塞给你一堆用不上的功能。正因如此——它也可以是属于你的那一款。
- 数据是 JSON,模板也是 JSON。换一套模板,它就是另一款学习工具。
- 想学什么,就让 AI 帮你生成:模板 + 数据一次给全,导入即用。
- 不满意?让 AI 改样式、加字段、换交互——不用等作者更新。
如果你认同这个方向,但它还没有你想要的样子——那就把它交下去。
把仓库交给 WorkBuddy、Codex 或 OpenCode,直接告诉它:你想学什么。
数据和模板是通用的——简单改造,它就能变成任何你想要的学习工具。