Cómo se reconoce: lo que hace el agente y lo que dice el registro

En pantalla no aparece ningún error. Lo que ves es un agente que se comporta como si no hubiera leído el encargo, porque de hecho no lo ha leído. En nuestra prueba (OpenCode 1.19.5, Ollama 0.40.14, Windows 11, RTX 5060 Ti de 16 GB), gemma4:12b se puso a planificar una función «Remember Me» para un formulario de inicio de sesión que no existía y llamó 65 veces a su herramienta de lista de tareas hasta agotar los 400 segundos. qwen3.5:9b, con el mismo encargo, respondió que no tenía acceso a archivos.

La prueba definitiva está en el registro de Ollama. Si usas la aplicación, el registro está en %LOCALAPPDATA%\Ollama\server.log; si lanzas ollama serve a mano, sale en esa misma ventana. Busca la advertencia «truncating input prompt»: en nuestra sesión apareció 66 veces, con prompts de entre 22.159 y 23.004 tokens recortados a unos 2.050.

Buscar el recorte en el registro (PowerShell)
  1. Select-String -Path "$env:LOCALAPPDATA\Ollama\server.log" -Pattern "truncating input prompt" | Select-Object -Last 5
  2. Lo que vimos: level=WARN source=llama_server.go:344 msg="truncating input prompt" limit=2051 prompt=22159 keep=5 new=2051
  3. Y al arrancar: msg="vram-based default context" total_vram="15.9 GiB" default_num_ctx=4096

Líneas copiadas del registro de Ollama 0.40.14 en el experimento E-07 del laboratorio (04/11/2026).

Por qué pasa: 4.096 tokens de contexto frente a 22.919 de instrucciones

La documentación de Ollama fija el contexto por defecto según la VRAM: 4k tokens por debajo de 24 GiB, 32k entre 24 y 48 GiB y 256k a partir de 48 (context length en la documentación de Ollama). Con 16 GB, lo que tiene casi cualquier PC doméstico con una buena gráfica, te quedas en 4.096.

OpenCode, antes de tu mensaje, manda sus instrucciones de sistema, la definición de cada herramienta (leer, buscar, escribir, ejecutar…) y todo lo que encuentre en tu configuración: AGENTS.md, skills, servidores MCP. En nuestro equipo eso sumó 22.919 tokens. Con una configuración global vacía bajó a 7.440, medido con otro servidor local (Strata) y el mismo OpenCode. Ni siquiera la versión limpia cabe en 4.096: el problema no es tu configuración, es el valor por defecto.

Por eso la propia documentación de OpenCode recomienda subir num_ctx a 16k–32k si las herramientas no funcionan (proveedores de OpenCode), y la integración oficial de Ollama con OpenCode pide 64k o más (Ollama + OpenCode). Nosotros lo hicimos funcionar con 32.768; 64k cuesta más VRAM.

El arreglo paso a paso en PowerShell

Ollama lee OLLAMA_CONTEXT_LENGTH solo al arrancar, así que primero hay que cerrarlo del todo (también el icono de la bandeja). Elige una de las dos formas: para la sesión actual o permanente para tu usuario.

Subir el contexto y conectar OpenCode
  1. 1. Cerrar Ollama: Get-Process ollama* -ErrorAction SilentlyContinue | Stop-Process -Force
  2. 2a. Solo esta sesión: $env:OLLAMA_CONTEXT_LENGTH = "32768"; ollama serve
  3. 2b. Permanente: [Environment]::SetEnvironmentVariable("OLLAMA_CONTEXT_LENGTH", "32768", "User") y vuelve a abrir la aplicación de Ollama
  4. 3. opencode.json del proyecto: { "provider": { "ollama": { "npm": "@ai-sdk/openai-compatible", "name": "Ollama (local)", "options": { "baseURL": "http://127.0.0.1:11434/v1" }, "models": { "gemma4:12b": { "name": "gemma4 12B local" } } } } }
  5. 4. Añade en el mismo archivo "model": "ollama/gemma4:12b" y "small_model": "ollama/gemma4:12b"
  6. 5. Probar: opencode run -m ollama/gemma4:12b "Lee acta.md y crea acciones.md con una tabla de acciones"

Los pasos 1, 2a, 3 y 5 son los del experimento E-07. El paso 4 viene de la prueba aislada con Strata (más abajo); con Ollama no lo medimos por separado.

Cómo comprobar que ha quedado arreglado

No te fíes de que «ahora parece que va». Haz tres comprobaciones con el modelo cargado, mientras OpenCode trabaja o justo después.

  • ollama ps: la columna CONTEXT debe mostrar 32768 (o el valor que hayas puesto) y PROCESSOR, «100% GPU». Si sigue en 4096, Ollama no leyó la variable: no lo cerraste del todo o la pusiste en otra ventana.
  • Registro: Select-String con «truncating input prompt» no debe devolver líneas nuevas desde la hora del arranque.
  • Comportamiento: el agente llama a herramientas de verdad (glob, read, write) y el archivo pedido aparece en la carpeta. Con 32.768, gemma4:12b lo creó en 27 segundos.
  • Memoria: con 32.768 de contexto y gemma4:12b, la VRAM del equipo rondó los 8,4 GB. Si te acercas al límite de la tarjeta, mira Ollama no usa la GPU en Windows.

La otra fuga: el small_model y la configuración global

OpenCode usa un segundo modelo, small_model, para tareas ligeras como poner título a la sesión. Su documentación dice que, si no lo configuras, busca uno más barato del mismo proveedor y, si no lo hay, usa el principal (configuración de OpenCode). El problema aparece cuando ya tienes uno definido en la configuración global (~/.config/opencode/opencode.json): los archivos se fusionan, y el small_model global sigue vigente en un proyecto «local».

Lo medimos. Con la configuración global del equipo (AGENTS.md, skills, un servidor MCP de navegador y un small_model de un proveedor en la nube), el prompt subió a 23.569 tokens, el agente entró en un bucle de leer, pensar y compactar cuatro veces en 11 minutos sin escribir nada, y opencode.exe abrió una conexión HTTPS con ese proveedor. Con la configuración global vacía y model y small_model apuntando al servidor local, el prompt bajó a 7.440 tokens y la tabla salió correcta en 2 min 50 s. Esa prueba se hizo con Strata y un modelo mayor, no con Ollama, pero la fuga depende de OpenCode, no del servidor.

Aislar OpenCode de tu configuración global
  1. $env:XDG_CONFIG_HOME = "C:\opencode-config-vacia"
  2. $env:OPENCODE_DISABLE_CLAUDE_CODE = "1"
  3. Comprobar conexiones: Get-NetTCPConnection -State Established -OwningProcess (Get-Process opencode*).Id | Select-Object RemoteAddress, RemotePort

Variables usadas en la prueba aislada del 04/11/2026 con OpenCode 1.19.5. Con todo en local, solo deberían verse conexiones a 127.0.0.1 (la primera ejecución descarga además un complemento de npm).

Lo que medimos nosotros

Arreglar el contexto hace que OpenCode funcione; no hace que un modelo de 9–12B trabaje bien. Con 32.768 tokens, gemma4:12b usó las herramientas, pero puso el número de turno en la columna de fecha y asignó como responsable a quien hablaba en cada turno, incluido un «Envío al cliente → Marta» que el acta dejaba sin responsable. qwen3.5:9b leyó el archivo y no hizo nada más (17 s). Un modelo local con un agente sirve para tareas pequeñas que puedas comprobar, no para delegar. Todos los datos y el registro están en el experimento OpenCode con un modelo local de Ollama.

Casos raros

  • «does not support tools»: es otro problema. Ollama rechaza las herramientas si la plantilla del modelo no las declara. Comprueba con ollama show <modelo> que tools aparece entre sus capacidades o usa otro modelo; subir el contexto no lo arregla.
  • Respuesta vacía tras un minuto: los modelos que razonan pueden gastarse el contexto pensando. qwen3.5:9b gastó 3.661 de 4.096 tokens razonando y devolvió texto vacío por la API /v1; con reasoning_effort: "none" respondió en 3,6 s.
  • Más contexto no es gratis: ocupa VRAM. Si el modelo deja de caber en la tarjeta, Ollama lo reparte con la RAM y la velocidad se hunde. Las cuentas están en IA local en Windows: RAM, VRAM y cuantización.
  • Skills que no se cargan en OpenCode: carpeta .opencode/skills y cabecera YAML obligatoria. Ver la plantilla de skill.

Preguntas frecuentes

¿Por qué OpenCode dice que Ollama «does not support tools»? Porque el modelo elegido no declara herramientas en su plantilla de Ollama. No es el problema del contexto: cambia a un modelo que las admita, comprobándolo con ollama show.

¿Cuál es la configuración mínima de OpenCode para Ollama? Un proveedor @ai-sdk/openai-compatible con baseURL http://127.0.0.1:11434/v1 y el modelo declarado, más Ollama arrancado con OLLAMA_CONTEXT_LENGTH de 32.768 o superior. Fija también small_model al modelo local.

¿Funciona OpenCode con Ollama en local en Windows? Sí: todo lo de esta guía está medido en Windows 11. La condición es el contexto; con 4.096 no funciona con ningún modelo.

¿Es gratis usar OpenCode con modelos locales? OpenCode y Ollama no cobran por usarlos en tu PC; pagas en VRAM, electricidad y calidad. Si tu configuración global tiene un small_model en la nube, ese sí sale de tu equipo.