Allí aprendí Swift con mi maestro, Julio César Fernández. Pero Julio, como cualquier persona, no estaba disponible a las tres de la madrugada cuando me atascaba con un async que no compilaba. Así que me pregunté si podía tener algo parecido a ese acompañamiento las 24 horas, en modo local: sin enviar mi código a ningún servidor, sin depender de internet y sin suscripciones.

Se puede. No sustituye a un maestro de verdad (ni lo pretende), pero como compañero de estudio que responde con el estilo y los ejemplos de mi formación, funciona de maravilla. Este tutorial está pensado para equipos con un mínimo de 24 GB de RAM; yo lo monté en mi MacBook Pro M5 Pro.

Qué vamos a montar

LM Studio (en tu Mac)
  ├─ Un modelo especializado en Swift (7B, cuantizado)
  └─ Conocimiento propio (RAG):
       ├─ Documentación oficial de Swift 6.4
       └─ Material de la formación SDP 2024

Todo corre en localhost. Ni tu código ni la documentación salen de tu Mac.

Paso 1: el modelo

Elegí Qwen2.5-Coder-7B-Swift-Lm, un fine-tune comunitario basado en Qwen2.5-Coder-7B-Instruct y orientado a Swift moderno: SwiftUI, concurrencia, actors, Sendable, @Observable, AppKit y Combine.

Lo importante es la versión: cuantizada, en Q4_K_M. La variante F16 ronda los 15 GB, demasiado para tener a la vez LM Studio, Xcode, el Simulator y el navegador. En Q4 ocupa una fracción y deja memoria de sobra.

Se descarga desde LM Studio, en la pestaña Discover.

Paso 2: reunir el conocimiento

Un modelo no puede conocer de memoria algo tan reciente como Swift 6.4, y tampoco conoce mis clases. En lugar de reentrenarlo, usé RAG: antes de responder, el modelo consulta mis documentos. Le di tres tipos de material:

Esta última parte es la que lo convierte en “mi Julio”: cuando le pregunto algo, puede apoyarse en cómo se explicó en clase y en el código real que escribimos.

Lo organicé así, un archivo por tema:

~/SwiftRAG/
├── Docs-Swift-6.4/
│   ├── LanguageGuide/
│   ├── SwiftEvolution-6.4/
│   └── CHANGELOG.md
└── SDP-2024/
    ├── Transcripciones/
    └── Codigo-profesor/

Los archivos pequeños y con nombres descriptivos son lo que mejor funciona en un RAG, y ayudan a que LM Studio cite la fuente exacta.

Paso 3: cargarlo en LM Studio

LM Studio trae RAG integrado (“Chat with Documents”), pero solo reconoce .docx, .pdf y .txt. Ni los .md ni los .swift entran tal cual. La solución es copiarlos con extensión .txt, porque ambos son texto plano:

cd ~/SwiftRAG
find . \( -name "*.md" -o -name "*.swift" \) -exec sh -c 'cp "$1" "$1.txt"' _ {} \;

Esto añade .txt al final del nombre (Closures.md.txt, ContentView.swift.txt), así se ve de un vistazo qué era cada archivo, y conserva los originales.

Después, en LM Studio:

  1. Carga el modelo y abre una conversación nueva.
  2. Pulsa el clip junto al campo de mensaje, o arrastra los archivos a la ventana del chat.
  3. Selecciona los .txt de tu carpeta ~/SwiftRAG.
  4. Como el conjunto no cabe en el contexto del modelo, LM Studio pasa solo a modo RAG: fragmenta, indexa y recupera los trozos relevantes en cada pregunta.
  5. Revisa las citas que muestra con cada respuesta: te dicen qué archivo y qué fragmento usó.

Paso 4: el system prompt

Este es el prompt base que usé:

Eres un desarrollador senior especializado en Swift e iOS. Prioriza siempre la documentación proporcionada frente a tu conocimiento de entrenamiento. Si la documentación contradice lo que recuerdas, utiliza la documentación. Si una API o comportamiento no aparece en las fuentes disponibles, indícalo claramente y no inventes.

Con material de dos épocas distintas (una formación de 2024 y documentación de Swift 6.4), conviene añadir una línea para que no mezcle versiones sin avisar:

Si el material de la formación difiere de la documentación oficial de Swift 6.4, indícalo y dime cuál es la forma actual.

Y si lo quieres más maestro que resolvedor de problemas:

Cuando te haga una pregunta de aprendizaje, guíame con pistas y un ejemplo sencillo antes de darme la solución completa.

Paso 5: ajustes recomendados

Cuidar la memoria

Con el modelo y el índice cargados, el consumo es moderado y deja sitio para trabajar. Aun así:

Cómo comprobar que funciona

Y ahora, ¿qué?

Con esto ya puedo preguntarle dudas y pedirle ayuda con código desde el chat de LM Studio, a cualquier hora. En el siguiente artículo cuento cómo conecté este mismo modelo a Xcode para usarlo sin salir del editor.