Локальный ИИ + интервальное повторение: как не забывать изученное

Локальный ИИ · FSRS · retrieval practice

Локальный ИИ и интервальное повторение: как вовремя возвращать забываемые навыки новыми заданиями

Обычная система интервального повторения показывает карточку снова через рассчитанный интервал. Локальный ИИ позволяет сделать шаг дальше: планировать не конкретную карточку, а сам навык, а при каждом повторении создавать новую формулировку — другой пример, текстовую задачу, устный вопрос, мини-квест или перенос знания в новую ситуацию.

Актуально: сентябрь 2026 FSRS + Skill Scheduler + Local LLM Retention-first
FSRSRetrieval PracticeSkill SchedulerInterleaving Transfer TasksStudent DBOllamaValidators

Почему одной и той же карточки недостаточно

Классический SRS отлично подходит для слов, дат, формул и других атомарных фактов. Но школьный навык часто сложнее одной пары «вопрос → ответ». Если ребёнок десять раз видит одну и ту же задачу, он может запомнить саму формулировку и перестать реально извлекать способ решения.

Карточка «7 × 8 = ?»

Полезна для автоматизации факта, но легко привязать ответ к конкретному cue.

Skill review «Умножение на 7»

Сегодня — пример, потом текстовая задача, затем обратная операция, потом устный вопрос.

Свежие обсуждения в сообществе Anki как раз выделяют этот паттерн: планировать элементы памяти отдельно, а предложение или контекст создавать заново при каждом review. Это снижает риск запомнить конкретную surface form вместо самого знания.

Это не дубль карты знаний

Knowledge Map Что учить

Определяет prerequisites, пробелы, mastery и следующую доступную тему.

Spaced Repetition Когда вернуть уже изученное

Оценивает риск забывания и планирует повторение конкретного skill.

Идеальная система использует оба слоя. Knowledge Map открывает новый skill, а scheduler после освоения начинает следить, не пора ли его вернуть в практику.

На чём основаны spacing и retrieval practice

Две идеи хорошо подтверждены в исследованиях обучения: spacing — распределять практику во времени, и retrieval practice — пытаться извлечь знание из памяти, а не просто перечитывать.

SpacingНесколько разнесённых сессий обычно лучше одной длинной «зубрёжки» при сопоставимом объёме практики.
Retrieval practiceУченик сначала пытается ответить сам, а уже потом получает feedback.
FeedbackОсобенно важен после ошибки, чтобы retrieval не закреплял неправильный ответ.
VariationНовые контексты полезны, когда цель — перенос навыка, а не память одной формулировки.

Современный мета-анализ 2025 года показал небольшое, но значимое преимущество retrieval practice над рядом elaborative-условий в среднем, причём преимущество заметно зависело от наличия корректирующей обратной связи. Это хороший аргумент в пользу архитектуры «ответ → checker → feedback», а не «ответ → просто следующий вопрос».

Что такое FSRS и зачем он здесь

FSRS — Free Spaced Repetition Scheduler. В актуальной версии алгоритм моделирует состояние памяти через три понятия: Difficulty, Stability и Retrievability.

Difficulty (D)Насколько трудно конкретное содержание для ученика.
Stability (S)Насколько устойчиво знание удерживается во времени.
Retrievability (R)Оценка вероятности вспомнить сейчас.

В стандартных flashcards пользователь после review выбирает Again, Hard, Good или Easy. В AI-tutor рейтинг лучше вычислять из более богатых evidence: правильность, подсказки, количество попыток и независимая проверка.

Главная идея: scheduler хранит skill, а не готовый вопрос

Memory Itemmath.mul.7
→
FSRSreview due today
→
Task Specgrade 2 · difficulty 2
→
Local LLMновая формулировка
→
Validatorэталон корректен

В базе не обязательно хранить карточку «7×8». Можно хранить memory item math.mul.7, а конкретный вопрос создавать в момент review.

Memory item
{
  "memory_id": "math.mul.7",
  "skill_id": "math.multiplication.table_7",
  "scheduler": "fsrs",
  "difficulty": 5.1,
  "stability_days": 11.4,
  "retrievability": 0.87,
  "next_review": "2026-09-22"
}

Полная архитектура

Review QueueКакие skills пора проверить
↓
Knowledge Mapчто означает skill
Student DBуровень и ошибки
FSRSсостояние памяти
↓
Task Spec Builderskill · difficulty · format · constraints · forbidden repeats
↓
Local LLMгенерирует новую surface form
↓
Validatorпроверяет эталон
Deduplicatorне повторяет старую задачу
Safety Rulesвозраст и формат
↓
Ученик отвечаетбез готового решения
↓
Checkerверно / ошибка
Hint Trackerсколько помощи
Scheduler Updateновая дата review

Какие evidence передавать scheduler после ответа

correctОтвет правильный или нет.
independentБыл ли ответ без подсказки.
hint_levelНасколько сильно помогал ИИ.
attempt_countСколько попыток понадобилось.
latencyСколько времени занял ответ — осторожный дополнительный сигнал.
confidenceНасколько checker уверен в своей оценке.
misconceptionКакой тип ошибки повторился.
transfer_successСработал ли навык в новой форме.

Из этих evidence система может получить внутренний rating для FSRS. Например, правильный ответ с hint level 3 не должен автоматически превращаться в Easy.

Как генерировать новое задание на тот же навык

Генерация должна начинаться не с prompt «придумай похожую задачу», а с Task Spec. В нём фиксируются сам skill, допустимый диапазон сложности, формат и ограничения.

Task Spec
{
  "skill_id": "math.multiplication.table_7",
  "grade": 2,
  "difficulty": 2,
  "format": "word_problem",
  "theme": "space_mission",
  "avoid_numbers": [[7,8], [7,6]],
  "max_steps": 1,
  "must_require_retrieval": true,
  "validator": "python"
}

LLM получает не свободу «учить как хочет», а роль генератора surface form. Это важно: scheduler и planner остаются детерминированными, а модель отвечает за разнообразие.

Почему новое задание обязательно проверять до показа ребёнку

Generative AI может придумать красивое условие с неправильным эталоном, лишними данными или двумя допустимыми ответами. Для review это особенно плохо: scheduler начнёт обновлять память на основании дефектного задания.

МатематикаPython/SymPy вычисляет правильный ответ и проверяет ограничения.
РусскийRule map + LanguageTool проверяют целевую орфограмму и не создают ложную ошибку.
АнглийскийПроверяется целевая грамматическая конструкция и допустимые варианты.
ФактыОтвет сверяется с RAG/source, а не только с памятью LLM.
Правило: если validator не может подтвердить эталон, задача не попадает ребёнку. Она либо перегенерируется, либо заменяется заранее проверенным шаблоном.

Пример по математике: один skill, четыре разных review

Review 1 Прямой пример

7 × 9 = ?

Review 2 Текстовая задача

В 7 коробках по 8 деталей. Сколько деталей всего?

Review 3 Обратная операция

56 деталей разложили поровну в 7 коробок. Сколько в каждой?

Review 4 Квест

Для 7 модулей нужно по 6 батарей. Хватит ли 40 батарей?

Во всех случаях проверяется связанный набор навыков вокруг таблицы умножения на 7, но cue меняется. Если ребёнок знает только одну заученную формулировку, transfer review это обнаружит.

Пример по русскому: повторять правило, а не одно слово

Предположим, memory item — ru.root_vowel.unstressed. Вместо карточки «трава — травы» система может возвращать новые случаи.

Review 1Выбрать букву

л...са — какое проверочное слово?

Review 2Найти ошибку

Исправь слово и объясни правило.

Review 3Свободное извлечение

Сам сформулируй, как проверять безударную гласную в корне.

Review 4Новый контекст

Найди два слова с этой орфограммой в коротком тексте.

Так scheduler отслеживает не память конкретной пары слов, а устойчивость самого правила.

Пример по английскому: планировать слово, но менять предложение

Для словаря генеративный подход особенно очевиден. Memory item может быть словом или выражением, а предложение каждый раз создаётся заново.

memory itemalthough
review AFill the gap in a new sentence.
review BTranslate a fresh Russian sentence using although.
review CRespond orally to a question using although.
review DCorrect a sentence where although is used incorrectly.

Именно такой подход обсуждается в 2026 году в сообществе Anki: SRS планирует единицы знания, а новый sentence context подбирается или генерируется к моменту review. Local-first проект Tokori тоже объединяет языковой AI-tutor, локальную SQLite-базу и spaced repetition.

Когда обычная карточка всё-таки лучше генерации

Не нужно превращать всё в квесты. Некоторые знания действительно полезно извлекать в стабильной атомарной форме.

Таблица умноженияПрямой быстрый recall нужен для автоматизации.
Словарные словаИногда точная форма сама является предметом запоминания.
ФормулыНужно вспомнить точную запись.
Даты и терминыФакт не обязательно каждый раз оборачивать в длинный контекст.

Хорошая система смешивает stable cards и generated skill reviews. Не следует считать один формат универсально лучшим.

Interleaving: смешивать навыки, а не учить блоками до усталости

Интерливинг — практика, где близкие типы задач перемешиваются. Это особенно полезно, когда ученик должен сначала определить, какой способ решения вообще нужен.

1Сложение дробей
2Сравнение дробей
3Сокращение дроби
4Сложение снова

В AI-tutor review queue может специально собирать 3–5 due skills одного раздела и генерировать короткую смешанную сессию. Но новые навыки не стоит перемешивать слишком рано: сначала ребёнок должен понять базовый метод.

Transfer tasks: умеет ли ребёнок применить знание в другой ситуации

Правильная карточка показывает recall. Transfer task проверяет, способен ли ученик узнать тот же принцип в новой форме.

Near transferПохожая задача, но другие числа и контекст.
Representation transferТот же навык из текста переносится на график, схему или устный вопрос.
Cross-subjectПроценты из математики используются в задаче по физике/экономике.
Explain-backУченик объясняет правило своими словами вместо выбора ответа.

Transfer review стоит давать реже, чем обычный retrieval, потому что он сложнее и часто проверяет сразу несколько skills.

Как менять сложность при повторении

Scheduler отвечает за момент review, но difficulty controller решает, насколько сложной будет конкретная задача.

1Recognition

Выбрать правильный вариант.

2Cued recall

Ответить с небольшой подсказкой формата.

3Free recall

Самостоятельно получить ответ.

4Application

Применить правило в новой задаче.

5Transfer

Узнать принцип в необычном контексте.

Если skill давно не повторялся, логично начать с уровня 2–3, а не сразу проверять максимальный transfer. Если простой recall устойчив, следующая review может быть сложнее.

Как учитывать подсказки в spaced repetition

Если ИИ дал половину решения, review нельзя оценивать так же, как полностью самостоятельный правильный ответ.

0Без помощиполноценный evidence
1Наводящий вопроснебольшой штраф
2Напоминание правилачастичный recall
3Первый шагслабое evidence mastery
4Полный разборreview считается обучением, а не успешным recall

После hint 3–4 полезнее назначить новый короткий review раньше, чем «наказать» ребёнка длинной серией задач в той же сессии.

Нужно ли учитывать время ответа

Можно, но осторожно. Быстрый правильный ответ иногда говорит об автоматизации, а очень долгий — о нестабильном recall. Однако latency зависит от возраста, устройства, чтения условия, усталости и даже отвлечения.

Поэтому время — secondary signal. Нельзя автоматически объявлять навык слабым только потому, что ребёнок отвечал медленно. Правильность, независимость и устойчивость между сессиями важнее.

Что делать, если ребёнок забыл навык

Ошибка на review — не повод сбрасывать всё «в ноль». Система должна понять глубину забывания.

Ошибкапервый retrieval
→
Diagnosticузнать тип пробела
→
Micro-remediationкороткое объяснение
→
Immediate retryновая задача
→
Early reviewвернуться раньше обычного

Если ошибка вызвана prerequisite, scheduler текущего skill не должен бесконечно показывать варианты одной и той же задачи — управление передаётся Knowledge Map.

Как FSRS и карта знаний работают вместе

Knowledge MapКакие skills доступны и как они зависят друг от друга.
MasteryНасколько ученик умеет выполнять skill.
FSRSКогда память пора проверить снова.
PlannerЧто войдёт в сегодняшнюю короткую сессию.

Например, новый skill уже освоен и mastery высокий, но FSRS показывает, что retrievability опустилась к целевому уровню. Тогда planner добавляет его в review, не меняя основной учебный маршрут.

Что показывать родителю

Сегодня5 навыков к повторению

≈ 12 минут

Retention4 / 5 восстановлены самостоятельно

1 навык потребовал подсказку

Слабый сигналТаблица умножения ×7

повторить раньше

Сильный навыкБезударные гласные

следующий review через 16 дней

Родителю не обязательно показывать D/S/R FSRS. Лучше переводить внутреннюю математику в понятные формулировки: «пора повторить», «удерживается устойчиво», «снова возникла прежняя ошибка».

Нужен ли Anki или можно встроить всё в своего репетитора

Anki Готовый проверенный SRS-интерфейс

Удобен для обычных карточек, слов и ручного контроля. FSRS уже встроен.

Свой Skill Scheduler Лучше для генеративных заданий

Можно хранить skill отдельно от surface form, учитывать подсказки, validators и knowledge graph.

Можно поддержать импорт/экспорт Anki, но не обязательно строить весь tutor внутри Anki. Для полноценной учебной системы scheduler проще интегрировать напрямую через open-source реализации FSRS.

Что хранить в базе

memory_idУникальный элемент памяти или skill review.
skill_idСвязь с Knowledge Map.
scheduler_stateD, S, R или состояние выбранного SRS.
review_historyДата, результат, rating, hint level.
surface_historyКакие формулировки уже показывались.
misconceptionsПовторяющиеся типы ошибок.
difficulty_historyНа каком уровне ребёнок решал задачи.
source_refsКакие правила/учебники использовались.
Review event
{
  "memory_id": "math.mul.7",
  "reviewed_at": "2026-09-21T18:40:00+03:00",
  "task_format": "word_problem",
  "correct": true,
  "independent": true,
  "hint_level": 0,
  "attempt_count": 1,
  "latency_sec": 18,
  "validator": "python",
  "rating_for_scheduler": "good"
}

Сам текст сгенерированной задачи можно хранить ограниченное время для отладки, а для долгосрочной памяти важнее review event и hash/metadata формулировки.

Практический локальный стек

SchedulerFSRS / ts-fsrs

Расчёт следующего review.

StorageSQLite / PostgreSQL

Memory items, history и Student DB.

PlannerPython / TypeScript

Собирает сегодняшнюю review queue.

GeneratorOllama / llama.cpp

Локальная LLM генерирует surface form.

MathPython + SymPy

Эталон и проверка задач.

LanguageLanguageTool + rules

Правописание и grammar checks.

KnowledgeKnowledge Graph + RAG

Навык, prerequisite и материал.

UIOpen WebUI / свой frontend

Сессия review и feedback.

Для домашнего проекта это не требует отдельного сервера баз данных: SQLite достаточно для одного-двух учеников, а scheduler и planner могут работать как обычный локальный сервис.

Как собрать первую рабочую версию

  1. Выбрать 10–20 skills.Например, таблица умножения или одна тема русского.
  2. Создать memory items.Один item на устойчивую единицу знания/навыка.
  3. Подключить FSRS.Пока использовать стандартный scheduler без собственной математики.
  4. Сделать один Task Spec format.Например, короткая математическая задача.
  5. Добавить deterministic validator.Без него AI-generated review не выпускать.
  6. Хранить hint level.Самостоятельный и подсказанный ответ должны различаться.
  7. Добавить surface deduplication.Не показывать почти тот же вопрос снова.
  8. Сделать daily queue на 10–15 минут.Не превращать review в второй полный урок.
  9. Через неделю добавить transfer tasks.Не начинать с максимальной вариативности.
  10. Только потом подключать несколько предметов.Сначала проверить, что scheduler и validator работают.

Как тестировать scheduler и генератор

Determinism testОдин review history должен давать воспроизводимое scheduler state.
Due-date testПосле Again review должен приходить раньше, после устойчивого Good — позже.
Hint testОтвет с сильной подсказкой не должен увеличивать интервал так же, как независимый.
Generation test100 новых задач не выходят за skill/difficulty constraints.
Validator testНамеренно плохие LLM-задачи отклоняются.
Dedup testСистема не подсовывает почти одинаковый surface context.
Transfer testНовый формат действительно проверяет целевой skill, а не посторонний.
Load testDaily queue не растёт бесконтрольно после пропущенных дней.

Особенно полезно иметь искусственные review histories: «всегда Easy», «три забывания подряд», «правильно только с hint 3», «долго не повторялся». Они быстро обнаруживают неправильную интеграцию scheduler.

Что говорят исследования — и чего они пока не доказывают

Spacing и retrieval practice имеют сильную исследовательскую базу в целом. Есть и свежие результаты по adaptive spaced repetition: исследование 2026 года на university-level English for Academic Purposes показало улучшение delayed retention в восьминедельной программе.

Но это не прямое доказательство, что конкретная домашняя система «FSRS + local LLM + сгенерированные квесты» даст тот же эффект у школьника. Возраст, предмет, качество заданий, feedback и мотивация могут менять результат.

Отдельная осторожность для разных групп детей: перспектива 2026 года по testing effect отмечает, что образовательные применения retrieval practice активно изучаются, но внимания к отдельным группам учащихся, включая learning disabilities, пока недостаточно. Не стоит делать один режим повторения обязательным для всех.

Типичные ошибки

Планируют карточку, а хотят измерять навыкРебёнок запоминает конкретный cue, а система считает это переносимым знанием.
LLM сама решает дату повторенияНет воспроизводимого scheduler и понятной памяти.
Нет validatorОшибочная AI-задача портит review history.
Каждый review — новый сложный квестИзмеряется чтение/контекст, а не целевой skill.
Подсказка считается успехомИнтервал растёт, хотя самостоятельного recall не было.
Слишком много due itemsПропущенный день превращается в огромный долг и демотивирует.
Нет stable cardsДаже там, где нужно быстро выучить точную форму, всё насильно генеративное.
Нет surface historyLLM случайно генерирует почти одинаковые задачи.
Все skills имеют одинаковую retention policyФакт, процедура и transfer skill требуют разной практики.
Review заменяет обучениеSRS помогает удерживать изученное, но не обязан быть лучшим способом первичного объяснения новой темы.

Частые вопросы

FSRS сам генерирует вопросы?

Нет. FSRS — scheduler: он рассчитывает состояние памяти и момент следующего review. Генерацию задания выполняет отдельный Task Generator/LLM.

Нужно ли обязательно использовать Anki?

Нет. Можно использовать open-source реализацию FSRS напрямую внутри своего репетитора. Anki удобен как готовое приложение для классических карточек.

Можно ли каждый раз генерировать совершенно новое задание?

Да, если оно проверяет тот же skill, проходит validator и не добавляет лишнюю сложность, которая меняет предмет измерения.

Почему не хранить просто список вопросов?

Для некоторых тем можно. Но разделение skill и surface form позволяет менять контекст, формат и сложность, сохраняя одну историю памяти по навыку.

Как оценить review, если ребёнок ответил с подсказкой?

Сохранить hint level и не считать такой ответ эквивалентом самостоятельного recall. После сильной подсказки обычно нужен более ранний новый review.

Подходит ли spaced repetition для математики?

Для отдельных навыков, процедур и формул — да, но повторение должно включать применение и вариативные задачи. Нельзя сводить математику только к flashcards.

Что лучше: FSRS или SM-2?

Оба являются schedulers. В новой собственной системе логично рассматривать современный FSRS с открытыми реализациями и моделью Difficulty/Stability/Retrievability, но качество всей системы всё равно зависит от review evidence и задач.

Можно ли держать всё локально?

Да. Scheduler, Student DB, LLM, validators и интерфейс могут работать в домашней сети без внешнего AI API.

Как долго должна длиться review-сессия ребёнка?

Нет универсального числа. Для домашнего UX лучше ограничивать очередь по времени и возрасту, а не заставлять закрывать весь накопленный backlog любой ценой.

Источники и проекты

Следующий материал

Как заставить ИИ учить, а не решать домашнее задание за ребёнка

Отдельная anti-cheating/Socratic архитектура: уровни помощи, delayed reveal, контрольный режим, запрет answer dumping и проверка самостоятельности.