diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 30 |
1 files changed, 28 insertions, 2 deletions
@@ -63,6 +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-app` | Supervisor de procesos, orquestador y binario `asistente` | Los tres motores viven en `vendor/` como submódulos fijados a un commit @@ -120,14 +121,37 @@ de configuración valieron más que cualquier cambio de código: - La plantilla del modelo dejaba `<think>` abierto: **8630 ms → 413 ms** al primer token. - 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. Los tres, con el porqué y cómo se midieron, en [docs/RENDIMIENTO.md](docs/RENDIMIENTO.md). ## Herramientas -El asistente puede llamar a funciones. Viene con `hora_actual` y con -`ejecutar_comando`, esta última **apagada**: darle una shell a un modelo que +El asistente puede llamar a funciones. Vienen cuatro: + +| Herramienta | Qué hace | Coste medido | +|---|---|---| +| `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 | +| `ejecutar_comando` | Órdenes del sistema, **apagada** por defecto | — | + +Mientras una herramienta trabaja, el asistente dice «Déjame que lo busque» o +«Voy a mirar». No es adorno: sin eso el turno pasa seis segundos en silencio y +se lee como un cuelgue. Con el acuse, el primer audio llega en 3–4 s. + +**Buscar** admite tres buscadores: `tavily` (con clave, devuelve una respuesta +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. + +`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. Cuando se enciende, sólo pasan las órdenes de una lista blanca, sin shell que interprete metacaracteres y con un plazo máximo. @@ -160,4 +184,6 @@ 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 +- Para buscar: una clave de Tavily en `$TAVILY_API_KEY`, o `uv tool install ddgs` |