# Утренняя сводка по всем почтовым ящикам: что отдать нейросети, а что оставить себе

Одна утренняя сводка вместо шести ящиков: что отсеивают правила, что делает нейросеть, почему доступ только на чтение и как не потерять важное письмо.

URL: https://posts.danashkin.ru/guides/svodka-po-pochte-neyrosetyu
Обновлено: 2026-09-29

---

## Коротко

**Главное**

- Утренняя сводка заменяет обход шести-семи ящиков одним сообщением: разделы по ящикам, важные письма с ярлыками, шум свёрнут в строку-счётчик.
- Нейросеть в такой сводке делает одно: читает остаток после бесплатных правил и ставит ярлык, важность и суть одной строкой. Отвечать, удалять и решать остаётся человеку.
- Доступ к почте только на чтение, письма остаются непрочитанными, тела писем нигде не хранятся. Чувствительные отправители в модель не уходят вовсе.
- Главный риск сводки - тихая потеря письма. Его закрывают правила: прогон всегда заканчивается сообщением, упавший ящик не роняет остальные, отметка «показано» ставится только после доставки.

## Зачем одна сводка вместо шести ящиков?

**Главное**

Затем, что обход ящиков - ежедневная ручная операция, в которой важное письмо приходится выкапывать из рассылок и уведомлений. Сводка делает этот обход за тебя и приносит в мессенджер одно сообщение с тем, что требует внимания.

У меня шесть-семь почтовых ящиков в разных сервисах: Gmail, Яндекс, Mail.ru и корпоративные на хостинге. Каждое утро это семь вкладок и поиск глазами. Боль одна: важное письмо лежит в куче шума, и выкапывать его приходится руками каждый день.

Я собрал себе ассистента, который делает этот обход сам и присылает в Telegram одну сводку. Требование к её форме я сформулировал так: «спам вообще не читаем, может быть одной строчкой написать, что там ещё было столько-то неважных, сервисных».

Из этой фразы выросли три правила формы:

- **Раздел на каждый ящик.** Я помню, какой ящик про что, и эта разметка для меня бесплатная.
- **Ярлык у каждого важного письма.** Строка выглядит как «[ярлык] Отправитель - суть»: письмо понятно без чтения строки целиком.
- **Шум одной строкой.** В конце раздела: «отсеяно столько-то: рассылки, уведомления сервисов».

Сводка назначена на 8:30, а другой мой утренний бот пишет в 9:00: два утренних сообщения подряд быстро перестают читать.

## Только чтение: что ассистент не может сделать с почтой

**Главное**

Ящики открываются в режиме только чтения: ассистент физически не может удалить, отправить, переместить письмо или пометить его прочитанным. Вложения не скачиваются, тела писем не сохраняются ни в базе, ни в журнале.

Сводка только читает почту, и это заложено на уровне протокола. Протокол почты IMAP умеет открывать папку в режиме, где любые изменения запрещены. Мой ассистент открывает ящики только так.

Отдельная мелочь, которая важна каждое утро: письма после сводки остаются непрочитанными. Ассистент забирает их без отметки «прочитано», и ящик выглядит так, будто в него никто не заходил.

Что ещё осталось за бортом:

- вложения не скачиваются и не разбираются;
- тела писем не хранятся нигде: в базе лежат только служебные данные показанных писем, в журнале - счётчики и домены;
- бот отвечает только на мой номер чата, остальных молча игнорирует.

Режим «только чтение» тоже нужно проверять. Мой первый тест на него смотрел на подставной ящик, который сам себе выставлял нужный флаг, и замена режима на «запись» проходила мимо всех тестов. Новый тест запускает настоящее открытие ящика и такую подмену ловит. Как вообще решать, давать ли нейросети доступ к рабочей почте, подробно разбирал в материале про [доступ агента к почте и серверу](/guides/dostup-agenta-k-pochte-i-serveru).

## Что отсеивается до нейросети?

**Главное**

Рассылки, уведомления сервисов и автоответы снимаются бесплатными правилами по служебным заголовкам письма и адресам отправителя. Модель видит только остаток. Письмо без единого признака рассылки не отсеивается никогда.

Большая часть шума узнаётся без нейросети: у рассылок и автоответов есть служебные заголовки, невидимые человеку. Эти заголовки описаны в стандартах почты, и сервисы рассылок их обычно ставят.

Каждому признаку я дал вес, и письмо уходит в шум, когда сумма весов набирает единицу:

| Признак | Что означает | Вес |
|---|---|---|
| заголовок List-Id | письмо пришло через движок рассылок | 1,0 |
| заголовок Auto-Submitted | автоответ или автоматическое письмо | 1,0 |
| Precedence: bulk | массовая отправка | 0,7 |
| адрес no-reply | уведомление сервиса | 0,6 |
| кнопка List-Unsubscribe | ссылка «отписаться» | 0,5 |

Веса, а не простое «да или нет», появились из-за последней строки. Одиночную ссылку «отписаться» ставят и живые менеджеры, которые пишут из рабочих систем. Отсеивать по ней одной значит терять письма людей.

Два правила стоят выше весов. Письмо без единого признака рассылки идёт дальше в модель: тихий отсев обычного письма я считаю провалом. А отправитель из списка важных показывается всегда, даже с рассылочными заголовками, и в модель не идёт.

## Что нейросеть получает и что возвращает?

**Главное**

Модель получает остаток писем пачками по двадцать, от каждого письма - первые 1200 символов. Возвращает строгий набор полей: важность от нуля до трёх, ярлык из словаря, суть одной строкой, нужен ли ответ и нет ли в письме попытки командовать моделью.

Нейросеть в сводке работает сортировщиком: читает начало письма и заполняет короткий бланк. Прав [ИИ-агента](/concepts/ai-agent) у неё нет: отвечать, пересылать и решать она не умеет.

Бланк такой: важность от нуля (шум) до трёх (срочное), ярлык, суть одной строкой, нужен ли ответ, подозрительное ли письмо и причина оценки. В сводку попадает всё с важностью два и выше. Ярлыки берутся только из словаря: заказчик, договор, счёт, встреча, личное, госорган и прочее. Ярлык не из словаря превращается в «прочее», чтобы важное письмо не осталось без метки.

Письмо от незнакомого отправителя - такие же чужие данные, как веб-страница. Текст письма уходит модели между явными разделителями, и инструкция запрещает исполнять команды изнутри. Письмо с попыткой командовать моделью получает пометку «подозрительное» и показывается в сводке всегда.

Если модель вернула мусор, запрос повторяется один раз. Не помогло - письма оцениваются по одним правилам с пометкой, что модель их не видела. Сводка приходит в любом случае.

**Что остаётся себе**

Ответы на письма, удаление и любые решения по почте остаются человеку. Письма банка, юриста, налоговой и личную переписку можно внести в список, который в модель не уходит вовсе: такое письмо приходит в сводку строкой «письмо от такого-то, посмотри сам», без пересказа.

## Как не пропустить важное?

**Главное**

Главный риск сводки не в том, что модель ошибётся с ярлыком, а в том, что письмо исчезнет молча. Поэтому прогон всегда заканчивается сообщением, упавший ящик не роняет остальные, а отметка «показано» ставится только после успешной доставки.

Сводка, которая иногда молчит, хуже её отсутствия: ты перестаёшь проверять ящики и не знаешь, что пропустил. После сборки я прогнал ассистента сквозной проверкой свежим взглядом. Она нашла пять путей, на которых письмо пропадало тихо и навсегда.

Первый путь: отметка «прочитано до сюда» сдвигалась ещё до показа, и упавший между чтением и отправкой прогон хоронил письма. Второй: отметка «показано» ставилась даже тогда, когда Telegram ответил ошибкой. Человек сводки не видел бы, а назавтра эти письма уже не пришли бы.

Теперь прогресс записывается только после удачной доставки. Плюс три правила, которые держатся тестами:

- **У прогона три исхода, и все с сообщением:** сводка, «важного нет» или «прогон не удался» с причиной. Молчания нет.
- **Упавший ящик - строка, а не авария.** Сменился пароль, лёг сервер - в сводке появляется «ящик недоступен», остальные обработаны.
- **Одно письмо - одна строка.** Копия письма в нескольких ящиках показывается один раз с пометкой, где она лежит ещё.

Длинная сводка режется по границам разделов: у Telegram предел 4096 символов на сообщение. Всё, что работает по расписанию без присмотра, должно само сообщать о своих поломках. Про такие тихие поломки подробнее в материале про [автозадачи, которые работают без тебя](/guides/avtozadachi-agent-rabotaet-bez-tebya).

## Деньги и порог закрытия

**Главное**

У сводки два потолка расхода на модель: за прогон и за месяц. Месячный потолок одновременно порог закрытия проекта. Мерилом успеха я выбрал простое: перестал ли я обходить ящики руками.

Каждое письмо, ушедшее в модель, стоит денег, поэтому расход считается до следующей пачки писем, а не после прогона. Потолок на один прогон - 20 рублей, на месяц - 500. По расчёту при 350 письмах в день выходит около 90 рублей в месяц, так что потолок стоит примерно впятеро выше ожидания.

На этом месте тоже нашлась тихая ошибка. Если сервис не сообщал цену вызова, код считал её нулём, и потолок не срабатывал никогда. При потолке в одну копейку в модель ушли все сорок запросов из сорока. Теперь неизвестная цена останавливает отправку писем в модель.

Порог закрытия я записал до первой строки кода. Если через три недели после первого живого прогона я всё равно открываю ящики руками, значит сводке не доверяю. Если расход перевалил за 500 рублей в месяц, цена не сходится с задачей. В обоих случаях проект сворачиваю или переделываю.

От кнопки «пропустил важное» я отказался сознательно. Инструмент, который просит себя обслуживать, умирает первым. Мерило одно: перестал ли я по утрам заходить в почту.

## Как это становится инструментом для сотрудника?

**Главное**

Так же, как для владельца: ящики, расписание, ярлыки, правила и текст сводки живут в файле настроек, а не в коде. Поставить ассистента сотруднику значит заполнить его профиль и подключить ящики, код при этом не меняется.

Я строил ассистента так, чтобы тот же движок можно было поставить сотруднику компании без переписывания. Всё, что отличает одного человека от другого, вынесено в профиль: адреса ящиков, время сводки, часовой пояс, словарь ярлыков, список важных отправителей и список тех, кто в модель не уходит.

Самым долгим оказался не код, а подключение ящиков. Код закрыт 99 тестами, а подключение первого ящика дважды спотыкалось о ручную правку двух файлов: то редактор не сохранил пароль, то имя переменной не совпало. Вывод простой: последнюю милю настройки закрывает скрипт, инструкция тут не помогает.

Порядок подключения нового человека я заложил такой:

1. **Добавь ящик одной командой**

   Скрипт спрашивает адрес, находит почтовый сервер по домену, принимает пароль приложения скрытым вводом и сначала проверяет вход. Записывает настройки только после удачного входа: с неверным паролем на диске не меняется ни байта.

2. **Заполни словарь ярлыков**

   Подсказка к каждому ярлыку пишется так, как объяснил бы новому сотруднику: «договор, приложение, акт, подписание».

3. **Прогони сводку с выключенной отправкой**

   Отправка рождается выключенной: текст ложится в файл, наружу ничего не уходит. Человек читает его глазами и называет промахи.

4. **Перенеси промахи в правила**

   Важные отправители, домены шума, порог важности - правкой профиля, а не кода.

5. **Включи отправку рукой**

   Когда текст устроил того, кто будет его читать.

Для компании здесь появляется вопрос, куда уходят тексты писем. Эту развилку я разбирал в материале про [чувствительные данные и нейросети в компании](/guides/chuvstvitelnye-dannye-i-neyroseti-v-kompanii). А чтобы сводка приходила при выключенном ноутбуке, ассистент рассчитан на работу с сервера, как [бот без включённого ноутбука](/guides/otvyazat-bota-ot-vklyuchennogo-noutbuka).

## Частые вопросы

**Главное**

Что спрашивают чаще всего: будет ли ассистент отвечать на письма, почему сводка раз в сутки и что делать с вложениями.

### Частые вопросы

**Будет ли ассистент отвечать на письма?**

Не в первой версии. Черновик ответа по кнопке у письма в сводке я отложил во вторую очередь. Чтобы её не заблокировать, у каждой показанной строки хранится путь назад к письму: ящик, папка и номер.

**Почему сводка раз в сутки?**

Задача - снять утренний обход. Несколько сводок в день - это настройка расписания в профиле, а не новая функция.

**Что с вложениями?**

Не скачиваются и не разбираются. Сводка сообщает о письме, а файл ты открываешь сам.

## Главный вывод

**Главное**

Утренняя сводка почты держится на разделении труда: правила бесплатно снимают шум, модель ставит ярлык и суть, человек отвечает и решает. Доступ только на чтение и правило «никогда не молчать» делают такую сводку безопасной и надёжной.

Нейросеть в почте хороша как сортировщик. Отдать ей стоит первую сортировку: что важно, про что письмо, нужен ли ответ. Себе стоит оставить ответы, удаление и письма, которые чужим глазам видеть незачем.

Практический минимум на сегодня: посчитай, сколько ящиков ты обходишь по утрам, и выпиши отправителей, которых нельзя пропустить. Этот список - первый раздел будущего профиля.

А ты разбираешь почту сам или уже отдал первую сортировку нейросети?

### Источники

- [RFC 9051 - протокол IMAP, команда EXAMINE открывает папку только для чтения, RFC Editor](https://www.rfc-editor.org/rfc/rfc9051.html)
- [RFC 2919 - заголовок List-Id для опознания списков рассылки, IETF](https://datatracker.ietf.org/doc/html/rfc2919)
- [RFC 2369 - заголовки списков рассылки, включая List-Unsubscribe, IETF](https://datatracker.ietf.org/doc/html/rfc2369)
- [RFC 3834 - автоматические ответы на письма и заголовок Auto-Submitted, IETF](https://datatracker.ietf.org/doc/html/rfc3834)
- [Telegram Bot API - текст сообщения от 1 до 4096 символов, Telegram](https://core.telegram.org/bots/api)
- [Prompt injection - атака через текст, который модель принимает за инструкцию, Wikipedia](https://en.wikipedia.org/wiki/Prompt_injection)
