Lecciones Prácticas de la Construcción de IA en Dispositivo en React Native

Generación de Texto con LLMs
Usa llama.rn para ejecutar modelos GGUF en React Native. Envuelve llama.cpp y proporciona enlaces nativos para Android (JNI) e iOS (Metal). La transmisión de tokens mediante callbacks funciona bien.
La gestión de memoria es crítica: un modelo 7B Q4 necesita ~5.5 GB de RAM en tiempo de ejecución (tamaño del archivo × 1.5 para la caché KV y activaciones). Usa el 60% de la RAM del dispositivo como presupuesto máximo, advierte al 50% y bloquea al 60% para evitar que el sistema operativo cierre la aplicación.
La aceleración por GPU usa OpenCL en Android (GPUs Adreno) y Metal en iOS. Flash attention falla con capas GPU > 0 en Android, así que impón esto en el código. La cuantización de la caché KV (f16/q8_0/q4_0) es más beneficiosa que la GPU para la mayoría de dispositivos; pasar de f16 a q4_0 aproximadamente triplicó la velocidad de inferencia en las pruebas.
Generación de Imágenes con Stable Diffusion
Esto es específico de la plataforma, sin una sola biblioteca que cubra ambas.
- Android: Usa MNN (framework de Alibaba, CPU, funciona en todos los dispositivos ARM64) y QNN (Qualcomm AI Engine, acelerado por NPU, solo para Snapdragon 8 Gen 1+). QNN es 3× más rápido pero solo funciona en chips Qualcomm recientes. Implementa detección en tiempo de ejecución con retroceso automático.
- iOS: Usa la canalización ml-stable-diffusion de Apple con aceleración Core ML y Neural Engine. Los modelos paletizados (~1 GB, 6 bits) son excelentes para dispositivos con memoria limitada; la precisión completa (~4 GB, fp16) es más rápida en ANE pero necesita margen.
Benchmarks del mundo real: 5–10 segundos en NPU Snapdragon, 15 segundos en CPU en gama alta, 8–15 segundos en ANE de iOS para 512×512 a 20 pasos. Muestra una vista previa en tiempo real cada N pasos de eliminación de ruido para evitar que los usuarios piensen que la aplicación se congeló.
Transcripción de Voz con Whisper
whisper.rn envuelve whisper.cpp y es sencillo de integrar. Ofrece múltiples tamaños de modelo (Tiny/Base/Small) y permite a los usuarios elegir entre velocidad y precisión. La transcripción parcial en tiempo real (palabras que aparecen mientras hablan) hace que se sienta nativa.
Almacena el audio en búfer en código nativo y límpialo después de la transcripción; no escribas archivos de audio en el disco si la privacidad es importante.
Visión con Modelos Multimodales
Los modelos de visión necesitan dos archivos: el GGUF principal y un compañero mmproj (proyector multimodal). Maneja esto de forma transparente: detecta automáticamente modelos de visión, descarga automáticamente el mmproj, rastréalos como una sola unidad y busca en el directorio del modelo en tiempo de ejecución si el enlace se rompe. Descarga ambos archivos en paralelo para reducir el tiempo de descarga casi a la mitad para un modelo de visión de 2B.
SmolVLM a 500M es el punto óptimo para móviles, con ~7 segundos en dispositivos insignia, capaz para lectura de documentos y descripción de escenas.
Llamadas a Herramientas para Bucles de Agentes en el Dispositivo
Los modelos que admiten llamadas a funciones pueden usar herramientas (búsqueda web, calculadora, fecha/hora, información del dispositivo) a través de un bucle automático: el LLM genera, analiza las llamadas a herramientas, las ejecuta, inyecta los resultados de vuelta en el contexto, el LLM continúa. Límitalo a un máximo de 3 iteraciones, 5 llamadas totales para evitar bucles infinitos.
Soporta dos rutas de análisis: los modelos más grandes generan llamadas a herramientas JSON estructuradas de forma nativa a través de llama.rn, mientras que los modelos más pequeños generan XML como <tool_call>. Detecta el soporte de herramientas en el momento de carga del modelo inspeccionando la plantilla de chat jinja; si el modelo no admite herramientas, no inyectes definiciones de herramientas en el mensaje del sistema para evitar alucinaciones. La calculadora usa un analizador de descenso recursivo—nunca eval().
Clasificación de Intención
Si tu aplicación hace tanto generación de texto como de imágenes, necesitas decidir lo que el usuario quiere basándote en el análisis de entrada.
📖 Read the full source: r/LocalLLaMA
👀 Ver también

Errores comunes de instalación de OpenClaw y cómo solucionarlos
Una publicación de Reddit consolida soluciones para varios problemas comunes de instalación de OpenClaw, incluyendo configuración de PATH, errores de permisos, requisitos de versión de Node.js, problemas de TTY y problemas de estado de complementos.

Estructura de Código de Claude que Sobrevivió a Múltiples Proyectos Reales
Un desarrollador comparte una configuración de Claude Code que resistió en 2-3 proyectos reales con múltiples habilidades, servidores MCP y agentes. Los hallazgos clave incluyen usar CLAUDE MD para consistencia, dividir habilidades por intención, implementar hooks y mantener el uso de contexto por debajo del 60%.

Análisis de los Patrones de Ingeniería de Producción de Claude Code a partir del Código Fuente Inverso
Un desarrollador ha descompilado aproximadamente 500,000 líneas del código fuente TypeScript de Claude Code en un manual técnico de 19 capítulos que documenta patrones de ingeniería de producción que surgen bajo carga real, dinero real y adversarios reales.

OpenClaw Memory Journey: Búsqueda Integrada vs MemPalace para Recuerdo de Sesiones en Tiempo Real
Un desarrollador compara memorySearch incorporado, QMD y MemPalace en Intel Mac. El indexado en tiempo real falla; opta por una estrategia de recuperación dividida con reindexación programada.