Режим артефактов
Запустите Hermes Agent внутри шлюза сообщений — Slack, Discord, Telegram, WhatsApp, Signal и так далее — и он сможет отдавать сгенерированные файлы сразу в чат. Не путём к файлу, который пользователю надо где-то скопировать, а нативным вложением.
График приходит встроенной картинкой. PDF-отчёт — файлом на скачивание.
Таблица загружается как .xlsx. Агенту не нужно ставить тег MEDIA: или
делать что-то особенное — он просто создаёт файл и упоминает его абсолютный
путь в ответе. Дальше работает шлюз: вылавливает путь из текста, убирает его
из видимого сообщения и загружает файл нативно.
Как это устроено
Срабатывают три механизма.
-
У агента есть инструменты, которые создают файлы.
execute_codeрисует графики через matplotlib, навыкdocxготовит документы Word, навыкxlsx— таблицы, навыкиpdfиlatex-pdf-report— PDF, навыкpowerpoint— презентации,image_generateделает картинки,text_to_speech— аудио, и так далее. -
Шлюз сканирует ответы агента на пути к файлам. Любой абсолютный путь (
~/.hermes/cache/scratch/...) или путь относительно домашней папки (~/...) с поддерживаемым расширением извлекается. Пути внутри блоков кода и инлайн-кода игнорируются, поэтому примеры кода никогда не калечатся. -
Шлюз раскладывает файлы по типам. Картинки встраиваются прямо в сообщение там, где платформа это умеет; видео тоже встраивается; аудио уходит в голосовые/аудиовложения; всё остальное загружается файлом.
Поддерживаемые расширения файлов
| Категория | Расширения | Способ доставки |
|---|---|---|
| Изображения | .png .jpg .jpeg .gif .webp .bmp .tiff .svg | Встраивание в сообщение |
| Видео | .mp4 .mov .avi .mkv .webm .3gp | Встраивание (где поддерживается) |
| Аудио | .mp3 .m2a .wav .ogg .opus .m4a .flac | Голосовое / аудиовложение |
| Документы | .pdf .docx .doc .odt .rtf .txt .md .epub | Загрузка файлом |
| Данные | .xlsx .xls .ods .csv .tsv .json .xml .yaml .yml | Загрузка файлом |
| Геоданные | .kmz .kml .geojson .gpx | Загрузка файлом |
| Презентации | .pptx .ppt .odp .key | Загрузка файлом |
| Архивы | .zip .tar .gz .tgz .bz2 .xz .7z .rar .apk .ipa | Загрузка файлом |
| Веб | .html .htm | Загрузка файлом |
.py, .log и прочие расширения исходников намеренно исключены — чтобы
агент не отправлял произвольные исходные файлы сам собой. Хотите отдать
пользователю код — заверните его в блок кода.
Как подтолкнуть агента к артефактам
Сам по себе к артефактам агент не тянется — ему нужно об этом знать. Подтолкнуть можно двумя путями.
В рамках сессии: попросите явно («пришли сравнение графиком», «верни данные в CSV») либо пропишите свою запись в custom-instructions / personality, которая на платформах-мессенджерах склоняет ответы к формату артефактов.
На уровне проекта: добавьте такую установку в AGENTS.md / CLAUDE.md /
.cursorrules проекта, с которым работает агент, в свою глобальную персону
~/.hermes/SOUL.md или в виде именованного пресета под ключом
agent.personalities в ~/.hermes/config.yaml (переключается в каждой
сессии командой /personality).
Сама механика для агента проста: отрендерить файл по абсолютному пути
(скажем, ~/.hermes/cache/scratch/q3-revenue.png) и упомянуть этот путь в ответе обычным
текстом. Остальное берёт на себя шлюз. Пути внутри огороженных блоков кода
или бэктиков пропускаются, так что примеры кода остаются нетронутыми.
Канбан: артефакты едут вместе с уведомлением о завершении
Если вы пользуетесь мультиагентным канбан-процессом в Hermes, воркеры могут
прикреплять файлы-артефакты к своему вызову kanban_complete:
kanban_complete(
summary="rendered Q3 revenue chart and report",
artifacts=[
"~/.hermes/cache/scratch/q3-revenue.png",
"~/.hermes/cache/scratch/q3-report.pdf",
],
)
Когда нотификатор шлюза доставляет сообщение «задача завершена» тому, кто подписан на задачу в Slack/Telegram и т. д., он заодно загружает каждый артефакт нативным вложением в этот чат. Человек получает и результат, и сводку в одном месте.
Файлы, которых на диске уже нет к моменту запуска нотификатора, тихо пропускаются.
Подключение других сервисов через MCP
Помимо конвейера доставки артефактов, агент способен дотянуться до других сервисов через MCP (Model Context Protocol). В экосистеме MCP есть готовые серверы сообщества почти под все популярные инструменты — ставьте те, что вам нужны:
| Сервис | Что открывает |
|---|---|
| Notion | Чтение/запись страниц и баз Notion, запросы по рабочему пространству |
| GitHub | Issue, PR, комментарии, поиск по репозиторию сверх возможностей gh CLI |
| Linear | Тикеты, проекты, циклы |
| Slack | Поиск по всему рабочему пространству, чтение других каналов |
| Gmail | Разбор входящих, отправка писем, управление ярлыками |
| Salesforce | Лиды, сделки, данные по аккаунтам |
| Snowflake / BigQuery | SQL по хранилищам данных |
| Google Drive | Поиск файлов, их содержимое, управление доступом |
MCP-серверы ставятся через ~/.hermes/config.yaml в секции mcp_servers.
Полное руководство по настройке — в разделе Интеграция MCP.
Сравнение с Perplexity Computer в Slack
Интеграция Perplexity Computer для Slack построена вокруг той же идеи: агент генерирует готовый результат (график, PDF, презентацию) и постит его обратно в тред нативным вложением. Режим артефактов Hermes Agent даёт тот же пользовательский сценарий, но локально:
- Генерация идёт в собственном venv / песочнице пользователя, без удалённого арендатора.
- Файлы попадают в чат через тот же Slack-API
files.uploadV2. - Набор коннекторов обеспечивает MCP, а не курируемый каталог из 400 хостящихся интеграций — ставьте лишь те, которыми реально пользуетесь.
Токены OAuth остаются на машине пользователя — в auth.json / .env.
Никакого хостинга токенов на стороне. Никаких мультиарендных microVM.
Результат на выходе тот же.