DevSpaces + Continue AI (Granite)
Red Hat OpenShift Dev Spaces provee espacios de trabajo cloud-native con Continue AI preconfigurado para usar IBM Granite 3.1 2B Instruct servido por OpenShift AI (KServe + llama.cpp). Los desarrolladores pueden generar rutas Apache Camel en YAML DSL usando generación de código asistida por IA directamente en el IDE.
Arquitectura
| Componente | Rol |
|---|---|
DevSpaces |
IDE cloud-native basado en Eclipse Che — corre en OpenShift con extensiones preinstaladas |
Continue AI |
Asistente de código IA open-source (extensión VS Code) — chat, autocompletado, edición inline |
Granite 3.1 2B Instruct |
LLM compacto de IBM (Q4_K_M GGUF) corriendo en llama.cpp vía KServe |
OpenShift AI (KServe) |
Plataforma de model serving — aloja el modelo Granite como InferenceService con API compatible OpenAI |
Kaoto |
Diseñador visual de rutas Apache Camel — editar YAML DSL mediante drag-and-drop |
Configuración del Workspace
Devfile
Cada workspace se define con un devfile.yaml que configura el contenedor, extensiones y tareas de inicio:
schemaVersion: 2.2.2
metadata:
name: my-camel-cdc-route
components:
- name: tools
container:
image: registry.redhat.io/devspaces/udi-rhel9:latest
memoryLimit: 2Gi
cpuLimit: "1"
commands:
- id: install-extensions
exec:
component: tools
commandLine: |
export LD_LIBRARY_PATH=/checode/checode-linux-libc/ubi9/ld_libs/openssl:/checode/checode-linux-libc/ubi9/ld_libs/core:/usr/lib64
CHE_CODE=/checode/checode-linux-libc/ubi9/bin/che-code
EXT_DIR=/checode/checode-linux-libc/ubi9/extensions
$CHE_CODE --extensions-dir $EXT_DIR --install-extension redhat.vscode-kaoto --force
$CHE_CODE --extensions-dir $EXT_DIR --install-extension redhat.vscode-apache-camel --force
$CHE_CODE --extensions-dir $EXT_DIR --install-extension Continue.continue --force
$CHE_CODE --extensions-dir $EXT_DIR --install-extension redhat.vscode-yaml --force
$CHE_CODE --extensions-dir $EXT_DIR --install-extension redhat.java --force
$CHE_CODE --extensions-dir $EXT_DIR --install-extension redhat.vscode-quarkus --force
- id: setup-project
exec:
component: tools
commandLine: |
chmod +x /projects/my-camel-cdc-route/mvnw
mkdir -p /home/user/.continue && cp /projects/my-camel-cdc-route/continue-config.json /home/user/.continue/config.json
events:
postStart:
- install-extensions
- setup-project
El LD_LIBRARY_PATH debe referenciar los subdirectorios ubi9 (ld_libs/openssl y ld_libs/core). El directorio de extensiones es /checode/checode-linux-libc/ubi9/extensions. Usar paths incorrectos causa fallas silenciosas de instalación.
|
Extensiones Preinstaladas
| Extensión | Propósito |
|---|---|
|
Diseñador visual de rutas Camel |
|
Soporte de lenguaje Camel YAML DSL |
|
Asistente de código con IA |
|
Soporte de lenguaje YAML |
|
Servidor de lenguaje Java |
|
Herramientas de desarrollo Quarkus |
Configuración de Continue AI
El archivo continue-config.json conecta Continue con el modelo Granite servido por OpenShift AI:
{
"models": [
{
"title": "Granite 3.1 2B (OpenShift AI)",
"model": "granite-3.1-2b-instruct-Q4_K_M.gguf",
"apiBase": "http://granite-llm-predictor.neuroface.svc.cluster.local:8080/v1",
"provider": "openai",
"apiKey": "no-key",
"contextLength": 8192,
"completionOptions": {
"maxTokens": 1024
}
}
],
"tabAutocompleteModel": {
"title": "Granite 3.1 2B Autocomplete",
"model": "granite-3.1-2b-instruct-Q4_K_M.gguf",
"apiBase": "http://granite-llm-predictor.neuroface.svc.cluster.local:8080/v1",
"provider": "openai",
"apiKey": "no-key",
"contextLength": 8192,
"completionOptions": {
"maxTokens": 128
}
},
"allowAnonymousTelemetry": false
}
Model Serving — Granite en llama.cpp
El modelo Granite corre como un InferenceService de KServe con un ServingRuntime personalizado:
| Parámetro | Valor |
|---|---|
Modelo |
|
Runtime |
|
Tamaño de contexto |
8192 tokens |
Threads |
8 |
Slots paralelos |
1 |
API |
Compatible OpenAI ( |
Endpoint |
|
IDE DevSpaces con Continue AI
La captura muestra un workspace de DevSpaces con el panel de Continue AI abierto en el lado izquierdo. El asistente de IA usa el modelo Granite 3.1 2B servido por OpenShift AI para generar rutas Apache Camel.
Creando Rutas Camel con IA
Flujo de trabajo
-
Crear un archivo nuevo:
touch routes/mi-nueva-ruta.camel.yaml -
Abrir el archivo en el editor
-
Presionar
Ctrl+Ipara abrir la edición inline de Continue, o usar el panel de chat -
Escribir un prompt describiendo la ruta — usar
@para incluir contexto del proyecto -
Continue genera el código YAML DSL directamente en el archivo
-
Abrir el archivo con Kaoto para visualizar y refinar la ruta
Usando el Contexto del Proyecto (Proveedores @)
Continue está preconfigurado con proveedores de contexto que le dan visibilidad a la IA sobre el proyecto. Escribir @ en el chat para ver las opciones disponibles:
| Proveedor | Qué hace |
|---|---|
|
Incluye un archivo específico como contexto (ej. la ruta CDC existente) |
|
Busca snippets relevantes en todo el proyecto automáticamente |
|
Referencia todo el código de una carpeta específica (ej. |
|
Incluye el archivo que tenés abierto en el editor |
|
Muestra la estructura completa de archivos del proyecto |
|
Incluye errores y warnings actuales del linter en el archivo activo |
Usar @File routes/cdc-to-mail.camel.yaml antes de un prompt le da al modelo un ejemplo real de la estructura YAML DSL esperada y produce resultados mucho mejores.
|
Prompts para Trabajar con el Componente camel-kaoto
El proyecto tiene una ruta de ejemplo en routes/cdc-to-mail.camel.yaml. Usarla como referencia al pedir a la IA que genere nuevas rutas.
Básico — Generar rutas desde cero
| Prompt | Qué genera |
|---|---|
|
Una ruta consumidora de Kafka siguiendo la misma estructura de la ruta CDC existente |
|
Una ruta Kafka-a-REST modelada a partir del template existente |
|
Una ruta timer de health-check (sin dependencia de Kafka) |
Intermedio — Enrutamiento basado en contenido y transformaciones
| Prompt | Qué genera |
|---|---|
|
Extiende el patrón choice con un handler de operación de borrado |
|
Un enrutador multi-branch basado en contenido para procesamiento de órdenes |
|
Ruta con marshalling XML en vez de JSON |
Avanzado — Integraciones multi-paso
| Prompt | Qué genera |
|---|---|
|
Un pipeline de enriquecimiento multi-paso: Kafka → unmarshal → REST enrich → marshal → REST notify |
|
Una ruta con manejo de errores try/catch y cola dead-letter |
|
Una ruta de agregación que agrupa mensajes Kafka antes de enviar |
Contexto y Exploración
| Prompt | Qué hace |
|---|---|
|
Analiza la estructura del proyecto, rutas y configuración |
|
Provee un recorrido detallado de cada paso de la ruta |
|
Lista y describe todas las rutas encontradas en el proyecto |
|
Explica cómo Quarkus descubre y carga las rutas Camel |
Mantener los prompts concisos. El modelo Granite 2B (8192 tokens de contexto) funciona mejor con instrucciones cortas y directas. Al incluir archivos vía @File, evitar agregar demasiados archivos grandes a la vez.
|
Integración con Developer Hub
El template de software en Developer Hub crea nuevos proyectos Camel CDC con:
-
devfile.yamlpreconfigurado con todas las extensiones -
continue-config.jsonapuntando al modelo Granite -
Maven wrapper con Quarkus 3.15
-
Ruta CDC de ejemplo (
cdc-to-mail.camel.yaml) -
URL de factory de DevSpaces correcta para creación de workspace con un click
Acceder a Developer Hub: https://developer-hub.
Resolución de Problemas
| Problema | Solución |
|---|---|
Extensiones no visibles después del inicio del workspace |
Recargar el navegador con F5 — las extensiones se instalan en |
|
Ejecutar |
Continue muestra "context size exceeded" |
El |
Workspace abre con "generateName: empty" |
Usar la URL factory con el devfile raw: |