23 pontos por GN⁺ 2024-10-30 | 6 comentários | Compartilhar no WhatsApp

O que é o Cursor

  • O Cursor é um fork do Visual Studio Code (VS Code), com recursos baseados em Large Language Model (LLM) integrados à interface principal
  • É um produto proprietário, com camada gratuita e opções de assinatura
  • Principais recursos:
    • Autocompletar com Tab: modelo proprietário com ajuste fino para autocompletar código e avançar para a próxima ação sugerida, disponível apenas para assinantes
    • Edição inline: interface baseada em chat disponível para usuários gratuitos e pagos, que edita o código selecionado usando visualização de diff
    • Barra lateral de chat: interface baseada em chat disponível para usuários gratuitos e pagos, oferecendo mais espaço para discussões mais longas
    • Composer: interface baseada em chat projetada para grandes refatorações em vários arquivos, disponível para usuários gratuitos e pagos

Autocompletar com Tab

  • É o recurso mais natural de usar ao escrever código e o que mais economiza tempo
  • Não apenas sugere conclusões para uma linha, várias linhas ou uma função inteira, como também sugere a próxima linha para a qual você deve ir na próxima edição
  • É possível pressionar a tecla Tab repetidamente para autocompletar alterações relacionadas em todo o arquivo
  • Pode ser usado como ferramenta de refatoração de código
  • Às vezes encontra bugs por conta própria e sugere correções
  • Ao colocar uma string entre aspas, faz o escape adequado do conteúdo
  • Consegue escrever uma função inteira apenas com a assinatura da função e um docstring opcional
  • As sugestões de conclusão são muito rápidas
  • Desvantagens:
    • Se você continuar digitando sem ver a sugestão a tempo, a sugestão de conclusão desaparece
    • Às vezes, depois de rejeitar intencionalmente uma conclusão incorreta, ao aceitar outra conclusão mais tarde, a sugestão rejeitada anteriormente acaba sendo aplicada silenciosamente

Edição inline, barra lateral de chat e Composer

  • A interação com o modelo base (principalmente o Claude 3.5 Sonnet) é muito parecida, com diferenças na interface do usuário
  • A edição inline é chamada com Ctrl-K/Cmd-K, e permite inserir a alteração desejada e receber um diff que pode ser aceito ou rejeitado
  • A barra lateral de chat é aberta com Ctrl+L/Cmd+L e oferece mais espaço para conversar várias vezes
  • O Composer foi projetado para refatorações em vários arquivos e oferece uma experiência melhor para revisar diffs de vários arquivos, um por vez

Arquivo .cursorrules

  • O conteúdo do arquivo .cursorrules, localizado na raiz do workspace, é sempre incluído nos vários formatos de chat para fornecer contexto adicional
  • Ele é usado para informar o LLM sobre os padrões de código do repositório, pacotes comuns e outros documentos
  • Pode ajudar a resolver um dos grandes obstáculos do Cursor: não seguir estilos e padrões de código, a menos que eles já existam no arquivo que está sendo editado
  • Atualmente há apenas um arquivo por workspace, então monorepos com código em várias linguagens são mais difíceis de configurar do que repositórios pequenos com conjuntos de código menores e de estilo consistente
  • O arquivo .cursorrules é usado apenas nos formatos de chat e não no autocompletar com Tab

Mudanças no fluxo de trabalho

  • O mais interessante não é o fato de ser possível escrever código mais rápido
  • Na prática, escrever código em si não é o gargalo
  • O verdadeiro valor está em mudar a forma de escrever código
  • O que mudou:
    1. A probabilidade de procurar novas bibliotecas ou frameworks diminuiu bastante
      • Para utilitários pequenos, é mais fácil deixar o LLM escrever algo sob medida para os requisitos do que importar uma biblioteca genérica
      • Muitas bibliotecas existem apenas para reduzir boilerplate, mas como o LLM pode fazer isso, o custo já não parece tão justificável
    2. Há menos preocupação em seguir rigidamente o princípio DRY (Don't Repeat Yourself) no próprio código
      • Definir abstrações cedo demais pode gerar muita dívida técnica depois
      • Como é possível gerar bastante código referenciando outros trechos, sem tentar transformá-los em funções ou classes, ganha-se mais flexibilidade
    3. A disposição para usar linguagens ou frameworks menos familiares ficou muito maior
      • Por exemplo, havia dificuldade em usar R, mas agora basta descrever a visualização desejada para obter a manipulação de dados correta e uma visualização em ggplot
    4. Pequenos componentes estão sendo iterados rapidamente antes de serem integrados a codebases maiores
      • Isso também ajuda a lidar com as limitações do LLM, mas abre formas interessantes de trabalhar que antes nem eram consideradas

Resumo

  • No momento, o Cursor é o melhor exemplo do potencial dos assistentes de programação com LLM
  • Se você quiser explorar como esse tipo de ferramenta pode ser valioso, vale a pena experimentar o Cursor

Opinião do GN⁺

  • O Cursor parece ser um bom exemplo do potencial das ferramentas de programação baseadas em LLM
    • Em especial, o recurso de autocompletar com Tab é atraente por ser natural de usar ao escrever código e por economizar bastante tempo
    • Os recursos baseados em chat também parecem poder ser úteis para refatoração e transformação de código
  • Ainda assim, por estar em estágio inicial, também parece haver limitações
    • Dificuldade para aplicar um estilo de código consistente
    • Problemas de usabilidade em estruturas de projeto complexas, como monorepos
    • Falta de clareza na diferença de recursos entre usuários gratuitos e pagos
  • Outras ferramentas com recursos semelhantes incluem GitHub Copilot, Tabnine e Kite
    • Como cada ferramenta tem seus prós e contras, a escolha deve considerar as características do projeto e a preferência pessoal
  • Ao adotar ferramentas de programação baseadas em LLM, vale considerar pontos como:
    • Aceitação da equipe de desenvolvimento: se há resistência à adoção de novas ferramentas
    • Custo de aprendizado: quanto tempo será necessário para aprender a usar a ferramenta
    • Manutenibilidade: se o código gerado pela ferramenta é fácil de entender e manter
    • Qualidade do código: se realmente ajuda a melhorar a qualidade do código
    • Custo-benefício: se o ganho de produtividade compensa os custos de adoção e manutenção

6 comentários

 
yangeok 2024-11-08

O chat do Cursor é a chave. Achei bem prático para gerar docstrings.

 
roxie 2024-11-04

Depois de usar o Cursor, o preenchimento automático do Copilot parece lento demais. ;_;

 
yangeok 2024-10-30

O autocompletar com Tab só é possível para quem paga?

 
angelkum 2024-10-31

É verdade que é algo disponível só para assinantes, mas existe uma assinatura gratuita e ela oferece 2.000 autocompletes por mês. Estou usando assim há 3 meses.
https://www.cursor.com/pricing

 
savvykang 2024-10-31

Autocompletar com Tab: autocompletar código disponível apenas para assinantes

Sim

 
rlahfl 2024-10-31

Está escrito no texto kkk