Dos instancias de Comal pueden pedirse capacidades. Cada una conserva sus permisos, conversación y recibos; los mensajes no transfieren la autoridad del usuario. ## 1. Abre visual Desde la raíz de Comal, con COMAL_OLLAMA_KEY configurada para el perfil de ejemplo: ```sh node bin/comal.mjs --providers-config examples/comal-providers.json --profile vision --name visual ``` El perfil usa MiniMax M3 a través de Ollama. La clave de Ollama y una suscripción directa de MiniMax son accesos distintos. También puedes crear otro perfil visual compatible. ## 2. Abre el residente En otra terminal, con un login Codex ya completado: ```sh node bin/comal.mjs --providers-config examples/comal-providers.json --profile codex --name residente ``` También puede usar el residente local. Mantén ambas instancias abiertas. La TUI escucha mensajes por defecto; en modo headless usa `-p --listen`. ## 3. Pide el encargo ```text Pídele a la sesión visual que analice screenshot.jpg de este workspace usando su capacidad vision. Pregúntale qué aparece y qué detalles importantes observa. Cuando llegue su informe, incorpóralo a tu respuesta. ``` El archivo debe existir dentro del workspace **del receptor**. No se adjuntan archivos ni se copian automáticamente entre workspaces: viaja texto y una capacidad requerida. ## Qué ocurre debajo ListAgents descubre otras sesiones vivas. SendMessage envía a un ID o nombre inequívoco; una sesión ocupada puede aceptar correo para el siguiente límite seguro. Un autoenvío es un error de identidad, no un rechazo por estar ocupada. La casa prepara capacidades solicitadas y el pack de inspección de lectura. Una respuesta mantiene el request_id original como reply_to. El host devuelve el informe acotado de un turno iniciado por peer, bajo el mismo juez. Entregado no equivale a ejecutado. ## Controles útiles ```text /list-agents /send visual Describe screenshot.jpg /inbox /inbox hold /inbox release all /inbox accept ``` `hold` conserva mensajes sin iniciar trabajo; `refuse` rechaza entrada. Para consumir los recibidos durante hold, libera los retenidos con `/inbox release all` y vuelve a aceptar con `/inbox accept`. Cambiar a accept por sí solo no libera los anteriores; release por sí solo no cambia el modo hold. Usa IDs si un nombre es ambiguo. Los mensajes son locales entre procesos del mismo usuario; no es un relay entre máquinas ni se conecta al socket privado de Claude. ## Comprueba el cierre Busca el informe recibido y su procedencia en el residente. Un análisis de MiniMax incorporado por Codex sigue siendo un reporte del proveedor, no una verificación visual independiente del residente.