El lock-in de runtime es el nuevo lock-in de proveedor
Todos los que hemos construido herramientas de agente para código pasamos por lo mismo: arrancas con un solo runtime (Claude Code, Codex, o un loop casero), funciona bien… hasta que cambia el precio del proveedor, sale un runtime nuevo con mejores herramientas de shell, o tus usuarios te piden un agente específico. Reescribir la capa de orquestación cada vez que se mueve el ecosistema es caro y aburrido.
El AI SDK Harness apuesta a otra cosa: tratar el runtime como un adapter enchufable. Escribes contra una sola interfaz (HarnessAgent) y el harness se encarga del cableado específico de cada runtime: sesiones, aprobaciones de herramientas, streaming, attach/resume.
Hoy entran dos adapters nuevos: Deep Agents y OpenCode, ambos corriendo dentro de un Vercel Sandbox. Es el mismo movimiento de composición que ya se ve en otras stacks — checa Beyond the Framework Hype: Key Takeaways from a 2025 Dev Summit para el contexto más amplio.
![]()
Los dos adapters nuevos
Deep Agents (@ai-sdk/harness-deepagents)
Este adapter envuelve el runtime deepagents de LangChain. O sea: heredas herramientas de archivo y shell, skills, host tools, sesiones multi-turn, attach/resume y aprobaciones de herramientas ya incluidas — todo expuesto por el contrato del harness.
// Adapter Deep Agents: envuelve el runtime deepagents de LangChain
import { HarnessAgent } from '@ai-sdk/harness/agent';
import { deepAgents } from '@ai-sdk/harness-deepagents';
const agent = new HarnessAgent({
harness: deepAgents,
});
OpenCode (@ai-sdk/harness-opencode)
Este es más interesante en arquitectura: levanta un servidor OpenCode real dentro del sandbox vía @opencode-ai/sdk y hace stream de los eventos de sesión a través del harness. Te llevas las herramientas nativas de OpenCode, soporte para aprobaciones built-in y host, y puedes elegir modelo, proveedor y variante de razonamiento.
// Adapter OpenCode: levanta un servidor OpenCode real dentro del sandbox
import { HarnessAgent } from '@ai-sdk/harness/agent';
import { openCode } from '@ai-sdk/harness-opencode';
const agent = new HarnessAgent({
harness: openCode,
});
La lista completa hoy es: Claude Code, Codex, Deep Agents, OpenCode, Pi — y vienen más. 🚀

Qué ganas de verdad (y qué no)
| Dimensión | Sin Harness | Con Harness |
|---|---|---|
| Cambiar runtime | Reescribes la orquestación | Cambias un import |
| UX de aprobación | Específico por runtime | Contrato unificado |
| Streaming de sesión | Custom por runtime | Eventos normalizados |
| Ciclo de vida del sandbox | Tú lo manejas | Vercel Sandbox se encarga |
| Debug | Logs específicos | Aún específicos (se filtra) |
| Modelo de costo | Depende del proveedor | Depende del proveedor (sin cambio) |
Los peros honestos:
- La abstracción no es gratis. Cada adapter expone superficies de herramientas distintas. Si tu app depende de una skill específica de Deep Agents, sigues acoplado — el harness esconde el cableado, no la semántica.
- Asume Vercel Sandbox. Eso es restricción real si tu infra está en AWS o GCP y no puedes mover la frontera de ejecución.
- Los schemas de eventos divergen. "Normalizado" no es "idéntico". Vas a tener branches por runtime en las orillas.
- Los modelos de aprobación divergen. Built-in y host se soportan en los dos, pero la UX que construyas alrededor igual va a necesitar branches.
Por cierto, este patrón de composición se está viendo en otras áreas también — mira cómo la trazabilidad de algodón tokenizado usa primitivas parecidas en How Blockchain is Revolutionizing Agricultural Traceability.

¿Te conviene adoptarlo?
Si construyes producto de agente y ya sentiste el dolor de cambiar runtime, el Harness merece una prueba seria. El valor no está en un adapter solo — está en la opción de cambiar sin reescribir.
Próximos pasos para aprenderlo en serio:
- Lee la doc del Deep Agents harness y la del OpenCode harness de principio a fin antes de codear.
- Arma un agente desechable que haga una cosa (leer archivo, correr shell) contra dos harnesses. La fricción que sientas es el costo real de la abstracción.
- Instrumenta el flujo de aprobación de herramientas temprano. Es lo que más se rompe cuando cambias de runtime.
- Mantente al tanto de la lista de harnesses — la abstracción solo paga si el ecosistema sigue creciendo.
Fuente: Vercel changelog — Deep Agents and OpenCode harness adapters.