Spaces:
Running
Running
|
Download docs/25-DOS-PROYECTOS-UN-ROBOT.md from BravoRobots/lexia: direct link, hf CLI and curl.
- Browser
- Download file 3.86 kB
-
https://huggingface.co/spaces/BravoRobots/lexia/resolve/main/docs/25-DOS-PROYECTOS-UN-ROBOT.md
- Command line
-
hf download hf://spaces/BravoRobots/lexia/docs/25-DOS-PROYECTOS-UN-ROBOT.md
-
curl -L -o 25-DOS-PROYECTOS-UN-ROBOT.md https://huggingface.co/spaces/BravoRobots/lexia/resolve/main/docs/25-DOS-PROYECTOS-UN-ROBOT.md
3.86 kB
| # 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. | |