Configurar VSCode con Elixir y OpenCode

Este capítulo explica cómo dejar listo tu entorno para trabajar con Elixir y usar agentes de IA.

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  • Visual Studio Code instalado.

  • Una terminal disponible (PowerShell en Windows, bash/zsh en Linux).

  • Conexión a internet para descargar los paquetes.

Erlang/OTP

Erlang debe instalarse antes que Elixir. Sin la BEAM (la máquina virtual de Erlang), Elixir no puede ejecutarse.

Windows

Puedes usar winget (incluido en Windows 10/11):

winget install Erlang.OTP

También puedes descargar el instalador manualmente desde erlang.org/downloads.

Linux

Ubuntu / Debian
sudo apt update
sudo apt install erlang
Fedora / RHEL
sudo dnf install erlang

Elixir

Windows

Con winget:

winget install ElixirLang.Elixir

O descarga el instalador desde elixir-lang.org.

Linux

Ubuntu / Debian
sudo apt install elixir
Fedora / RHEL
sudo dnf install elixir

Gestión de versiones: Si trabajas en múltiples proyectos con distintas versiones de Elixir/Erlang, herramientas como asdf o mise te permiten instalar y cambiar entre versiones fácilmente. Son la opción preferida en entornos profesionales.

# Con mise (recomendado):
mise install elixir@1.18
mise install erlang@27

Verificar instalación

erl -version  (1)
elixir --version  (2)
1 Muestra la versión de Erlang/OTP instalada.
2 Muestra la versión de Elixir y confirma que detecta la BEAM.

Deberías ver algo como:

Erlang/OTP 27 [erts-15.x]

Elixir 1.18.x (compiled with Erlang/OTP 27)

Prueba el shell interactivo con iex. Escribe IO.puts("¡Hola desde Elixir!") y presiona Enter. Para salir, presiona Ctrl+C dos veces.

Configuración de VS Code

Extensiones recomendadas

Abre VSCode y ve a la pestaña de extensiones (Ctrl+Shift+X). Busca e instala:

ElixirLS

Marketplace de Extensiones - ElixirLS

Es la pieza fundamental. Proporciona autocompletado, diagnóstico de errores y formateo automático.

Búscala como ElixirLS en el marketplace o instálala desde la terminal:

code --install-extension JakeBecker.elixir-ls

Livebook (opcional)

Si quieres usar Livebook (notebooks interactivos para Elixir, similar a Jupyter), esta extensión te permite abrir archivos .livemd directamente en VSCode.

code --install-extension livebook.vscode-livebook

IA en el Editor (Extensiones)

Para muchos desarrolladores, la forma más cómoda de usar IA es directamente dentro del editor. Aquí tienes las mejores opciones para VS Code:

1. OpenCode

Ya que usaremos la aplicación de escritorio más adelante, puedes instalar su extensión para VS Code. Te proporciona un chat lateral y autocompletado en tus archivos .ex y .exs, compartiendo la misma configuración.

code --install-extension anomalyco.opencode

2. Continue (Modelos Locales)

Continue es una extensión open source muy potente. Es ideal si planeas usar Ollama para tener autocompletado gratuito y completamente privado en tu propia máquina, sin que tu código salga de tu computador.

code --install-extension Continue.continue

3. GitHub Copilot

El estándar actual de la industria. Si activas la capa gratuita ("Copilot Free") en tu cuenta de GitHub, instalar esta extensión te da autocompletado instantáneo alimentado por modelos como GPT-4o o Claude 3.5 Sonnet.

code --install-extension GitHub.copilot

OpenCode desktop

Es un agente de código que te ayuda a escribir y depurar código desde una interfaz gráfica o terminal.

Características

  • Multi-Proveedor: Compatible con más de 75 proveedores de LLM.

  • Aplicación de escritorio: Interfaz gráfica con chat, revisión de cambios y navegación de archivos.

  • Integración LSP: Carga automáticamente los Language Servers (como ElixirLS) para darle contexto al modelo.

  • Multi-sesión: Puedes tener múltiples agentes trabajando en paralelo sobre el mismo proyecto.

  • GitHub Copilot: Puedes iniciar sesión con tu cuenta de GitHub para usar tu plan de Copilot.

  • Privacidad: OpenCode no almacena tu código ni datos de contexto.

Opinión Personal: OpenCode es como Google Antigravity pero con más opciones de configuración y modelos disponibles, además de ser open source.

Instalación

Windows

Descarga el instalador directamente desde la web oficial:

  1. Ve a opencode.ai/download

  2. Descarga el instalador para Windows (x64)

  3. Ejecuta el archivo .exe y sigue las instrucciones

También puedes instalar la versión de línea de comandos con:

Usando Chocolatey
choco install opencode

Linux

Instalación en Linux (click para expandir)

Descarga el paquete .deb o .rpm desde opencode.ai/download, o instala la versión de línea de comandos:

Usando Homebrew
brew install anomalyco/tap/opencode
Usando el script de instalación
curl -fsSL https://opencode.ai/install | bash
Arch Linux
sudo pacman -S opencode

Configuración

La forma más rápida de configurar OpenCode es usar el comando /connect dentro de la aplicación. Te guiará paso a paso para conectar tu proveedor de IA preferido.

Configuración manual

OpenCode usa un archivo opencode.json que se puede colocar en:

  1. La raíz de tu proyecto (configuración local)

  2. $HOME/.config/opencode/opencode.json (configuración global)

Ejemplo para usar con Anthropic:

{
  "providers": {
    "anthropic": {
      "apiKey": "tu-api-key-aqui",  (1)
      "disabled": false
    }
  },
  "lsp": {
    "elixir": {
      "command": "elixir-ls"  (2)
    }
  }
}
1 Reemplaza con tu API key real. Nunca la subas a un repositorio público.
2 Conecta ElixirLS para que el agente entienda tu código Elixir.

Las API keys también se pueden configurar como variables de entorno: ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, GROQ_API_KEY.

Si tienes GitHub Copilot, puedes iniciar sesión directamente desde OpenCode sin necesidad de configurar API keys adicionales.

Uso básico

Interfaz de escritorio de OpenCode

Al abrir OpenCode en tu proyecto de Elixir, verás una interfaz de chat donde puedes:

  • Escribir preguntas sobre tu código

  • Pedir que genere funciones en Elixir

  • Solicitar depuración de errores

  • Cambiar entre modo Build (hace cambios) y Plan (solo sugiere) usando la tecla Tab

Ejemplo: Generar código Elixir
Crea una función que calcule el factorial de un número usando recursión en Elixir

OpenCode generará algo como:

defmodule Matematica do
  @doc """
  Calcula el factorial de un número entero no negativo.

  ## Ejemplos

      iex> Matematica.factorial(5)
      120

      iex> Matematica.factorial(0)
      1
  """
  def factorial(0), do: 1
  def factorial(n) when n > 0 do
    n * factorial(n - 1)
  end
end

Opciones Gratuitas

OpenCode permite usar varios modelos de calidad sin costo a través de su servicio Zen o corriendo modelos localmente.

Modelos de OpenCode Zen

Modelos gratuitos en OpenCode Zen

Dentro de la aplicación, en el selector de modelos, encontrarás varias opciones gratuitas:

Modelo Punto Fuerte Uso Ideal

Big Pickle

Versatilidad general

Tareas variadas, exploración de código

MiniMax M2.5 Free

Equilibrio velocidad/calidad

Programación diaria, refactorización

Para usarlos, solo tienes que seleccionarlos en el menú desplegable de modelos dentro de OpenCode.

Ollama (modelos locales)

Si prefieres no depender de servicios en la nube, puedes instalar Ollama y ejecutar modelos directamente en tu computador. Es completamente gratuito y privado, aunque requiere hardware con buena capacidad de procesamiento (mínimo 16GB de RAM recomendados).

ollama pull llama3.2  (1)
# OpenCode se conecta automáticamente al endpoint local  (2)
1 Descarga el modelo Llama 3.2 (~4GB). Solo necesitas hacerlo una vez.
2 OpenCode detecta Ollama en localhost:11434 sin configuración adicional.

Para un comparativo detallado de modelos locales (Ollama, LMStudio, Pinokio) y cuándo conviene usarlos vs. servicios en la nube, consulta el capítulo Introducción a la Programación Agéntica.

Caso de Uso: Construyendo un Temporizador con OpenCode

Ahora que tenemos nuestro entorno listo, usaremos OpenCode para crear una aplicación funcional en Elixir. En vez de un simple "Hola Mundo", construiremos un temporizador de eventos especiales.

El Prompt Inicial

La ventaja de usar agentes es que podemos describir la lógica compleja que necesitamos antes de escribir código. Ingresamos las siguientes instrucciones en OpenCode:

Prompt utilizado en OpenCode

Como se observa, solicitamos una app que anote fechas, persista los datos, corra en segundo plano, y cuente con una interfaz para administrar (CRUD) los eventos mostrando notificaciones del sistema.

El Resultado

OpenCode genera el proyecto completo (equivalente a mix new event_timer), configura las dependencias y estructura la lógica en segundo plano.

Interfaz de la aplicación Event Timer

La aplicación final resultante incluye una interfaz clara donde podemos ver los eventos próximos, la cuenta regresiva, y gestionar las fechas importantes.

¿Quieres explorar el código y probarlo? Para no saturar este artículo, hemos habilitado la carpeta apps/ en la raíz del repositorio.

Puedes encontrar todo el código funcional de esta aplicación en: apps/event_timer.