Имя вложения, которое ломает ваш mail-pipeline
Unicode, NBSP и имена из Outlook сталкиваются с ключами object storage. Санитизируйте до записи — урок из mail pipelines для агентов.
Обсудить статью в ИИ
Отправьте готовый промпт в ChatGPT, Claude, Gemini или Perplexity — получите краткий пересказ, задайте уточняющие вопросы или сравните идеи из гайда.
Почтовые конвейеры для агентов выглядят простыми, пока не приходит первое реальное вложение. Клиент отправляет PDF-файл, имя которого содержит неразрывный пробел. Outlook кодирует длинное имя UTF-8, которое ваш регистратор печатает нормально, но ключ объекта отклоняет. Пользователь Mac загружает файл «отчёт.pdf», а последующее регулярное выражение, написанное для ASCII, незаметно удаляет файл. Затем агент клянется, что такого прикрепления никогда не существовало, и человек проводит день, реконструируя MIME вручную.
Что на самом деле ломается
Хранилища объектов и файловые системы расходятся во мнениях относительно разрешенных символов, длины и нормализации. Почтовые клиенты расходятся во мнениях по поводу кодировки параметра имени файла и имени, которое вы видите в пользовательском интерфейсе. MIME может предлагать несколько разделов имени файла*. Копирование «отображаемого имени» прямо в ключ хранилища — это инцидент, ожидающий напряженного понедельника, когда три клиента отправляют файлы с одинаковыми именами в одном потоке.
Мы видели сбои конвейеров при NBSP, метках RTL, объединении символов, разделителях путей, встроенных в имена, а также конечных точках или пробелах, которые Windows допускает при отображении, а API хранилища — нет. Ничто из этого не является чем-то экзотическим, если агенты обрабатывают почту в большом объеме. Это обычная интернет-почта с обычными ограничениями по объему хранения.
Дезинфекция перед хранением
Считайте исходное имя файла ненадежными метаданными. Создайте внутренний ключ объекта на основе UUID или хеша контента. Сохраняйте исходное имя отдельно в качестве метаданных отображения после нормализации NFC и удаления управляющих символов. Замените NBSP обычным пространством для отображения, если вам нужно показать что-то человеческое. Отклонять или помещать в карантин разделители путей и пустые имена. Ограничить длину до того, как ключ попадет в API хранилища.
Выполняйте очистку в одной общей библиотеке, используемой для каждого пути приема — веб-перехватчика, средства опроса IMAP или соединителя входящих сообщений агента, — чтобы каждая роль Neuro OS никогда не изобретала немного отличающийся очиститель, который дает сбой в разных крайних случаях.
Сохранить судебно-медицинскую экспертизу
Когда человек спрашивает: «Как назывался файл?», вам нужны исходные байты полученного имени, очищенная форма отображения и ключ хранения. Зарегистрируйте все три. Если сканирование вредоносных программ переименовывает или отклоняет файл, укажите причину рядом с идентификатором сообщения. Агенты должны указывать ключ хранения в памяти, а не хрупкий путь, построенный на основе необработанного имени файла, который может не пройти туда и обратно.
Тестирование с враждебными приборами
Создайте набор приспособлений: НБСП, кириллица, CJK, эмодзи, имена из 200 символов, вложенные закодированные слова, повторяющиеся имена в одном сообщении и отсутствующие имена файлов. Запустите их в CI для функции приема. Добавляйте случай всякий раз, когда производство вас удивляет. Относитесь к ошибкам в именах файлов как к ошибкам продукта, а не как к народному фольклору «электронная почта — это беспорядок».
Последствия продукта
Бухгалтер или операционная служба ИИ, которая «теряет» вложения, не является провалом модели; это инженерный сбой. Зафиксируйте границу один раз. Входящие агента могут доставить MIME. Ваш конвейер должен сделать байты адресуемыми. Обеззараживайте заранее, храните неизменно, тщательно отображайте — и сохраняйте Ask на всех исходящих сообщениях, которые пересылают эти вложения наружу, чтобы дурное имя никогда не превратилось в плохую отправку без человеческого взгляда.
Инструкция оператора, когда файл «исчезает»
Когда агент сообщает об отсутствующем вложении, операторы должны проверить карантин, отклонения дезинфицирующего средства и сопоставление ключей хранилища, прежде чем обвинять модель. Предоставьте им единое представление отладки: идентификатор сообщения, байты исходного имени, очищенное отображаемое имя, ключ хранения и вердикт сканера. Более быстрое реагирование на инциденты является частью обеспечения надежности почтовых конвейеров для агентов в рабочей среде.
[Входящие агента] (https://agentinbox-ru.vercel.app/) предоставляет каждой роли почтовый ящик, на который люди могут отвечать, с пересылкой в Neuro OS, когда человек должен увидеть ветку. По умолчанию для исходящей почты установлено значение «Спросить». Запустите роль в Neuro OS. Чтобы определить размер первого почтового ящика, начните.