Opencode Vision Bridge Plugin

Этот плагин позволяет Opencode работать с изображениями, даже если активная модель не поддерживает мультимодальность. Он перехватывает изображения, отправляет их в указанную vision-модель для анализа, а затем заменяет изображение текстовым описанием в контексте диалога.

Требования

Установка

1. Добавьте плагин в ~/.config/opencode/opencode.json

В секцию plugin добавьте следующую запись:

{
  "plugin": [
    // ... другие плагины
    "git+https://git.totmin.ru/en2zmax/vision-bridge.git"
  ]
}

2. Настройте провайдер Ludmila AI

В секцию provider вашего ~/.config/opencode/opencode.json добавьте или обновите блок ludmila-ai:

{
  "provider": {
    "ludmila-ai": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ludmila AI",
      "options": {
        "baseURL": "https://ai.totmin.ru/v1",
        "apiKey": "<ЗАМЕНИТЕ_НА_ВАШ_API_КЛЮЧ>"
      },
      "models": {
        "gemini/gemini-2.5-flash": {
          "attachment": true,
          "limit": {
            "context": 1048576,
            "output": 65536
          }
        }
      }
    }
  }
}

ВАЖНО: Замените <ЗАМЕНИТЕ_НА_ВАШ_API_КЛЮЧ> на ваш реальный API-ключ Ludmila AI.

3. Скопируйте файл субагента

Субагенты не загружаются из npm-пакетов, поэтому скопируйте файл vision.md в соответствующий каталог:

cp ~/totmin/opencode/plugins/vision-bridge/agents/vision.md ~/.config/opencode/agents/vision.md

4. Перезапустите Opencode

Изменения в конфигурации применяются только после перезапуска Opencode.

Пример конфигурации (examples/opencode.json)

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": [
    "opencode-browser",
    "git+ssh://git@git.totmin.ru:en2zmax/vision-bridge.git"
  ],
  "provider": {
    "ludmila-ai": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ludmila AI",
      "options": {
        "baseURL": "https://ai.totmin.ru/v1",
        "apiKey": "<ЗАМЕНИТЕ_НА_ВАШ_API_КЛЮЧ>"
      },
      "models": {
        "gemini/gemini-2.5-flash": {
          "attachment": true,
          "limit": {
            "context": 1048576,
            "output": 65536
          }
        }
      }
    }
  },
  "agent": {
    "vision": {
      "mode": "subagent",
      "model": "ludmila-ai/gemini/gemini-2.5-flash",
      "description": "Анализ изображений и скриншотов (OCR текста или разбор UI)",
      "permission": {
        "read": "allow",
        "glob": "allow",
        "external_directory": "allow",
        "edit": "deny",
        "bash": "deny"
      }
    }
  }
}
S
Description
No description provided
Readme
47 KiB
Languages
TypeScript 100%