Vision и вставка изображений

Hermes Agent поддерживает мультимодальное распознавание (Vision) — вы можете вставлять изображения из буфера обмена прямо в CLI и просить агента анализировать, описывать или работать с ними. Изображения отправляются модели в виде блоков контента, закодированных в base64, поэтому любая модель с поддержкой Vision может их обработать.

Как это работает

  1. Скопируйте изображение в буфер обмена (скриншот, изображение из браузера и т.д.)

  2. Прикрепите его одним из способов, описанных ниже

  3. Введите ваш вопрос и нажмите Enter

  4. Изображение отобразится в виде значка [📎 Image #1] над строкой ввода

  5. После отправки изображение передаётся модели как блок контента Vision

Вы можете прикрепить несколько изображений перед отправкой — каждое получит свой значок. Нажмите Ctrl+C, чтобы очистить все прикреплённые изображения.

Изображения сохраняются в ~/.hermes/images/ в виде PNG-файлов с именами, содержащими временную метку.

Методы вставки

Способ прикрепления изображения зависит от вашего терминального окружения. Не все методы работают везде — ниже приведена полная информация:

Команда /paste

Самый надёжный явный способ прикрепления изображения.

/paste

Введите /paste и нажмите Enter. Hermes проверяет буфер обмена на наличие изображения и прикрепляет его. Это самый безопасный вариант, когда ваш терминал перехватывает Cmd+V/Ctrl+V или когда вы скопировали только изображение и нет текстовой полезной нагрузки для анализа.

Ctrl+V / Cmd+V

Hermes теперь обрабатывает вставку как многоуровневый процесс:

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

Если в вашем буфере обмена **только изображение** (без текста), терминалы всё равно не могут напрямую отправлять бинарные данные изображения. Используйте `/paste` как явный способ прикрепления изображения.

/terminal-setup для VS Code / Cursor / Windsurf

Если вы запускаете TUI в локальном интегрированном терминале VS Code-семейства на macOS, Hermes может установить рекомендуемые привязки workbench.action.terminal.sendSequence для улучшенной поддержки многострочного ввода и undo/redo:

/terminal-setup

Это особенно полезно, когда Cmd+Enter, Cmd+Z или Shift+Cmd+Z перехватываются IDE. Запускайте эту команду только на локальной машине — не внутри SSH-сессии.

Совместимость с платформами

Окружение /paste Cmd/Ctrl+V /terminal-setup Примечания
macOS Terminal / iTerm2 n/a Лучший опыт — родной буфер обмена + восстановление пути к скриншоту
Apple Terminal n/a Если Cmd+←/→/⌫ перехватываются, используйте Ctrl+A / Ctrl+E / Ctrl+U как запасной вариант
Linux X11 desktop n/a Требуется xclip (apt install xclip)
Linux Wayland desktop n/a Требуется wl-paste (apt install wl-clipboard)
WSL2 (Windows Terminal) n/a Использует powershell.exe — дополнительная установка не требуется
VS Code / Cursor / Windsurf (локальный) Рекомендуется для лучшей поддержки Cmd+Enter / undo / redo
VS Code / Cursor / Windsurf (SSH) ❌² ❌² ❌³ Запустите /terminal-setup на локальной машине
SSH терминал (любой) ❌² ❌² n/a Удалённый буфер обмена недоступен

² См. SSH и удалённые сессии ниже ³ Команда записывает локальные привязки клавиш IDE и не должна запускаться на удалённом хосте

Настройка для конкретных платформ

macOS

Никакой дополнительной настройки не требуется. Hermes использует osascript (встроенный в macOS) для чтения буфера обмена. Для более быстрой работы можно установить pngpaste:

brew install pngpaste

Linux (X11)

Установите xclip:

# Ubuntu/Debian
sudo apt install xclip

# Fedora
sudo dnf install xclip

# Arch
sudo pacman -S xclip

Linux (Wayland)

Современные Linux-десктопы (Ubuntu 22.04+, Fedora 34+) часто используют Wayland по умолчанию. Установите wl-clipboard:

# Ubuntu/Debian
sudo apt install wl-clipboard

# Fedora
sudo dnf install wl-clipboard

# Arch
sudo pacman -S wl-clipboard

Совет: как проверить, используете ли вы Wayland

echo $XDG_SESSION_TYPE
# "wayland" = Wayland, "x11" = X11, "tty" = нет сервера отображения

WSL2

Дополнительная настройка не требуется. Hermes автоматически определяет WSL2 (через /proc/version) и использует powershell.exe для доступа к буферу обмена Windows через .NET System.Windows.Forms.Clipboard. Это встроено в механизм взаимодействия WSL2 с Windows — powershell.exe доступен по умолчанию.

Данные буфера обмена передаются как изображение PNG, закодированное в base64, через stdout, поэтому преобразование путей к файлам или временные файлы не требуются.

info Примечание о WSLg Если вы используете WSLg (WSL2 с поддержкой GUI), Hermes сначала пробует путь через PowerShell, а затем переключается на wl-paste. Мост буфера обмена WSLg поддерживает только формат BMP для изображений — Hermes автоматически конвертирует BMP в PNG с помощью Pillow (если установлен) или команды convert из ImageMagick.

Проверка доступа к буферу обмена WSL2

# 1. Проверка определения WSL
grep -i microsoft /proc/version

# 2. Проверка доступности PowerShell
which powershell.exe

# 3. Скопируйте изображение, затем проверьте
powershell.exe -NoProfile -Command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Clipboard]::ContainsImage()"
# Должно вывести "True"

SSH и удалённые сессии

Вставка изображений из буфера обмена не полностью работает через SSH. Когда вы подключаетесь по SSH к удалённой машине, CLI Hermes запускается на удалённом хосте. Инструменты для работы с буфером обмена (xclip, wl-paste, powershell.exe, osascript) читают буфер обмена той машины, на которой они запущены — то есть удалённого сервера, а не вашей локальной машины. Поэтому ваше локальное изображение из буфера обмена недоступно с удалённой стороны.

Текст иногда может передаваться через вставку в терминале или OSC52, но доступ к изображениям из буфера обмена и локальные временные пути скриншотов остаются привязанными к машине, на которой запущен Hermes.

Обходные пути для SSH

  1. Загрузите файл изображения — Сохраните изображение локально, загрузите его на удалённый сервер через scp, проводник VSCode (перетаскиванием) или любой другой способ передачи файлов. Затем укажите путь к нему. (Команда /attach <filepath> запланирована в одном из будущих релизов.)

  2. Используйте URL — Если изображение доступно онлайн, просто вставьте URL в ваше сообщение. Агент может использовать vision_analyze для просмотра любого изображения по URL напрямую.

  3. X11 forwarding — Подключитесь с ssh -X для перенаправления X11. Это позволит xclip на удалённой машине получить доступ к вашему локальному X11 буферу обмена. Требуется локальный X сервер (XQuartz на macOS, встроенный в Linux X11 desktop). Медленно для больших изображений.

  4. Используйте мессенджеры — Отправляйте изображения Hermes через Telegram, Discord, Slack или WhatsApp. Эти платформы поддерживают загрузку изображений нативно и не подвержены ограничениям буфера обмена/терминала.

Почему терминалы не могут вставлять изображения

Это частый источник путаницы, поэтому вот техническое объяснение:

Терминалы — это текстовые интерфейсы. Когда вы нажимаете Ctrl+V (или Cmd+V), эмулятор терминала:

  1. Считывает из буфера обмена текстовое содержимое

  2. Оборачивает его в escape-последовательности bracketed paste

  3. Отправляет его приложению через текстовый поток терминала

Если буфер обмена содержит только изображение (без текста), терминалу нечего отправлять. Не существует стандартной escape-последовательности для бинарных данных изображения. Терминал просто ничего не делает.

Вот почему Hermes использует отдельную проверку буфера обмена — вместо получения данных изображения через событие вставки в терминале, он напрямую вызывает инструменты уровня ОС (osascript, powershell.exe, xclip, wl-paste) через подпроцесс для независимого чтения буфера обмена.

Поддерживаемые модели

Вставка изображений работает с любой моделью, поддерживающей Vision. Изображение отправляется в виде data URL, закодированного в base64, в формате контента OpenAI Vision:

{
  "type": "image_url",
  "image_url": {
    "url": "data:image/png;base64,..."
  }
}

Большинство современных моделей поддерживают этот формат, включая GPT-4 Vision, Claude (с Vision), Gemini и open-source мультимодальные модели, доступные через OpenRouter.

Маршрутизация изображений (модели с Vision vs только текст)

Когда пользователь прикрепляет изображение — из буфера обмена CLI, через шлюз (Telegram/Discord фото) или любой другой вход — Hermes маршрутизирует его в зависимости от того, поддерживает ли ваша текущая модель Vision:

Ваша модель Что происходит с изображением
С поддержкой Vision (GPT-4V, Claude с Vision, Gemini, Qwen-VL, MiMo-VL и др.) Отправляется как реальные пиксели с использованием родного формата контента провайдера, указанного выше. Без текстовой сводки.
Только текст (DeepSeek V3, маленькие open-source модели, старые endpoints только для чатов) Маршрутизируется через вспомогательный инструмент vision_analyze — вспомогательная модель Vision описывает изображение, и текстовое описание вставляется в диалог.

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

Какая вспомогательная модель обрабатывает путь текстового описания, настраивается в разделе auxiliary.vision — см. Вспомогательные модели.