Primeiro, o que é uma janela de contexto? E como ela se relaciona com programar efetivamente com o Cursor? Para dar uma visão mais ampla, um modelo de linguagem grande (LLM) é um modelo de inteligência artificial treinado para prever e gerar texto aprendendo padrões de conjuntos de dados massivos. Ele potencializa ferramentas como o Cursor entendendo seu input e sugerindo código ou texto baseado no que já viu antes. Tokens são as entradas e saídas desses modelos. São pedaços de texto, frequentemente um fragmento de uma palavra, que um LLM processa um por vez. Os modelos não leem frases inteiras de uma vez; eles preveem o próximo token baseado nos que vieram antes. Para ver como um texto é tokenizado, você pode usar um tokenizador como este aqui. Tokenizer

O que é contexto?

Quando geramos uma sugestão de código no Cursor, “contexto” se refere às informações fornecidas ao modelo (na forma de “tokens de entrada”) que o modelo usa para prever as informações subsequentes (na forma de “tokens de saída”). Existem dois tipos de contexto:
  1. Contexto de intenção define o que você quer obter do modelo. Por exemplo, um prompt de sistema geralmente serve como instruções de alto nível sobre como você quer que o modelo se comporte. A maior parte do “prompting” feito no Cursor é contexto de intenção. “Mude aquele botão de azul para verde” é um exemplo de intenção declarada; é prescritivo.
  2. Contexto de estado descreve o estado do mundo atual. Fornecer ao Cursor mensagens de erro, logs do console, imagens e trechos de código são exemplos de contexto relacionado ao estado. É descritivo, não prescritivo.
Juntos, esses dois tipos de contexto trabalham em harmonia ao descrever o estado atual e o estado futuro desejado, permitindo que o Cursor faça sugestões de código úteis.

Fornecendo contexto no Cursor

Quanto mais contexto relevante você fornecer para um modelo, mais útil ele será. Se você não fornecer contexto suficiente no Cursor, o modelo tentará resolver o problema sem as informações necessárias. Isso geralmente resulta em:
  1. Alucinações onde o modelo tenta encontrar padrões (quando não há padrão) causando resultados inesperados. Isso pode acontecer frequentemente com modelos como claude-3.5-sonnet quando não recebem contexto suficiente.
  2. O Agent tentando coletar contexto por conta própria, pesquisando na base de código, lendo arquivos e executando ferramentas. Um modelo de raciocínio forte (como claude-3.7-sonnet) pode ir bem longe com essa estratégia, e fornecer o contexto inicial correto vai determinar a trajetória.
A boa notícia é que o Cursor foi construído com consciência contextual no seu núcleo e foi projetado para exigir intervenção mínima do usuário. O Cursor automaticamente puxa as partes da sua base de código que o modelo considera relevantes, como o arquivo atual, padrões semanticamente similares em outros arquivos e outras informações da sua sessão. No entanto, há muito contexto disponível, então especificar manualmente o contexto que você sabe que é relevante para a tarefa é uma forma útil de guiar os modelos na direção certa.

Símbolo @

A maneira mais fácil de fornecer contexto explícito é com o símbolo @. Eles são ótimos quando você sabe especificamente qual arquivo, pasta, site ou outro pedaço de contexto você quer incluir. Quanto mais específico você for, melhor. Aqui está um detalhamento de como ser mais preciso com o contexto:
SímboloExemploCaso de usoDesvantagem
@code@LRUCachedFunctionVocê sabe qual função, constante ou símbolo é relevante para o resultado que está gerandoRequer muito conhecimento da base de código
@filecache.tsVocê sabe qual arquivo deve ser lido ou editado, mas não exatamente onde no arquivoPode incluir muito contexto irrelevante para a tarefa dependendo do tamanho do arquivo
@folderutils/Todos ou a maioria dos arquivos em uma pasta são relevantesPode incluir muito contexto irrelevante para a tarefa
Context Menu

Regras

Você deve pensar nas regras como uma memória de longo prazo que você ou outros membros da sua equipe querem acessar. Capturar contexto específico do domínio, incluindo workflows, formatação e outras convenções, é um ótimo ponto de partida para escrever regras. As regras também podem ser geradas a partir de conversas existentes usando /Generate Cursor Rules. Se você teve uma longa conversa com várias idas e vindas e muitos prompts, provavelmente existem algumas diretrizes úteis ou regras gerais que você vai querer reutilizar depois. Rules

MCP

Model Context Protocol é uma camada de extensibilidade onde você pode dar ao Cursor capacidades para executar ações e puxar contexto externo. Dependendo da sua configuração de desenvolvimento, você pode querer usar diferentes tipos de servidores, mas duas categorias que vimos serem particularmente úteis são:
  • Documentação interna: ex.: Notion, Confluence, Google Docs
  • Gerenciamento de projetos: ex.: Linear, Jira
Se você tem ferramentas existentes para acessar contexto e executar ações através de uma API, você pode criar um servidor MCP para isso. Aqui está um guia rápido sobre como criar servidores MCP. MCP

Coleta automática de contexto

Um padrão poderoso que muitos usuários estão adotando é deixar o Agent escrever ferramentas temporárias que ele pode executar para coletar mais contexto. Isso é especialmente eficaz em fluxos de trabalho com intervenção humana, onde você revisa o código antes da execução. Por exemplo, adicionar instruções de debug ao seu código, executá-lo e deixar o modelo inspecionar a saída dá a ele acesso a contexto dinâmico que não conseguiria inferir estaticamente. Em Python, você pode fazer isso pedindo para o Agent:
  1. Adicionar instruções print(“debugging: …”) em partes relevantes do código
  2. Executar o código ou testes usando o terminal
O Agent vai ler a saída do terminal e decidir o que fazer em seguida. A ideia central é dar ao Agent acesso ao comportamento real de runtime, não apenas ao código estático. Self-Gathering Context

Principais Pontos

  • Contexto é a base da codificação eficaz com IA, consistindo em intenção (o que você quer) e estado (o que existe). Fornecer ambos ajuda o Cursor a fazer previsões precisas.
  • Use contexto cirúrgico com símbolos @ (@code, @file, @folder) para guiar o Cursor com precisão, em vez de depender apenas da coleta automática de contexto.
  • Capture conhecimento reutilizável em regras para uso em toda a equipe, e estenda as capacidades do Cursor com Model Context Protocol para conectar sistemas externos.
  • Contexto insuficiente leva a alucinações ou ineficiência, enquanto muito contexto irrelevante dilui o sinal. Encontre o equilíbrio certo para resultados ótimos.