OpenCode 2.0 rechaza todos los plugins escritos para la versión 1. El día que actualicé, el 16 de octubre de 2026, tres de mis cinco entradas de plugins no cargaron, entre ellas oh-my-openagent 5.1.34. Sus mantenedores publicaron el arreglo en la 5.1.38 el 19 de octubre, tres días después; los otros dos fallos son plugins míos, aún con la forma de la versión 1. El mismo proyecto continúa además como OmO, un agente independiente sobre un fork de Pi, para quien prefiera dejar OpenCode.
Qué se rompió el día de la actualización
OpenCode 2.0.31 arranca un servidor en segundo plano y un cliente de terminal, y cada uno carga sus propios plugins. Mi log del servidor registró tres fallos seguidos, uno por plugin, todos con la misma causa. El cargador espera una exportación por defecto con forma de definición versión 2, con un id y una función setup. Mis plugins exportan la forma de la versión 1, una función que devuelve hooks. Tres entradas, tres rechazos:
git-ai.ts Plugin must export a default definition with an id and an effect or setup function
rtk.ts Plugin must export a default definition (Missing key at ["default"])
oh-my-openagent Missing key at ["default"]["effect"] / ["default"]["setup"]
El cliente de terminal falló igual con oh-my-openagent: tardó cinco segundos en instalar el paquete y lo rechazó por las mismas claves ausentes. Dos plugins cargaron bien. El balance del día fue 3 fallos de 5 entradas, medido en un solo log del servidor el 16 de octubre de 2026. Un Plugin aquí es la unidad que OpenCode carga para extenderse: hooks que se ejecutan antes de las herramientas, herramientas extra y suscripciones a eventos.
La estantería muestra ese balance como un objeto: dos cartuchos colocados, tres en el cajón de devoluciones, cada hueco con su lámpara.
Qué cambió OpenCode 2
OpenCode 2 trae una API de plugins nueva, y su guía de migración lo dice sin rodeos: las implementaciones de plugins de la versión 1 no funcionan en la versión 2. Cambiaron tres cosas a la vez. El paquete pasó de @opencode-ai/plugin a @opencode/plugin. La exportación pasó de una función que devuelve hooks a Plugin.define con un id y una función setup que registra los hooks a través de un objeto de contexto. Y la clave de configuración pasó de plugin a plugins, con la novedad de que las rutas locales deben apuntar a directorios en vez de a archivos.
El diagrama muestra la única puerta que importa. Del código viejo no se salva nada renombrando claves. Mover un archivo o renombrar la entrada de configuración no basta, porque el protocolo de hooks cambió de forma. Mi configuración global aún fijaba el paquete viejo en la 1.15.13, lo que dice hasta dónde llegaba el cableado de la versión 1.
Cómo volvió oh-my-openagent a OpenCode 2
oh-my-openagent es un plugin de orquestación de agentes para OpenCode: un orquestador principal con subagentes especialistas, enrutado de modelos por agente y la palabra clave ultrawork que reparte el trabajo. La versión 5.1.34, la que yo tenía el 16 de octubre, distribuía solo el punto de entrada de la versión 1, así que OpenCode 2 la rechazaba tanto en el servidor como en el terminal. Un issue en el repositorio lo describía exactamente así desde el 4 de octubre.
La versión 5.1.38, publicada el 19 de octubre de 2026, lo arregla. Sus notas de versión dicen que las entradas de servidor y terminal exportan ahora también un setup de OpenCode 2, de modo que un solo paquete carga en ambas versiones mayores. Todavía no he vuelto a probar mi configuración con la 5.1.38, así que no puedo confirmar el arreglo en mi máquina. El issue sigue abierto en GitHub mientras escribo.
El proyecto cambió también de forma en paralelo. El repositorio hoy se presenta como OmO, un agente independiente que se instala con su propio binario, con un comando setup que traslada claves de proveedores, servidores MCP y skills desde una instalación de OpenCode. OmO corre sobre senpi, el fork de Pi de su mantenedor. Pi aquí es pi-mono, el agente minimalista de terminal de Mario Zechner del que ambos proyectos descienden.
La cronología mide el coste de la rotura en días: al tercero ya había arreglo en origen, y solo para el plugin con mantenedores activos.
Dónde vive hoy el todo incluido
Tres nombres cubren hoy el lado Pi, y se distinguen en una sola dimensión: cuánto viene en la caja. Pi a secas es mínimo a propósito, más cerca de Arch Linux que de un IDE: añades lo que necesitas. oh-my-pi, comando omp, es la apuesta contraria de Can Bölük en Stencil Labs: un fork de pi-mono con ediciones ancladas por hash, refactorización LSP, depuración contra procesos vivos, más de 40 proveedores de modelos y subagentes en abanico, licencia MIT, unas 36.700 estrellas en GitHub el 26 de octubre de 2026. OmO es la tercera rama: las ideas de orquestación de oh-my-openagent (grafos ultrawork, enrutado por modelo, memoria) sobre senpi, orientadas a convertir tokens en trabajo terminado en vez de a trastear con el arnés.
| Opción | Corre sobre | Modelo de plugins | Conviene cuando |
|---|---|---|---|
| OpenCode 2 + plugins duales | Servidor OpenCode | Plugin.define, solo V2 |
Te quedas en OpenCode y aceptas menos plugins |
| Pi (pi-mono) | Su propio terminal | Extensiones Pi | Quieres mínimo y rápido |
oh-my-pi (omp) |
Su propio terminal | Ecosistema Pi + integrados | Quieres depurador, LSP y herramientas sin montar nada |
OmO (omo) |
Su propio terminal (senpi) | Skills OmO | Quieres la orquestación ultrawork sin OpenCode |
| oh-my-openagent 5.1.38+ | Plugin de OpenCode 2 | Entrada dual V1/V2 | Quieres ultrawork sin salir de OpenCode |
La tabla comprime la decisión a una fila por opción. La primera y la última fila conservan OpenCode. Las tres salidas conservan cada una algo distinto: Pi conserva la simplicidad, oh-my-pi las herramientas, OmO la orquestación.
Qué dos plugins sobrevivieron y por qué
Dos de mis cinco plugins de OpenCode ya exportan las dos formas de la API desde un solo archivo, así que sobrevivieron a la actualización a la 2.0 sin tocarlos. El reporter de estado de Orca exporta la factoría vieja cuando una variable de entorno dice v1 y la forma nueva {id, setup} en caso contrario. Ponytail, el ruleset de brevedad que uso, hace el mismo reparto, y su documentación apunta la regla de directorios que me pilló: las entradas de OpenCode 2 deben nombrar un directorio, mientras mi configuración apuntaba a archivos. Los tres que fallaron (oh-my-openagent, git-ai, rtk) salieron tanto de la configuración del servidor como de la del terminal. git-ai y rtk son plugins que mantengo o envuelvo yo y siguen con la forma de la versión 1; portarlos está en mi lista.
Qué sigue abierto
Dos cosas. No he vuelto a probar oh-my-openagent 5.1.38 en mi máquina, así que el arreglo es lo que dicen los mantenedores, no una medición mía. Y no he medido qué cuesta trabajar con menos plugins: no hay comparación de tokens ni de tareas entre la configuración orquestada y la ligera, así que “menos plugins” es una preferencia, no un número.
Para revisar tu configuración, reinicia el servidor de OpenCode y busca failed to load plugin en su log. Cada línea nombra la entrada y la clave ausente, y eso te dice si el plugin necesita un port a la versión 2 o solo renombrar la configuración. Si oh-my-openagent está en esa lista, actualízalo primero a la 5.1.38 o posterior.
OpenCode 2 es una plataforma de plugins nueva con un nombre viejo: un plugin tiene que exportar la forma de la versión 2 o no carga, y los que tienen mantenimiento ya se están poniendo al día.
Seguir leyendo

Quizá no te importe esto: mis créditos finales de 2025.
Un repaso humano de 2025: marketers técnicos, el «neandertalismo» en el año de la IA, automatización al estilo n8n y las veces que la IA me dejó sin palabras.

La parábola del Elefante ahora es la del Dragón.
Zhipu AI, el gigante chino de la inteligencia artificial que Occidente ignora mientras solo habla de DeepSeek.