Files

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/ — объективное сравнение подходов к хранению писем:

  1. Текущий формат (email.md: YAML-frontmatter + тело в /YYYY/MM/UID/)
  2. Maildir (стандарт: cur/, new/, tmp/, имя файла = host.timestamp.pid_uid.size:2,S)
  3. MBOX (один mbox-файл на папку)
  4. 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.
  • Данные не трогаются — откат тривиален.