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.)

VS Code Extension Issues License

Backseat Driver dá aos harnesses de IA do VS Code acesso às ferramentas Clojure do Calva destas formas:

  1. Copilot: Configuração zero. (Usando VS Code LM Tools.).
  2. Cursor: Configuração zero. (Usando a API add-MCP-server do Cursor).
  3. 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/list e legíveis via resources/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ão 25) — número máximo de itens a exibir em coleções. Use 0 para desativar a limitação de comprimento.
  • calva-backseat-driver.evaluation.maxDepth (padrão 7) — profundidade máxima de aninhamento; estruturas mais profundas são substituídas por ##. Use 0 para desativar a limitação de profundidade.

Habilidades

Backseat Driver fornece duas habilidades aos agentes de IA:

  • calva-backseat-driver.provideBdSkill (padrão true) — fornece a habilidade Backseat Driver aos agentes
  • calva-backseat-driver.provideEditSkill (padrão true) — 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ão 2) — 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 como 0 para 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ão 10) — 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

Usando

  1. Ensine à IA a disciplina de Clojure e REPL, por exemplo: Veja: Instruções do Agente
  2. Conecte o Calva ao seu projeto Clojure/ClojureScript
  3. 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:

  1. "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 🍻🗽

MIT

Por favor, patrocine meu trabalho de código aberto ♥️

Você é bem-vindo a incentivar meu trabalho, usando este link: