name: multimodal-vision category: system version: "1.0.0" kind: python description: "Skill de integração multimodal visão+texto para o ecossistema OpenCode. Permite análise de imagens, diagramas, gráficos, screenshots e raciocínio visual combinado com texto. Integra MCPs de visão, Image Specialist agent, baoyu-diagram e ferramentas de geração/edição visual." author: ecosystem tags: [vision, multimodal, image, visual-reasoning, gpt-4o, gemini, claude-vision] compatibility: deepseek-v4-pro, gpt-4o, gemini-2.5-pro
Multimodal Vision — Integração Visão + Texto
1. Arquitetura do Pipeline de Visão
O ecossistema OpenCode suporta três modalidades principais de interação visão-linguagem. O Vision Router é o ponto de entrada que classifica a requisição e direciona ao pipeline correto.
User Input (text + optional image)
│
▼
Vision Router (determina modalidade: text-only, image-analysis, visual-generation)
│
├── Text-only ─────────────────────────────────────────────────┐
│ ▼
│ Standard LLM pipeline
│ (deepseek-v4-pro, gpt-4o, etc.)
│
├── Image Analysis ───────► Vision MCP ──────► Extracted features ──────┐
│ │ / description │
│ ▼ ▼
│ Provider específico Downstream Reasoning
│ (GPT-4o / Gemini / Claude) (reasoning-orchestrator,
│ cora-debate)
│
└── Visual Generation ────► Image Gen Tool ───────────────► SVG / PNG / WebP
(baoyu-imagine,
baoyu-diagram,
baoyu-infographic)
1.1 Componentes do Pipeline
| Componente | Função | Tecnologia |
|---|---|---|
| Vision Router | Classifica a entrada e seleciona pipeline | Classificação heurística (presença de attachment, palavra-chave) |
| Vision MCP | Media chamadas a APIs de visão | MCP server configurado em opencode.json |
| Image Preprocessor | Prepara imagem para consumo pela API | baoyu-compress-image, conversão de formato |
| Extractor | Extrai dados estruturados da resposta da API | Parsing de JSON, extração de bounding boxes, OCR cleaning |
| Downstream Reasoner | Alimenta informação visual para raciocínio textual | reasoning-orchestrator, cora-debate |
| Image Generator | Gera imagens a partir de texto + parâmetros | baoyu-imagine, baoyu-diagram, baoyu-infographic |
2. Configuração do Vision MCP
2.1 Provedores Suportados
| Provedor | Modelo | Janela de Contexto | Custo Relativo | Suporte a Ferramentas |
|---|---|---|---|---|
| OpenAI | GPT-4o / GPT-4o-mini | 128K tokens | Médio | Nativo |
| Gemini 2.5 Pro | 1M tokens | Alto | Nativo | |
| Anthropic | Claude 3.5 Sonnet | 200K tokens | Alto | Nativo |
2.2 Configuração no opencode.json
Para habilitar o Vision MCP, adicione o seguinte bloco ao arquivo opencode.json do projeto:
{
"mcpServers": {
"vision": {
"type": "api",
"provider": "openai", // "openai" | "google" | "anthropic"
"model": "gpt-4o",
"apiKey": "${VISION_API_KEY}",
"maxTokens": 4096,
"temperature": 0.2,
"vision": {
"enabled": true,
"maxImageSize": 2048, // pixels no lado maior
"supportedFormats": ["png", "jpg", "webp", "svg"],
"detail": "high", // "high" | "low" | "auto"
"compressionQuality": 85, // 1-100, usado no pré-processamento
"ephemeralStorage": true // imagens não persistem
}
}
}
}
2.3 Formatos de Imagem Suportados
| Formato | Recomendado para | Tamanho Máximo (pixels) | Modo de Cor |
|---|---|---|---|
| PNG | Diagramas, gráficos, screenshots | 2048×2048 | RGBA |
| JPG/JPEG | Fotos, capturas de tela | 2048×2048 | RGB |
| WebP | Imagens da web, transferência otimizada | 2048×2048 | RGBA |
| SVG | Diagramas vetoriais, arquiteturas | N/A (convertido para PNG/WebP) | Vetorial |
2.4 Limites e Recomendações
- Tamanho máximo do lado maior: 2048 pixels (recomendado); APIs aceitam até 4096.
- Tamanho máximo do arquivo: 20 MB antes da compressão.
- Recomendação de compressão: Use
baoyu-compress-imagepara reduzir para <5 MB com qualidade 85%. - Proporção: Imagens muito alongadas (panorâmicas 4:1+) têm qualidade reduzida. Prefira recortes.
3. Pipeline de Análise de Imagem
3.1 Stage 1 — Pré-processamento
Imagem bruta
│
▼
[Detecção de formato]
├── SVG? ──► Converter para PNG (resolução base 1024×1024)
├── PNG/JPG/WebP? ──► OK
│
▼
[Redimensionamento] ──► baoyu-compress-image ──► max lado 2048px, qualidade 85%
│
▼
[Validação] ──► Verificar integridade do arquivo
│
▼
Imagem pré-processada
Comandos úteis para pré-processamento:
# Comprimir imagem com baoyu-compress-image
# (invocado via skill, aceita path + formato de saída)
# Saída: imagem.webp com qualidade 85%, lado maior ≤2048px
3.2 Stage 2 — Chamada à API de Visão
Template de prompt estruturado para análise de imagem:
Você é um analista visual do ecossistema OpenCode.
Analise a imagem fornecida e responda com:
1. TIPO_IMAGEM: [diagrama | gráfico | screenshot | foto | figura_cientifica | outro]
2. DESCRICAO_GERAL: (2-3 frases sobre o conteúdo)
3. DADOS_ESTRUTURADOS: (se aplicável, em JSON)
4. TEXTO_EXTRAIDO: (todo texto legível presente na imagem)
5. RELACOES_VISUAIS: (relações espaciais entre elementos)
6. ANOMALIAS: (inconsistências visuais, se houver)
Contexto adicional do usuário: {user_prompt}
3.3 Stage 3 — Pós-processamento
A resposta bruta da API de visão passa por um extrator que estrutura o resultado:
{
"imageType": "diagram",
"description": "Arquitetura de microsserviços com 4 serviços...",
"structuredData": {
"nodes": ["API Gateway", "Service A", "Service B", "Database"],
"edges": [
{ "from": "API Gateway", "to": "Service A", "label": "HTTP" },
{ "from": "Service A", "to": "Database", "label": "SQL" }
]
},
"extractedText": "API Gateway\nService A\nService B\nDatabase",
"spatialRelations": [
{ "element": "API Gateway", "position": "top", "relativeTo": "Service A" }
],
"anomalies": []
}
3.4 Stage 4 — Integração com Raciocínio Downstream
Os dados extraídos da imagem são roteados para agentes de raciocínio:
| Tipo de Análise | Agente Downstream | Uso |
|---|---|---|
| Diagrama de arquitetura | reasoning-orchestrator |
Validar conformidade com ADRs |
| Gráfico de desempenho | cora-debate |
Argumentar sobre trade-offs baseados em dados |
| Screenshot de UI | fullstack-guardian |
Gerar código equivalente |
| Figura científica | MASWOS pipeline |
Incluir como evidência em artigo |
| Log/stderr capturado | debugging-wizard |
Correlacionar erro visual com stack trace |
4. Tipos de Raciocínio Visual (8 Novos Tipos)
Estes 8 tipos estendem o catálogo de 68+ tipos de raciocínio do ecossistema (ver reasoning-orchestrator e reasoning-orchestrator-v11).
| Código | Nome | Descrição | Gatilho de Ativação | Exemplo de Uso |
|---|---|---|---|---|
| VR01 | Diagram Comprehension | Extrair significado de fluxogramas, diagramas de arquitetura, grafos | "entenda este diagrama", "explique esta arquitetura" | Analisar diagrama de deployment e extrair dependências entre serviços |
| VR02 | Chart Numerical Reading | Ler valores precisos de gráficos de barra, linha, dispersão, pizza | "que valor está no eixo Y para X=10", "leia este gráfico" | Extrair precisamente valores de um gráfico de benchmark sem dados brutos |
| VR03 | Visual Anomaly Detection | Identificar inconsistências visuais, erros em renders, artefatos | "há algo errado nesta imagem?", "detecte anomalias" | Encontrar elementos UI sobrepostos, bordas quebradas, texto cortado |
| VR04 | Screenshot-to-Code | Converter screenshots de UI para código HTML/CSS/React | "transforme esta tela em código", "reproduza esta interface" | Gerar componente React fiel a um mockup do Figma |
| VR05 | Figure-to-Description | Gerar alt-text detalhado e legendas para figuras científicas | "descreva esta figura para acessibilidade", "gere legenda" | Produzir descrição ABNT/NBR 6023 para figura de artigo Qualis A1 |
| VR06 | Visual Relationship | Compreender relações espaciais (acima, abaixo, dentro, adjacente) | "o que está dentro de X?", "qual elemento está à direita" | Mapear hierarquia visual de uma interface |
| VR07 | Gesture/Pose Recognition | Identificar poses humanas, gestos, expressões faciais | "que gesto esta pessoa está fazendo?", "descreva a expressão" | Analisar linguagem corporal em foto de apresentação |
| VR08 | Multi-Image Comparison | Comparar e contrastar múltiplas imagens lado a lado | "compare estas duas imagens", "o que mudou entre A e B" | Detectar diferenças entre versões de UI (regressão visual) |
4.1 Tabela de Ativação Automática
O Vision Router utiliza heurísticas para ativar automaticamente o tipo de raciocínio visual:
VR01_DiagramComprehension:
triggers: [arquitetura, diagrama, flowchart, grafo, fluxo, pipeline, deployment]
min_confidence: 0.7
VR02_ChartNumericalReading:
triggers: [gráfico, chart, plot, benchmark, eixo, barra, linha, pizza, scatter]
min_confidence: 0.75
VR03_VisualAnomalyDetection:
triggers: [anomalia, bug visual, artefato, inconsistência, sobreposição, quebrado]
min_confidence: 0.8
VR04_ScreenshotToCode:
triggers: [screenshot, tela, interface, ui, mockup, figma, protótipo, código]
min_confidence: 0.7
VR05_FigureToDescription:
triggers: [figura, legenda, alt-text, acessibilidade, caption, descrição científica]
min_confidence: 0.7
VR06_VisualRelationship:
triggers: [acima, abaixo, dentro, adjacente, esquerda, direita, hierarquia visual]
min_confidence: 0.75
VR07_GesturePoseRecognition:
triggers: [gesto, pose, expressão, rosto, corpo, postura, linguagem corporal]
min_confidence: 0.8
VR08_MultiImageComparison:
triggers: [compare, diferença, diff, before/after, lado a lado, regressão, A/B]
min_confidence: 0.7
5. Pipeline de Geração Visual
5.1 Composição de Requisições Texto + Imagem
O pipeline de geração visual combina entrada textual com parâmetros de estilo para produzir imagens em diferentes formatos.
Prompt do usuário + parâmetros de estilo
│
▼
[Vision Router — modo geração]
│
├── Diagrama/SVG ──► baoyu-diagram ──► SVG
├── Ilustração/Arte ──► baoyu-imagine ──► PNG/WebP
├── Infográfico/Dados ──► baoyu-infographic ──► PNG/SVG
└── Cards sociais ──► baoyu-image-cards ──► PNG
5.2 Ferramentas de Geração
| Skill | Finalidade | Formatos de Saída | Provedores |
|---|---|---|---|
baoyu-imagine |
Geração de imagem por prompt (text-to-image) | PNG, WebP, JPEG | OpenAI GPT Image 2, Google Gemini, Replicate, MiniMax, Seedream |
baoyu-diagram |
Diagramas vetoriais (arquitetura, fluxo, grafos) | SVG | Renderização local via template |
baoyu-infographic |
Infográficos densos com dados | PNG, SVG | 21 layouts × 22 estilos visuais |
baoyu-image-cards |
Cards para redes sociais | PNG | 12 estilos × 8 layouts |
baoyu-cover-image |
Capas de artigo | PNG | 5 dimensões × 11 paletas × 7 estilos |
5.3 Encadeamento (Chaining)
Para pipelines complexos que requerem análise visual seguida de geração:
[Análise] Screenshot de UI existente
│
▼
[VR04] Screenshot-to-Code → código extraído
│
▼
[Geração] baoyu-diagram → diagrama SVG da arquitetura do código gerado
│
▼
[Revisão] VR01 Diagram Comprehension → valida o diagrama gerado
Este encadeamento é orquestrado pelo synthesis-agent ou pelo agent-node-pipeline.
6. Integração com Skills Existentes
6.1 Comando /auto para Análise de Imagem
O comando /auto detecta automaticamente a presença de anexos de imagem e invoca o Vision MCP:
/auto (analise esta imagem e explique a arquitetura)
→ Vision Router detecta attachment → VR01 Diagram Comprehension
→ Resposta: descrição textual + dados estruturados
6.2 Integração com reasoning-orchestrator
O reasoning-orchestrator (v11) pode receber saída do Vision MCP como premissa para raciocínio:
1. Image Analysis → [VR02] extrai valores do gráfico
2. Valores extraídos → alimentam reasoning-orchestrator como fatos
3. Reasoning orchestrator → aplica inductive/deductive reasoning sobre os dados
Configuração no reasoning-orchestrator para aceitar entrada visual:
vision_input:
enabled: true
source: vision_mcp
confidence_threshold: 0.75
enrich_with: [description, structured_data, extracted_text]
6.3 Integração com o Pipeline MASWOS (Artigo Acadêmico)
O pipeline de criação de artigo (criador-artigo) pode utilizar análise visual para:
- Analisar figuras de referência (VR05) → gerar legendas ABNT automáticas
- Comparar gráficos (VR02) → extrair dados para discussão nos resultados
- Detectar anomalias (VR03) → identificar problemas em figuras antes da submissão
- Gerar figuras via
baoyu-infographic→ dados de simulação → gráfico Qualis-ready
Fluxo típico:
MASWOS pipeline
│
├── Figure Analysis: VR05 → gera caption e descrição acessível
├── Data Extraction: VR02 → lê valores de gráfico de referência
├── Figure Generation: baoyu-infographic → cria gráfico para Results
└── Quality Check: VR03 → valida resolução, proporção, cor
6.4 Integração com baoyu-diagram para Documentação
A skill baoyu-diagram pode ser invocada a partir de análise visual de um sistema legado:
Reversa Scout → screenshot de arquitetura → VR01 → descrição textual
→ baoyu-diagram → SVG reconstruído → docs/architecture.svg
6.5 Integração com debugging-wizard
Screenshots de erros podem ser analisados visualmente:
Captura de tela de erro → VR03 → detecção de anomalia visual
→ debugging-wizard → correlação com stack trace (texto extraído)
→ hipótese de diagnóstico → ROOT_CAUSE
7. Segurança
7.1 Privacidade de Imagens
- Nunca enviar imagens contendo dados sensíveis (documentos pessoais, telas com PII, fotos de rostos sem consentimento) para APIs de visão externas sem confirmação explícita do usuário.
- O campo
ephemeralStorage: truena configuração do Vision MCP garante que as imagens não são armazenadas pelo provedor após o processamento. - Para ambientes com restrição de dados, configurar um proxy local ou utilizar modelos locais (via Ollama, llama.cpp com LLaVA).
7.2 Política de Retenção
| Aspecto | Padrão | Configurável |
|---|---|---|
| Armazenamento no provedor | Efêmero (não retido após resposta) | ephemeralStorage |
| Cache local de imagens | Limpo após sessão | cacheDir + TTL |
| Logs contendo descrições | Apenas texto extraído, sem imagem | logLevel |
7.3 Limites e Rate Limiting
- Tamanho da imagem: Máximo 20 MB por requisição (pré-processamento reduz para <5 MB).
- Rate limit: 60 requisições/minuto (OpenAI Tier 1), ajustável por provedor.
- Custo: Visão custa ~2-3× o custo de texto puro (tokenização de imagem). Use
detail: "low"para tarefas que não exigem precisão visual. - Timeout: 30 segundos por chamada de análise de imagem.
7.4 Mitigação de Riscos
| Risco | Mitigação |
|---|---|
| Vazamento de PII via OCR | Filtragem pós-processamento: regex para CPF, RG, e-mail |
| Imagem corrompida | Validação de integridade no Stage 1 (checksum + header magic bytes) |
| Alucinação visual (descrição incorreta) | Múltiplas chamadas com self-consistency K=3 |
| Custo excessivo | Modo detail: "low" + limite de tokens por chamada |
| Ataque de prompt injection via imagem | Sanitização de texto extraído antes de alimentar downstream |
7.5 Configuração de Segurança Recomendada
{
"vision": {
"privacy": {
"requireConsent": true,
"allowedDomains": ["localhost", "*.trusted-source.com"],
"blockedPatterns": ["cpf", "rg", "passport", "credit_card"],
"autoRedact": true
},
"rateLimit": {
"requestsPerMinute": 60,
"burstSize": 10,
"cooldownSeconds": 5
},
"costControl": {
"defaultDetail": "auto",
"maxImagesPerRequest": 5,
"budgetAlert": "usd_10.00"
}
}
}
8. Exemplos de Uso
8.1 Análise de Diagrama de Arquitetura
Usuário: "/auto (entenda este diagrama de arquitetura)"
+ attachment: diagrama.png
Pipeline:
1. Vision Router → detecta "diagrama" + imagem → VR01
2. Pré-processamento → redimensiona para 2048px
3. Vision MCP → GPT-4o com prompt VR01
4. Extração → nodes, edges, relações
5. Saída → descrição + grafo de dependências
8.2 Geração de Alt-Text para Artigo Científico
Usuário: "gere legenda ABNT para esta figura do artigo"
+ attachment: figura_cientifica.png
Pipeline:
1. Vision Router → VR05 Figure-to-Description
2. Image Analysis → descrição detalhada + termos técnicos
3. Pós-processamento → formata como legenda ABNT (NBR 6023)
4. Saída → "Figura 1 — Diagrama de blocos do sistema proposto..."
8.3 Screenshot-to-Code
Usuário: "reproduza esta tela em React com Tailwind"
+ attachment: screenshot.png
Pipeline:
1. Vision Router → VR04 Screenshot-to-Code
2. Análise → extrai layout, cores, tipografia, elementos
3. Geração → código React + Tailwind + story
4. Output → componente funcional + preview
8.4 Comparação de Versões (Regressão Visual)
Usuário: "compare a versão antiga com a nova e aponte diferenças"
+ attachment: antes.png, depois.png
Pipeline:
1. Vision Router → VR08 Multi-Image Comparison
2. Análise → detecção de diferenças pixel a pixel + semânticas
3. Relatório → lista de mudanças: movidas, adicionadas, removidas
4. Saída → diff visual anotado + sumário textual
9. Extensibilidade
9.1 Adicionar Novo Provedor de Visão
Para adicionar um novo provedor de visão (ex.: Amazon Bedrock, Mistral Pixtral, Anthropic Claude 4):
- Adicionar entrada em
opencode.json→mcpServers.vision.provider - Implementar adapter no Vision MCP seguindo a interface:
interface VisionProviderAdapter {
analyze(params: VisionParams): Promise<VisionResponse>;
// VisionParams: { image, prompt, detail?, maxTokens?, temperature? }
// VisionResponse: { description, structuredData?, extractedText?, confidence }
}
- Registrar no Vision Router como novo handler.
9.2 Adicionar Novo Tipo de Raciocínio Visual
Para estender o catálogo VR (ex.: VR09 — Document Layout Analysis):
- Adicionar entrada na tabela de tipos (seção 4)
- Criar trigger no Vision Router
- Definir template de prompt específico
- Registrar no
reasoning-orchestratorcomo novo reasoning type
10. Referências
- reasoning-orchestrator-v11 — Integração com pipeline de raciocínio
- baoyu-imagine — Geração de imagem por prompt
- baoyu-diagram — Geração de diagramas SVG
- baoyu-infographic — Geração de infográficos
- baoyu-compress-image — Compressão e pré-processamento de imagem
- baoyu-image-cards — Geração de cards para redes sociais
- cora-debate — Debate multiagente com verificação simbólica
- agent-node-pipeline — Pipeline de processamento com nós tipados
- OpenAI Vision API: https://platform.openai.com/docs/guides/vision
- Google Gemini Vision: https://ai.google.dev/gemini-api/docs/vision
- Anthropic Claude Vision: https://docs.anthropic.com/en/docs/build-with-claude/vision