Herramientas de usuario

Herramientas del sitio


cursos:sdd:03-opencode

¡Esta es una revisión vieja del documento!


OpenCode

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.


1. Puesta en marcha

Instalar

  • Linux
curl -fsSL https://opencode.ai/v2/install | bash
opencode --version
  • Windows
npm install -g @opencode/cli
opencode --version

Arrancar

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.

Actualizar

opencode upgrade
Fíjate que sea como mínimo la versión 2.x.y

2. Proveedores y modelos

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—.

/connect: los proveedores

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.

/models: cambiar de modelo

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:

  • Plan con el modelo más capaz, que es donde se decide si el cambio está bien planteado.
  • Tab a Build con uno más barato, que es donde solo hay que ejecutar lo ya decidido.
Con los modelos gratuitos tu código se usa para entrenar. No los uses con código confidencial.

3. Agentes

Qué es un subagente y para qué sirve está en el tema 2. Plan y Build (sección 6) también son agentes: son los principales, los que hablan contigo. De serie, OpenCode trae dos subagentes:

  • general: para tareas de varios pasos que investigan y cambian código.
  • explore: busca y entiende el código sin modificar nada.

Cómo se lanza

Hay tres formas de lanzarlo:

  • Invocándolo directamente con @ y su nombre. Al escribir @ sale en la lista junto a los ficheros y las skills.

@explore ¿dónde se valida el token JWT y qué endpoints no pasan por esa validación?

  • Con lenguaje natural, diciéndole que lo use:

Usa el subagente general para migrar los tests del módulo pedidos de JUnit 4 a JUnit 5

  • Automáticamente: lo decide OpenCode, que lo lanza cuando la tarea encaja con su description.

Dónde se guardan

Cada subagente es un fichero .md:

  • .opencode/agents/ en el proyecto: está en el repositorio para que sea solo de ese proyecto.
  • ~/.config/opencode/agents/ en tu ordenador: para compartirlo entre proyectos.

OpenCode también lee .claude/agents/ y ~/.claude/agents/, así que un mismo subagente vale para las dos herramientas.


4. Skills

Qué es una skill y cómo se escribe está en el tema 2.

Cómo se lanza

Hay tres formas de lanzarla:

  • Invocándola directamente con @ y su nombre: al escribir @ sale en la lista junto a los ficheros y los subagentes.

@revisar-pr revisa el PR 128

  • Con lenguaje natural, diciéndole que la use:

Usa la skill revisar-pr con el PR 128

  • Automáticamente: lo decide OpenCode, que la carga cuando su description encaja con lo que pides («revisa el PR 128»).

Dónde se guardan

Cada skill es una carpeta con su SKILL.md:

  • .opencode/skills/ en el proyecto: está en el repositorio para que sea solo de ese proyecto.
  • ~/.config/opencode/skills/ en tu ordenador: para compartirla entre proyectos.

OpenCode también lee .claude/skills/ y ~/.claude/skills/, así que una misma skill vale para las dos herramientas.


5. La caja de entrada: cuatro formas de escribir

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, o ejecuta un skill o un subagente. Al escribir @ se despliega la lista para elegir. @src/api/login.ts revisa el manejo de errores
! Ejecuta un comando de shell. No llama al modelo, pero la salida queda en la conversación y la ve en el siguiente prompt. !npm test
/ Comando de OpenCode. Escribiendo solo / salen todos. /compact
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.

6. Plan y Build: la tecla Tab

OpenCode tiene dos modos: Plan y Build, y se cambia entre ellos con Tab.

El modo Plan

Lee, analiza y te propone un plan, sin editar ningún fichero. El plan te lo cuenta en la conversación; solo si se lo pides lo guarda en ~/.opencode/plan, que es el único sitio donde puede escribir. Los comandos los ejecuta sin preguntarte.

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.

Cuando el plan está bien, Tab a Build y que lo ejecute.

El modo Build

Ejecuta: edita ficheros y lanza comandos sin preguntarte casi nada. Solo pide permiso para leer un .env o para salir de la carpeta del proyecto.

Build no revisa los comandos que lanza: un rm o un git checkout los ejecuta igual que un ls. Trabaja siempre con todo commiteado, para poder volver atrás.

Mientras trabaja

  • Esc Esc lo interrumpe en seco, esté pensando o a media tarea.
  • Cuando va a hacer algo sensible, sale el diálogo de permisos: permitir una vez, permitir siempre o rechazar.
  • Puedes seguir escribiendo mientras trabaja: los mensajes se encolan y los recoge cuando llega a un punto en el que encajan.
/undo quita el último mensaje de la conversación y deshace los cambios que hizo en los ficheros; /redo lo vuelve a aplicar. Solo sabe deshacer lo que hizo OpenCode: el deshacer de verdad sigue siendo git, así que commitea a menudo y revisa el diff antes de seguir.

7. AGENTS.md: las instrucciones fijas del proyecto

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.

  • Revísalo y edítalo a mano. Lo que genera es un punto de partida, no la verdad.
  • Breve y concreto. Ocupa contexto en todas las peticiones, así que cada línea de relleno se paga en cada prompt.
  • Va al repositorio, como cualquier otro fichero del proyecto.
  • Es un estándar abierto: el mismo AGENTS.md lo entienden otras herramientas.

Lo que escribas en el prompt siempre manda sobre lo que ponga en el fichero.


8. La sesión y el contexto

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.


9. Plugins

Los plugins añaden a OpenCode funciones que no trae de serie. Son paquetes de npm (o de Git) y se gestionan desde la terminal con opencode plugin. Se guardan en la configuración global, así que valen para todos los proyectos.

  • Ver los plugins instalados:
opencode plugin list
  • Instalar un plugin. Por ejemplo, Quota:
opencode plugin add @slkiser/opencode-quota
  • Ver si hay versiones nuevas de los plugins instalados:
opencode plugin check
  • Actualizar todos los que estén desactualizados. Para actualizar solo uno, se añade su nombre:
opencode plugin update
  • Desinstalar un plugin:
opencode plugin remove @slkiser/opencode-quota

10. Plugins a instalar

Quota: cuánto crédito te queda

opencode-quota muestra lo que te queda de cuota o de saldo en cada proveedor (OpenCode Zen, OpenRouter, GitHub Copilot, OpenAI…) y los tokens que has gastado, sin ocupar contexto. Una vez instalado y reiniciado OpenCode, se ve directamente en pantalla, en el panel lateral, sin escribir nada. Si quieres el detalle, tiene además sus comandos:

Comando Qué muestra
/quota Lo que te queda en cada proveedor
/tokens_session Tokens gastados en esta sesión
/tokens_monthly Tokens de los últimos 30 días, con su coste

11. Chuleta

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 / @skill / @agente Referenciar un fichero, o ejecutar un skill o un subagente
!comando Shell, sin llamar al modelo
/connect Conectar un proveedor
/models Cambiar de modelo
/init Generar AGENTS.md
/compact Condensar el contexto
/undo Deshacer el último mensaje y sus cambios
/new Sesión nueva
/quota Crédito que te queda (plugin Quota)

12. Enlaces

cursos/sdd/03-opencode.1793016800.txt.gz · Última modificación: por claude