Velocidad terminal: la CLI como tu capa de abstracción de IA
Esta es una traducción automática del original en inglés. Puede perderse algún matiz, así que la versión en inglés es la referencia. Leer el original en inglés
En resumen
En un laboratorio de IA moderno, tu rendimiento está limitado por el coste de cambiar de contexto. Si te pasas el día cambiando con alt-tab a un navegador para pegar logs de error o mensajes de commit, estás desangrando tu concentración. Yo lo ejecuto todo desde una instancia de WSL2 muy personalizada, porque la terminal es la interfaz nativa de la “capa de inteligencia”. Al canalizar el sistema operativo directamente a un LLM, he reducido mi “trabajo tonto” (formatear, redactar commits, cazar logs) casi a cero.
El cambio no fue ideológico. Mi IDE fallaba una y otra vez con los comandos de PowerShell y Bash, y la terminal sencillamente hacía el trabajo. Esa fue toda la conversión.
La arquitectura
Mi flujo de trabajo trata el shell como una canalización de datos componible. La salida de cualquier comando, ya sea una compilación fallida, un git diff o una respuesta de curl, es simplemente texto. Y el texto es el idioma principal de los LLM.
| Componente | Herramienta / configuración | Motivo |
|---|---|---|
| Shell | Zsh + Oh My Zsh | Ecosistema de plugins y un autocompletado superior. |
| Terminal | Windows Terminal | Las mejores pestañas múltiples y el mejor renderizado por GPU en Windows. |
| Multiplexor | Tmux | Sesiones persistentes entre reinicios de WSL2. |
| Fuente | MesloLGS NF | Necesaria para Powerlevel10k y la iconografía. |
| CLI de IA | fabric / ollama | Envoltorios ligeros para canalizar texto a los cerebros. |
La construcción
El verdadero poder vive en tu .zshrc. No uso agentes complejos para tareas simples; uso funciones de shell que hablan con mi GekroLLMClient.
1. Commits de Git con IA
Deja de escribir “fix” como mensaje de commit. Esta función prepara tus cambios, envía el diff a una instancia local de Llama 3 y genera un mensaje de commit convencional.
# Generate AI commit message from staged changes
aic() {
local diff=$(git diff --cached)
if [ -z "$diff" ]; then
echo "No staged changes found."
return 1
fi
echo "Generating commit message..."
local msg=$(echo "$diff" | ollama run llama3 "Generate a concise, one-line conventional commit message for this diff. No preamble.")
git commit -m "$msg"
}
2. La tubería “explain”
Cada vez que un comando falla, lo canalizo. Se acabó buscar en Google códigos de error oscuros de C++.
# Pipe any output to LLM for instant explanation
alias explain="ollama run llama3 'Explain this error output and suggest a fix concisely:'"
# Usage:
# npm run build | explain
3. Nota sobre la configuración de WSL2
Para que esto se sienta como una experiencia nativa de Linux en Windows, tienes que corregir las rarezas de las rutas y de las fuentes.
Fragmento del settings.json de Windows Terminal:
{
"guid": "{57605e5d-1f0f-5602-9ae4-0466a014995f}",
"name": "Ubuntu-22.04",
"source": "Windows.Terminal.Wsl",
"font": {
"face": "MesloLGS NF",
"size": 12
},
"startingDirectory": "//wsl$/Ubuntu-22.04/home/rohit"
}
Consejo: usa siempre el formato de ruta //wsl$/ en las aplicaciones de Windows para evitar la penalización de rendimiento de NTFS/9P.
Las contrapartidas
Montar todo esto me costó horas que no tenía presupuestadas. Intentaba que un modelo me guiara por la configuración de WSL2 y Zsh, y me llevó en círculos (era la segunda generación de Gemini): me daba un comando con total seguridad, me veía pegarlo, veía cómo fallaba y me daba otro. Llegué al final leyendo la documentación de verdad, como en 2015. Si vas a hacer esta configuración, reserva una tarde y olvídate del atajo.
El mayor fallo que veo cometer a los ingenieros es la sobrecarga de alias. Yo llegué a tener más de 200 alias y pasaba más tiempo recordando el atajo que el que habría tardado en escribir el comando. Desde entonces los he podado hasta los “cinco de alta frecuencia”: aic (commit con IA), gup (Docker Compose Up), ld (volcado de logs), pf (formato de Python) y explain.
Realidad operativa: canalizar logs sensibles a un LLM en la nube es una brecha de seguridad a punto de ocurrir. Lo aprendí cuando envié por accidente a un proveedor en la nube un archivo .env de producción con credenciales en texto plano, porque quedó atrapado en un grep que canalicé a un alias “explain”. Usa siempre una instancia local de Ollama para canalizar el shell y así tus variables de entorno se quedan en tu máquina.
Una más, y le quita aire al título. Ahora uso las dos cosas. La terminal ganó los trabajos en los que es buena, la interfaz gráfica conservó los suyos, y en algún momento dejé de llevar la cuenta. Si venías buscando una historia de conversión con final limpio, esta es la versión honesta.
Hacia dónde va esto
Ahora mismo estoy construyendo un puente de terminal a acción. En lugar de limitarse a explicar un error, la función de shell propondrá un comando sed o patch, y yo podré pulsar Y para aplicar la corrección directamente. La terminal no se está volviendo obsoleta; se está convirtiendo en la cabina de mando de cada agente que construimos.
Escrito por
Rohit BuraniIngeniería de IA: sistemas local-first, infraestructura autoalojada y herramientas autónomas desde el laboratorio.