OpenCode es una herramienta de programación con IA que vive dentro de la terminal y es de código abierto. No es un editor ni un plugin del editor: se lanza en la carpeta del proyecto y trabaja sobre esos ficheros.
curl -fsSL https://opencode.ai/install | bash opencode --version
Para trabajar, siempre desde la raíz del proyecto:
cd mi-proyecto
opencode
Se abre la TUI: la caja de entrada abajo, y encima la conversación.
OpenCode no es un modelo: habla con modelos de otros. Conviene no confundir las dos cosas:
| Qué es | Comando | Cuándo se toca | |
|---|---|---|---|
| Proveedor | El servicio al que te conectas | /connect | Una vez, al entrar con tu cuenta |
| Modelo | La IA concreta que responde | /models | Cuantas veces quieras, incluso a mitad de sesión |
Recién instalado ya funciona, sin registro ni tarjeta: de serie usa los modelos de OpenCode Zen, y varios son gratuitos. En /models se reconocen por la etiqueta free —la lista concreta cambia con el tiempo—.
Abre la misma pantalla que sale en el primer arranque, con la lista de servicios a los que enlazarse. Lo importante es que no te obliga a contratar nada nuevo: si ya pagas ChatGPT, GitHub Copilot, Anthropic o Google, esa suscripción se reaprovecha desde OpenCode. Puedes tener varios proveedores conectados a la vez.
Lista todos los modelos de los proveedores que tengas conectados y elige con cuál se manda la siguiente petición. El cambio es instantáneo y la conversación no se pierde, y de ahí sale el flujo más rentable del día a día:
Tab a Build con uno más barato, que es donde solo hay que ejecutar lo ya decidido.Todo lo que se hace con OpenCode se escribe en la misma caja. Lo que cambia es con qué empieza la línea.
| Empieza por | Qué hace | Ejemplo |
|---|---|---|
| texto | Le hablas al agente. Gasta tokens. | arregla el error de validación del formulario |
@ | Referencia un fichero concreto. | @src/api/login.ts revisa el manejo de errores |
! | Ejecuta un comando de shell. No gasta tokens. | !npm test |
/ | Comando de OpenCode. Escribiendo solo / salen todos. | /compact |
Las dos teclas que más dinero ahorran son @ y !:
@ el modelo no tiene que salir a buscar el fichero: va directo. Un @public/robots.txt resuelve en un par de segundos lo que buscando a ciegas cuesta diez y unos cuantos miles de tokens.! ejecutas tú los comandos —!git status, !npm test— y su salida entra en el contexto. El patrón normal es: lanzas tú los tests con ! y luego le pides que arregle lo que ha fallado, sin que gaste una sola llamada en averiguar cómo se ejecutan.Mayús+Enter inserta un salto de línea sin enviar el prompt. Las flechas ↑ / ↓ recorren los prompts que ya has mandado, para reenviarlos sin volver a escribirlos.
OpenCode tiene dos modos de trabajo y se alterna entre ellos con Tab:
| Modo | Qué hace |
|---|---|
| Plan | Lee, analiza y te propone. No toca el disco. |
| Build | Ejecuta: crea, modifica y borra ficheros. |
El ciclo de un cambio serio es siempre el mismo:
En Plan puedes además pedirle que te pregunte lo que no tenga claro («antes de proponer nada, hazme las preguntas que necesites») en lugar de que se invente los huecos. Leer el plan cuesta un minuto; deshacer un cambio mal enfocado, bastante más.
Esc Esc lo interrumpe en seco, esté pensando o a media tarea./undo revierte el último mensaje de la conversación, pero no deshace los cambios en los ficheros. El deshacer de verdad es git: commitea a menudo y revisa el diff antes de seguir.
Sin él acabas repitiendo las mismas restricciones en cada prompt: «nada de TypeScript», «usa el gestor de paquetes del proyecto», «no añadas dependencias». Eso se escribe una vez en un fichero:
/init
/init analiza el código y genera AGENTS.md en la raíz: qué es el proyecto, arquitectura, dependencias y comandos habituales (arrancar, probar, construir). Se lee automáticamente en cada sesión.
AGENTS.md lo entienden otras herramientas.Lo que escribas en el prompt siempre manda sobre lo que ponga en el fichero.
Abajo, junto a la caja de entrada, hay un indicador con los tokens consumidos, el porcentaje de contexto ocupado y el coste. Sube siempre, porque en cada petición se manda de nuevo toda la conversación: el historial se paga entero cada vez.
| Comando | Cuándo |
|---|---|
/compact | La conversación sigue siendo la buena pero el contexto va alto. Condensa el historial en un resumen (objetivo, restricciones, progreso) y sigues donde estabas. |
/new | Cambias de tarea. Sesión nueva, contexto a cero. |
La regla práctica: una sesión por tarea. Arrastrar el historial de lo anterior no ayuda al modelo, lo despista y encima cuesta dinero.
Al cerrar OpenCode, la terminal imprime el nombre de la sesión y el comando exacto para retomarla. Cópialo y la recuperas entera, con su historial, al día siguiente.
opencode | Arrancar en la carpeta actual |
/ | Ver todos los comandos |
Ctrl+P | Paleta de comandos |
Tab | Cambiar entre Plan y Build |
Esc Esc | Parar al agente |
Mayús+Enter | Salto de línea |
↑ / ↓ | Historial de prompts |
@fichero | Referenciar un fichero |
!comando | Shell, sin gastar tokens |
/connect | Conectar un proveedor |
/models | Cambiar de modelo |
/init | Generar AGENTS.md |
/compact | Condensar el contexto |
/new | Sesión nueva |