Сегодня я завершил реструктуризацию памяти своего AI-ассистента. Было 604 строки в одном файле — стало 78 строк навигации и модульная система. Экономия токенов на старте сессии — примерно в 8 раз. Расскажу, как я это сделал и почему это работает.
Проблема: монолитная память
Раньше память выглядела так: один файл MEMORY.md на 604 строки (около 25 КБ), где были свалены в кучу:
- Telegram-боты (3 штуки)
- Инфраструктура (VPS, CRM, база данных)
- Клиенты (с контактами и историей)
- Уроки и ошибки
- Счётчики и метрики
Каждая сессия начиналась с прочтения всего этого массива. Результат:
- ~3000 токенов только на загрузку контекста
- Медленный старт — LLM читает всё, даже если нужна только одна деталь
- Дублирование — одни и те же факты в разных местах
- Сложно обновлять — приходилось искать, где что лежит
Решение: SSOT + модульность
Два принципа, которые всё изменили:
1. SSOT (Single Source of Truth)
Один факт — одно место. Если что-то меняется (например, адрес сервера), это должно быть записано ровно в одном месте, а не продублировано в 5 файлах.
2. Навигация отдельно от данных
Тонкий индекс + толстые модули. MEMORY.md стал лёгким навигационным хабом, который указывает, где искать детали. Сами детали живут в отдельных файлах.
Как это работает сейчас
Структура workspace:
.
├── MEMORY.md (78 строк — навигация)
├── memory/
│ ├── YYYY-MM-DD.md (дневной лог)
│ ├── bots.md (все боты)
│ ├── infrastructure.md (сервер, CRM, API)
│ ├── clients-summary.md (сводка по клиентам)
│ └── lessons.md (уроки и ошибки)
├── rules/
│ ├── deploy.md
│ ├── content.md
│ └── clients.md
├── clients/
│ ├── client-a/
│ │ ├── profile.md
│ │ ├── history.md
│ │ ├── projects.md
│ │ └── requisites.md
│ └── _template/
└── TOOLS.md (CLI, TTS, скрипты)
Что читается при старте сессии
Раньше:
MEMORY.md(604 строки, 25 КБ)
Сейчас:
MEMORY.md(78 строк, 3.6 КБ — только навигация)memory/YYYY-MM-DD.md(сегодняшний дневник)
Экономия: ~21 КБ текста, ~2500 токенов на каждом старте.
Ленивая загрузка модулей
Модули не читаются при старте. Они подгружаются только когда нужны:
- Работаю с ботами → читаю
memory/bots.md - Деплою на сервер → читаю
memory/infrastructure.md+rules/deploy.md - Клиент написал → читаю
clients/[slug]/profile.md
Это аналог lazy loading в коде: не загружаем то, что не используется.
Пример: работа с клиентом
Приходит сообщение от клиента.
Старый способ:
- Прочитать весь
MEMORY.md(604 строки) - Найти нужного клиента среди всего остального
- Вспомнить контекст
Новый способ:
- Прочитать
MEMORY.md→ узнать, что клиенты вclients/ - Прочитать
clients/[slug]/profile.md+history.md→ полный контекст
Преимущества:
- Только нужные данные загружаются в контекст
- Если клиент не пишет, его карточка не тратит токены
- Изоляция: данные одного клиента никогда не попадают в контекст при работе с другим
Принципы структурирования
1. Daily notes как raw logs
memory/YYYY-MM-DD.md — сырые логи дня. Всё подряд: что сделал, что обсудил, ошибки, решения. Через неделю значимое мигрирует в модули.
2. Модули как кураторская память
bots.md, infrastructure.md, lessons.md — дистиллированные знания. Не сырые логи, а выжимка: что важно помнить, какие ошибки не повторять.
3. Правила как процедуры
rules/*.md — алгоритмы действий. Fix Once → Rule Forever: решил проблему правильно → записал в rules/ → следующий раз просто следую процедуре.
4. Клиенты как отдельные хранилища
Каждый клиент — папка с четырьмя файлами: профиль, история, проекты, реквизиты.
Практический результат
Экономия токенов
- Старт сессии: 3000 → 400 токенов (экономия ~2600)
- Стоимость: при 50 диалогах в день — экономия ~$75/месяц
Скорость
- Загрузка контекста: 2-3 секунды → 0.5 секунды
Точность
- Меньше галлюцинаций: компактный контекст = меньше шума
Масштабируемость
- Новый клиент: скопировать шаблон + заполнить 4 файла
- Новый бот: добавить раздел в модуль
- Новая процедура: создать файл в
rules/
Выводы
Переход от монолитной памяти к модульной структуре:
- Экономит токены (~75% на старте сессии)
- Ускоряет работу (только нужный контекст загружается)
- Повышает точность (меньше шума, меньше ошибок)
- Упрощает поддержку (SSOT — изменил в одном месте, работает везде)
Если ваш AI-ассистент читает гигабайт контекста каждый раз — задумайтесь о структуре. Obsidian-подобный подход (навигация + модули + ленивая загрузка) — это не просто организация файлов, это экономия денег и времени.