HarnessAgent, do AI SDK da Vercel, passa a aceitar imagens em todos os adapters de agentes
- Leitura
- 5 min
- Código
- 1
- Fontes
- 1
A camada HarnessAgent do AI SDK passou a processar imagens junto com texto em qualquer um dos dez adapters suportados, de Codex a GitHub Copilot. O recurso tira a necessidade de gambiarras para dar contexto visual a agentes rodando em sandbox.
A Vercel atualizou o HarnessAgent, a camada do AI↳Inteligência artificial440 conteúdosUX e IA: Transformando Experiências Digitais com Inteligência ArtificialProduto & UX · jan 2025MCP: O que é e por que você vai ouvir falar disso em breve?AI · jul 2025IA generativa e a urgência de reconstruir nossa relação com a verdadeAI · jun 2025Ver tudo em AI → SDK que abstrai agentes de código rodando dentro de sandboxes, para aceitar entrada de imagem em todos os adapters disponíveis. Segundo o changelog publicado pela Vercel, isso significa que qualquer harness suportado hoje consegue receber uma imagem junto com o texto na mesma mensagem, sem código extra de conversão.
Antes, dar contexto visual para um agente de código autônomo exigia rodeio: descrever a imagem manualmente em texto, chamar um modelo de visão à parte e colar o resultado no prompt, ou simplesmente não oferecer esse tipo de entrada. Agora o próprio harness delega o processamento da imagem ao modelo de visão que já está por trás dele.
O que é o HarnessAgent, pra quem não acompanhou
O HarnessAgent é a peça do AI SDK que padroniza como você instancia, dá sessão e conversa com agentes de codificação de terceiros, os chamados harnesses. Em vez de escrever integração própria para cada ferramenta, o dev importa um harness (codex, por exemplo) e usa a mesma API do HarnessAgent para criar sessão, mandar mensagens e receber respostas, enquanto a execução de fato roda isolada num sandbox.
Os adapters cobertos pela atualização são Claude Code, Cline, Codex, Cursor, Deep Agents, fx, GitHub Copilot, Grok Build, OpenCode e Pi. É a lista inteira de harnesses que o AI SDK suporta hoje, o que torna a mudança menos um recurso pontual e mais um nivelamento de capacidade entre todos eles.
Como fica o código na prática
A imagem entra como mais um item no array content da mensagem, no mesmo formato que o AI SDK já usa para multimodalidade em outros contextos: um item { type: 'text' } ao lado de um item { type: 'file' } com mediaType e data. O exemplo do próprio changelog mostra o harness codex descrevendo uma imagem lida do disco:
import { HarnessAgent } from '@ai-sdk/harness/agent';
import { codex } from '@ai-sdk/harness-codex';
import { createVercelNetworkSandboxSession } from '@ai-sdk/sandbox-vercel';
import { readFileSync } from 'node:fs';
const agent = new HarnessAgent({ harness: codex });
const sandboxSession = await createVercelNetworkSandboxSession({
runtime: 'node24',
ports: [4000],
template: await agent.getSandboxTemplate(),
});
const session = await agent.createSession({ sandboxSession });
const result = await agent.generate({
session,
messages: [
{
role: 'user',
content: [
{ type: 'text', text: 'Describe the image in one sentence.' },
{
type: 'file',
mediaType: 'image/png',
data: readFileSync('image.png'),
},
],
},
],
});O exemplo da Vercel é deliberadamente simples, mas o padrão vale para qualquer cenário onde o agente precisa enxergar algo além do texto. Pensando em front-end↳Front-end60 conteúdosFront-end em larga escala: quando seu projeto vira um Frankenstein (e como evitar)Dev (Back & Front) · mar 2026Build e bundling no front-end: 7 decisões que impactam performance de verdadeDev (Back & Front) · abr 2026Como modelar APIs pensando no front-end: 8 práticas para evitar retrabalho entre timesDev (Back & Front) · abr 2026Ver tudo em Dev (Back & Front) →, a aplicação óbvia é mandar um print de uma regressão visual ou um recorte de design para o agente comparar com o código que ele mesmo vai editar dentro do sandbox, sem sair do fluxo de agent.generate().
O que isso substitui e onde o ganho é real
Em resumo: a mudança não cria uma função nova, ela remove um contorno que já era comum em pipelines de agentes. Quem hoje injeta uma descrição textual de screenshot no prompt, ou faz uma chamada separada a um modelo de visão antes de falar com o harness, pode cortar essa etapa e deixar o próprio harness lidar com a imagem.
Isso importa especialmente para quem usa HarnessAgent em sandbox com porta exposta (como no exemplo, com ports: [4000]), porque abre a possibilidade de fechar o loop todo dentro da mesma sessão: o agente roda um servidor de desenvolvimento, alguém (ou outro processo) tira um print da porta exposta, e esse print volta como entrada de imagem na próxima mensagem, sem sair do contexto da sessão nem trocar de API.
Os limites que não aparecem no changelog
O changelog é curto e não entra em detalhe sobre qualidade: ele só confirma que o processamento de imagem é feito pelo "modelo de visão subjacente de cada harness". Isso tem uma implicação direta que vale destacar, porque não está escrita explicitamente na fonte:
- a capacidade de interpretar imagem não é uniforme entre os dez adapters, porque cada harness carrega seu próprio modelo por baixo;
- um harness cujo modelo padrão não é otimizado para visão vai entender a imagem pior do que outro, mesmo com a mesma API do
HarnessAgentpor cima; - não há, pela documentação citada, um jeito de forçar um modelo de visão específico independente do harness escolhido.
Na prática, isso significa que vale testar o mesmo prompt com imagem em dois ou três harnesses antes de fixar qual usar em produção, em vez de assumir que Codex, Claude Code e GitHub Copilot vão reagir igual ao mesmo print.
Quando não compensa usar essa entrada
Para tarefas que exigem precisão visual fina, como medir se um espaçamento está a 2px do especificado em um design, delegar a imagem ao harness é o caminho errado: a interpretação passa por um modelo de linguagem com visão, não por uma ferramenta de diff de pixel. Nesses casos, uma checagem automatizada de regressão visual (Percy, Chromatic, Playwright com comparação de screenshot) continua sendo mais confiável do que pedir para o agente "olhar" a imagem e avaliar.
Também vale lembrar do custo: imagem consome mais tokens do que texto equivalente em praticamente todo modelo multimodal, e isso se soma ao custo normal de rodar um agente autônomo em sandbox por várias iterações. Para um fluxo de poucas chamadas pontuais o impacto é pequeno, mas num agente que roda em loop revisando UI repetidamente, o consumo extra de tokens por imagem é algo a monitorar antes de colocar em produção.
A documentação de entradas de imagem do HarnessAgent, referenciada no próprio changelog da Vercel, é o próximo passo natural para quem já usa algum dos dez harnesses e quer testar o recurso sem reescrever a integração existente.
Fonte: Vercel Changelog
Este artigo foi escrito por Carina Ferreira, colunista de front-end. Conteúdo produzido por agente de IA da redação iMasters, sob revisão editorial humana. Saiba como produzimos no expediente.
Vercel libera deploy de container a partir de Dockerfile puro
Quando nenhum framework é detectado, a Vercel passa a construir o Dockerfile ou Containerfile da raiz do projeto e rotear todo o tráfego para a imagem resultante. Veja a ordem de prioridade entre framework, arquivo de container e a flag manual.














