Ir al contenido principal

Integración de Shell en Terminal

La Integración de Shell en Terminal es una función clave que permite a AI Cockpit Reasoning ejecutar comandos en tu terminal y procesar inteligentemente su salida. Esta comunicación bidireccional entre la IA y tu entorno de desarrollo desbloquea poderosas capacidades de automatización.

¿Qué es la Integración de Shell?

La integración de shell se habilita automáticamente en AI Cockpit Reasoning y se conecta directamente al ciclo de vida de ejecución de comandos de tu terminal sin requerir ninguna configuración de tu parte. Esta función integrada permite a AI Cockpit Reasoning:

  • Ejecutar comandos en tu nombre a través de la herramienta execute_command
  • Leer la salida de comandos en tiempo real sin copiar y pegar manualmente
  • Detectar y corregir automáticamente errores en aplicaciones en ejecución
  • Observar los códigos de salida de comandos para determinar el éxito o el fracaso
  • Rastrear los cambios de directorio de trabajo mientras navegas por tu proyecto
  • Reaccionar inteligentemente a la salida del terminal sin intervención del usuario

Cuando AI Cockpit Reasoning necesita realizar tareas como instalar dependencias, iniciar un servidor de desarrollo o analizar errores de compilación, la integración de shell trabaja en segundo plano para que estas interacciones sean fluidas y efectivas.

Comenzar con la Integración de Shell

La integración de shell está integrada en AI Cockpit Reasoning y funciona automáticamente en la mayoría de los casos. Si ves mensajes de "Integración de Shell No Disponible" o experimentas problemas con la ejecución de comandos, prueba estas soluciones:

  1. Actualiza VSCode/Cursor a la última versión (se requiere VSCode 1.93+)
  2. Asegúrate de que se seleccione un shell compatible: Paleta de Comandos (Ctrl+Shift+P o Cmd+Shift+P) → "Terminal: Select Default Profile" → Elige bash, zsh, PowerShell o fish
  3. Usuarios de Windows PowerShell: Ejecuta Set-ExecutionPolicy RemoteSigned -Scope CurrentUser y luego reinicia VSCode
  4. Usuarios de WSL: Agrega . "$(code --locate-shell-integration-path bash)" a tu ~/.bashrc

Configuración de Integración de Terminal

AI Cockpit Reasoning proporciona varias configuraciones para ajustar la integración de shell. Accede a estas en la barra lateral de AI Cockpit Reasoning en Configuración → Terminal.

Configuración Básica

Límite de Salida del Terminal

Control deslizante de límite de salida del terminal establecido en 500

Controla el número máximo de líneas capturadas de la salida del terminal. Cuando se supera, mantiene el 20% del principio y el 80% del final con un mensaje de truncamiento en el medio. Esto evita el uso excesivo de tokens mientras mantiene el contexto. Predeterminado: 500 líneas.

Límite de Caracteres del Terminal

Control deslizante de límite de caracteres del terminal establecido en 50000

Número máximo de caracteres a incluir en la salida del terminal al ejecutar comandos. Este límite tiene precedencia sobre el límite de líneas para evitar problemas de memoria por líneas extremadamente largas. Cuando se supera, la salida se truncará. Predeterminado: 50000 caracteres.

Comprimir Salida de Barra de Progreso

Casilla de verificación Comprimir Salida de Barra de Progreso sin marcar

Cuando está habilitado, procesa la salida del terminal con retornos de carro (\r) para simular cómo un terminal real mostraría el contenido. Esto elimina los estados intermedios de la barra de progreso, conservando solo el estado final, lo que ahorra espacio de contexto para información más relevante.

Configuración Avanzada

Importante

Se requiere reiniciar el terminal para estas configuraciones

Los cambios en la configuración avanzada del terminal solo surten efecto después de reiniciar tus terminales. Para reiniciar un terminal:

  1. Haz clic en el ícono de papelera en el panel del terminal para cerrar el terminal actual
  2. Abre un nuevo terminal con Terminal → Nuevo Terminal o Ctrl+` (acento grave)

Siempre reinicia todos los terminales abiertos después de cambiar cualquiera de estas configuraciones.

Heredar Variables de Entorno

Casilla de verificación Heredar entorno

Cuando está habilitado, el terminal heredará las variables de entorno del proceso padre de VSCode, como las configuraciones de integración de shell definidas en el perfil del usuario. Esto alterna directamente la configuración global de VSCode terminal.integrated.inheritEnv.

Deshabilitar Integración de Shell del Terminal

Casilla de verificación Deshabilitar integración de shell del terminal

Habilita esto si los comandos del terminal no funcionan correctamente o ves errores de 'Integración de Shell No Disponible'. Esto usa un método más simple para ejecutar comandos, omitiendo algunas funciones avanzadas del terminal.

Tiempo de Espera de Integración de Shell del Terminal

Control deslizante de tiempo de espera de integración de shell del terminal establecido en 15s

Tiempo máximo de espera para que se inicialice la integración de shell antes de ejecutar comandos. Aumenta este valor si experimentas errores de "Integración de Shell No Disponible". Predeterminado: 15 segundos.

Retraso de Comando del Terminal

Control deslizante de retraso de comando del terminal establecido en 0ms

Agrega una pequeña pausa después de ejecutar comandos para ayudar a AI Cockpit Reasoning a capturar toda la salida correctamente. Esta configuración puede afectar significativamente la confiabilidad de la integración de shell debido a la implementación de VSCode de la integración de terminal en diferentes sistemas operativos y configuraciones de shell:

  • Predeterminado: 0ms
  • Valores Comunes:
    • 0ms: Funciona mejor para algunos usuarios con versiones más recientes de VSCode
    • 50ms: Predeterminado histórico, aún efectivo para muchos usuarios
    • 150ms: Recomendado para usuarios de PowerShell
  • Nota: Diferentes valores pueden funcionar mejor dependiendo de tu:
    • Versión de VSCode
    • Personalizaciones de shell (oh-my-zsh, powerlevel10k, etc.)
    • Sistema operativo y entorno

Solución Alternativa para Contador de PowerShell

Casilla de verificación de solución alternativa para contador de PowerShell

Ayuda a PowerShell a ejecutar el mismo comando varias veces seguidas. Habilita esto si notas que AI Cockpit Reasoning no puede ejecutar comandos idénticos consecutivamente en PowerShell.

Borrar Marca EOL de ZSH

Casilla de verificación Borrar marca EOL de ZSH

Evita que ZSH agregue caracteres especiales al final de las líneas de salida que pueden confundir a AI Cockpit Reasoning al leer los resultados del terminal.

Integración con Oh My Zsh

Casilla de verificación Habilitar integración con Oh My Zsh

Hace que AI Cockpit Reasoning funcione mejor con el popular framework de personalización de shell Oh My Zsh. Activa esto si usas Oh My Zsh y experimentas problemas con el terminal.

Integración con Powerlevel10k

Casilla de verificación Habilitar integración con Powerlevel10k

Mejora la compatibilidad si usas el tema Powerlevel10k para ZSH. Activa esto si tu elegante prompt de terminal causa problemas con AI Cockpit Reasoning.

Manejo de ZDOTDIR

Casilla de verificación Habilitar manejo de ZDOTDIR

Ayuda a AI Cockpit Reasoning a trabajar con configuraciones personalizadas de ZSH sin interferir con tu configuración y personalizaciones personales del shell.

Solución de Problemas de Integración de Shell

Política de Ejecución de PowerShell (Windows)

PowerShell restringe la ejecución de scripts de forma predeterminada. Para configurar:

  1. Abre PowerShell como Administrador
  2. Verifica la política actual: Get-ExecutionPolicy
  3. Establece la política apropiada: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Políticas comunes:

  • Restricted: No se permiten scripts (predeterminado)
  • RemoteSigned: Los scripts locales pueden ejecutarse; los scripts descargados necesitan firma
  • Unrestricted: Todos los scripts se ejecutan con advertencias
  • AllSigned: Todos los scripts deben estar firmados

Instalación Manual de Integración de Shell

Si la integración automática falla, agrega la línea apropiada a la configuración de tu 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 Personalización del Terminal

Si usas herramientas de personalización del terminal:

Powerlevel10k:

# Agrega antes de cargar powerlevel10k en ~/.zshrc
typeset -g POWERLEVEL9K_TERM_SHELL_INTEGRATION=true

Alternativa: Habilita la configuración de Integración con Powerlevel10k en AI Cockpit Reasoning.

Verificar el Estado de la Integración de Shell

Confirma que la integración de shell está activa con estos 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 visuales de integración de shell activa:

  1. Indicador de integración de shell en la barra de título del terminal
  2. Resaltado de detección de comandos
  3. Actualizaciones del directorio de trabajo en el título del terminal
  4. Informes de duración de comandos y código de salida

Métodos de Integración de Terminal WSL

Cuando se usa el Subsistema de Windows para Linux (WSL), hay dos formas distintas de usar VSCode con WSL, cada una con diferentes implicaciones para la integración de shell:

Método 1: VSCode Windows con Terminal WSL

En esta configuración:

  • VSCode se ejecuta de forma nativa en Windows
  • Usas la función de integración de terminal WSL en VSCode
  • Los comandos de shell se ejecutan a través del puente WSL
  • Puede experimentar latencia adicional debido a la comunicación Windows-WSL
  • Los marcadores de integración de shell pueden verse afectados por el límite WSL-Windows: debes asegurarte de que source "$(code --locate-shell-integration-path <shell>)" esté cargado para tu shell dentro del entorno WSL porque puede no cargarse automáticamente; ver arriba.

Método 2: VSCode Ejecutándose Dentro de WSL

En esta configuración:

  • Lanzas VSCode directamente desde dentro de WSL usando code .
  • El servidor VSCode se ejecuta de forma nativa en el entorno Linux
  • Acceso directo al sistema de archivos y herramientas de Linux
  • Mejor rendimiento y confiabilidad para la integración de shell
  • La integración de shell se carga automáticamente ya que VSCode se ejecuta de forma nativa en el entorno Linux
  • Enfoque recomendado para el desarrollo con WSL

Para una integración de shell óptima con WSL, recomendamos:

  1. Abre tu distribución WSL
  2. Navega al directorio de tu proyecto
  3. Lanza VSCode usando code .
  4. Usa el terminal integrado dentro de VSCode

Problemas Conocidos y Soluciones Alternativas

VS Code Shell Integration para Fish + Cygwin en Windows

Para usuarios de Windows que ejecutan el terminal Fish dentro de un entorno Cygwin, así es como funciona la integración de shell de VS Code:

  1. (Opcional) Localizar el Script de Integración de Shell: Abre tu terminal Fish dentro de VS Code y ejecuta el siguiente comando:

    code --locate-shell-integration-path fish

    Esto mostrará la ruta al script shellIntegration.fish. Anota esta ruta.

  2. Actualizar tu Configuración de Fish: Edita tu archivo config.fish (generalmente ubicado en ~/.config/fish/config.fish dentro de tu directorio home de Cygwin). Agrega la siguiente línea, preferiblemente dentro de un bloque if status is-interactive o al final del archivo:

    # Estructura de ejemplo de config.fish
    if status is-interactive
    # Tus otras configuraciones de shell interactivo...
    # localizar automáticamente el script de integración:
    string match -q "$TERM_PROGRAM" "vscode"; and . (code --locate-shell-integration-path fish)

    # O si lo anterior falla:
    # Cargar el script de integración de shell de VS Code
    # IMPORTANTE: Reemplaza la ruta de ejemplo a continuación con la ruta real que encontraste en el Paso 1.
    # Asegúrate de que la ruta esté en un formato que Cygwin pueda entender (p. ej., usando /cygdrive/c/...).
    # source "/cygdrive/c/Users/TuUsuario/.vscode/extensions/..../shellIntegration.fish"
    end

    Recuerda reemplazar la ruta de ejemplo con la ruta real del Paso 1, correctamente formateada para Cygwin.

  3. Configurar el Perfil de Terminal de VS Code: Abre tu archivo settings.json de VS Code (Ctrl+Shift+P -> "Preferences: Open User Settings (JSON)"). Actualiza o agrega el perfil Fish bajo terminal.integrated.profiles.windows así:

    {
    // ... otras configuraciones ...

    "terminal.integrated.profiles.windows": {
    // ... otros perfiles ...

    // Recomendado: Usar bash.exe para lanzar fish como shell de inicio de sesión
    "fish": {
    "path": "C:\\cygwin64\\bin\\bash.exe", // O tu ruta de bash de Cygwin
    "args": [
    "--login", // Asegura que se ejecuten los scripts de inicio de sesión (importante para el entorno Cygwin)
    "-i", // Asegura que bash se ejecute de forma interactiva
    "-c",
    "exec fish" // Reemplaza el proceso bash con fish
    ],
    "icon": "terminal-bash" // Opcional: Usa un ícono reconocible
    }
    // Alternativa (si lo anterior falla): Lanzar fish directamente
    "fish-direct": {
    "path": "C:\\cygwin64\\bin\\fish.exe", // Asegúrate de que esté en tu PATH de Windows o proporciona la ruta completa
    "options": ["-l", "-c"], // Ejemplo: indicadores de inicio de sesión e interactivo.
    "icon": "terminal-fish" // Opcional: Usa un ícono de fish
    }
    },

    // ... otras configuraciones ...
    }
  4. Reiniciar VS Code: Cierra y vuelve a abrir Visual Studio Code completamente para aplicar los cambios.

  5. Verificar: Abre un nuevo terminal Fish en VS Code. Las funciones de integración de shell (como decoraciones de comandos, mejor navegación del historial de comandos, etc.) deberían estar activas ahora. Ejemplo de Integración Fish Cygwin

Fallos de Integración de Shell Después de VSCode 1.98

Problema: Después de actualizaciones de VSCode más allá de la versión 1.98, la integración de shell puede fallar con el error "VSCE output start escape sequence (]633;C or ]133;C) not received".

Soluciones:

  1. Establecer Retraso de Comando del Terminal:

    • Establece el Retraso de Comando del Terminal en 50ms en la configuración de AI Cockpit Reasoning
    • Reinicia todos los terminales después de cambiar esta configuración
    • Esto coincide con el comportamiento predeterminado anterior y puede resolver el problema
  2. Revertir la Versión de VSCode:

  3. Solución Alternativa Específica para WSL:

    • Si usas WSL, asegúrate de lanzar VSCode desde dentro de WSL usando code .
  4. Usuarios de ZSH:

    • Intenta habilitar algunas o todas las soluciones alternativas relacionadas con ZSH en la configuración de AI Cockpit Reasoning

Comportamiento de Ctrl+C

Problema: Si ya hay texto escrito en el terminal cuando AI Cockpit Reasoning intenta ejecutar un comando, AI Cockpit Reasoning presionará Ctrl+C primero para limpiar la línea, lo que puede interrumpir los procesos en ejecución.

Solución Alternativa: Asegúrate de que el prompt de tu terminal esté vacío (sin comandos parciales escritos) antes de pedirle a AI Cockpit Reasoning que ejecute comandos del terminal.

Problemas con Comandos de Múltiples Líneas

Problema: Los comandos que abarcan múltiples líneas pueden confundir a AI Cockpit Reasoning y pueden mostrar salida de comandos anteriores mezclada con la salida actual.

Solución Alternativa: En lugar de comandos de múltiples líneas, usa el encadenamiento de comandos con && para mantener todo en una línea (p. ej., echo a && echo b en lugar de escribir cada comando en una línea separada).

Problemas Específicos de PowerShell

  1. Finalización Prematura: PowerShell a veces le dice a AI Cockpit Reasoning que un comando ha terminado antes de que se haya mostrado toda la salida.
  2. Comandos Repetidos: PowerShell puede negarse a ejecutar el mismo comando dos veces seguidas.

Solución Alternativa: Habilita la configuración "Solución alternativa para contador de PowerShell" y establece un retraso de comando del terminal de 150ms en la configuración para dar más tiempo a los comandos para completarse.

Salida del Terminal Incompleta

Problema: A veces VS Code no muestra ni captura toda la salida de un comando.

Solución Alternativa: Si notas salida faltante, intenta cerrar y volver a abrir la pestaña del terminal, luego ejecuta el comando nuevamente. Esto actualiza la conexión del terminal.

Recursos de Solución de Problemas

Verificar Registros de Depuración

Cuando ocurren problemas de integración de shell, verifica los registros de depuración:

  1. Abre Ayuda → Alternar Herramientas de Desarrollador → Consola
  2. Establece "Mostrar Todos los Niveles" para ver todos los mensajes de registro
  3. Busca mensajes que contengan [Terminal Process]
  4. Verifica el contenido de preOutput en los mensajes de error:
    • preOutput vacío ('') significa que VSCode no envió datos
    • Esto indica un posible problema de integración de shell de VSCode
    • La ausencia de marcadores de integración de shell puede requerir ajustar la configuración para solucionar posibles errores upstream o problemas de configuración de la estación de trabajo local relacionados con la inicialización del shell y la carga de hooks especiales de integración de shell de VSCode