Spaces:
Running
Running
File size: 3,856 Bytes
efe917e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | # Dos proyectos, un robot, un PC
En el mismo equipo hay otro proyecto hablando con el mismo Reachy. Los síntomas
que ya has visto —**dos voces a la vez**, un panel cerrado que **sigue
escuchando y hablando**— no son fallos del robot: son dos programas cogiendo el
mismo micrófono y el mismo altavoz. Esto es lo que se ha hecho para que
convivan.
## El reparto
El robot es uno: micrófono, altavoz y motores **no se comparten**. Lo que sí se
reparte son los puertos, y ahí cada proyecto necesita su franja.
| | LexIA (por defecto) | Sugerido para el otro proyecto |
|---|---|---|
| Panel web | 7862 | 7962 |
| Motor de lenguaje | 8080 | 8180 |
| Embeddings | 8081 | 8181 |
| **Cerrojo del robot** | 7869 | 7969 |
Los cuatro son configurables en `runtime/settings/app.json`:
```json
"puertos": { "panel": 7862, "llm": 8080, "embeddings": 8081, "cerrojo": 7869 }
```
Lo importante es el **motor**: dos `llama-server` en el mismo puerto se pisan sin
avisar, y el segundo simplemente no arranca o responde el primero. Si el otro
proyecto usa OpenAI y no levanta motor local, el único conflicto real es el
panel.
## El cerrojo: por qué ya no pueden sonar dos voces
Al arrancar, LexIA **ocupa un puerto** antes de tocar el audio. Si ya está
ocupado, no arranca y lo dice con el número delante:
> Ya hay otra instancia de LexIA usando el robot (puerto 7869). Cierre la
> anterior antes de abrir esta, o cambie el puerto del cerrojo si son dos
> proyectos distintos.
Se eligió un puerto y no un fichero de bloqueo por una razón práctica: cuando el
proceso muere —aunque muera mal, aunque se cierre la consola— **el sistema
operativo libera el puerto solo**. Un fichero se quedaría ahí mintiendo.
Esto protege de dos LexIA. Del otro proyecto no protege, porque ese no mira
nuestro cerrojo: para eso está el reparto de arriba y la regla de abajo.
## La regla que hay que cumplir a mano
**Solo una aplicación con el robot cogido a la vez.** Antes de arrancar una,
cerrar la otra. El daemon de Reachy Mini solo entrega el audio a una app, pero
si una se lanza a mano y otra desde el daemon, las dos creen tenerlo.
En la práctica, para las pruebas de hoy: cuando pruebes LexIA, que el otro
proyecto no esté corriendo, y al revés. Cuando lo instales en el daemon, **que
haya un solo `--startup-app` configurado**, no dos. Una prueba o comprobación
que encuentre un motor ya activo lo reutiliza y no lo apaga al terminar; solo el
proceso que lo creó o la acción explícita de mantenimiento puede liberarlo.
## «Callar ahora»
El panel tiene ahora un botón **Callar ahora**, siempre disponible. Corta el
audio en curso aunque esté a media frase, suelta la sesión remota y deja de
escuchar, **sin cerrar la app ni perder la configuración**. Es el botón que hace
falta justo cuando algo va mal, que es cuando no apetece buscar una consola.
## Cerrar de verdad al cerrar
Había un fallo real detrás de «cierro el panel y sigue hablando»: al terminar se
cerraba el audio **antes** de cortar lo que estuviera sonando, así que la frase a
medias seguía su curso. Ahora el orden es el correcto: primero callar, después
cerrar el micrófono y el altavoz, después soltar el cerrojo.
## Lo que avisa el panel
El botón **Comprobar** incluye ahora un bloque **Puertos**: qué puertos usa
LexIA y cuáles están ocupados por otro. Si el cerrojo aparece ocupado, hay otra
instancia con el robot —o un programa ajeno en ese puerto— y conviene resolverlo
antes de culpar al micrófono.
## Y lo de la antena
Dijiste que no hace falta abrir la app tocando la antena. Sigue funcionando si se
instala en el daemon, pero **ya no es el camino obligatorio**: para las pruebas
basta con arrancar la app y hablarle. Eso además reduce el riesgo de que el
daemon abra LexIA por su cuenta mientras el otro proyecto tiene el robot.
|