Saltar al contenido
> 💻 🧠 Código 1001 > ⚡ Filosofía de PowerShell > 🤖 🖥️Integremos IA en PowerShell > Gemini CLI: Introducción y primeros pasos.

Gemini CLI: Introducción y primeros pasos.

Gemini CLI es una herramienta que funciona directamente en tu terminal, comprende tu base de código y te ayuda a corregir errores mediante solicitudes en lenguaje natural. Es la respuesta de Google a Claude Code de Anthropic.
Puedes usar Gemini 2.5 Pro (al alcanzar el límite, la herramienta cambiará a Gemini 2.5 Flash) y su ventana de contexto de 1 millón de tokens para realizar hasta 60 solicitudes por minuto y 1000 solicitudes por día, todo de forma gratuita.

Contenido

  • Comprensión y navegación por grandes bases de código
  • Detección y corrección de errores
  • Escritura y prueba de código
  • Herramientas de Gemini CLI
  • Integración de Google CLI con MCP

Características clave de Gemini CLI:

  • Edición y refactorización: Mejora y simplifica automáticamente tu código bajo la guía de la IA.
  • Detección y corrección de errores: Encuentra errores y sugiere soluciones.
  • Comprensión del código: Gemini CLI puede resumir la arquitectura, explicar los roles de los módulos o construir mapas de flujo de ejecución.
  • Generación de pruebas: Crea automáticamente tareas de prueba para pytest.
  • Soporte de documentación: Puedes crear documentos Markdown estructurados, registros de cambios (changelogs) y respuestas a problemas de GitHub directamente en la terminal.
  • Ejecución de comandos: Gemini CLI puede ejecutar comandos de shell como git, npm, pip y otros, lo que te permite gestionar proyectos sin salir de la CLI.

Paso 1: Requisitos previos

Para empezar, instala Node.js (versión 18 o superior). Puedes descargar el instalador de tu elección o ejecutar los siguientes comandos bash en tu terminal:

# Descarga e instalación de nvm (Node Version Manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# Inicialización de nvm en la sesión actual de la terminal
. "$HOME/.nvm/nvm.sh"

# Descarga e instalación de Node.js (por ejemplo, versión 22):
nvm install 22

# Verificación de la versión de Node.js:
node -v # Debería mostrar "v22.17.0" o similar

# Verificación de la versión de npm:
npm -v # Debería mostrar "10.9.2" o similar

⚠️ Importante para usuarios de Windows:
El comando nvm mencionado anteriormente está diseñado para Linux/macOS y no funcionará en PowerShell o cmd.exe.
Para Windows, usa nvm-windows, descargando nvm-setup.exe de la sección Releases.
Alternativamente, puedes instalar WSL (Subsistema de Windows para Linux) y ejecutar los comandos en Ubuntu u otra distribución de Linux.


Paso 2: Configuración de Gemini CLI

Paso 2.1: Instalación de Gemini CLI

Una vez que Node.js y npm estén instalados y verificados, instala Gemini CLI ejecutando el siguiente comando en tu terminal:

npx https://github.com/google-gemini/gemini-cli

O usa npm para una instalación global:

npm install -g @google/gemini-cli
gemini

Después de la instalación, escribe gemini en la terminal para acceder a la herramienta.

Paso 2.2: Autenticación

Puedes usar tu cuenta personal de Google para autenticarte. Esto te proporcionará hasta 60 solicitudes por minuto y 1000 solicitudes por día al usar Gemini.
First Run

En esta guía, he usado Iniciar sesión con Google, pero también puedes usar una clave API (establecida como variable de entorno o en un archivo .env) o la autenticación a través de Vertex AI.

Para generar una nueva clave API, inicia sesión en AI Studio con tu cuenta de Google y haz clic en «Crear clave API».

# Establecer la clave como variable de entorno
export GEMINI_API_KEY="Tu_Clave_API"

# O crear un archivo .env
GEMINI_API_KEY="Tu_Clave_API"

Puedes usar el comando /auth en el campo de texto para cambiar el método de autenticación según sea necesario.


Paso 3: Configuración del proyecto en Gemini CLI

Start
Una vez que la CLI esté en funcionamiento, podemos empezar a interactuar con Gemini desde la terminal. Hay dos formas de trabajar con un proyecto.

1. Iniciar un nuevo proyecto

Para iniciar un proyecto desde cero, ejecuta los siguientes comandos:

cd nuevo-proyecto/
gemini

Dentro de la CLI, usa un prompt para resolver el problema que te interese, por ejemplo:

Escribe el código de un codificador para un transformador desde cero.
Example 1
Da permiso para escribir archivos:
File

2. Trabajar con un proyecto existente

Si ya tienes una base de código, puedes trabajar con ella ejecutando los siguientes comandos:

git clone https://github.com/AashiDutt/Google-Agent-Development-Kit-Demo
cd Google-Agent-Development-Kit-Demo
gemini

Dentro de la CLI, usa un prompt, por ejemplo:

Proporciona un resumen de todos los cambios realizados en la base de código durante el último mes.


Paso 4: Experimentos con Gemini CLI

Como ejemplo, usaré el proyecto Planificador 🌍🛫 viajes basado en ADK.
Con Gemini CLI, mostraré cómo:

  1. explorar la base de código
  2. detectar un error o problema en GitHub o en un archivo
  3. refactorizar el código y generar pruebas unitarias
  4. crear un informe Markdown sobre los cambios realizados
  5. visualizar la base de código generando un diagrama de flujo

Exploración y comprensión de la base de código

Comencemos pidiendo a Gemini que explore y explique la base de código.

Prompt: Explora el directorio actual y describe la arquitectura del proyecto.

Gemini CLI devolverá un resumen estructurado que explica la arquitectura:

  • Interfaz de usuario: La aplicación Streamlit (travel_ui.py) proporciona la interfaz para la interacción.
  • Orquestación: host_agent actúa como coordinador central.
  • Agentes especializados: flight_agent, stay_agent, activities_agent para buscar vuelos, hoteles y actividades.
  • Comunicación: Los agentes se comunican entre sí a través de una API RESTful en FastAPI.
  • Componentes compartidos: shared/schemas.py define estructuras de datos compartidas.

Esto te ayudará a orientarte sin tener que leer cada archivo manualmente.

Análisis y corrección de un problema en GitHub

Exploremos algunos problemas abiertos del repositorio de GitHub.

Prompt: Aquí hay un problema en GitHub: [@search https://github.com/AashiDutt/Google-Agent-Development-Kit-Demo/issues/1]. Analiza la base de código y propone un plan de corrección de 3 pasos. ¿Qué archivos/funciones deben modificarse?

Gemini CLI exploró el problema:

  • Usando la función @search, obtuvo datos de GitHub.
  • Identificó la causa principal como un error de serialización JSON (en este caso, la función asíncrona create_session() no fue llamado con await).
  • Sugirió cambios y el manejo de la respuesta en varios archivos.

A continuación, la CLI espera la entrada del usuario para evaluar los cambios. Si el usuario está de acuerdo, realizará los cambios propuestos.

Implementación y prueba de la corrección

Ahora implementaremos y probaremos las correcciones propuestas por Gemini.

Prompt: Escribe una prueba unitaria para este cambio en pytest en el archivo test_shared.py.

Gemini CLI:

  • Insertó json.dumps() antes de enviar la carga útil de la tarea.
  • Creó test_agents.py para añadir pruebas unitarias.
  • Añadió un nuevo caso de prueba para verificar el esquema y la transmisión de mensajes de agentes anidados.

Generación de documentación

Ahora que las correcciones están hechas, resumamos los cambios y los guardemos en Markdown en un archivo .txt.

Prompt: Escribe un resumen en Markdown sobre el error, la corrección y la cobertura de pruebas. Formatea esto como una entrada en el registro de cambios bajo la versión "v0.2.0".

Luego, para guardar el resumen en un documento, usé el siguiente prompt:

Prompt: Guarda este resumen en un archivo .txt y nómbralo summary.txt

Gemini CLI usa la herramienta WriteFile para guardar el archivo summary.txt en el directorio del proyecto.

Generación de un diagrama de flujo usando MCP

Esta sección amplía los experimentos anteriores, donde exploro cómo Gemini CLI usa el Protocolo de Contexto del Modelo (MCP) para mantener resúmenes a nivel de archivo e historial de tareas entre prompts. Esto le da a Gemini una «memoria de trabajo» dentro de la sesión.

Prompt: Genera un diagrama de flujo que muestre cómo los agentes se comunican a través de A2A (agente a agente) y cómo main.py gestiona el sistema. Resalta dónde ocurrió el problema y cómo se corrigió.

Esta visualización fue posible gracias a la memoria persistente de Gemini, que conservó el contexto completo de nuestra corrección de errores anterior y la estructura del agente sin necesidad de recargar archivos.

Herramientas disponibles de Gemini CLI

Al invocar el comando /tools en Gemini CLI, se mostrará una lista de las herramientas disponibles que se pueden usar para realizar diversas tareas, como editar código, generar pruebas, crear documentación y mucho más.
Tools

ReadFolder (ls)
Lista archivos y carpetas en un directorio, análogo al comando ls en la línea de comandos.

ReadFile (read-file)
Lee el contenido completo de un solo archivo, lo cual es útil para crear resúmenes o análisis.

ReadManyFiles (read-many-files)
Lee varios archivos simultáneamente, generalmente por patrón (por ejemplo, todos los archivos .js).

FindFiles (glob)
Busca archivos por patrón (por ejemplo, encontrar todos los archivos config.json en tu proyecto).

SearchText (grep)
Busca texto dentro de archivos, por ejemplo, para encontrar todos los comentarios TODO.

Edit (edit)
Aplica cambios en el código usando diff. Gemini muestra una vista previa de las ediciones y solicita confirmación antes de aplicarlas.

WriteFile (write-file)
Crea nuevos archivos (por ejemplo, README.md) con el contenido proporcionado por el usuario.

Shell (shell)
Ejecuta comandos directamente en la terminal si les añades el prefijo ! (por ejemplo, !npm test).

WebFetch (web-fetch)
Descarga contenido de la web (HTML o JSON), permitiendo a Gemini analizar datos externos.

GoogleSearch (web-search)
Realiza búsquedas en Google para basar las respuestas en información real (por ejemplo, para buscar la explicación de un error).

Save Memory (memoryTool)
Guarda hechos o preferencias durante la sesión (por ejemplo, «prefiero async/await») para mejorar la coherencia y consistencia de las respuestas.

Funciones avanzadas

Puedes añadir instrucciones especiales para la IA para un proyecto específico,
creando un archivo GEMINI.md en el directorio raíz de tu proyecto.
Dentro de este archivo, puedes definir las reglas del proyecto,
estilos de código y herramientas que el agente debe usar. Esto garantiza que el código generado cumpla con los estándares de tu proyecto.

Ejemplo de instrucción del sistema

Integración de Google CLI con MCP

Para la mayoría de las tareas diarias, las herramientas integradas serán suficientes. Pero, ¿qué pasa si quieres que Gemini CLI haga algo muy especializado, como interactuar con APIs específicas o usar un modelo especializado (digamos, un generador de imágenes o una herramienta de análisis de seguridad)? Aquí es donde entra en juego el MCP (Protocolo de Contexto del Modelo).

En esencia, MCP es un estándar abierto que permite a los desarrolladores añadir nuevas herramientas y capacidades a la IA ejecutando un servidor con el que la CLI puede interactuar. En Gemini CLI, puedes configurar «MCP servidores» en un archivo de configuración JSON, y la CLI los considerará herramientas adicionales que puede usar.

Cómo configurar un servidor MCP en Google CLI

Como ejemplo, te mostraré cómo configurar un servidor MCP para GitHub en Gemini CLI.

Dentro de la carpeta de tu proyecto, crea una carpeta con el comando:

mkdir -p .gemini && touch .gemini/settings.json

Rellena el archivo con este código:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "[TU-TOKEN]" }
    }
  }
}

instrucción sobre cómo obtener el token
Después de esto, escribe /quit en Gemini CLI para salir y luego ábrelo de nuevo.
Verás que el servidor MCP de GitHub está en funcionamiento y listo para usar.
MCP
Escribe el comando /mcp, y verás una lista de herramientas de GitHub.
Mcp Commands

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *