Así funciona la IA de Pocket Code por dentro
Un vistazo técnico a cómo diseñamos el asistente de IA de Pocket Code: autocompletado inteligente, chat contextual, y 15 herramientas integradas con los módulos de la app.
Así funciona la IA de Pocket Code por dentro
La inteligencia artificial de Pocket Code no es un chatbot genérico pegado a un editor. Es un sistema integrado que entiende tu proyecto, tu código y los módulos que estás usando. En este post te contamos cómo lo hemos construido.
Arquitectura general
El sistema de IA tiene tres capas principales:
1. Autocompletado inteligente (LSP)
El autocompletado funciona mediante el protocolo Language Server Protocol (LSP). Cuando escribes código, el editor envía el contexto (archivo actual, posición del cursor, archivos abiertos) al modelo de IA, que devuelve sugerencias de completado.
Lo que hace diferente a nuestro autocompletado:
- Contexto del proyecto completo: No solo ve el archivo actual, sino la estructura del proyecto, imports y dependencias
- Modelos optimizados: Usamos temperatura 0.0 y topK=1 para máxima precisión en las sugerencias
- Cache inteligente: Separamos caché por modelo (chat vs completado) para evitar contaminación de contexto
- Fill-in-the-Middle (FIM): El modelo recibe el código antes Y después del cursor para sugerencias más precisas
2. Chat contextual
El chat de IA no es un simple prompt-response. Cuando le haces una pregunta:
- Se analiza el archivo abierto actual
- Se extrae el código seleccionado (si hay selección)
- Se incluye la estructura del proyecto
- Se envía todo como contexto al modelo
Esto significa que puedes preguntar "¿qué hace esta función?" sin tener que copiar y pegar código.
3. Herramientas de módulos (Tool Calling)
Esta es la parte más potente. Hemos registrado 15 herramientas que la IA puede invocar para interactuar directamente con los módulos de la app:
| Herramienta | Qué hace |
|---|---|
create_file | Crea archivos en tu proyecto |
run_terminal_command | Ejecuta comandos en la terminal integrada |
query_database | Consulta bases de datos SQLite |
preview_layout | Previsualiza layouts en el diseñador |
git_status | Comprueba el estado de Git |
run_tests | Ejecuta tests unitarios |
install_package | Instala dependencias |
read_file | Lee archivos del proyecto |
search_code | Busca en todo el codebase |
refactor_symbol | Renombra símbolos de forma segura |
Cuando le dices a la IA "crea un ViewModel para la lista de usuarios", no solo genera código — crea el archivo, lo coloca en la carpeta correcta y actualiza los imports necesarios.
Seguridad
Toda la ejecución pasa por validaciones estrictas:
- Command injection: Los comandos de terminal se sanitizan contra inyección
- Sandboxing: Los comandos solo pueden ejecutarse dentro del directorio del proyecto
- Timeouts: Cada operación tiene un límite de tiempo para evitar procesos zombie
- Null safety: Todas las herramientas validan valores nulos antes de ejecutar
Modelos soportados
Pocket Code funciona con múltiples proveedores de IA:
- Gemini (Google) — Modelo por defecto, excelente para Kotlin/Android
- OpenAI (GPT-4, GPT-3.5) — Alternativa robusta
- Modelos locales — Vía Ollama para uso sin conexión
El usuario elige su modelo y API key en Configuración > Claves API.
Lo que viene
Estamos trabajando en:
- RAG (Retrieval-Augmented Generation): Para que la IA busque en la documentación de Android y Kotlin antes de responder
- Multi-file editing: Editar múltiples archivos en una sola operación
- Prompt templates: Plantillas de prompts reutilizables para tareas comunes
Conclusión
La IA de Pocket Code no es un componente añadido — es parte integral de la experiencia de desarrollo. Cada módulo de la app (terminal, base de datos, diseñador, Git) está conectado, y la IA puede orquestarlos todos.
Puedes ver el estado completo del desarrollo en nuestro post de estado.