Pular para o conteúdo principal

Integração com o Shell do Terminal

A Integração com o Shell do Terminal é um recurso chave que permite ao AI Cockpit Reasoning executar comandos em seu terminal e processar inteligentemente sua saída. Essa comunicação bidirecional entre a IA e seu ambiente de desenvolvimento desbloqueia poderosas capacidades de automação.

O que é Integração com o Shell?

A integração com o shell é ativada automaticamente no AI Cockpit Reasoning e se conecta diretamente ao ciclo de vida de execução de comandos do seu terminal, sem exigir nenhuma configuração de sua parte. Este recurso integrado permite que o AI Cockpit Reasoning:

  • Execute comandos em seu nome através da ferramenta execute_command
  • Leia a saída do comando em tempo real sem copiar e colar manualmente
  • Detecte e corrija erros automaticamente em aplicativos em execução
  • Observe os códigos de saída do comando para determinar o sucesso ou a falha
  • Rastreie as alterações do diretório de trabalho enquanto você navega em seu projeto
  • Reaja inteligentemente à saída do terminal sem intervenção do usuário

Quando o AI Cockpit Reasoning precisa realizar tarefas como instalar dependências, iniciar um servidor de desenvolvimento ou analisar erros de compilação, a integração com o shell funciona nos bastidores para tornar essas interações suaves e eficazes.

Começando com a Integração com o Shell

A integração com o shell é integrada ao AI Cockpit Reasoning e funciona automaticamente na maioria dos casos. Se você vir mensagens de "Integração com o Shell Indisponível" ou tiver problemas com a execução de comandos, tente estas soluções:

  1. Atualize o VSCode/Cursor para a versão mais recente (VSCode 1.93+ necessário)
  2. Garanta que um shell compatível esteja selecionado: Paleta de Comandos (Ctrl+Shift+P ou Cmd+Shift+P) → "Terminal: Selecionar Perfil Padrão" → Escolha bash, zsh, PowerShell ou fish
  3. Usuários do Windows PowerShell: Execute Set-ExecutionPolicy RemoteSigned -Scope CurrentUser e reinicie o VSCode
  4. Usuários do WSL: Adicione . "$(code --locate-shell-integration-path bash)" ao seu ~/.bashrc

Configurações de Integração do Terminal

O AI Cockpit Reasoning fornece várias configurações para ajustar a integração com o shell. Acesse-as na barra lateral do AI Cockpit Reasoning em Configurações → Terminal.

Configurações Básicas

Limite de Saída do Terminal

Controle deslizante de limite de saída do terminal definido para 500

Controla o número máximo de linhas capturadas da saída do terminal. Quando excedido, mantém 20% do início e 80% do final com uma mensagem de truncamento no meio. Isso evita o uso excessivo de tokens, mantendo o contexto. Padrão: 500 linhas.

Limite de Caracteres do Terminal

Controle deslizante de limite de caracteres do terminal definido para 50000

Número máximo de caracteres a serem incluídos na saída do terminal ao executar comandos. Este limite tem precedência sobre o limite de linhas para evitar problemas de memória com linhas extremamente longas. Quando excedido, a saída será truncada. Padrão: 50000 caracteres.

Comprimir Saída da Barra de Progresso

Caixa de seleção Comprimir Saída da Barra de Progresso desmarcada

Quando ativado, processa a saída do terminal com retornos de carro (\r) para simular como um terminal real exibiria o conteúdo. Isso remove os estados intermediários da barra de progresso, retendo apenas o estado final, o que economiza espaço de contexto para informações mais relevantes.

Configurações Avançadas

Importante

É necessário reiniciar o terminal para estas configurações

As alterações nas configurações avançadas do terminal só entram em vigor após reiniciar seus terminais. Para reiniciar um terminal:

  1. Clique no ícone da lixeira no painel do terminal para fechar o terminal atual
  2. Abra um novo terminal com Terminal → Novo Terminal ou Ctrl+` (crase)

Sempre reinicie todos os terminais abertos após alterar qualquer uma dessas configurações.

Herdar Variáveis de Ambiente

Caixa de seleção Herdar ambiente

Quando ativado, o terminal herdará as variáveis de ambiente do processo pai do VSCode, como as configurações de integração do shell definidas pelo perfil do usuário. Isso alterna diretamente a configuração global do VSCode terminal.integrated.inheritEnv.

Desativar Integração com o Shell do Terminal

Caixa de seleção Desativar integração com o shell do terminal

Ative isso se os comandos do terminal não estiverem funcionando corretamente ou se você vir erros de 'Integração com o Shell Indisponível'. Isso usa um método mais simples para executar comandos, ignorando alguns recursos avançados do terminal.

Tempo Limite de Integração com o Shell do Terminal

Controle deslizante de tempo limite de integração com o shell do terminal definido para 15s

Tempo máximo de espera para a inicialização da integração com o shell antes de executar comandos. Aumente este valor se você tiver erros de "Integração com o Shell Indisponível". Padrão: 15 segundos.

Atraso do Comando do Terminal

Controle deslizante de atraso do comando do terminal definido para 0ms

Adiciona uma pequena pausa após a execução de comandos para ajudar o AI Cockpit Reasoning a capturar toda a saída corretamente. Esta configuração pode impactar significativamente a confiabilidade da integração com o shell devido à implementação da integração do terminal pelo VSCode em diferentes sistemas operacionais e configurações de shell:

  • Padrão: 0ms
  • Valores Comuns:
    • 0ms: Funciona melhor para alguns usuários com versões mais recentes do VSCode
    • 50ms: Padrão histórico, ainda eficaz para muitos usuários
    • 150ms: Recomendado para usuários do PowerShell
  • Nota: Valores diferentes podem funcionar melhor dependendo do seu:
    • Versão do VSCode
    • Personalizações do shell (oh-my-zsh, powerlevel10k, etc.)
    • Sistema operacional e ambiente

Solução Alternativa para Contador do PowerShell

Caixa de seleção de solução alternativa para contador do PowerShell

Ajuda o PowerShell a executar o mesmo comando várias vezes seguidas. Ative isso se você notar que o AI Cockpit Reasoning não consegue executar comandos idênticos consecutivamente no PowerShell.

Limpar Marca de Fim de Linha do ZSH

Caixa de seleção Limpar marca de fim de linha do ZSH

Impede que o ZSH adicione caracteres especiais no final das linhas de saída que podem confundir o AI Cockpit Reasoning ao ler os resultados do terminal.

Integração com o Oh My Zsh

Caixa de seleção Ativar integração com o Oh My Zsh

Faz com que o AI Cockpit Reasoning funcione melhor com o popular framework de personalização de shell Oh My Zsh. Ative isso se você usa o Oh My Zsh и tiver problemas com o terminal.

Integração com o Powerlevel10k

Caixa de seleção Ativar integração com o Powerlevel10k

Melhora a compatibilidade se você usa o tema Powerlevel10k para ZSH. Ative isso se o seu prompt de terminal sofisticado causar problemas com o AI Cockpit Reasoning.

Manipulação de ZDOTDIR

Caixa de seleção Ativar manipulação de ZDOTDIR

Ajuda o AI Cockpit Reasoning a trabalhar com configurações personalizadas do ZSH sem interferir nas suas configurações e personalizações pessoais do shell.

Solução de Problemas de Integração com o Shell

Política de Execução do PowerShell (Windows)

O PowerShell restringe a execução de scripts por padrão. Para configurar:

  1. Abra o PowerShell como Administrador
  2. Verifique a política atual: Get-ExecutionPolicy
  3. Defina a política apropriada: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Políticas comuns:

  • Restricted: Nenhum script permitido (padrão)
  • RemoteSigned: Scripts locais podem ser executados; scripts baixados precisam de assinatura
  • Unrestricted: Todos os scripts são executados com avisos
  • AllSigned: Todos os scripts devem ser assinados

Instalação Manual da Integração com o Shell

Se a integração automática falhar, adicione a linha apropriada à configuração do seu shell:

Bash (~/.bashrc):

[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)"

Zsh (~/.zshrc):

[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path zsh)"

PowerShell ($Profile):

if ($env:TERM_PROGRAM -eq "vscode") { . "$(code --locate-shell-integration-path pwsh)" }

Fish (~/.config/fish/config.fish):

string match -q "$TERM_PROGRAM" "vscode"; and . (code --locate-shell-integration-path fish)

Problemas de Personalização do Terminal

Se você usa ferramentas de personalização de terminal:

Powerlevel10k:

# Adicione antes de carregar o powerlevel10k no ~/.zshrc
typeset -g POWERLEVEL9K_TERM_SHELL_INTEGRATION=true

Alternativa: Ative a configuração de Integração com o Powerlevel10k no AI Cockpit Reasoning.

Verificando o Status da Integração com o Shell

Confirme se a integração com o shell está ativa com estes comandos:

Bash:

set | grep -i '[16]33;'
echo "$PROMPT_COMMAND" | grep vsc
trap -p DEBUG | grep vsc

Zsh:

functions | grep -i vsc
typeset -p precmd_functions preexec_functions

PowerShell:

Get-Command -Name "*VSC*" -CommandType Function
Get-Content Function:\Prompt | Select-String "VSCode"

Fish:

functions | grep -i vsc
functions fish_prompt | grep -i vsc

Indicadores visuais de integração ativa com o shell:

  1. Indicador de integração com o shell na barra de título do terminal
  2. Destaque de detecção de comando
  3. Atualizações do diretório de trabalho no título do terminal
  4. Relatório de duração do comando e código de saída

Métodos de Integração de Terminal WSL

Ao usar o Subsistema Windows para Linux (WSL), existem duas maneiras distintas de usar o VSCode com o WSL, cada uma com implicações diferentes para a integração do shell:

Método 1: VSCode Windows com Terminal WSL

Nesta configuração:

  • O VSCode é executado nativamente no Windows
  • Você usa o recurso de integração de terminal WSL no VSCode
  • Os comandos do shell são executados através da ponte WSL
  • Pode haver latência adicional devido à comunicação Windows-WSL
  • Os marcadores de integração do shell podem ser afetados pela fronteira WSL-Windows: você deve garantir que source "$(code --locate-shell-integration-path <shell>)" seja carregado para o seu shell no ambiente WSL, pois pode não ser carregado automaticamente; veja acima.

Método 2: VSCode Executando Dentro do WSL

Nesta configuração:

  • Você inicia o VSCode diretamente de dentro do WSL usando code .
  • O servidor VSCode é executado nativamente no ambiente Linux
  • Acesso direto ao sistema de arquivos e ferramentas do Linux
  • Melhor desempenho e confiabilidade para a integração do shell
  • A integração do shell é carregada automaticamente, pois o VSCode é executado nativamente no ambiente Linux
  • Abordagem recomendada para o desenvolvimento com WSL

Para uma integração ideal do shell com o WSL, recomendamos:

  1. Abra sua distribuição WSL
  2. Navegue até o diretório do seu projeto
  3. Inicie o VSCode usando code .
  4. Use o terminal integrado no VSCode

Problemas Conhecidos e Soluções Alternativas

Integração do Shell do VS Code para Fish + Cygwin no Windows

Para os colegas usuários do Windows que executam o terminal Fish em um ambiente Cygwin, veja como funciona a integração do shell do VS Code:

  1. (Opcional) Localize o Script de Integração do Shell: Abra seu terminal Fish dentro do VS Code e execute o seguinte comando:

    code --locate-shell-integration-path fish

    Isso exibirá o caminho para o script shellIntegration.fish. Anote este caminho.

  2. Atualize sua Configuração do Fish: Edite seu arquivo config.fish (geralmente localizado em ~/.config/fish/config.fish no diretório inicial do Cygwin). Adicione a seguinte linha, de preferência dentro de um bloco if status is-interactive ou no final do arquivo:

    # Exemplo de estrutura do config.fish
    if status is-interactive
    # Suas outras configurações de shell interativo...
    # localizar script de integração automaticamente:
    string match -q "$TERM_PROGRAM" "vscode"; and . (code --locate-shell-integration-path fish)

    # Ou se o acima falhar para você:
    # Carregue o script de integração do shell do VS Code
    # IMPORTANTE: Substitua o caminho de exemplo abaixo pelo caminho real que você encontrou na Etapa 1.
    # Certifique-se de que o caminho esteja em um formato que o Cygwin possa entender (por exemplo, usando /cygdrive/c/...).
    # source "/cygdrive/c/Users/SeuUsuario/.vscode/extensions/..../shellIntegration.fish"
    end

    Lembre-se de substituir o caminho de exemplo pelo caminho real da Etapa 1, formatado corretamente para o Cygwin.

  3. Configure o Perfil do Terminal do VS Code: Abra seu arquivo settings.json do VS Code (Ctrl+Shift+P -> "Preferences: Open User Settings (JSON)"). Atualize ou adicione o perfil do Fish em terminal.integrated.profiles.windows assim:

    {
    // ... outras configurações ...

    "terminal.integrated.profiles.windows": {
    // ... outros perfis ...

    // Recomendado: Use bash.exe para iniciar o fish como um shell de login
    "fish": {
    "path": "C:\\cygwin64\\bin\\bash.exe", // Ou o caminho do seu bash do Cygwin
    "args": [
    "--login", // Garante que os scripts de login sejam executados (importante para o ambiente Cygwin)
    "-i", // Garante que o bash seja executado interativamente
    "-c",
    "exec fish" // Substitui o processo bash pelo fish
    ],
    "icon": "terminal-bash" // Opcional: Use um ícone reconhecível
    }
    // Alternativa (se o acima falhar): Inicie o fish diretamente
    "fish-direct": {
    "path": "C:\\cygwin64\\bin\\fish.exe", // Certifique-se de que isso esteja no seu PATH do Windows ou forneça o caminho completo
    // Use 'options' aqui em vez de 'args'; caso contrário, você pode encontrar o erro "terminal process terminated exit code 1".
    "options": ["-l", "-c"], // Exemplo: flags de login e interativo.
    "icon": "terminal-fish" // Opcional: Use um ícone do fish
    }
    },

    // Opcional: Defina o fish como seu padrão, se desejar
    // "terminal.integrated.defaultProfile.windows": "fish", // ou "fish-direct" dependendo do que você usa.

    // ... outras configurações ...
    }

    Nota: Usar bash.exe --login -i -c "exec fish" costuma ser mais confiável em ambientes Cygwin para garantir a configuração correta do ambiente antes do fish iniciar. No entanto, se essa abordagem не funcionar, tente a configuração do perfil fish-direct.

  4. Reinicie o VS Code: Feche e reabra completamente o Visual Studio Code para aplicar as alterações.

  5. Verifique: Abra um novo terminal Fish no VS Code. Os recursos de integração do shell (como decorações de comando, melhor navegação no histórico de comandos, etc.) devem estar ativos agora. Você pode testar a funcionalidade básica executando comandos simples como echo "Olá do Fish integrado!". Exemplo de Integração do Fish com Cygwin

Esta configuração funciona de forma confiável em sistemas Windows usando Cygwin, Fish e o prompt Starship, e deve ajudar os usuários com configurações semelhantes.

Falhas na Integração do Shell Após o VSCode 1.98

Problema: Após as atualizações do VSCode para versões posteriores à 1.98, a integração do shell pode falhar com o erro "Sequência de escape de início de saída do VSCE (]633;C ou ]133;C) não recebida".

Soluções:

  1. Definir Atraso do Comando do Terminal:

    • Defina o Atraso do Comando do Terminal para 50ms nas configurações do AI Cockpit Reasoning
    • Reinicie todos os terminais após alterar esta configuração
    • Isso corresponde ao comportamento padrão mais antigo e pode resolver o problema, no entanto, alguns usuários relataram que um valor de 0ms funciona melhor. Esta é uma solução alternativa para problemas upstream do VSCode.
  2. Reverter a Versão do VSCode:

    • Baixe o VSCode v1.98 em Atualizações do VSCode
    • Substitua sua instalação atual do VSCode
    • Não é necessário fazer backup das configurações do AI Cockpit
  3. Solução Alternativa Específica para WSL:

    • Se estiver usando o WSL, certifique-se de iniciar o VSCode de dentro do WSL usando code .
  4. Usuários de ZSH:

    • Tente habilitar algumas ou todas as soluções alternativas relacionadas ao ZSH nas configurações do AI Cockpit Reasoning
    • Essas configurações podem ajudar independentemente do seu sistema operacional

Problemas Conhecidos e Soluções Alternativas

Comportamento do Ctrl+C

Problema: Se um texto já estiver digitado no terminal quando o AI Cockpit Reasoning tentar executar um comando, o AI Cockpit Reasoning pressionará Ctrl+C primeiro para limpar a linha, o que pode interromper processos em execução.

Solução alternativa: Certifique-se de que o prompt do terminal esteja vazio (sem comandos parciais digitados) antes de pedir ao AI Cockpit Reasoning para executar comandos no terminal.

Problemas com Comandos de Múltiplas Linhas

Problema: Comandos que se estendem por várias linhas podem confundir o AI Cockpit Reasoning e podem mostrar a saída de comandos anteriores misturada com a saída atual.

Solução alternativa: Em vez de comandos de várias linhas, use o encadeamento de comandos com && para manter tudo em uma única linha (por exemplo, echo a && echo b em vez de digitar cada comando em uma linha separada).

Problemas Específicos do PowerShell

  1. Conclusão Prematura: O PowerShell às vezes informa ao AI Cockpit Reasoning que um comando foi concluído antes que toda a saída tenha sido mostrada.
  2. Comandos Repetidos: O PowerShell pode se recusar a executar o mesmo comando duas vezes seguidas.

Solução alternativa: Habilite a configuração "Solução alternativa para contador do PowerShell" e defina um atraso de comando do terminal de 150ms nas configurações para dar mais tempo para os comandos serem concluídos.

Saída Incompleta do Terminal

Problema: Às vezes, o VS Code не mostra ou captura toda a saída de um comando.

Solução alternativa: Se você notar a falta de saída, tente fechar e reabrir a guia do terminal e, em seguida, execute o comando novamente. Isso atualiza a conexão do terminal.

Recursos para Solução de Problemas

Verificando os Logs de Depuração

Quando ocorrem problemas de integração com o shell, verifique os logs de depuração:

  1. Abra Ajuda → Alternar Ferramentas do Desenvolvedor → Console
  2. Defina "Mostrar Todos os Níveis" para ver todas as mensagens de log
  3. Procure por mensagens contendo [Terminal Process]
  4. Verifique o conteúdo de preOutput nas mensagens de erro:
    • preOutput vazio ('') significa que o VSCode não enviou dados
    • Isso indica um possível problema de integração do shell do VSCode ou um bug upstream que está fora do nosso controle
    • A ausência de marcadores de integração do shell pode exigir o ajuste das configurações para contornar possíveis bugs upstream ou problemas de configuração da estação de trabalho local relacionados à inicialização do shell e ao carregamento de ganchos especiais de integração do shell pelo VSCode

Usando a Extensão de Teste de Integração do Terminal do VSCode

A Extensão de Teste de Integração do Terminal do VSCode ajuda a diagnosticar problemas de integração do shell testando diferentes combinações de configurações:

  1. Quando os Comandos Travam:

    • Se você vir avisos de "comando já em execução", clique em "Redefinir Estatísticas" para redefinir o estado do terminal
    • Esses avisos indicam que a integração do shell не está funcionando
    • Tente diferentes combinações de configurações até encontrar uma que funcione
    • Se realmente travar, reinicie a extensão fechando a janela e pressionando F5
  2. Testando Configurações:

    • Tente sistematicamente diferentes combinações de:
      • Atraso do Comando do Terminal
      • Configurações de Integração do Shell
    • Documente quais combinações têm sucesso ou falham
    • Isso ajuda a identificar padrões em problemas de integração do shell
  3. Relatando Problemas:

    • Assim que encontrar uma configuração problemática
    • Documente a combinação exata de configurações
    • Anote seu ambiente (SO, versão do VSCode, shell e qualquer personalização de prompt do shell)
    • Abra um problema com esses detalhes para ajudar a melhorar a integração do shell