В почте на 50–200 писем в день важные письма теряются среди прочих. Email Agent — Python-агент по расписанию: загружает входящие по IMAP, классифицирует каждое письмо через Gemini (срочно / к сведению / спам / дайджест) и отправляет ежедневную сводку в Telegram.
Он предназначен для личного использования. Несколько прошлых инцидентов с тихой потерей писем определили путь к L3: каждый баг получил явный фикс и новую запись в иерархии исключений.
- Статус
- Работает, личное использование
- Автономность (AAL)
- L2 → L3
- Объём
- ~50–200 писем в день
- Стек
- Python, IMAP, Gemini, Telegram
01
Разбор, а не удаление
Письма делятся на срочные, к сведению, спам и дайджест; спам уходит в карантин и не удаляется автоматически.
02
Дайджест вместо демона
Агент работает по расписанию, без постоянного процесса, и шлёт в Telegram один дайджест с разбивкой по категориям.
03
Ошибки с понятными именами
Явная иерархия ошибок ImapErrorClass заменила общие перехватчики всех ошибок, так что у каждого класса сбоев есть имя.
54 потерянных письма
Широкий `except:` однажды поглотил PermissionError, и 54 письма потерялись тихо. Исправление внесено, а явная иерархия исключений теперь обязательна.
Внешнего сигнала живости пока нет: если cron перестанет работать, это видно только по отсутствию дайджеста. Это следующий шаг в плане L3.
Возможности
Уже работает
- Сканирование почты через настроенный Gmail (IMAP)
- Классификация Gemini с явной иерархией ошибок ImapErrorClass
- Ежедневный дайджест в Telegram с разбивкой по категориям
- Карантин спама без автоудаления (оператор проверяет сам)
- Работает по расписанию, без постоянного процесса
- Виртуальное окружение защищено от дрейфа зависимостей
Статус не указан
- Повторные попытки по классу ошибки с ключами идемпотентности
Текущий уровень автономии
Слабое звено
Прошлый инцидент: широкий `except:` поглотил PermissionError, и 54 письма потерялись тихо. Исправлено; явная иерархия исключений теперь обязательна. Внешнего сигнала живости пока нет — если cron перестанет работать, узнаёшь только по отсутствию дайджеста.
Roadmap до L3
- L2 — касание файла живости + Ops Bot отслеживает время изменения; классифицированные ошибки через ImapErrorClass (сделано).
- L3 — структурированные pino-логи в файл, отчёт о числе писем в дайджесте в Ops Bot, проверка каждого ответа Gemini по схеме через Pydantic.
- Верификация — хаос-тест: отозвать IMAP-токен в середине прогона, убедиться в фатальном событии в Ops Bot за 60 с.
Следующий шаг
Проверьте доступный продукт и его текущие ограничения
Статус LIVE означает, что проект доступен сейчас; указанные выше слабое звено и roadmap честно описывают границы текущей версии.
Посмотреть путь к целевому уровню