# 潜进 (HeurAMS) - 启发式辅助记忆程序
> 惟算法之可恃兮, **筹来者于未央**
> 扶大厦之将倾兮, **挽狂澜于既倒**
## 概述
"潜进" (HeurAMS: Heuristic Auxiliary Memorizing Scheduler, 启发式记忆辅助调度器) 是为习题册, 古诗词, 及其他问答/记忆/理解型知识设计的辅助记忆软件, 提供动态规划的优化记忆方案
## 关于此仓库
"潜进" 软件组项目包含多个子项目:
- 此仓库包含了 "潜进" 项目的核心和基于 Textual 的基本用户界面的实现
- 关于基于 Flutter 的现代用户界面, 请参阅 "潜进-F" (HeurAMS-F) 仓库
- 关于数据同步实现, 请参阅 "潜进-S" (HeurSync) 仓库
- 关于云端文档源实现, 请参阅 "潜进-R" (HeurRepo) 仓库
## 开发计划
0.1.x: 简易调度器实现与最小原型
0.2.x: 使用 Textual 构建 TUI, 项目可行性验证与采用 SM-2 原始算法用户自评估的原型
0.3.x (当前): 基本数据结构, 基于 SM-2 改进算法的自动复习测评评估与遵从 IoC 设计的功能实现, 重点设计古诗文记忆理解功能, 以及 TUI 界面实现, 简单的语言模型集成
0.4.x: 更新文件格式, 引入动态数据结构(自动内容生成), 深度语言模型集成
0.5.x: 引入云同步与文档源
0.6.x: 引入其他算法接口, 与跨语言库引入, 使用 Flutter 构建跨平台现代客户端
## 技术集成与特性
### 间隔迭代算法
> 许多出版物都广泛讨论了不同重复间隔对学习效果的影响。特别是,间隔效应被认为是一种普遍现象。间隔效应是指,如果重复的间隔是分散/稀疏的,而不是集中重复,那么学习任务的表现会更好。因此,有观点提出,学习中使用的最佳重复间隔是**最长的、但不会导致遗忘的间隔**。
- 采用经实证的 SM-2 间隔迭代算法, 此算法亦用作 Anki 闪卡记忆软件的默认闪卡调度器
> 计划: 将添加 FSRS 算法 (Anki 的新可选闪卡调度器) 与一种 SM-15 变体算法作为后续替代
> 参考 https://github.com/slaypni/SM-15
> 使用 SM-15 的变体:
> SM-2 后续算法并非完全开放, 故使用一种基于 SM-15 描述实现的变体算法
- 动态规划每个记忆单元的记忆间隔时间表
- 动态跟踪记忆反馈数据,优化长期记忆保留率与稳定性
### 学习进程优化
- 逐字解析:支持逐字详细释义解析
- 语法分析:接入生成式人工智能, 支持古文结构交互式解析
- 自然语音:集成微软神经网络文本转语音 (TTS) 技术
### 实用用户界面
- 响应式 Textual 框架构建的跨平台 TUI 界面
- 支持触屏/鼠标/键盘多操作模式
- 简洁直观的复习流程设计
## 屏幕截图 (基本用户界面)
> 单击图片以放大
## 技术架构
> 有关技术与实现的细节, 请参阅 CONTRIBUTING.md
> 提交拉取请求以参与到此开放源代码项目
``` mermaid
graph TD
subgraph 后端
A[SM-2 算法] --> B[间隔迭代算法]
B --> C[迭代记忆参数]
end
subgraph 用户界面
D[展示模块] --> E[用户界面]
E --> F[进度追踪面板]
end
subgraph 外部服务
G[LLM]
H[TTS]
end
C --> D
F -->|用户数据| C
D --> G
D --> H
```
## 系统与平台要求
- 依赖组件: Python 3.7+ (与 PIP), Git (半自动更新 & 安装需要), requirements.txt 中依赖包
- 可选依赖: curl (首次下载需要)
- 平台支持:Windows / macOS / Linux / Android (需要 Termux 或 Linux) (终端或浏览器)
- 网络连接:可预缓存语音文件, 需联网使用大模型服务功能
运行此命令以在具备以上前置条件的计算机上快速安装/保留数据更新:
```
curl -O https://gitea.imwangzhiyu.xyz/ajax/HeurAMS/raw/branch/main/tweak.py
python3 tweak.py
```