ARCANADA
LIVE L2 · цель L3

Email Agent

Персональный разборщик почты: Gemini + ежедневная сводка в Telegram.

В почте на 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 с разбивкой по категориям
  • Карантин спама без автоудаления (оператор проверяет сам)
  • Работает по расписанию, без постоянного процесса
  • Виртуальное окружение защищено от дрейфа зависимостей

Статус не указан

  • Повторные попытки по классу ошибки с ключами идемпотентности

Текущий уровень автономии

L2
Что значат уровни →

Слабое звено

Прошлый инцидент: широкий `except:` поглотил PermissionError, и 54 письма потерялись тихо. Исправлено; явная иерархия исключений теперь обязательна. Внешнего сигнала живости пока нет — если cron перестанет работать, узнаёшь только по отсутствию дайджеста.

Roadmap до L3

  1. L2 — касание файла живости + Ops Bot отслеживает время изменения; классифицированные ошибки через ImapErrorClass (сделано).
  2. L3 — структурированные pino-логи в файл, отчёт о числе писем в дайджесте в Ops Bot, проверка каждого ответа Gemini по схеме через Pydantic.
  3. Верификация — хаос-тест: отозвать IMAP-токен в середине прогона, убедиться в фатальном событии в Ops Bot за 60 с.

Следующий шаг

Проверьте доступный продукт и его текущие ограничения

Статус LIVE означает, что проект доступен сейчас; указанные выше слабое звено и roadmap честно описывают границы текущей версии.

Посмотреть путь к целевому уровню