Перейти к основному содержимому

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

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

подсказка

Подписчики Portal получают модели со зрением (Claude, GPT-5, Gemini) в том же каталоге — никаких дополнительных учетных данных не требуется. См. Nous Portal.

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

  1. Скопируйте изображение в буфер обмена (скриншот, изображение в браузере и т. д.)
  2. Прикрепите его одним из способов, описанных ниже
  3. Введите свой вопрос и нажмите Enter
  4. Изображение появится в виде значка [📎 Изображение #1] над строкой ввода
  5. После отправки изображение передается модели как блок контента со зрением

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

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

Способы вставки​

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

Команда /paste​

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

/paste

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

Ctrl+V / Cmd+V​

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

  • сначала обычная вставка текста
  • затем резервный вариант с родным буфером обмена / текстом OSC52, если терминал не передал текст чисто
  • затем прикрепление изображения, когда буфер обмена или вставленная полезная нагрузка оказываются изображением или путем к изображению

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

предупреждение

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

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

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

/terminal-setup

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

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

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

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

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

macOS​

Настройка не требуется. VibeOS использует 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​

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

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

Примечание о WSLg

Если вы используете WSLg (WSL2 с поддержкой GUI), VibeOS сначала пробует путь через PowerShell, а затем переключается на wl-paste. Мост буфера обмена WSLg поддерживает только формат BMP для изображений — VibeOS автоматически конвертирует 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 VibeOS запускается на удаленном хосте. Инструменты для работы с буфером обмена (xclip, wl-paste, powershell.exe, osascript) читают буфер обмена той машины, на которой они запущены — то есть удаленного сервера, а не вашей локальной машины. Таким образом, ваше локальное изображение в буфере обмена недоступно с удаленной стороны.

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

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

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

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

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

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

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

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

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

  1. Читает из буфера обмена текстовое содержимое
  2. Оборачивает его в escape-последовательности bracketed paste
  3. Отправляет его приложению через текстовый поток терминала

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

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

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

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

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

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

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

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

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

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

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

vision_analyze имеет такое же двойное поведение​

Сам инструмент vision_analyze следует той же маршрутизации. Когда активная основная модель поддерживает зрение и ее провайдер поддерживает контент изображения внутри результатов инструмента (в настоящее время стеки Anthropic, OpenAI, Azure-OpenAI и Gemini 3.x), vision_analyze обходит вспомогательный описатель и возвращает необработанные пиксели изображения как мультимодальный конверт результата инструмента. Основная модель видит изображение изначально на своем следующем ходу — без вспомогательного вызова, без потери информации из текстового резюме, без дополнительной задержки.

Для текстовых основных моделей (или провайдеров, чей канал результатов инструмента не поддерживает изображения), vision_analyze возвращается к устаревшему пути: он просит настроенную вспомогательную модель зрения описать изображение и возвращает описание в виде обычного текста. В любом случае сигнатура вызывающего инструмента одинакова — инструмент решает, какой путь выбрать во время выполнения, на основе активной модели.