Emacs-copilot: conclusão de código por modelo de linguagem grande para Emacs
Usuários de Emacs estão reagindo a um novo plugin “emacs-copilot” que traz conclusão de código no estilo GitHub Copilot para o editor usando modelos de linguagem grande executados localmente via a pilha llamafile/llama.cpp da Mozilla. Os comentaristas avaliam os benefícios de modelos auto-hospedados para privacidade, controle e desempenho em comparação com APIs na nuvem, e debatem estilos de interação como conclusões sob demanda versus conclusões constantemente empurradas. O projeto também levanta preocupações sobre conflitos de nome com clientes Copilot já existentes para Emacs, possíveis questões de marca registrada da Microsoft em torno de “Copilot” e o modelo de segurança de distribuir pacotes de modelo executáveis em vez de arquivos de pesos simples.
Nomeação, marcas registradas e confusão
- O nome do pacote “copilot” é confuso porque o Emacs já tem um cliente GitHub Copilot com um nome semelhante.
- Vários comentários discutem se “Copilot” é ou pode ser uma marca registrada da Microsoft e como isso se cruza com o uso genérico.
- Alguns argumentam que tudo bem, desde que não haja intenção de confundir usuários ou lucrar com a confusão da marca; outros antecipam pressão jurídica de qualquer forma.
Arquitetura, llamafile e desempenho
- O pacote usa llamafile (llama.cpp dentro de um “executável realmente portátil”) para executar modelos locais.
- O carregamento baseado em mmap evita recarregar totalmente o modelo a cada vez; a primeira conclusão em um arquivo é mais lenta, as seguintes são muito mais rápidas graças a um cache ao lado do arquivo.
- Modelos grandes (por exemplo, 34B) são utilizáveis, mas lentos; modelos menores quantizados como WizardCoder 13B ou Phi-2 rodam de forma aceitável em máquinas de faixa média.
- Atualizar o llamafile não exige estritamente baixar novamente os pesos; usuários podem extrair pesos GGUF e reempacotá-los em um novo binário ou apontar um llamafile genérico para pesos externos com
-m.
Local vs remoto / auto-hospedado vs nuvem
- Há forte entusiasmo por LLMs auto-hospedados para evitar enviar código para OpenAI/Microsoft e para manter o controle.
- Alguns querem executar modelos em servidores na LAN ou via SSH; exemplos usando
sshcomcall-processe as APIs HTTP do llamafile são discutidos. - Outros observam que ferramentas existentes como ollama e o servidor do llama.cpp já fornecem endpoints no estilo OpenAI com streaming.
UX: conclusões sob demanda vs inline
- Alguns usuários preferem o estilo GitHub Copilot: sugestões inline em cinza aparecendo automaticamente.
- Outros detestam fortemente conclusões “push”, achando-as distrativas; preferem interações explícitas de “pense quando eu pedir” e poder interromper o streaming.
- Há concordância de que a configurabilidade entre os modos push/pull seria o ideal.
Ecossistema e alternativas
- Vários pacotes de LLM para Emacs são mencionados: gptel, ellama, modos relacionados ao chatgpt, llm.el, ferramentas integradas ao org e um cliente GitHub Copilot.
- Para Vim/Neovim, usuários mencionam gp.nvim, gen.nvim e comandos personalizados; alguns fazem forks de plugins para combinar modelos locais (ollama) e remotos.
Segurança e confiança
- Alguns desconfiam de llamafiles executáveis em vez de arquivos “burramente” de pesos de modelo, traçando analogias com formatos pickle inseguros.
- Outros respondem que o llamafile é apoiado por uma organização respeitável e também pode ser usado com pesos GGUF externos; os modelos de ameaça diferem.
Problemas de configuração e plataformas
- Vários usuários em macOS e Asahi Linux encontram
vfork: Exec format errorquando o Emacs lança o llamafile. - Soluções alternativas incluem usar um interpretador “ape”, converter llamafiles em binários nativos com “assimilate”, ou executar um Emacs ligado ao Cosmo.
Debate sobre a utilidade de LLMs
- Alguns estão entusiasmados, especialmente para Lisp e trabalho pesado em boilerplate (por exemplo, React moderno).
- Outros argumentam que revisar e validar a saída do LLM anula ganhos de produtividade para código de produção de alta qualidade, e se preocupam com desenvolvedores transferindo responsabilidade (“foi o modelo que escreveu”).