记忆管理
本文详细介绍 HeurAMS 中记忆内容的创建、组织、编辑和导入导出.
数据模型概述
HeurAMS 使用三层数据模型管理学习内容:
1. Nucleon (核子) - 记忆内容
- 位置:
data/nucleon/*.toml - 内容:问题、答案、元数据、模板等
- 格式:TOML, 易于阅读和编辑
- 作用:存储需要记忆的具体内容
2. Electron (电子) - 算法状态
- 位置:
data/electron/*.json - 内容:复习历史、记忆强度、下次复习时间等
- 格式:JSON, 由算法自动维护
- 作用:跟踪每个 Nucleon 的学习进度
3. Orbital (轨道) - 策略配置
- 位置:
data/orbital/*.toml - 内容:呈现方式、评估标准、模板绑定等
- 格式:TOML, 可自定义
- 作用:定义如何显示和评估记忆内容
4. Atom (原子) - 运行时关联
- 内存对象:关联上述三者的统一接口
- 作用:在运行时提供便捷的访问和操作
创建记忆内容
通过界面创建
主界面 → "创建内容" → 选择类型:
- 基础问答:简单的一问一答
- 古诗词:专为古诗文设计, 支持逐字解析
- 选择题:预定义选项, 适合快速测试
- 填空题:文中留空, 适合细节记忆
填写字段:
toml# 示例:基础问答 question = "光合作用的化学方程式是什么?" answer = "6CO₂ + 6H₂O → C₆H₁₂O₆ + 6O₂" tags = ["生物", "化学", "初中"] difficulty = 2 # 1-5, 难度系数高级选项:
- 模板:选择预定义的内容模板
- 宏:使用动态内容生成(见高级功能)
- 语音:关联 TTS 发音文件
- 图像:关联图片资源(计划中)
通过文件创建
可直接在 data/nucleon/ 目录创建 TOML 文件:
toml
# data/nucleon/biology_001.toml
id = "bio_001"
question = "细胞的基本结构包括哪些?"
answer = "细胞膜、细胞质、细胞核"
tags = ["生物", "细胞"]
metadata = { source = "教科书", chapter = "第一章" }
# 模板字段(使用古诗词模板时)
[template]
type = "poem"
author = "李白"
dynasty = "唐"内容组织
标签系统
使用标签分类管理:
toml
tags = ["数学", "几何", "高中", "重要"]界面中可按标签筛选、批量操作.
目录结构
可创建子目录组织相关文件:
data/nucleon/
├── 数学/
│ ├── 代数/
│ └── 几何/
├── 语文/
│ ├── 古诗词/
│ └── 文言文/
└── 英语/
└── 单词/系统会自动扫描所有子目录.
编辑与更新
界面编辑
- 内容管理界面选择要编辑的项目
- 修改后保存
- 系统会自动更新关联的 Electron 状态
文件编辑
直接编辑 TOML/JSON 文件, 重启应用后生效. 注意保持格式正确.
批量操作
- 批量标签:为多个内容添加/删除标签
- 批量移动:移动到不同目录
- 批量导出:导出为 CSV 或 Anki 格式(计划中)
导入导出
导入现有数据
从 CSV 导入
- 准备 CSV 文件, 至少包含 "question" 和 "answer" 列
- 使用工具菜单的 "导入 CSV" 功能
- 映射字段, 选择目标标签
从 Anki 导入(开发中)
计划支持直接导入 .apkg 文件.
导出数据
导出为 CSV
bash
python -m heurams.tools.export_csv --output my_deck.csv备份完整数据
复制整个 data/ 目录即可完整备份.
模板系统
内置模板
基础模板:简单问答
古诗词模板:
toml[template] type = "poem" title = "静夜思" author = "李白" dynasty = "唐" content = "床前明月光, 疑是地上霜. 举头望明月, 低头思故乡. " notes = "这是一首思乡诗. "选择题模板:
toml[template] type = "mcq" question = "以下哪个是素数?" options = ["4", "7", "8", "9"] correct_index = 1 # 0-based explanation = "7只能被1和自身整除. "
自定义模板
在 data/template/ 创建 .toml 文件定义新模板:
toml
# data/template/my_template.toml
name = "化学方程式"
fields = [
{ name = "反应物", type = "text" },
{ name = "生成物", type = "text" },
{ name = "条件", type = "text", optional = true }
]
display = "{{反应物}} → {{生成物}} (条件: {{条件}})"高级内容:宏与动态生成
宏系统
在内容中使用 插入动态内容:
toml
question = "{{random_number}} 的平方根是多少?"系统会在显示时替换为实际值.
可用宏
:当前日期:当前时间:随机数字:从列表中随机选择- 更多宏可通过插件扩展
最佳实践
内容设计建议
- 一个问题一个重点:避免复合问题
- 答案简洁明确:便于评估记忆
- 合理使用标签:便于后期管理
- 循序渐进:从简单到复杂安排内容
组织策略
- 按学科分类:数学、语文、英语等
- 按优先级标记:重要、复习、补充等
- 定期整理:删除已掌握或不再需要的内容
数据安全
- 定期备份
data/目录 - 版本控制:可将
nucleon/目录加入 Git - 云同步:使用同步工具备份到云端(注意隐私)
故障排除
内容不显示
- 检查文件是否在正确目录
- 检查 TOML 语法是否正确
- 查看日志文件
heurams.log
导入失败
- 确认文件格式符合要求
- 检查字符编码(推荐 UTF-8)
- 查看错误日志
标签失效
- 标签名称不要包含特殊字符
- 重启应用重新加载
下一步
了解内容管理后, 可继续学习: