Captura de pantalla remota + análisis con IA local para Wayland/Hyprland.
Caso de uso real: Poder ver el escritorio de mi PC desde fuera de casa mientras codeo. Uso OpenCode vía Discord (remote-opencode bot), le pido que ejecute opencode-see, y el bot me envía la descripción + la imagen de la pantalla directamente al chat de Discord. Sin servicios cloud, sin enviar datos a terceros.
- Wayland (Hyprland)
- grim + slurp — captura de pantalla
- ImageMagick (
magickoconvert) — redimensionado y anotación - Ollama — servidor de modelos local
- Python 3
sudo pacman -S grim slurp imagemagick python hyprland
curl -fsSL https://ollama.com/install.sh | shgit clone https://github.com/VECTORG99/OpenVist.git
cd OpenVist
chmod +x install.sh
./install.shO usando Make:
make install# Ambas pantallas
opencode-see full
# Una pantalla (mejor calidad, más detalle para texto)
LEFT_MON=DP-2 RIGHT_MON=DP-3 opencode-see left
LEFT_MON=DP-2 RIGHT_MON=DP-3 opencode-see right
# Seleccionar área
opencode-see region
# Ventana activa
opencode-see window
# Prompt personalizado
opencode-see full "Busca errores o mensajes importantes en la pantalla"
# Usar una plantilla de prompt
opencode-see --prompt-template errors left
# Anotar la captura con la descripción superpuesta
opencode-see --annotate left
# Comparar con una captura anterior
opencode-see --compare ~/Pictures/opencode-ss/ss-anterior.jpg left
# Listar modelos disponibles en Ollama
opencode-see --list-modelsOpenVist funciona con cualquier modelo de visión compatible con Ollama. Los modelos recomendados:
| Modelo | Descripción | Comando |
|---|---|---|
qwen2.5vl:7b |
Por defecto — buen balance de velocidad y precisión | ollama pull qwen2.5vl:7b |
qwen2.5vl:3b |
Más rápido, menos preciso — ideal para chequeos rápidos | ollama pull qwen2.5vl:3b |
llama3.2-vision:11b |
Alternativa — mayor precisión, más lento | ollama pull llama3.2-vision:11b |
Cambia el modelo con la variable de entorno VISION_MODEL o en config.json:
VISION_MODEL=qwen2.5vl:3b opencode-see fullPara ver qué modelos tienes instalados:
opencode-see --list-modelsOpenVist incluye plantillas de prompt predefinidas en el directorio prompts/ para casos de uso comunes:
| Plantilla | Descripción |
|---|---|
default |
Describe en detalle lo que ves en la pantalla |
errors |
Busca errores, advertencias y mensajes importantes |
code |
Analiza código visible en un editor o terminal |
debug |
Describe el estado de una sesión de debugging |
ui |
Describe el layout de la UI y elementos destacados |
opencode-see --prompt-template errors left
opencode-see --prompt-template code window
opencode-see --prompt-template debug fullPuedes combinar una plantilla con un prompt adicional para dar contexto extra:
opencode-see --prompt-template errors left "fíjate en el diálogo rojo"Superpone la descripción de la IA directamente sobre la imagen de la captura (una barra de texto en la parte inferior). Útil para compartir capturas anotadas en Discord:
opencode-see --annotate left
# Genera: ~/Pictures/opencode-ss/ss-...-annotated.jpgToma una captura nueva y le pide a la IA que la compare con una imagen anterior. Útil para responder "¿qué cambió desde la última vez?":
opencode-see --compare ~/Pictures/opencode-ss/ss-20260814-100000.jpg left| Variable | Por defecto | Descripción |
|---|---|---|
LEFT_MON |
— | Nombre del monitor izquierdo (hyprctl monitors) |
RIGHT_MON |
— | Nombre del monitor derecho |
VISION_MODEL |
qwen2.5vl:7b |
Modelo de visión en Ollama |
OLLAMA_URL |
http://127.0.0.1:11434 |
URL de la API de Ollama |
VISION_TIMEOUT |
120 |
Timeout de la petición en segundos |
VISION_NUM_CTX |
4096 |
Tamaño de la ventana de contexto |
OPENVIST_SS_DIR |
~/Pictures/opencode-ss |
Directorio de capturas |
OPENVIST_LOG_FILE |
~/.local/share/opencode-see.log |
Archivo de log |
El script imprime la ruta de la captura y la descripción del modelo de visión. Al final se añade un pie de página con la versión y el modelo usado:
---
_Analyzed by OpenVist v1.1.0 | qwen2.5vl:7b_
La ruta de la captura también se guarda en /tmp/opencode-latest-ss-path para integración con bots.
Agregué el comando /see al bot remote-opencode para usarlo así en Discord:
/see mode:left
/see mode:left template:errors
/see mode:window prompt:"Busca el error en la consola"
El bot ejecuta opencode-see en mi PC, recibe la descripción del modelo de visión, y me envía tanto el texto como la imagen adjunta al chat. Todo local, nada sale de mi red.
Opciones del comando /see:
| Opción | Descripción |
|---|---|
mode |
Modo de captura (full, left, right, region, window) |
prompt |
Prompt personalizado para el modelo de visión |
template |
Plantilla de prompt (default, errors, code, debug, ui) |
El comando incluye rate limiting: máximo 1 uso cada 10 segundos por usuario (configurable con la variable OPENVIST_COOLDOWN en milisegundos).
El archivo see-command.js es el código de referencia para agregar el comando a cualquier bot de Discord.js.
Las capturas se guardan en ~/Pictures/opencode-ss/. Un timer de systemd borra archivos con más de 5 minutos:
systemctl --user status opencode-ss-clean.timerCopia el archivo de ejemplo y edita según tus necesidades:
mkdir -p ~/.config/opencode-see
cp config.example.json ~/.config/opencode-see/config.json{
"model": "qwen2.5vl:7b",
"resize_target": "1024x1024>",
"timeout": 120,
"ollama_url": "http://127.0.0.1:11434",
"num_ctx": 4096,
"screenshot_dir": "~/Pictures/opencode-ss",
"log_file": "~/.local/share/opencode-see.log"
}Las variables de entorno tienen prioridad sobre el archivo de configuración.
Verifica que todo esté correctamente configurado:
opencode-see --checkRevisa dependencias, conectividad con Ollama, disponibilidad del modelo y variables de entorno.
# Lint (shellcheck)
make lint
# Sintaxis Python
make pycheck
# Tests
make test
# Todo junto (lint + pycheck + tests)
make check| Problema | Solución |
|---|---|
ollama: command not found |
Instala Ollama: curl -fsSL https://ollama.com/install.sh | sh |
model 'qwen2.5vl:7b' not found |
Descarga el modelo: ollama pull qwen2.5vl:7b |
cannot reach Ollama |
Verifica que Ollama esté corriendo: ollama serve |
grim failed to capture |
Verifica que estás en Wayland (no X11) |
LEFT_MON is not set |
Ejecuta hyprctl monitors y configura el nombre del monitor |
magick/convert not found |
Instala ImageMagick: sudo pacman -S imagemagick |
prompt template 'X' not found |
Revisa las plantillas disponibles: ls prompts/ |
| Timeout en el análisis | Aumenta timeout en config.json o usa un modelo más pequeño (qwen2.5vl:3b) |
| Log de errores | Revisa ~/.local/share/opencode-see.log |
./uninstall.sh
# o
make uninstallElimina los scripts, plantillas de prompt, config de systemd timer, y opcionalmente el directorio de capturas (--purge).
- 100% local — modelo de visión en Ollama (127.0.0.1:11434)
- Sin API keys, sin cuentas cloud, sin enviar imágenes a nadie
- Capturas se autoeliminan a los 5 minutos
- Ideal para debugging remoto sin exponer tu pantalla a servicios externos