一键导入
gemini-vision-analysis
Analisar prints/screenshots —优先使用 auxiliary.vision com Kimi K2.5 (built-in, zero custo), fallback para Gemini 2.5 Flash.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Analisar prints/screenshots —优先使用 auxiliary.vision com Kimi K2.5 (built-in, zero custo), fallback para Gemini 2.5 Flash.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Sistema de planejamento diario baseado em markdown para equipe multi-agente. Fluxo completo de 6 fases planejar, aprovar, delegar, executar, auditar, registrar.
Correção do bug de timezone no script fechamento_diario.sh. O date capturava UTC, causando data errada quando executado próximo à meia-noite BRT.
Diagnóstico e correção de CSS quebrado em produção com Express, EJS, PM2 e Cloudflare. Cobre cache busting, restauração de classes perdidas, migração de syntax highlighting, e verificação de cache CDN.
Procedimento para upgrade da Evolution API v2.3.7 → v2.4.0-rc2, ativação de licença, e integração com Meta Cloud API (WhatsApp Oficial). Inclui pitfalls de Cloudflare Tunnel, nginx, e licenciamento.
Pipeline de 3 fases para gerar documentos grandes com Gemini CLI sem estourar limite de contexto. Extração em lotes → compilação → blueprint. Reutilizável para PRDs, especificações técnicas, documentação extensa.
Arquitetura de agente Hermes Utility — dedicado exclusivamente a git versionamento de vault Obsidian. Memory desligado, sem criação de conteudo, apenas pull/commit/push sob autorizacao.
| name | gemini-vision-analysis |
| description | Analisar prints/screenshots —优先使用 auxiliary.vision com Kimi K2.5 (built-in, zero custo), fallback para Gemini 2.5 Flash. |
Duas estratégias, em ordem de preferência:
Descoberta crítica (26/05/2026): DeepSeek V4 Flash/Pro no provider opencode-go não aceita image_url (erro unknown variant 'image_url', expected 'text'). Porém, Kimi K2.5 e K2.6 no MESMO provider suportam visão nativamente.
UPDATE 26/05/2026 (sessão massiva de 153+ imagens): Kimi K2.5 retornou 401 Invalid API key consistentemente. {{BACKEND_ENGINEER}} confirmou chave inválida. A solução comprovada e recomendada como PRIMÁRIA é o fallback Gemini 2.5 Flash via gemini_vision.py, que processou 156 imagens com 100% de sucesso (0 falhas) em 25.6 minutos com 3 workers paralelos. Kimi K2.5 deve ser tratado como configuração futura, não como solução atual.
No config.yaml do agente:
auxiliary:
vision:
provider: opencode-go # mesmo provider principal — sem API key extra
model: kimi-k2.5 # modelo com visão comprovada
base_url: https://opencode.ai/zen/go/v1
api_key: '' # vazio — herda credencial do provider
timeout: 120
download_timeout: 30
Vantagens:
vision_analyze funciona sem alteração no fluxoObservado (26/05/2026): {{BACKEND_ENGINEER}} reportou 401 Invalid API key ao tentar usar Kimi 2.5. Causa provável: chave não propagada aos profiles ou chave inválida no provedor.
Ação imediata quando Kimi falhar:
gemini_vision.py — não bloquear o fluxoRegra: nunca travar processamento por falha de API key. Fallback imediato.
| Modelo | Visão | Resultado |
|---|---|---|
deepseek-v4-flash | ❌ | unknown variant 'image_url' |
deepseek-v4-pro | ❌ | Mesmo erro |
kimi-k2.5 | ✅ | Descreveu print do Dontus em detalhes |
kimi-k2.6 | ✅ | Funciona |
minimax-m2.7 | ⚠️ | Aceita formato mas não enxerga |
Basta enviar a imagem no Slack — o gateway automaticamente roteia para o Kimi K2.5 via auxiliary.vision. O agente usa vision_analyze() ou recebe a imagem diretamente.
Use quando auxiliary.vision não estiver configurado ou o Kimi K2.5 não atender.
~/.hermes/profiles/dalinar/scripts/gemini_vision.py
Não usar a GEMINI_API_KEY do servidor OVH. A chave original está em {{COMMANDER_HERMES_PATH}}/profiles/dalinar/.env no servidor OVH — não está nos profiles Mac locais. {{COMMANDER}} permite:
gemini no terminalO Gemini CLI usa OAuth e está disponível no ambiente shell interativo do {{COMMANDER}} (provavelmente via mise: /Users/{{COMMANDER}}fae/.local/share/mise/installs/node/24.13.1/bin/gemini). Não funciona em processos background — apenas foreground com GEMINI_CLI_TRUST_WORKSPACE=true.
Resumo: os agentes podem continuar usando Gemini via API direta ou CLI, desde que a chave NÃO seja a do OVH. Se a chave não estiver disponível localmente, usar apenas deepseek-v4-pro como fallback.
from hermes_tools import terminal
import json
result = terminal("python3 ~/.hermes/profiles/dalinar/scripts/gemini_vision.py /caminho/da/imagem.png 'Sua pergunta sobre a imagem'")
data = json.loads(result["output"])
if data["success"]:
print(data["analysis"])
else:
print(f"ERRO: {data['error']}")
python3 ~/.hermes/profiles/dalinar/scripts/gemini_vision.py /tmp/print.png "Descreva os elementos desta tela"
JSON com:
success (bool)analysis (str) — texto da análiseerror (str | null)google-genai>=2.6.0 (instalado via pip3 install google-genai --break-system-packages)GEMINI_API_KEY no .env do profileDuas estratégias comprovadas:
Para lotes grandes (10-200 imagens), use o script batch_vision.py que gerencia workers paralelos com progress tracking:
Script: ~/.hermes/profiles/dalinar/scripts/batch_vision.py
from hermes_tools import terminal
# Iniciar processamento em lote com 3 workers paralelos
result = terminal(
"cd ~/.hermes/profiles/dalinar/scripts && python3 batch_vision.py",
background=True,
notify_on_complete=True,
timeout=3600
)
Comportamento:
~/.hermes/profiles/dalinar/cache/vision_results/<imagem>.jsonUsar terminal(background=true, notify_on_complete=true) — executa análises em paralelo. Cada processo roda independentemente.
from hermes_tools import terminal, process
sessions = []
for img in imagens[:5]: # máximo 5 paralelos
result = terminal(
f"python3 ~/.hermes/profiles/dalinar/scripts/gemini_vision.py {img} 'Pergunta'",
background=True,
notify_on_complete=True,
timeout=90
)
sessions.append(result["session_id"])
for sid in sessions:
process(action="wait", session_id=sid, timeout=90)
✅ Testado com 3 imagens em paralelo ~30s. ⚠️ Limite prático: 3-5 paralelos.
Para verificar visualmente cada resultado, processar uma por uma:
python3 ~/.hermes/profiles/dalinar/scripts/gemini_vision.py /path/img.png "Pergunta"
Processamento de 115+ imagens ao longo de várias rodadas (durante sessão única de ~3h):
## Análise das [Ordem] 10 Prints
| # | Tela | URL | Descobertas |
|:-:|------|:----:|-------------|
| **1** | **Nome** | `/url` | ⭐ descoberta principal | descoberta2 |
...
## 🏆 Balanço Final — [Total] Prints Analisadas com Gemini 2.5 Flash
| Lote | Qtd | Temas |
|:----:|:---:|-------|
| **1** | 10 | tema1, tema2 |
| **2** | 10 | tema3, tema4 |
| | **[Total]** | **~[XX]% de cobertura visual** |
⚠️ Nunca enviar comandos paralelos para batches de imagens. O terminal tool interrompe comandos paralelos (exit code 130). Sempre processar as imagens em chamadas TERMINAL únicas e sequenciais:
✅ Correto: 5 terminais em paralelo com 1 imagem cada → aguardar resultados → outro bloco de 5
❌ Incorreto: 10 terminais em paralelo com 1 imagem cada (interrupções garantidas)
Após cada sub-lote de 5:
**X/10 analisadas.** Resumo rápido:
**1/10:** Nome da Tela (`/URL`) — descoberta principal
**2/10:** ...
Após lote completo (10):
## Análise das [Ordem] 10 Prints
| # | Tela | URL | Descobertas |
|:-:|------|:----:|-------------|
| **1** | **Nome** | `/url` | descobertas principais |
Após TODOS os lotes (Balanço Final):
## 🎯 Balanço Final — X Prints Analisadas
| Lote | Qtd | Temas |
|:----:|:---:|-------|
| **1** | 10 | tema1, tema2 |
| **2** | 10 | tema3, tema4 |
"Descreva detalhadamente esta tela do [SISTEMA].
Qual o nome, URL, campos, botões, abas, tabelas, modais?
Inclua labels, opções e detalhes de interface."
Este prompt produz análise rica e estruturada, incluindo:
/Clinica/Edit/1#agenda mostra a mesma URL /Clinica/Edit/1 no navegador. A URL real da sub-aba só aparece ao passar mouse sobre o link (barra de status do navegador).Ao analisar prints do Dontus (115+ prints, ~99% de cobertura), estes padrões se repetem:
Descoberta crítica durante a engenharia reversa do Dontus:
O Dontus usa database-per-tenant (cada "ID Dontus" = um banco PostgreSQL separado), NÃO shared-db com tenant_id em todo lugar.
ID Dontus {{DONTUS_CLINICA_ID}} (Oeste)
└── Banco: oeste_gestao_{{DONTUS_CLINICA_ID}}
├── Clínica A (Matriz)
├── Clínica B (Filial)
├── Profissionais (compartilhados entre clínicas — N:N)
├── Procedimentos (compartilhados — globais no tenant)
└── Modelos de Documentos (compartilhados)
Implicações arquiteturais:
clinica_id NÃO é FK de isolamento — é FK organizacional dentro do mesmo bancoauxiliary.vision (Kimi K2.5) ou gemini-2.5-flash — ambos rápidos e baratos, suficientes para UI/screenshots.
auxiliary.vision estiver configurado com Kimi K2.5, testar. Se retornar 401 (chave inválida), ir direto ao Fallback.gemini_vision.py com Gemini 2.5 Flash — funcionou comprovadamente em todos os testes.batch_vision.py com 3 workers (recomendado)Com auxiliary.vision configurado para um modelo com visão, o comando vision_analyze() funciona normalmente — o Hermes Gateway roteia automaticamente a imagem para o modelo de visão configurado.
Nota (26/05/2026): Kimi K2.5 foi testado e retornou 401 (chave inválida). O fallback Gemini 2.5 Flash (gemini_vision.py) foi validado com 153+ imagens processadas com sucesso.
Após analisar prints de um sistema (ex: Dontus), salvar as descrições em arquivos markdown no projeto (ex: docs/vision/CLINICA_EDIT_1_ANALYSIS.md). Isso cria referência permanente para a equipe, evitando reprocessamento.
Cenário: Kimi K2.5 retorna 401 e Gemini 2.5 Flash não está disponível ou não atende.
Estratégia comprovada (26/05/2026, Onda 4): Em vez de travar processamento de imagens, {{BACKEND_ENGINEER}} pivotou para navegação Playwright no site ao vivo e extraiu 22 páginas de cadastros diretamente — incluindo modais JS que prints não capturam.
| Situação | Abordagem |
|---|---|
| Imagens disponíveis, visão funcional | batch_vision.py (recomendado) |
| Imagens disponíveis, visão falhou | Playwright — navegar site ao vivo (não esperar) |
| Ambos funcionando | Processar imagens + Playwright em paralelo |
| Precisa de modais/sub-abas JS | Playwright é superior — clica em "Novo", navega abas |
Testado: 22 páginas extraídas em ~2h, incluindo Bandeira, CentroCusto, AnamnesePerguntas, Especialidade, FormaPagamento, etc.
Descoberta e validação (26/05/2026): Ter 3 agentes auditarem independentemente a cobertura da engenharia reversa produz estimativas mais confiáveis e revela vieses.
{{COMMANDER}} solicita auditoria final
→ {{ORCHESTRATOR}} delega para 3 agentes independentemente
→ Cada agente produz relatório com % de cobertura
→ {{ORCHESTRATOR}} consolida os 3 números + encontra a verdade
→ Se TODOS concordam (ex: "RE suficiente"), decisão é segura
| Agente | Foco | Entregável |
|---|---|---|
| {{AUDITOR}} | Dashboard consolidado — visão geral, % por módulo | DASHBOARD-FINAL.md |
| {{BACKEND_ENGINEER}} | Auditoria técnica — Playwright, extrações reais, lacunas | RELATORIO-COBERTURA-FINAL.md |
| {{FRONTEND_ENGINEER}} | Documentação e UI — vault, wikilinks, naming | RELATORIO-EXECUTIVO.md |
| Relator | Cobertura | Voto |
|---|---|---|
| {{AUDITOR}} | ~90% | RE suficiente |
| {{BACKEND_ENGINEER}} | ~85% | RE suficiente |
| {{FRONTEND_ENGINEER}} | ~75% funcional / ~90% UI | RE suficiente |
| Consenso | 85-90% | ✅ Eng reversa suficiente para arquitetura |
REGRA ABSOLUTA — validada por {{COMMANDER}} com correções em tempo real:
Quando {{COMMANDER}} envia prints e menciona apenas {{ORCHESTRATOR}} ``:
<@USER_ID>Fluxo correto quando {{COMMANDER}} envia prints: