Почта в Nerve
Раздел «Почта» показывает ящик, настроенный вchannels.email. Почтовый сервер остаётся источником писем, папок и отметок. Nerve хранит восстанавливаемые заголовки и связи с разговорами, а Велес сохраняет рабочие сводки в технической папке рабочей области.
Интерактивная почта включается переключателем modules.mail.enabled и требует перезапуска шлюза после изменения. Если модуль выключен, Nerve скрывает раздел, его локальные почтовые маршруты не обращаются к кэшу, а периодическая синхронизация раз в 30 секунд только перепроверяет состояние модуля и не выполняет запросы к IMAP, модели или базе анализа. Переключатель channels.email.enabled независим и управляет почтовым каналом агента. Выключение модуля не удаляет настройки и накопленный анализ.
Расположение и папки
На широком экране раздел занимает всю доступную ширину: слева расположены папки, в центре — список писем, справа — выбранное письмо. На более узком экране список и письмо открываются последовательно, поэтому область чтения не сжимается до узкой колонки. Велес преобразует транспортную кодировку названий папок IMAP в читаемый текст, сохраняет уровни вложенности и показывает стандартные папки на языке интерфейса. Непосредственно выбрать можно только папки, в которых почтовый сервер разрешает просматривать письма. Отображаемое название не переименовывает папку на сервере: для всех операций Велес сохраняет её исходный служебный идентификатор.Возможности
- просмотр иерархии папок с читаемыми названиями и поиск;
- чтение обычного текста и очищенного HTML, показ встроенных изображений;
- скачивание вложений;
- создание письма с вложениями, ответ одному или всем, отметка прочтения, флаг и архивирование;
- рабочая сводка по новым письмам и редактируемый черновик ответа;
- предложения задач и событий календаря;
- передача письма новой сессии Велеса.
Настройка
Используются адреса серверов, имя пользователя и локальные зашифрованные секреты изchannels.email. Для доступа необходимо установить consentGranted=true.
Поле enabled управляет отдельным агентским почтовым каналом. Оно не требуется почтовому клиенту Nerve. Для обычного почтового клиента рекомендуется:
consentGranted=true и clientAutoAnalyze=true Nerve передаёт ограниченный текст новых писем настроенной модели для фоновой классификации и подготовки черновика ответа. Автоматическое чтение выполняется в режиме просмотра: ни фоновый анализ, ни отдельный агентский почтовый канал не устанавливают на сервере отметку прочтения. Устаревшее поле markSeen игнорируется. Если поле clientAutoAnalyze отсутствует, фоновая обработка включена. Значение false отключает только фоновую обработку: кнопка «Проанализировать с ИИ» продолжает работать. Черновик не отправляется автоматически — пользователь открывает его в редакторе, проверяет и отдельно подтверждает отправку. Пароли, полные тела писем и файлы в производный кэш или базу сводок не записываются.
Поле clientAnalysisModel позволяет выбрать для этой обработки отдельную модель. Пустое значение использует agents.defaults.model. Пробелы по краям удаляются, а полный идентификатор длиной не более 500 символов с префиксом поставщика, например openrouter/google/gemini-2.5-flash, openai-codex/gpt-5.1-codex или custom/minimax-m2.7, сохраняется без изменения и при автоматическом выборе поставщика направляет запрос по этому префиксу. Для выбранного поставщика нужен собственный ключ или выполненный вход. Выбранные в обычном разговоре модель и уровень рассуждения на почтовый анализ не влияют; для отдельной почтовой модели используется её собственное поведение рассуждения по умолчанию. Смена настройки применяется к новым запускам анализа, но не пересчитывает уже сохранённые сводки.
pollIntervalSeconds задаёт общий период проверки IMAP для раздела «Почта» и отдельного агентского почтового канала. Значение по умолчанию — 1800, то есть 30 минут; допустимы значения от 30 секунд до суток.
Изображения в письмах
Встроенные растровые изображения, на которые письмо ссылается через служебный идентификатор содержимого или расположение части, загружаются через защищённый адрес Велеса. Безопасные растровые данные, включённые прямо в HTML, показываются без сетевого запроса. Такие изображения не считаются обычными вложениями и не создают лишний значок скрепки; часть с именем файла, на которую HTML не ссылается, остаётся доступным для скачивания вложением. Внешние изображения могут использоваться для подтверждения открытия письма. ПолеclientRemoteImagePolicy принимает три значения:
block— не загружать внешние изображения;ask— по умолчанию показать предупреждение и загрузить изображения только после нажатия кнопки;allow— загружать их сразу при открытии письма.
ask.
Даже после разрешения браузер не обращается к внешнему адресу напрямую. Велес проверяет адрес и все перенаправления, запрещает частные и служебные сети, ограничивает размер и принимает только безопасные растровые форматы. Удалённый сервер всё равно может узнать о загрузке по уникальному адресу изображения, поэтому рекомендуется значение ask.
Поручение Велесу
Кнопка «Поручить Велесу» создаёт не отдельный запрос к модели, а новый обычный разговор выбранной личности.- Откройте письмо и нажмите «Поручить Велесу».
- Выберите личность в том же окне, которое используется для нового разговора.
- Обязательно опишите задачу своими словами.
- Проверьте список вложений. Опасные исполняемые типы передать агенту нельзя.
- Подтвердите создание разговора.
mail-thread.md, добавляет выбранные файлы и переключает Nerve в новый разговор. Личность получает обычные инструменты, навыки, память и доступ к рабочей области.
Письмо и вложения всегда помечаются как внешние недоверенные данные. Инструкции внутри них не дают агенту полномочий. Отправка почты и другие подтверждаемые действия продолжают требовать обычного подтверждения.
Задачи и календарь
Из найденного поручения можно создать задачу после подтверждения. Для события календаря требуется подключённый источник Exchange. Источники ICS остаются только для чтения. Кнопки создания задачи и события показываются только при включённых модулях задач и календаря. Подтверждение пользователя остаётся обязательным.Хранение сводок и локальный кэш
Успешные результаты анализа сохраняются в отдельной базе SQLiteworkspace/.veles/mail/analysis.db. В ней находятся только хэш-отпечаток конфигурации почтовой учётной записи, служебный идентификатор письма, версия запроса, структурированная сводка, название модели и время обработки; пароль в отпечаток не входит. Сначала письмо связывается по Message-ID; если его нет, нужен действительный UIDVALIDITY папки вместе с исходным именем папки и UID. При неизвестном или недействительном UIDVALIDITY такая сводка не сохраняется, чтобы после смены поколения папки не связать её с другим письмом. Тела писем, HTML, изображения, вложения и пароли туда не записываются. База не шифруется отдельно и защищается правами доступа к рабочей области. Сводки не удаляются по возрасту и остаются частью рабочей области, пока пользователь вручную не удалит базу при остановленном Велесе.
При первом запуске после обновления Nerve переносит доступные успешные результаты из прежнего локального кэша в базу Велеса. Перенос повторяемый и не удаляет исходные записи.
Производный кэш Nerve хранится в ${NERVE_DATA_DIR:-~/.nerve}/mail/mail.db. Он содержит восстанавливаемые заголовки, связи с разговорами и временные копии сводок для надёжной доставки в базу Велеса и исключения повторной обработки. Служебный ключ каждой записи восстанавливается из исходного имени папки, UIDVALIDITY и UID, поэтому перенос сводок не зависит от особенностей чтения SQLite в Windows. При смене почтовой учётной записи кэш очищается по её хэш-отпечатку; при смене поколения UID папки удаляются старые локаторы, чтобы не связать сводку с другим письмом. Записи старше 90 дней удаляются автоматически. Удаление файла кэша не удаляет письма с сервера и не удаляет сводки из рабочей области.
Для встроенного хранилища требуется Node.js 22.13 или новее.
Фоновая синхронизация использует pollIntervalSeconds, но не чаще одного раза в 30 секунд. Значение по умолчанию — 30 минут. Она читает сообщения без установки отметки «прочитано».