Skip to Content
Руководство для пользователейВозможностиКаналыЭлектронная почта

Электронная почта

Выделенный почтовый ящик для отправки задач в Qwen Code через IMAP и получения текстовых ответов по SMTP. Первое подключение пропускает письма, уже имеющиеся в выбранной папке. Последующие подключения возобновляют работу с сохранённого UID-курсора.

Настройка и запуск

Включите IMAP и SMTP для почтового ящика и экспортируйте учётные данные в окружение процесса, запускающего Qwen Code. Добавьте этот канал в settings.json:

{ "channels": { "agent-mail": { "type": "email", "address": "agent @example.com", "imapHost": "imap.example.com", "imapUser": "agent @example.com", "imapPassword": "$AGENT_IMAP_PASSWORD", "smtpHost": "smtp.example.com", "smtpUser": "agent @example.com", "smtpPassword": "$AGENT_SMTP_PASSWORD", "privatePolicy": "allowlist", "allowedUsers": ["you @example.com"], "sessionScope": "chat_thread", "cwd": "/path/to/workspace" } } }

Запустите qwen channel start agent-mail. Поля паролей поддерживают существующие ссылки $ENV_VAR; не храните пароли в открытом виде в настройках. Адаптер отключает логирование протокола и сообщает о сбоях подключения без раскрытия учётных данных.

Неявный TLS по умолчанию использует порт 993 для IMAP и порт 465 для SMTP. Для STARTTLS установите imapSecure или smtpSecure в false; порты по умолчанию станут 143 и 587 соответственно. STARTTLS и проверка сертификата остаются обязательными. Переопределяйте imapPort и smtpPort при необходимости. Для частного CA настройте NODE_EXTRA_CA_CERTS в Node перед запуском Qwen Code.

ПараметрПо умолчаниюОписание
folderINBOXОдна папка IMAP (только для чтения)
pollInterval60000Интервал опроса в миллисекундах
maxMessageBytes10485760Максимальный размер исходного сообщения; более крупные сообщения пропускаются
maxAttachmentBytes5242880Максимальный размер одного вложения; более крупные вложения пропускаются
maxTextLength32000Максимальное количество символов текста перед обрезкой цитируемой истории и подписи
proactiveRecipients[]Точные адреса почтовых ящиков (без отображаемых имён), допустимые для проактивной доставки

Пересылается не более 16 вложений. Изображения PNG, JPEG, GIF и WebP используют существующий ввод изображений; остальные файлы сохраняются по сгенерированным приватным путям на время выполнения задачи. Части календаря, инкапсулированных сообщений и отчётов не поддерживаются. HTML преобразуется в текст без загрузки удалённых ресурсов. Применяются общие параметры канала cwd, model, instructions и sessionScope. Область видимости chat_thread по умолчанию разделяет отправителей и ветки; выбор single явно предоставляет общий сеанс агента.

Доступ и ответы

privatePolicy поддерживает значения allowlist (по умолчанию), open и disabled; устаревший senderPolicy также распознаётся. Сопряжёние не поддерживается в этой версии. Адреса в allowedUsers и operators нормализуются к нижнему регистру; отображаемые имена не предоставляют доступ. Поддерживаются обычные ASCII-адреса. Используйте почтового провайдера, фильтрующего поддельные письма: allowlist в поле From не удостоверяет отправителя.

Ответьте на письмо агента, чтобы продолжить разговор. Message-ID, In-Reply-To и References связывают переписку с её отправителем. Ответы направляются только этому отправителю; Reply-To, CC, BCC и адреса внутри задачи не могут изменить SMTP-получателей. Результаты фоновых задач отправляются в ответ через сохранённую принятую ветку после завершения инициирующего хода. Отправители no-reply могут создавать задачи, но не получают ответов. Письма, сгенерированные агентом, автоматические письма, письма из списков рассылки и отчёты о доставке игнорируются.

Текстовые команды, такие как /help, /status и ответы на запросы разрешений, работают в теле письма. Для почты по умолчанию используется followup и поддерживается steer. collect отклоняется, поскольку буферизованные сообщения переживают свой обработчик допуска и не могут сохранить индивидуальный durable claim завершения. Допуск остаётся активным, пока задача ожидает. В обработке может находиться до 32 обычных доставок; дополнительный слот предназначен для управляющих ответов и ответов о занятости. Новые задачи при достижении лимита получают запрос на повторную отправку после завершения активной задачи.

Проактивная доставка отключена, если proactiveRecipients не содержит точный целевой адрес. Целевой адрес проактивной доставки в рамках ветки должен также разрешаться в известного, разрешённого в данный момент отправителя или ветку. Неизвестные целевые адреса завершаются ошибкой без выбора другого получателя или создания ветки-замены. Адаптер хранит 256 недавних маршрутов ответов, до 64 идентификаторов на маршрут и 1024 недавних входящих идентификаторов. Прогресс UID IMAP продолжает предотвращать повторную обработку старых доставок после истечения срока действия этих метаданных; удалённый маршрут ветки не может получать проактивные ответы, пока другое принятое сообщение не восстановит его.

Восстановление

Состояние хранится в $QWEN_HOME/channels/<workspace>/email-<account-hash>/state.json (QWEN_HOME по умолчанию — ~/.qwen). Имя канала, каноническое рабочее пространство и конечная точка, пользователь и папка почтового ящика определяют хранилище. Только один процесс может владеть им. Смена учётной записи создаёт отдельный baseline; изменения UIDVALIDITY также пропускают существующее содержимое папки.

Адаптер сохраняет UID в обработке перед запуском задачи и ID сообщения outboundPending перед каждой отправкой по SMTP, включая проактивные отправки. Каждая запись удаляется после завершения соответствующей операции. Если процесс останавливается во время выполнения или SMTP возвращает неоднозначный результат, запись сохраняется. Перезапуск сообщает путь к состоянию, ожидающие UID и исходящие ID сообщений и отказывается их воспроизводить. Остановите канал, проверьте почтовый ящик и побочные эффекты задачи, затем удалите из массива pending в состоянии только согласованные UID, а из outboundPending — только согласованные исходящие ID перед перезапуском. Сохраните курсор и метаданные ветки нетронутыми. Не удаляйте файл состояния как механизм повтора: его отсутствие создаёт новый baseline и пропускает существующую почту.

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

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

OAuth провайдера, расширенный вывод HTML, управление почтовым ящиком, S/MIME, PGP и обработка календаря не поддерживаются в этой версии.

Last updated on