Files
email-assistant/context/SKILL.md
T

4.6 KiB

name, description, version, author, platforms, prerequisites, metadata
name description version author platforms prerequisites metadata
email-local-archive Локальный архив почты: инкрементальное сохранение писем из IMAP в файловую структуру на Yandex Disk с метаданными, телом и вложениями. 1.0.0 estorozhenko
linux
commands
himalaya
python3
hermes
tags
email
archive
imap
backup
knowledge

Email Local Archive

Этот навык позволяет агенту архивировать письма из почтового ящика в локальную файловую систему по пути:

/mnt/yandex-disk/hermes/email/<folder>/YYYY/MM/UID/
  ├── meta.json       # envelope (from, to, subject, date, flags)
  ├── body.md         # тело письма (plain text)
  └── attachments/    # вложения

Используется клиент Himalaya CLI и Python-скрипт /opt/hermes/email-assistant/scripts/mail_archive.py.

Возможности

  • Инкрементальная архивация новых писем по UID
  • Поддержка любых папок (INBOX, Отправленные, Archive, Sent, подпапки)
  • Ограничение количества писем за один запуск (--limit)
  • Режим --all для архивации всех папок (основные + вложенные INBOX)
  • Состояние отслеживается в ~/.local/state/mail-archive-last-*.json
  • Обёртка mail-archive.sh для systemd/cron/Hermes

Инструменты

Используется terminal для вызова скрипта, read_file для чтения сохранённых писем, search_files для поиска по архиву.

Основные команды

# Архивация INBOX (первые 200 писем)
mail-archive.sh --folder INBOX --limit 200

# Архивация Отправленные (первые 50)
mail-archive.sh --folder "Отправленные" --limit 50

# Архивация всех папок (основные)
mail-archive.sh --limit 100

# Архивация всех папок включая вложенные INBOX
mail-archive.sh --all --limit 50

# Справка
mail-archive.sh --help

Поведение агента

  1. "Обнови архив почты" — выполнить mail-archive.sh --limit 100
  2. "Архивируй INBOX" — mail-archive.sh --folder INBOX --limit 200
  3. "Архивируй всё" — mail-archive.sh --all --limit 100
  4. "Найди письмо про <тема>" — grep -ril '<тема>' /mnt/yandex-disk/hermes/email/**/body.md или jq 'select(.subject | test("<тема>"))' /mnt/yandex-disk/hermes/email/**/meta.json
  5. "Проверь статус архива" — показать содержимое ~/.local/state/mail-archive-last-*.json
  6. "Сколько писем в архиве" — find /mnt/yandex-disk/hermes/email -name meta.json | wc -l

Правила

  • НЕ изменять и не удалять файлы в /mnt/yandex-disk/hermes/email/ или ~/.local/state/mail-archive-last-*.json без явной команды
  • НЕ переписывать логику архивации сырыми командами Himalaya
  • Если скрипт падает — сообщить об ошибке пользователю
  • Пароль в backend.auth.raw в конфиге — не показывать в логах

Примеры

Пользователь: "Обнови локальный архив почты из INBOX"

Агент (команда):

mail-archive.sh --folder INBOX --limit 200

Агент (сообщает результат):

📁 INBOX (last_uid=11559)
  ✓ UID 11560 (Новое письмо от Иванова)
  ✓ UID 11561 (Счёт на оплату)
  → last_uid обновлён до 11561, обработано 2

Пользователь: "Архивируй все папки полностью"

Агент (команда):

mail-archive.sh --all --limit 500

Пользователь: "Найди письмо про договор с Торик"

Агент (поиск):

grep -ril 'договор.*торик\|торик.*договор' /mnt/yandex-disk/hermes/email/**/body.md 2>/dev/null

Агент (показывает результат):

/mnt/yandex-disk/hermes/email/INBOX/2025/06/10234/body.md
/mnt/yandex-disk/hermes/email/INBOX/!Торик/2026/03/11050/body.md