aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md20
1 files changed, 14 insertions, 6 deletions
diff --git a/README.md b/README.md
index 90d108e..bb7c407 100644
--- a/README.md
+++ b/README.md
@@ -63,7 +63,7 @@ cargo run --release -- run --no-manage
| `asist-asr` | Canary en ONNX: ventana deslizante y transcripción final |
| `asist-llm` | llama-server: streaming SSE, historial, llamadas a herramientas |
| `asist-tts` | qwentts: síntesis en streaming y voces clonadas |
-| `asist-tools` | Buscar en internet y mirar por la cámara |
+| `asist-tools` | Buscar en internet, mirar por la cámara y ver la pantalla |
| `asist-app` | Supervisor de procesos, orquestador y binario `asistente` |
Los tres motores viven en `vendor/` como submódulos fijados a un commit
@@ -123,6 +123,7 @@ de configuración valieron más que cualquier cambio de código:
- El prompt de estilo anulaba las llamadas a herramientas: **0/8 → 8/8**.
- La cámara capturaba a 720p: **7,8 s → 2,9 s** por imagen a 640x480.
- Las herramientas se ejecutaban en silencio: **~8,4 s → 4,1 s** hasta oír algo.
+- La pantalla a 640 px inventaba el texto: **1 de 3 aciertos → 3 de 3** a 1280 px.
Los tres, con el porqué y cómo se midieron, en
[docs/RENDIMIENTO.md](docs/RENDIMIENTO.md).
@@ -135,7 +136,8 @@ El asistente puede llamar a funciones. Vienen cuatro:
|---|---|---|
| `hora_actual` | Fecha y hora del sistema | 0 ms |
| `buscar_en_internet` | Busca y resume | 0,5–3,6 s |
-| `mirar_por_la_camara` | Hace una foto y responde sobre lo que ve | 4,2–5,2 s |
+| `mirar_por_la_camara` | Hace una foto y responde sobre lo que ve | 4,1–5,2 s |
+| `mirar_la_pantalla` | Captura la pantalla y responde sobre lo que hay | 7,6–12,4 s |
| `ejecutar_comando` | Órdenes del sistema, **apagada** por defecto | — |
Mientras una herramienta trabaja, el asistente dice «Déjame que lo busque» o
@@ -147,9 +149,14 @@ ya redactada), `ddgs` (sin clave, la misma librería que hay bajo
`duckduckgo-mcp`) y `searxng`. El de comando ejecuta un guion que escriba JSON,
así que meter otro es escribir un guion, no tocar Rust.
-**Mirar** aprovecha que el servidor ya carga el proyector multimodal: el mismo
-modelo que conversa describe la imagen. La foto no se guarda en disco ni entra
-en el historial.
+**Ver** —cámara y pantalla— aprovecha que el servidor ya carga el proyector
+multimodal: el mismo modelo que conversa describe la imagen. Ni la foto ni la
+captura se guardan en disco, y no entran en el historial.
+
+La pantalla usa 1280 px y la cámara 640, y la diferencia importa: una escena se
+entiende, pero un texto hay que leerlo. Medido, a 640 px el modelo no dice que
+no lee la pantalla, **se inventa lo que pone** —contestó que la reunión era «a
+las 10:00» cuando ponía 15:30—. Por eso el triple de coste.
`ejecutar_comando` está apagada a conciencia: darle una shell a un modelo que
obedece a lo que oye por el micrófono es un cambio de postura de seguridad.
@@ -184,6 +191,7 @@ frase y comprueba que el reconocedor la recupera.
- CUDA para los motores en C++ (funcionan en CPU, pero muy justos)
- PipeWire o ALSA
- ~6 GB de disco para los modelos
-- `ffmpeg` para la cámara
+- `ffmpeg` para la cámara y para reducir las capturas
+- Para la pantalla: `grim` (Wayland) o `maim`/ImageMagick (X11)
- Para buscar: una clave de Tavily en `$TAVILY_API_KEY`, o `uv tool install ddgs`