3.4 KiB
Proposal: Анализ хранения писем — ФС vs Maildir
Why
Пользователь хранит письма в файловой системе как email.md (YAML-frontmatter + тело)
в /opt/hermes/email/<folder>/YYYY/MM/UID/. Мотивация — использовать локальную
нейросеть (Qwen3:8b через Ollama) как инструмент в обычных скриптах, без облака
и трат. Но перед развитием веб-интерфейса (и вообще проекта) нужно объективно
оценить, удобен ли текущий формат хранения по сравнению с Maildir и
аналогичными (MBOX, notmuch) — чтобы не закладывать архитектуру на неправильном
фундаменте.
Пользователь явно сказал: «анализировать насколько мой подход в хранении писем в файловой системе удобен по сравнению с maildir и ему подобными способами. Последняя задача в приоритете, пока мы не ушли далеко».
What Changes
Создаётся документ STORAGE_ANALYSIS.md в корне /opt/hermes/email-assistant/ —
объективное сравнение подходов к хранению писем:
- Текущий формат (
email.md: YAML-frontmatter + тело в/YYYY/MM/UID/) - Maildir (стандарт:
cur/,new/,tmp/, имя файла =host.timestamp.pid_uid.size:2,S) - MBOX (один mbox-файл на папку)
- notmuch (индексный слой поверх Maildir/почты)
Критерии сравнения (таблица):
- Производительность инкрементального чтения (LLM-анализ в скриптах)
- Устойчивость к сбоям (атомарность, потеря данных)
- Интеграция с инструментами (grep/find/jq/obsidian)
- Пригодность для LLM (быстрое чтение тела без парсинга MIME)
- Совместимость со стандартными MUA (mutt/neomutt/thunderbird)
- Масштабируемость (10k, 100k писем)
- Резервное копирование (Yandex Disk, git)
Capabilities
New Capabilities
email-storage-format: Документированное обоснование выбора формата хранения писем (текущий vs Maildir vs MBOX vs notmuch) и рекомендация по дальнейшему развитию.
Modified Capabilities
Impact
- Код: нет изменений кода, только документация
- Документация: новый файл
STORAGE_ANALYSIS.md, ссылка изREADME.md - Риск: анализ может порекомендовать миграцию на Maildir — тогда это отдельный change (следующий шаг). Пока — только документ, ничего не мигрируем.
Rollback
- Удалить
STORAGE_ANALYSIS.mdи ссылку изREADME.md. - Данные не трогаются — откат тривиален.