Skip to main content

Sobre extensões para CLI do GitHub Copilot

As extensões permitem que você adicione suas próprias ferramentas e comandos slash ao CLI do GitHub Copilot, usando apenas o SDK incluído na CLI.

Quem pode usar esse recurso?

CLI do GitHub Copilot está disponível com todos os Copilot planos. Se você receber Copilot de uma organização, a CLI do Copilot política deverá ser habilitada nas configurações da organização.

Observação

CLI do GitHub Copilot no momento, as extensões são um recurso experimental e estão sujeitas a alterações.

Uma extensão permite que você adicione seus próprios recursos a CLI do Copilot. Cada extensão é um pequeno módulo Node.js que é executado como um processo separado junto com sua sessão interativa e se conecta novamente a ela. Por meio dessa conexão, uma extensão pode adicionar:

  • Ferramentas que Copilot pode usar enquanto trabalha em seu nome.
  • Comandos com barra que você mesmo executa.

Como uma extensão executa código real em seu computador, você pode adicionar recursos que as ferramentas internas não têm. Por exemplo, uma extensão pode acompanhar o que acontece em uma sessão e manter um total acumulado ao longo das chamadas de ferramenta, algo que um comando isolado do shell não pode fazer.

Este artigo explica como as extensões funcionam e como CLI do Copilot as manipula. Para obter um guia prático sobre como criar suas próprias extensões, consulte Criando extensões para CLI do GitHub Copilot.

Aviso

As extensões são executadas em seu computador com seus privilégios. Carregue apenas o código de uma extensão em que você confia, assim como só executaria qualquer outro script que você mesmo não escreveu.

Como as extensões são descobertas

Quando CLI do Copilot é iniciado, ele procura extensões em vários locais. Cada extensão reside em seu próprio subdiretório e esse subdiretório deve conter um arquivo de entrada chamado extension.mjs, extension.cjsou extension.js. Estes são todos arquivos JavaScript: o CLI do Copilot arquivo de entrada é executado diretamente com Node.js, portanto, uma extensão deve ser escrita em JavaScript— No momento, não há suporte para TypeScript e outros idiomas.

O nome do subdiretório torna-se o nome da extensão.

FonteLocalizaçãoDisponibilidade
Projeto
.github/extensions/NAME/ no repositório atualDisponível para qualquer pessoa que trabalhe nesse repositório.
Usuário~/.copilot/extensions/NAME/Disponível em todas as sessões da CLI, em todos os diretórios.
Plug-inUm plug-in instaladoDisponível onde quer que o plug-in esteja habilitado.

Escolhendo onde uma extensão reside

Onde você coloca o diretório de extensão determina quem pode usá-lo:

  • Coloque-o em .github/extensions/ um repositório quando a extensão for específica para esse projeto e você quiser compartilhá-la com todos que trabalham lá.
  • Coloque-a ~/.copilot/extensions/ quando quiser que a extensão esteja disponível em todas as suas próprias sessões, independentemente de qual diretório você inicie a CLI.

Os dois locais seguem exatamente a mesma estrutura, um subdiretório nomeado que contém um extension.mjs arquivo, para que você possa mover uma extensão de uma para a outra simplesmente realocando sua pasta.

Habilitando extensões

No momento, as extensões são um recurso experimental, portanto, você precisa ativar recursos experimentais. Você pode fazer isso fazendo um dos seguintes procedimentos:

  • Inicie a CLI com o --experimental sinalizador.
  • Execute o comando de barra /experimental on em uma sessão interativa.

Alterando como a CLI lida com extensões

Você pode limitar Copiloto acesso a extensões ou desativá-las totalmente usando o /extensions mode comando. Ao usar este comando, você obtém três opções:

  • Carregar &aumentar (o padrão)— a CLI executa suas extensões _e_Copilot pode gerenciá-las.
  • Carregar somente – a CLI executa suas extensões, mas Copilot não pode gerenciá-las.
  • Desabilitada— as extensões são totalmente desativadas na sessão atual e permanecerão desabilitadas em sessões futuras até que você alterne para uma das outras duas configurações. Outras sessões atuais não são afetadas.

Qualquer alteração que você fizer entra em vigor imediatamente na sessão atual:

  • Mudar para Desativado interrompe todas as extensões que estão em execução atualmente. Seus processos são desligados e suas ferramentas não estão mais disponíveis.
  • Ao mudar de Desabilitado para qualquer uma das outras configurações, suas extensões são iniciadas.
  • Alternar entre Load Only e Load &Augment apenas altera se Copilot pode gerenciar suas extensões.

O que significa "gerenciamento de extensões"

No modo Load & Augment, Copilot recebe um pequeno conjunto de ferramentas extras que permitem que ele atue diretamente no sistema de extensões, como parte da execução das suas solicitações. Usando essas ferramentas, Copilot pode:

  • Liste as extensões que ele descobriu e veja seu status.
  • Inspecione uma extensão, incluindo o final do arquivo de log, para ajudar a diagnosticar uma extensão que falhou ou está se comportando de forma inadequada.
  • Crie a estrutura de uma nova extensão — gere um arquivo inicial extension.mjs para você desenvolver a partir dele.
  • Recarregar extensões, para que o código que ela (ou você) acabou de escrever tenha efeito sem reiniciar a sessão.

Isso é o que possibilita que você peça Copilot para criar uma extensão para você. Copilot pode criar o arquivo, gravar o código e recarregá-lo, tudo sem sair da sessão.

Escolha Carregar somente quando quiser manter um conjunto conhecido e confiável de extensões em execução, mas não quiser Copilot criar, recarregar ou alterar o código de extensão , que é executado em seu computador, como um efeito colateral de seu trabalho. Suas extensões existentes ainda continuam funcionando, e Copilot ainda pode chamar as ferramentas que elas fornecem; simplesmente não pode gerenciar as próprias extensões.

Extensões em comparação com plug-ins

Tanto as extensões quanto os plugins adicionam funcionalidade ao CLI do Copilot, mas têm finalidades diferentes:

  • Uma extensão é um único módulo JavaScript que você escreve para adicionar ferramentas e comandos de barra, apoiados pelo código executado em sua sessão.
  • Um plug-in é um pacote instalável que agrupa componentes reutilizáveis, como agentes, habilidades, ganchos e integrações, e pode ser distribuído por meio de um marketplace.

Para obter mais informações sobre plug-ins, consulte Sobre plug-ins GitHub Copilot.

Leitura adicional