mirror of
https://gitverse.ru/kpa39l/email-assistant.git
synced 2026-09-29 21:25:10 +00:00
4.6 KiB
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 |
|
|
|
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
Поведение агента
- "Обнови архив почты" — выполнить
mail-archive.sh --limit 100 - "Архивируй INBOX" —
mail-archive.sh --folder INBOX --limit 200 - "Архивируй всё" —
mail-archive.sh --all --limit 100 - "Найди письмо про <тема>" —
grep -ril '<тема>' /mnt/yandex-disk/hermes/email/**/body.mdилиjq 'select(.subject | test("<тема>"))' /mnt/yandex-disk/hermes/email/**/meta.json - "Проверь статус архива" — показать содержимое
~/.local/state/mail-archive-last-*.json - "Сколько писем в архиве" —
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