Cursor SDK ganha run.steer para guiar agentes
O Cursor SDK adicionou o método run.steer para ajustar agentes em execução no Node.js sem reiniciar tarefas ou descartar o progresso.
Novo método do pacote em TypeScript injeta comandos em turnos ativos e joga subtarefas para segundo plano sem reiniciar a execução.
Quem desenvolve com agentes autônomos de código conhece o problema: você dispara uma tarefa longa, o modelo toma um atalho errado no terceiro arquivo e você fica olhando a tela sem poder intervir. As saídas até agora eram duas: abortar o processo e jogar fora os tokens gastos ou esperar o ciclo terminar para só depois corrigir o rumo. A Anysphere, dona do editor Cursor, tentou diminuir esse atrito ao lançar o método run.steer() no Cursor SDK para TypeScript (@cursor/sdk).
O anúncio, feito pela equipe no perfil oficial no X, detalha como a nova chamada permite injetar instruções diretamente no turno ativo do modelo. Em vez de operar como uma caixa-preta fechada, a execução passa a aceitar comandos pelo terminal enquanto processa código.
O problema de esperar o agente terminar
Agentes locais leem árvores de diretórios, escrevem testes e chamam comandos no shell de forma sequencial. Quando uma instrução intermediária falha ou o programador percebe um erro de contexto logo no início, cancelar o processo significa perder todo o trabalho parcial já realizado pela API.
Por outro lado, deixar uma tarefa equivocada rodar até o final consome tempo e créditos desnecessários. O run.steer() foi pensado exatamente para essa janela: você envia a correção enquanto o modelo ainda está trabalhando na resposta atual.
Como o run.steer funciona no Cursor SDK
Na prática, a chamada run.steer(text) tenta acoplar o texto enviado ao turno em andamento. A função devolve uma Promise com dois retornos possíveis:
complete_delivered: a instrução entrou no turno atual e o agente já a incluiu no raciocínio em andamento.revert_to_followup: o turno fechou antes da mensagem chegar, exigindo que o comando seja enviado como mensagem posterior viaagent.send().
O detalhe mais relevante está no tratamento de tarefas paralelas. Se o agente principal chamou um subagente que roda em primeiro plano, o run.steer() não cancela a subtarefa. O sistema move esse processo filho para segundo plano de forma automática. Assim, o agente pai fica livre para processar a nova instrução imediatamente, enquanto o subagente continua rodando em paralelo.
As respostas dessas tarefas de fundo continuam conectadas ao fluxo principal. Métodos como stream() e wait() seguem monitorando os processos até que todos terminem. Na versão 1.0.32 do SDK, a Anysphere refinou esse comportamento: quando o agente pai termina o turno enquanto aguarda subagentes em segundo plano, o steer passa a rodar logo em seguida como o próximo turno, sem recuar para revert_to_followup.
Limites técnicos e ausência na nuvem
A documentação técnica da Anysphere aponta restrições claras para o uso da função:
- Apenas Node.js local: o recurso opera somente em instâncias locais do TypeScript SDK.
- Sem suporte para agentes na nuvem: em execuções no Cursor Cloud ou em instâncias desacopladas, o método existe na assinatura do código, mas sempre resolve em
revert_to_followup. Essa diferença motivou discussões no fórum oficial de usuários que buscam paridade com a interface visual. - Sem cancelamento seletivo: não é possível interromper um subagente específico; qualquer subtarefa ativa em primeiro plano vai obrigatoriamente para segundo plano.
- Fora do Python: a biblioteca equivalente em Python (
cursor-sdk) não possui o método documentado.
Controle em tempo de execução
A possibilidade de conversar com o agente enquanto ele edita arquivos já era comum na barra lateral do editor Cursor. Levar isso para scripts automatizados via código fecha uma distância incômoda entre a interface gráfica e os scripts de terminal. Agentes autônomos deixam de ser rotinas rígidas de disparo único e ganham controle interativo durante a execução.