O lock-in de runtime é o novo lock-in de fornecedor
Quem já construiu ferramentas de agente para código sabe: você começa com um runtime só (Claude Code, Codex, ou um loop caseiro), funciona bem… até o preço do provedor mudar, um runtime novo aparecer com ferramentas de shell melhores, ou seus usuários exigirem um agente específico. Reescrever a camada de orquestração toda vez que o ecossistema muda é caro e chato.
O AI SDK Harness aposta em outra coisa: tratar o runtime como um adapter plugável. Você escreve contra uma interface única (HarnessAgent), e o harness cuida do encanamento específico de cada runtime — sessões, aprovações de ferramentas, streaming, attach/resume.
Hoje entram dois adapters novos: Deep Agents e OpenCode, ambos rodando dentro de um Vercel Sandbox. É o mesmo movimento de composição que a gente tem visto em outras stacks — dá uma olhada no que rolou na Beyond the Framework Hype: Key Takeaways from a 2025 Dev Summit pra entender o contexto maior.

Os dois adapters novos
Deep Agents (@ai-sdk/harness-deepagents)
Esse adapter embrulha o runtime deepagents do LangChain. Traduzindo: você herda ferramentas de arquivo e shell, skills, host tools, sessões multi-turn, attach/resume e aprovações de ferramentas já embutidas — tudo exposto pelo contrato do harness.
// Adapter Deep Agents: embrulha o runtime deepagents do 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)
Esse aqui é mais interessante na arquitetura: ele sobe um servidor OpenCode de verdade dentro do sandbox via @opencode-ai/sdk e faz stream dos eventos da sessão pelo harness. Você ganha as ferramentas nativas do OpenCode, suporte a aprovações built-in e host, e pode escolher modelo, provedor e variante de raciocínio.
// Adapter OpenCode: sobe um servidor OpenCode real dentro do sandbox
import { HarnessAgent } from '@ai-sdk/harness/agent';
import { openCode } from '@ai-sdk/harness-opencode';
const agent = new HarnessAgent({
harness: openCode,
});
A lista completa hoje é: Claude Code, Codex, Deep Agents, OpenCode, Pi — e vêm mais por aí. 🚀

O que você ganha de verdade (e o que não ganha)
| Dimensão | Sem Harness | Com Harness |
|---|---|---|
| Trocar runtime | Reescreve a orquestração | Troca um import |
| UX de aprovação | Específico por runtime | Contrato unificado |
| Streaming de sessão | Custom por runtime | Eventos normalizados |
| Ciclo de vida do sandbox | Você gerencia | Vercel Sandbox cuida |
| Debug | Logs específicos | Ainda específicos (vaza) |
| Modelo de custo | Depende do provedor | Depende do provedor (sem mudança) |
Os poréns honestos:
- A abstração não é de graça. Cada adapter expõe superfícies de ferramentas diferentes. Se seu app depende de uma skill específica do Deep Agents, você continua acoplado — o harness esconde a fiação, não a semântica.
- Assume Vercel Sandbox. Isso é restrição real se sua infra tá na AWS ou GCP e você não pode mover a fronteira de execução.
- Schemas de evento divergem. "Normalizado" não é "idêntico". Vai ter branch por runtime nas bordas.
- Modelos de aprovação divergem. Built-in e host são suportados nos dois, mas a UX que você constrói em volta ainda vai precisar de branches.
Aliás, esse padrão de composição tá aparecendo em outras áreas também — olha como a rastreabilidade de algodão tokenizado usa primitivas parecidas em How Blockchain is Revolutionizing Agricultural Traceability.

Vale adotar?
Se você constrói produto de agente e já sentiu na pele o custo de trocar runtime, o Harness merece um teste sério. O valor não tá em um adapter isolado — tá na opção de trocar sem reescrever.
Próximos passos pra aprender de verdade:
- Lê a doc do Deep Agents harness e a do OpenCode harness do começo ao fim antes de codar.
- Monta um agente descartável que faz uma coisa (ler arquivo, rodar shell) contra dois harnesses. A fricção que você sentir é o custo real da abstração.
- Instrumenta o fluxo de aprovação de ferramentas cedo. É o que mais quebra quando você troca de runtime.
- Fica de olho na lista de harnesses — a abstração só compensa se o ecossistema continuar crescendo.
Fonte: Vercel changelog — Deep Agents and OpenCode harness adapters.