Nossos problemas
Atualização: escrevemos sobre mais alguns problemas.
Uma lista não ordenada de problemas curtos e concretos:
-
Contexto melhorado: Há muitas fontes de informação em um editor de código: arquivos abertos, trechos de código semanticamente similares, classes conectadas simbolicamente, resultados de lint, rastros de execução, histórico de git, histórico de digitação, documentação externa e mais. Queremos que o modelo entenda instantaneamente o que é mais relevante para a pergunta do usuário e, no momento, estamos treinando um modelo de reranker personalizado e rápido para resolver esse problema. Para cada requisição, vamos reunir 500k tokens de todas as diferentes fontes e usar nosso reranker para filtrá-los até os 8k tokens mais relevantes. Isso é tanto um problema de modelo quanto, cada vez mais, um problema de infraestrutura.
-
Um “copilot para edições”: Embora o GitHub Copilot seja tremendamente útil para eliminar pressionamentos de teclas de baixa entropia ao escrever código novo, ele não ajuda você a economizar pressionamentos de teclas de baixa entropia quando precisa fazer mudanças pequenas e simples em blocos de código existentes. Pense na navegação, deleção e entrada de teclas de que você precisa para uma renomeação que é só um pouco mais complicada do que o que uma renomeação simbólica com F2 consegue fazer. Vamos precisar de inovação tanto em UX (diffs discretos que são mostrados para você enquanto você está codando) quanto do lado do modelo (prompting não é suficiente, por causa de problemas de custo, latência e inteligência).
-
Agentes restritos em fluxo: Pense no code interpreter da OpenAI, mas para engenharia em grandes codebases. Você está dizendo a um agente restrito, de poucos passos, o que fazer, e ele pesquisa, escreve e executa código para você, enquanto periodicamente consulta você para feedback. O primeiro passo para conseguir isso, no qual estamos trabalhando agora, é fazer um agente como esse que funcione em pastas de algumas centenas de milhares de tokens. Se isso for bem-sucedido, vamos aumentá-lo para funcionar em codebases inteiras.
-
Busca de bugs: Existem dois modos aqui: (1) em segundo plano, o Cursor estará sempre analisando passivamente seus arquivos para encontrar bugs em potencial para você e (2) quando você estiver mergulhado em uma sessão de depuração, o Cursor vai procurar ativamente pelo bug com a sua ajuda. Há muita coleta de dados interessante a ser feita aqui.
-
Edições maiores: O Cursor deve ser capaz de modificar arquivos inteiros, e até diretórios inteiros, para você. Esse é um desafio tanto de capacidades quanto de UX. Para velocidade, o modelo precisa ser inteligente o suficiente para selecionar as partes a serem modificadas sem reescrever tudo. Para tornar a experiência boa, as mudanças precisam ser mostradas em uma forma interpretável, em tempo real.
-
Escala: Temos 1,4 bilhão de vetores e 150 mil codebases indexadas, em 12 de outubro de 2023. Isso provavelmente vai crescer 10x até o fim do ano. Já construímos um mecanismo de sincronização de codebase muito rápido baseado em Merkle tree em Rust e provavelmente vamos precisar construir um sistema de indexação personalizado em breve.
Ideias futuras:
-
Dobra temporal (Time warp): Prever e exibir as mudanças de código entre arquivos que você fará nos próximos 15 minutos. Um único comando para aceitar todas as inserções/remoções.
-
Entendimento: Nossos modelos devem entender profundamente todos os conceitos em qualquer codebase, diretamente nos pesos.
-
Modo leitor (Reader mode): Tornar o entendimento de código sem esforço, com documentação em qualquer nível de especificidade e um bot que guia você pelos caminhos de código relevantes, explicando conforme necessário.
-
Modo pseudo-código (Pseudo-code mode): Editar uma representação em “esboço” do seu código e fazer com que as mudanças sejam aplicadas automaticamente no nível do código-fonte.
-
Nunca mais se preocupar com stack traces: A IDE simplesmente deve entender e corrigir o código automaticamente para você.
Tentamos coletar todos os problemas em que estamos pensando agora, mas — e isso é uma das coisas maravilhosas sobre construir um produto que você mesmo usa 12 horas por dia — constantemente temos novas ideias e reordenamos prioridades, então isso não deve ser visto como um roadmap definitivo. Dito isso, esperamos que isso dê uma noção de em que gastamos nossos ciclos mentais todos os dias.
Além disso, você leu bastante até aqui, então parece provável que você tenha algum interesse nos problemas em que estamos interessados :). Se for o caso, você deveria considerar se juntar a nós! Aqui vão alguns outros motivos pelos quais achamos que você iria adorar trabalhar com a gente:
-
As pessoas gostam de usar o Cursor. Estamos muito satisfeitos com o nosso crescimento inicial.
-
Você vai trabalhar com pessoas muito inteligentes aqui. Acreditamos profundamente em alta concentração de talentos. Todo mundo com quem você trabalhar aqui vai ser muito, muito bom no que faz.
-
Programação com IA é um mercado enorme. E nós podemos liderá-lo.
-
É divertido. Isso é muito importante para nós! É divertido trabalhar com pessoas de quem você gosta, é divertido construir um produto em que você aperta Cmd-Shift-R e recebe feedback instantâneo dos usuários porque você mesmo, enquanto programa, é o usuário-alvo, e é divertido fazer um pouco de progresso todos os dias rumo a automatizar todas as partes repetitivas e entediantes da programação.
-
Nós trabalhamos duro. Nos sentimos privilegiados por poder trabalhar nesses problemas e gostamos de colocar toda a nossa energia em resolvê-los.