Calva Backseat Driver
Um servidor MCP para a extensão Calva do VS Code, permitindo que assistentes de IA interajam com um REPL Clojure ativo.
Documentação
Habilitando Programação Interativa Nativa com IA no VS Code
Ferramentas Clojure para harnesses de IA do VS Code. (Como Copilot e Cursor.)
Backseat Driver dá aos harnesses de IA do VS Code acesso às ferramentas Clojure do Calva destas formas:
- Copilot: Configuração zero. (Usando VS Code LM Tools.).
- Cursor: Configuração zero. (Usando a API add-MCP-server do Cursor).
- Outros harnesses de IA: MCP (Exigindo alguma configuração por projeto).
Recursos
- Ferramenta: Avaliar Código Acesso ao REPL do Clojure para avaliar código à vontade. Todas as sessões REPL ativas no Calva estão disponíveis para direcionamento (e com shadow-cljs, também builds e runtime).
- Ferramenta: Editar Arquivos Clojure Criação e edição estrutural de arquivos, com suporte a lotes. Inclui:
- Criar Arquivo Clojure Cria arquivos Clojure com balanceamento automático de colchetes
- Anexar Código Anexa código a arquivos Clojure com balanceamento automático de colchetes
- Substituir Forma de Nível Superior Edição estrutural, incluindo formatação, balanceamento de colchetes e linting
- Inserir Forma de Nível Superior Edição estrutural, incluindo formatação, balanceamento de colchetes e linting
- Ferramenta: Balanceador de Colchetes Ajuda o modelo a acertar o balanceamento de colchetes (alimentado por Parinfer)
- Ferramenta: Carregar Arquivo Carregar/avaliar um arquivo Clojure inteiro através do REPL conectado do Calva
- Ferramenta: Consulta de informações de símbolo, a IA pode consultar símbolos de seu interesse e obter doc strings, informações de argumentos, etc.
- Ferramenta: Consulta clojuredocs.org, docs, exemplos e informações de veja também sobre símbolos do núcleo do Clojure
- Recurso: Consulta de informações de símbolo, (um pouco experimental) igual à ferramenta
- Recurso: Consulta clojuredocs.org, (um pouco experimental) igual à ferramenta
- Recurso: Habilidades, instruções especializadas descobríveis via
resources/liste legíveis viaresources/read
Observe que para as ferramentas de edição não há interface para revisar as edições. Sugiro usar as ferramentas de controle de fonte e a visualização Timeline do VS Code para isso.
Instruções do Agente: Aproveitando o Backseat Driver
Backseat Driver dá ao agente de IA as ferramentas para Programação Interativa em Clojure e as habilidades para usar as ferramentas. Para permitir que você mantenha o controle de como seus agentes lidam com Clojure e o REPL, a extensão não fornece muito em termos de conhecimento de Clojure, filosofia, nem metodologia de REPL.
Para que o trabalho de agente com Clojure seja verdadeiramente eficaz, ele precisa saber como você prefere que o Clojure seja escrito e como usar o REPL de forma eficaz.
Para evitar começar do zero, onde dados de treinamento ruins e alucinações sobre Clojure estragam o dia, considere instalar o plugin clojure e outros do repositório Awesome Backseat Driver.
[!NOTE] Awesome Backseat Driver tem plugins para Copilot e Cursor (até agora). Mas se você estiver usando outro harness, ainda pode copiar as habilidades, agentes personalizados, etc. de lá. (Ou peça ao seu agente para fazer isso por você.)
Configurando o Backseat Driver
Limitação do tamanho do resultado da avaliação
Para evitar que grandes resultados de avaliação do REPL sobrecarreguem a janela de contexto do agente, o Backseat Driver limita automaticamente o tamanho dos resultados retornados:
calva-backseat-driver.evaluation.maxLength(padrão25) — número máximo de itens a exibir em coleções. Use0para desativar a limitação de comprimento.calva-backseat-driver.evaluation.maxDepth(padrão7) — profundidade máxima de aninhamento; estruturas mais profundas são substituídas por##. Use0para desativar a limitação de profundidade.
Habilidades
Backseat Driver fornece duas habilidades aos agentes de IA:
calva-backseat-driver.provideBdSkill(padrãotrue) — fornece a habilidade Backseat Driver aos agentescalva-backseat-driver.provideEditSkill(padrãotrue) — fornece a habilidade de edição estrutural Clojure aos agentes
Configuração do editor
As ferramentas de edição estrutural para inserir e substituir formas de nível superior respeitam duas configurações de editor do Backseat Driver:
calva-backseat-driver.editor.fuzzyLineTargetingPadding(padrão2) — número de linhas de cada lado da linha solicitada que a IA pode escanear ao corresponder ao texto alvo. Aumente isso se as formas se moverem durante refatorações maiores; defina como0para direcionamento exato de linha. Trade-off: valores maiores toleram deslocamentos de linha, mas aumentam o risco de corresponder a uma forma semelhante próxima quando a cópia do buffer do agente está desatualizada.calva-backseat-driver.editor.lineContextResponsePadding(padrão10) — número de linhas de cada lado da linha solicitada incluídas no trecho de solução de problemas retornado quando o direcionamento falha. Reduza isso para manter as respostas mais curtas, ou aumente para mais contexto ao redor. Trade-off: valores maiores dão ao agente mais pistas para uma nova tentativa, mas podem custar tokens extras (ou tempo) em comparação com o envio de um trecho focado.
MCP
Veja: Configurar Backseat Driver como um servidor MCP
Começando
Pré-requisitos
- VS Code (ou seu fork favorito)
- Calva
- Calva Backseat Driver
- GitHub Copilot (ou algum assistente compatível com MCP)
Usando
- Ensine à IA a disciplina de Clojure e REPL, por exemplo: Veja: Instruções do Agente
- Conecte o Calva ao seu projeto Clojure/ClojureScript
- Peça ao Copilot para ajudar você com as coisas. Ele saberá o que você quer dizer quando disser: "Por favor, use o REPL para investigar ...".
- Ele saberá como encontrar a sessão REPL certa e como usá-la.
- Configure o Calva para usar o terminal para saída do REPL e monitore o terminal de saída para ver o que ele tenta no REPL
Funciona muito bem com subagentes, também subagentes paralelos. Tente algo como:
- "Por favor, atribua três subagentes paralelos para usar o REPL para investigar como implementar ..."
- A saída do REPL mostrará a você e aos agentes quem está tentando o quê no REPL.
- Você pode participar da festa do REPL.
Em andamento
Como todos nós, estou aprendendo a usar IA e descobrindo uma coisa de cada vez. Tudo enquanto o espaço inteiro está se movendo mais rápido do que consigo aprender. Backseat Driver é meu melhor esforço para fornecer aos desenvolvedores Clojure ferramentas de IA poderosas que podem ser usadas com configuração zero.
O design básico do Backseat Driver provou funcionar e ser útil ao longo do tempo. Mas também tenho melhorado incrementalmente conforme aprendi coisas novas. Muitas dessas coisas aprendi com os usuários.
Por favor, por favor, me avise como você está se saindo com o Backseat Driver e quais recursos gostaria de ver. 🙏
Contribuindo
Contribuições são bem-vindas! Issues, PRs, o que for. Antes de um PR, aprecio uma issue declarando o problema a ser resolvido. Você também pode querer entrar em contato discutindo a issue antes de começar a trabalhar nela.
Licença 🍻🗽
Por favor, patrocine meu trabalho de código aberto ♥️
Você é bem-vindo a incentivar meu trabalho, usando este link: