# 潜进 (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 界面
- 支持触屏/鼠标/键盘多操作模式
- 简洁直观的复习流程设计

## 屏幕截图 (基本用户界面)

> 单击图片以放大

<img src="./readme_src/img1.png" alt="img1" style="zoom: 33%;" />
<img src="./readme_src/img2.png" alt="img2" style="zoom:33%;" />
<img src="./readme_src/img3.png" alt="img3" style="zoom:33%;" />
<img src="./readme_src/img4.png" alt="img4" style="zoom:33%;" />

## 技术架构

> 有关技术与实现的细节, 请参阅 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
```