JARVIS/verde/README.md
sito 1e3e5ca20d carril verde (Hermes Agent): documentacion, panel, voz local y RAG
Rama JARVIS-GREEN, independiente de master (el nucleo naranja queda intacto).

- README propio del carril verde con diagrama de arquitectura y capturas del panel.
- verde/: arranque, panel web, puente de voz (escucha local con faster-whisper +
  habla con la voz del naranja), pruebas (07 voz, 08 escucha), config y notas.
- Integracion RAG: nucleo/saber/busca_cli.py + skill buscar-en-apuntes, para que
  el agente consulte el mismo indice que el nucleo.
- Todo local (127.0.0.1); sin datos personales (rutas y modelo de GPU scrubeados).
2026-08-18 11:26:42 +02:00

129 lines
5.9 KiB
Markdown

# JARVIS verde
Banco de pruebas con **Hermes Agent** debajo, para medir si un arnés agéntico
aporta algo sobre el núcleo. **100 % software libre**, y **local por
configuración pero no por construcción** — ver el aviso de aquí abajo.
> ⚠ **La frase "no sale nada de esta máquina" era falsa y se ha corregido.**
> El 16 de agosto, pidiéndole un cartel en ASCII, el agente encontró que
> `pyfiglet` no estaba instalado y **se fue a una API de terceros por su
> cuenta**. Nadie le dijo que podía. El cerebro, la voz, el oído y la memoria
> siguen siendo locales y comprobados; lo que no es local es **lo que el agente
> decida hacer con la terminal que le has dado**. Está contado entero en
> `NOTAS.md`.
> **Estrenado el 16 de agosto de 2026.** Arranca, contesta y llama herramientas.
> Lo que costó llegar aquí fueron **dos topes encadenados**, los dos anotados en
> `NOTAS.md`:
>
> 1. El prompt fijo de Hermes son **~20.500 tokens** y `qwen3.5:4b-jarvis` va con
> `num_ctx 4096`. Por eso existe `qwen3.5:4b-verde`.
> 2. Y Hermes **rechaza de plano** cualquier modelo por debajo de **64.000**
> tokens de contexto. Eso invalidó la primera medida (24576, lo máximo que
> cabía en la tarjeta) y obligó a bajar media red a la CPU.
>
> El precio de esa segunda concesión es el tiempo de respuesta. Está medido en
> `NOTAS.md` y es **el dato que decide si este carril vale la pena**.
Los tres se distinguen por color: **cian** el de Newelle (congelado), **naranja**
el núcleo (en desarrollo), **verde** este.
## De dónde sale esto
De un reel de 75 s que vende *"construye tu Jarvis en un fin de semana"* en
nueve pasos. Siete de los nueve ya estaban hechos aquí, y mejor. Los tres que
no: **skills que el agente se crea solo, canales de mensajería y memoria**. Eso
es lo que este carril viene a probar.
## El stack
| Capa | Pieza | Licencia | ¿Sale algo? |
|---|---|---|---|
| Arnés | Hermes Agent | MIT | no |
| Cerebro | Ollama · `qwen3.5:4b-verde` | Apache 2.0 | **no**`127.0.0.1:11434` |
| Oír | faster-whisper local | MIT | **no** |
| Hablar | Piper 1.2.0, vía `jarvis-piper.sh` | MIT | **no** |
| Memoria de conversación | SQLite FTS5 de Hermes | MIT | **no** |
| Memoria de conocimiento | `boveda/`, ficheros Markdown | — | **no** |
| Navegador | Playwright + Chromium | Apache 2.0 / BSD-3 | solo si navega |
**Cero claves, cero cuentas, cero euros.** Descartados por eso: ElevenLabs,
Honcho, Groq, Firecrawl, Nous Portal. Y **Edge TTS**, que es gratis pero es un
servicio de Microsoft y era la única pieza no libre del carril.
## Qué hay aquí
```
verde/
├── arrancar.sh LA PUERTA DE ENTRADA: mide, configura y dictamina
├── pruebas/ las 7 comprobaciones; ninguna abre el TUI
├── ESCALERA.md el guion del primer arranque a mano, con huecos que rellenar
├── PLAN-ARRANQUE.md el plan del que salió todo esto
├── instalar.sh baja el instalador oficial, lo enseña y lo corre sin arrancar nada
├── install-oficial.sh el instalador tal cual, para poder auditarlo y diffearlo
├── instalacion.log lo que hizo
├── config.yaml la configuración → se copia a ~/.hermes/config.yaml
├── env.ejemplo plantilla del .env, sin una sola clave
├── voz-verde.sh adaptador para que hable con la voz del naranja
├── verde-launcher.sh arranca el TUI en verde fósforo
├── jarvis-verde.svg el icono
├── boveda/ memoria de conocimiento — vacía a propósito
└── NOTAS.md lo medido y lo que queda abierto
```
Se entra siempre por el mismo sitio:
```bash
./arrancar.sh # deja el carril listo, y se planta si algo no cuadra
./pruebas/ejecutar.sh # 46 comprobaciones, ninguna abre el TUI
./verde-launcher.sh # el TUI → y se sigue ESCALERA.md
```
El código de Hermes vive en `~/.hermes/`, igual que el HUD de Newelle vive en
`~/.var/app/…`. Aquí solo está lo que se edita a mano.
## Uso
```bash
./verde-launcher.sh --status # qué hay y cuánta VRAM, sin arrancar nada
./verde-launcher.sh # el TUI, en verde fósforo
./verde-launcher.sh --stop # cerrar
```
`--status` es el que se puede correr hoy: no toca la gráfica.
## La voz: por qué suena igual que el naranja
Hermes trae un proveedor de TTS **por comando** que no está en su web pero sí en
su código (`tools/tts_tool.py`). Eso permite llamar al mismo
`config/jarvis-piper.sh` del naranja, con su binario Piper MIT, su `.onnx` y su
cadena de audio.
No es un detalle estético: si el verde hablara con una voz que Piper se descarga
por su cuenta, comparar la voz de los dos carriles no diría nada. Detalles y
trampas en `NOTAS.md` y en la cabecera de `voz-verde.sh`.
## El aviso que hay que leer antes de comparar
El naranja tiene **150 acciones rápidas que se saltan el modelo**. Hermes no
tiene ese atajo: allí toda orden pasa por el cerebro.
**El verde va a medir más lento, y no será culpa del modelo.** Para comparar de
verdad hay que usar solo frases que en el naranja también acaben en el cerebro.
Está desarrollado en `NOTAS.md`.
## Lo comprobado el primer día, y lo que falta
**Llama herramientas bien.** Era la duda que abría este carril —la guía de
Hermes marca *sin* tool calling todo lo de 9B para abajo— y salió a favor: pide
la herramienta cuando toca, acierta los argumentos, y **no** la llama cuando la
pregunta no la necesita.
**Es flojo con las rutas relativas.** Se le pidió `verde/README.md` y leyó el
`README.md` de la raíz. El detalle está en `NOTAS.md`, con la observación que
más pesa: cuando una herramienta le devuelve un **error**, se recupera y busca
otro camino; cuando le devuelve **un fichero que existe pero no es el pedido**,
no tiene forma de notarlo.
Falta lo que solo se juzga a mano: los escalones 5 (una skill), 6 (la voz dentro
de Hermes) y 7 (la escucha por micrófono) de `ESCALERA.md`.