Guía Definitiva de Serena: Tu Asistente de IA para un Desarrollo Local Potenciado

Índice

1. ¿Qué es Serena?

Serena es una herramienta que traduce instrucciones en lenguaje natural (tu lenguaje conversacional diario) en comandos que se pueden ejecutar en una terminal.

En resumen, es como configurar un “servidor de asistente de IA dedicado” localmente que comprende el entorno de tu PC y el estado de tu proyecto.

Esto elimina la necesidad de copiar y pegar código o explicar el trasfondo del proyecto cada vez que colaboras con agentes de IA como Claude o GPT. La IA puede comprender directamente los archivos y el código en tu entorno local a través de Serena, lo que le permite proporcionar un soporte más preciso y consciente del contexto.

2. Ventajas de Introducir Serena

Al introducir Serena, el desarrollo y las operaciones de la terminal se vuelven más rápidos, seguros e intuitivos.

AspectoBeneficioDescripción
🔒 PrivacidadColabora de forma segura con la IA sin enviar código externamenteIncluso si las regulaciones de la empresa o las políticas de seguridad dificultan el envío de código a servicios externos, puedes usarlo con tranquilidad ya que todo se completa dentro de tu entorno local.
📚 Conocimiento ContinuoLa IA “recuerda” toda la estructura del proyectoUna vez que dejas que la IA lea un proyecto, responderá basándose en su comprensión de las relaciones entre los archivos y la imagen general, mejorando drásticamente la precisión de la conversación.
💸 Ahorro de TokensReduce significativamente los costos de comunicación con la IAYa no necesitas enviar código o archivos extensos a la IA cada vez, lo que ahorra enormemente en las tarifas de uso de la API (consumo de tokens).
⚡ Eficiencia de Trabajo MejoradaOpera comandos de forma intuitiva con lenguaje naturalCon solo decir cosas como “ejecuta las pruebas para main.py” o “elimina las imágenes de Docker innecesarias”, puede generar y ejecutar los comandos apropiados.
🧠 Precisión de Respuesta MejoradaReduce las respuestas irrelevantes de la IA por falta de contextoDado que la IA siempre tiene una comprensión de la imagen general del proyecto, evita que las conversaciones se vuelvan inconexas debido a un “contexto insuficiente”.

3. Método de Instalación y Ejecución

Basado en el procedimiento descrito en serena.txt, he organizado el método de instalación general.

Prerrequisitos

  • Python: 3.11 (Nota: 3.12 no es compatible)
  • uv: Una herramienta rápida de gestión de paquetes de Python
  • Git: Se utiliza para descargar el código fuente

Procedimiento

Paso 1: Instalar uv

Si aún no has instalado uv, ejecuta el siguiente comando. Esto asume un entorno WSL (Ubuntu). También asume que tienes instalados Codex CLI, Gemini CLI y Claude Code. Si estás en Windows nativo, por favor omite este paso.

curl -LsSf https://astral.sh/uv/install.sh | sh

Paso 2: Ejecutar Serena (La forma más fácil es usar uvx)

Usar uvx automatiza la clonación del repositorio y la creación de un entorno virtual, lo que te permite iniciar Serena directamente.

uvx --from git+https://github.com/oraios/serena serena-mcp-server

✅ Resumen del Problema

  • uv / uvx se instalan en ~/.local/bin/
  • Pero cuando llamas a uvx en el shell, dice “comando no encontrado”
  • Causa: Ese directorio no está en tu “PATH”

🔧 Solución: Aplicar Temporalmente el PATH (para ejecutarlo inmediatamente)

Copia y pega lo siguiente tal cual y ejecútalo:

export PATH="$HOME/.local/bin:$PATH"

Luego, de nuevo:

uvx --from git+https://github.com/oraios/serena serena start-mcp-server

💡 Esto debería hacer que uvx sea reconocible.

🔁 Solución Permanente (para que se pueda usar en la próxima sesión de inicio de sesión)

Si estás usando bash:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Si estás usando zsh:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

✅ Confirmación Final:

which uvx

Si muestra lo siguiente, has tenido éxito:

/home/mamu/.local/bin/uvx

Sobre la Integración Permanente de codex CLI y serena

Incluso si ejecutas uvx --from ... serena start-mcp-server una vez, es un lanzamiento de servidor temporal que desaparecerá en el próximo inicio de sesión.

La Receta Correcta (codex CLI / TOML / Seguimiento de la Última Versión)

~/.codex/config.toml (o <project>/.codex/config.toml. El del proyecto tiene prioridad)

Aquí hay un ejemplo 👇

# ~/.codex/config.toml
# ※ Por favor, haz coincidir el nombre del archivo que estás editando realmente (el contenido está unificado en TOML)
[projects."/home/mamu/serial"]
trust_level = "trusted"

[projects."/home/mamu/rev"]
trust_level = "trusted"

[projects."/home/mamu/codex-cli"]
trust_level = "trusted"

[projects."/home/mamu/wpbk"]
trust_level = "trusted"

# ----- Definición del Servidor MCP (Serena) -----
[mcp_servers.serena]
command = "uvx"
args = [
  "--from", "git+https://github.com/oraios/serena",
  "serena", "start-mcp-server",
  "--context", "codex",
  "--enable-web-dashboard=false"
]

Solo agrega una etiqueta como git+...@v0.1.4 cuando quieras fijar la versión.

Para ejecutarlo fijo para un proyecto, agrega "--project", "/home/mamu/your-project-abs-path" (ruta absoluta) al final.

Flujo de Verificación (1-2 líneas están bien)

  1. Inicia codex en la raíz del proyecto → ingresa /mcp en el campo de entrada
    • Contenido de visualización esperado

/mcp

🔌 Herramientas MCP

• Servidor: serena • Comando: uvx –from git+https://github.com/oraios/serena serena start-mcp-server –context codex –enable-web-dashboard=false • Herramientas: activate_project, check_onboarding_performed, delete_memory, find_file, find_referencing_symbols, find_symbol, get_symbols_overview, insert_after_symbol, insert_before_symbol, list_dir, list_memories, onboarding, read_memory, replace_symbol_body, search_for_pattern, think_about_collected_information, think_about_task_adherence, think_about_whether_you_are_done, write_memory

🎯 Si quieres pegar el comando de una línea para todo, aquí está

export PATH="$HOME/.local/bin:$PATH"
uvx --from git+https://github.com/oraios/serena serena start-mcp-server

Sin embargo, tal como está ahora:

🔴 Serena iniciado con uvx --from ... se ejecuta en primer plano

En otras palabras, si cierras la terminal, Serena también se detendrá.

✅ Solución: Cómo hacer que resida en segundo plano

Puedes usar uno de los siguientes métodos para iniciar Serena en segundo plano.

Resumen

Esto explica tres formas de ejecutar Serena de manera estable en segundo plano usando UV. Elige el método más adecuado según tus necesidades.

🚀 Método 1: Usa nohup + & (Fácil)

Características

  • Más fácil: Ejecuta inmediatamente con un comando de una línea
  • Salida de registro: Guarda la salida en un archivo
  • Independiente de la terminal: Continúa ejecutándose incluso si cierras la terminal

Cómo Ejecutar

# Iniciar Serena en segundo plano
nohup uvx --from git+https://github.com/oraios/serena serena start-mcp-server > ~/serena.log 2>&1 &

Verificación de Operación y Monitoreo de Registros

# Verificar proceso
ps aux | grep serena

# Monitorear registros en tiempo real
tail -f ~/serena.log

# Verificar todo el registro
cat ~/serena.log

Cómo Terminar el Proceso

# Verificar ID del proceso
ps aux | grep serena

# Terminar el proceso (reemplaza [PID])
kill [PID]

# O forzar la terminación
pkill -f serena

Pros y Contras

✅ Pros

  • Se puede ejecutar inmediatamente sin configuración
  • Los registros se guardan automáticamente
  • Simple y fácil de entender

❌ Contras

  • Gestión manual de procesos
  • Sin recuperación automática en caso de terminación anormal

🖥️ Método 2: Mantenerlo residente con tmux (Conveniente)

Características

  • Gestión de Sesiones: Se puede conectar/desconectar en cualquier momento
  • Para Depuración: Verifica los registros en tiempo real
  • Flexibilidad: Puede ejecutar comandos según sea necesario

Crear y Ejecutar una Sesión de tmux

# Crear una nueva sesión de tmux llamada "serena"
tmux new -s serena

# Iniciar Serena dentro de la sesión
uvx --from git+https://github.com/oraios/serena serena start-mcp-server

📌 Importante: Desconectar la Sesión

Una vez que Serena se inicie, sal de la sesión con la siguiente combinación de teclas:

1. Presiona Ctrl + b
2. Inmediatamente presiona d

Resultado: Volverás a la terminal, pero Serena continuará ejecutándose en segundo plano dentro de tmux.

Comandos de Gestión de Sesiones

# Verificar lista de sesiones
tmux list-sessions

# Reconectar a la sesión
tmux attach -t serena

# Eliminar la sesión (también termina Serena)
tmux kill-session -t serena

# Verificar todas las sesiones de tmux
tmux ls

Si usas screen (alternativa a tmux)

# Crear una sesión de screen
screen -S serena

# Iniciar Serena
uvx --from git+https://github.com/oraios/serena serena start-mcp-server

# Desconectar: Ctrl + A -> D

# Reconectar
screen -r serena

Pros y Contras

✅ Pros

  • Puedes volver a la sesión en cualquier momento para verificar los registros
  • Depuración y solución de problemas fáciles
  • Puedes gestionar múltiples servidores en diferentes sesiones

❌ Contras

  • Necesitas aprender las operaciones básicas de tmux/screen
  • Se requiere reinicio manual después del reinicio del sistema

⚙️ Método 3: Inicio automático con una unidad systemd (Para producción)

Características

  • Totalmente Automatizado: Se inicia automáticamente en el arranque del sistema
  • Recuperación de Fallos: Reinicio automático en caso de terminación anormal
  • Gestión de Registros: Gestión centralizada de registros con journalctl
  • Uso en Producción: Método recomendado para entornos de servidor

Crear un Archivo de Servicio systemd

# Crear el archivo de servicio
sudo nano /etc/systemd/system/serena.service

Contenido del Archivo de Servicio

[Unit]
Description=Serena MCP Server
After=network.target
Wants=network.target

[Service]
Type=simple
User=tu_nombre_de_usuario
Group=tu_nombre_de_usuario
WorkingDirectory=/home/tu_nombre_de_usuario
Environment=PATH=/home/tu_nombre_de_usuario/.local/bin:/usr/local/bin:/usr/bin:/bin
ExecStart=/home/tu_nombre_de_usuario/.local/bin/uvx --from git+https://github.com/oraios/serena serena start-mcp-server
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Habilitar y Gestionar el Servicio

# Recargar systemd para leer el nuevo archivo
sudo systemctl daemon-reload

# Habilitar el servicio (configurar para inicio automático)
sudo systemctl enable serena.service

# Iniciar el servicio
sudo systemctl start serena.service

# Verificar el estado del servicio
sudo systemctl status serena.service

# Verificar registros
sudo journalctl -u serena.service -f

# Detener el servicio
sudo systemctl stop serena.service

# Deshabilitar el servicio
sudo systemctl disable serena.service

Notas de Configuración

  • Cambia tu_nombre_de_usuario por tu nombre de usuario real
  • Verifica la ruta a uvx (se puede encontrar con which uvx)
  • Establece los permisos apropiadamente

Pros y Contras

✅ Pros

  • Inicio automático en el arranque del sistema
  • Reinicio automático en caso de terminación anormal
  • Gestión de servicios estándar de Linux
  • Gestión centralizada de registros

❌ Contras

  • La configuración es algo compleja
  • Requiere privilegios de root

🎯 Método Recomendado por Caso de Uso

Entorno de Desarrollo/Pruebas

Método tmux/screen (Método 2)

  • Depuración fácil
  • Se puede detener/reiniciar inmediatamente según sea necesario

Uso Regular Personal

Método nohup (Método 1)

  • Configuración fácil
  • Suficiente para el uso diario

Entorno de Servidor/Producción

Método systemd (Método 3)

  • Máxima estabilidad y fiabilidad
  • Incluye función de recuperación automática

Con la combinación de UV y Serena, es posible la ejecución flexible en segundo plano dependiendo del caso de uso. Se recomienda probar primero el método nohup y luego migrar a tmux o systemd según sea necesario.

✍️ Recomendación Personal

Si eres…Recomendación
Solo quieres probarlo✅ nohup + &
Quieres usarlo continuamente para el desarrollo✅ tmux
Quieres ejecutarlo en producción/persistentemente✅ systemd

(Alternativa) Si quieres descargarlo y ejecutarlo localmente

Si quieres gestionar el código fuente en tu máquina, sigue estos pasos:

  1. Clona el repositorio git clone https://github.com/oraios/serena.git cd serena
  2. Inicia Serena uv run serena-mcp-server

Usé tmux, pero hay algunos puntos a tener en cuenta como se muestra a continuación.

1. Para Ubuntu

  • tmux no está instalado por defecto (incluso en Ubuntu 25.04).
  • Necesitas instalarlo antes de usarlo:sudo apt update sudo apt install tmux
  • Después de la instalación, puedes usarlo de inmediato (no se necesita archivo de configuración).

2. Para Windows

tmux no se ejecuta en Windows de forma nativa. Necesitarás usar uno de los siguientes métodos.

Método A: Úsalo dentro de WSL (Subsistema de Windows para Linux)

  • Entra en WSL de Ubuntu, etc., e instálalo como se indicó anteriormente: sudo apt install tmux
  • El procedimiento y el uso son completamente los mismos que en Linux.

Método B: Úsalo con Git Bash o MSYS2, etc.

  • tmux a menudo se proporciona como un paquete en estos entornos también.
  • Sin embargo, puede que no sea completamente compatible (especialmente las combinaciones de teclas).

Método C: Úsalo con Windows Terminal + conexión SSH

  • No instales tmux en el Windows local, sino que inicia tmux en un Linux remoto (VPS o WSL).
  • En la práctica, esto causa la menor cantidad de problemas.

💡 Prácticamente, lo mejor para los usuarios de Windows es ejecutar tmux en WSL o en un Linux remoto. Las razones son:

  • tmux en sí mismo es un multiplexor de terminal para Linux.
  • En Windows nativo, puede entrar en conflicto con la GUI y su comportamiento puede ser inestable.

🪟 Guía de Inicio en Segundo Plano de UV para la Versión de Windows

Guía Completa para Ejecutar Comandos UV en Segundo Plano

Nota Importante para Windows

¡tmux no funciona solo en Windows! Solo está disponible en sistemas operativos tipo Unix como Linux y macOS. Para usar herramientas basadas en Linux en Windows, necesitas WSL o Git Bash.

🚀 PowerShell + Start-Process

El método más simple usando el PowerShell estándar de Windows.

Start-Process powershell -ArgumentList "-Command", "uvx --from git+https://github.com/oraios/serena serena start-mcp-server" -WindowStyle Hidden

Pros

  • Característica estándar de Windows
  • No se requieren herramientas adicionales
  • Se puede ejecutar inmediatamente

Cons

  • Difícil de verificar los registros
  • Gestión de procesos complicada

🛠️ WSL + tmux (Recomendado)

Utiliza herramientas de Linux dentro del Subsistema de Windows para Linux.

# Entrar en WSL
wsl

# Crear sesión de tmux
tmux new -s serena

# Ejecutar comando UV
uvx --from git+https://github.com/oraios/serena serena start-mcp-server

# Desconectar: Ctrl + b -> d

Pros

  • Igual que el entorno de Linux
  • Excelente estabilidad
  • Alta funcionalidad

Cons

  • Se requiere configuración de WSL
  • Curva de aprendizaje

⚙️ Programador de Tareas

Inicio automático usando el Programador de Tareas estándar de Windows.

  1. Win + R → taskschd.msc
  2. “Crear tarea básica”
  3. Desencadenador: Al iniciar el equipo
  4. Acción: Iniciar un programa
  5. Programa: uvx
  6. Argumentos: --from git+https://... serena start-mcp-server

Pros

  • Característica estándar de Windows
  • Admite inicio automático
  • Configuración GUI

Cons

  • Configuración complicada
  • Difícil de depurar

🌐 Git Bash + estilo nohup

Ejecuta comandos de estilo Linux usando Git Bash.

# Ejecutar en Git Bash
uvx --from git+https://github.com/oraios/serena serena start-mcp-server &

# Verificar proceso
ps aux | grep serena

Pros

  • Operación de estilo Linux
  • Ligero
  • Fácil de usar

Cons

  • Funcionalidad limitada
  • Problemas de estabilidad

🏆 Mejores Prácticas en Windows

Entorno de Desarrollo/Prueba WSL + tmux es la combinación más fuerte.

Entorno de Producción/Servidor Operación estable con el Programador de Tareas + PowerShell.

Prueba Rápida Ejecución inmediata con PowerShell Start-Process.

💡 Consejo Profesional

Se recomienda encarecidamente que los desarrolladores de Windows instalen WSL. En el desarrollo web moderno, es esencial verificar las operaciones en un entorno Linux. Las herramientas modernas como UV también se ejecutan de manera más estable en un entorno WSL.

3. Uso Más Avanzado

Indexación de un Proyecto

Para aprovechar al máximo Serena en un proyecto grande, se recomienda indexar el código de antemano (analizar y organizar su estructura). Esto mejora aún más la velocidad y precisión de la respuesta de la IA.

# Ejemplo: Indexando /path/to/your/project
uvx --from git+https://github.com/oraios/serena index-project /path/to/your/project

Integración con Herramientas de Cliente

Las capacidades de Serena se maximizan cuando se integra con clientes que admiten MCP (Protocolo Centrado en la Máquina), como Claude Desktop. Al especificar el servidor Serena en la configuración de la herramienta del cliente, la IA puede interactuar directamente con tu entorno local.

Para Windows

Este comando utiliza el administrador de paquetes de Windows winget para instalar uv de Astral.

Instalación | uv

winget install --id astral-sh.uv

🔽 Lo que instala este comando

ElementoContenido
Ejecutable principal de uv✅ Instalado
uvx✅ Incluido automáticamente (desde v0.1.17)
Adición a las variables de entorno✅ Generalmente %USERPROFILE%\.cargo\bin o %LOCALAPPDATA%\Programs\uv se agrega automáticamente al PATH (pero depende de la configuración de la PC)

Por cierto, podrías preguntarte, “Instalé uv, pero ¿dónde se instala serena?” En realidad, uv en sí mismo es un administrador de entorno de ejecución de Python, y cuando llamas a serena, se genera automáticamente una carpeta .serena directamente en el directorio del usuario.

Esta carpeta .serena almacena el siguiente contenido:

  • serena_config.yml … Archivo de configuración global
  • language_servers/ … Caché y binarios de ejecución para servidores de lenguaje
  • logs/ … Archivos de registro
  • prompt_templates/ (equivalente a contextos/modos) … Definiciones para prompts y modos

La ruta específica en Windows es la siguiente:

C:\Users\<username>\.serena\

En otras palabras, el mecanismo es que “después de instalar uv con winget install astral-sh.uv, al iniciar serena se crea automáticamente esta carpeta .serena, que se convierte en la ubicación de almacenamiento real.”

Sobre la Ubicación de Almacenamiento de Serena (Un punto común de malentendido) Cuando inicias Serena con uvx (o uv run), se crea automáticamente una carpeta llamada C:\Users\<username>\.serena\ en Windows. Esta no es la ubicación de instalación de los archivos ejecutables, sino la ubicación de almacenamiento para la configuración global y la caché (por ejemplo, serena_config.ymllanguage_servers/logs/, etc.). Por lo tanto, no necesitas especificar .serena como el “directorio de ejecución” en el settings.json de Gemini.

Por otro lado, el código principal de Serena es obtenido y gestionado por uvx/uv (ejecución directa desde un repositorio de GitHub, o un entorno temporal como herramienta). En otras palabras, el punto de que “.serena = almacenamiento para módulos de ejecución” no es cierto a menudo se confunde.

Suplemento: Cuándo tocar .serena

  • Cambiar la configuración: C:\Users\<username>\.serena\serena_config.yml
  • Verificar la caché del servidor de lenguaje: .serena\language_servers\
  • Verificar registros/limpiar caché: .serena\logs\ y otros. Si bien es útil como “almacenamiento para configuraciones y datos,” no es la ubicación que se debe especificar para el --directory del comando de inicio.

4. Recomendado para estas personas

  • Desarrolladores que manejan grandes bases de código
  • Personas que encuentran problemático copiar y pegar código largo a la IA cada vez
  • Personas que valoran la seguridad y la privacidad y quieren completar su trabajo en un entorno local
  • Personas que a menudo sienten que “el contexto es insuficiente” en las conversaciones con la IA
  • Personas que están pensando en reducir el costo de aprendizaje de las operaciones de la terminal

5. Integración con Claude Code

El método para integrarse con Serena en Claude Code se describe en el sitio web oficial.

Guía de Configuración y Uso de Serena | Claude | Claude

Las siguientes son mis notas (copiadas y pegadas del sitio oficial)

Agrega Serena al proyecto (ejecuta el siguiente comando en el directorio del proyecto)

claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena-mcp-server --context ide-assistant --project $(pwd)

El comando anterior muestra lo siguiente.

Added stdio MCP server serena with command: uvx --from git+https://github.com/oraios/serena serena-mcp-server --context ide-assistant --project /home/mamu/codex-cli to local config File modified: /home/mamu/.claude.json [project: /home/mamu/codex-cli]

Cargando la configuración inicial

Inicia una nueva conversación en Claude Code y di:

Please load Serena's initial settings

O:

/mcp__serena__initial_instructions

En Serena, necesitas “activar” explícitamente un proyecto. Por favor, instruye a Claude Code de la siguiente manera:

Especificar con una ruta absoluta:

Please activate the project /path/to/my_project

Especificar por nombre de proyecto (si se activó previamente):

Please activate the project my_project

El proyecto activado se agrega automáticamente a serena_config.yml, y se genera un .serena/project.yml para cada proyecto.

6. Ejemplo de Integración con ChatGPT (Serena + ChatGPT)

Similar a Claude, Serena también se puede usar con ChatGPT. En particular, si lo configuras para que ChatGPT pueda acceder a Serena a través de MCP (Protocolo Centrado en la Máquina), ChatGPT podrá acceder a tu proyecto local y proporcionar asistencia precisa.

Ejemplo 1: Preguntar cómo usar una función

Tú (a ChatGPT):

Explica el comportamiento recursivo de la función `fibonacci()` en serena://project/src/math/calc.py

ChatGPT (referenciando a través de Serena):

`fibonacci(n)` devuelve 1 cuando n es 1 o 2, de lo contrario, calcula recursivamente `fibonacci(n-1) + fibonacci(n-2)`.
Esto se basa en la definición de la secuencia de Fibonacci, pero a medida que n se hace más grande, el número de llamadas recursivas aumenta exponencialmente, lo que lo hace ineficiente.
Se puede mejorar con la memorización.

Ejemplo 2: Consejo basado en toda la base de código

Tú:

Este proyecto usa Flask, pero ¿por dónde debería empezar para reescribirlo en FastAPI?

ChatGPT:

Para migrar de Flask a FastAPI, son necesarios los siguientes cambios:

1. Reescribe el punto de entrada en `app.py` a la sintaxis de FastAPI
2. Reemplaza `@app.route()` con `@app.get()` o `@app.post()`
3. Cambia las referencias de `request.args` o `request.json` a los tipos de `Request` o parámetros de FastAPI
4. Agrega `fastapi` y `uvicorn` a `requirements.txt`

Según el análisis de Serena, las principales definiciones de enrutamiento están consolidadas en `src/routes/api.py`, por lo que sería fluido comenzar la migración desde allí.

Ejemplo 3: Preguntar por la ubicación de un archivo

Tú:

¿Dónde está el código que genera tokens JWT en este proyecto?

ChatGPT:

El proceso de generación de tokens JWT está en `auth/jwt_utils.py`.
La función `generate_jwt(user_id: int)` es la relevante, y crea el token usando `pyjwt.encode(...)`.

💡 Características de la combinación de ChatGPT y Serena

CaracterísticaEfecto
🔍 Búsqueda y explicación de códigoIdentifica las funciones y archivos necesarios de tu propia base de código
🧠 Retención continua del contextoDevuelve respuestas más precisas que dependen de preguntas pasadas
🛡️ SeguridadSerena proporciona datos alternativos sin enviar código directamente a la API de OpenAI
🧩 Conocimiento de ChatGPT + realidad localPermite la fusión del conocimiento general y el conocimiento específico sobre tu propio código

🙋‍♂️ Puntos convenientes adicionales

Incluso para preguntas naturales en las que ChatGPT es bueno, como “enséñame con ejemplos” o “ponlo en formato de tabla”, puede responder basándose en datos específicos a través de Serena, lo que hace que la generación de documentos y las revisiones de código sean más eficientes.

✅ Prerrequisito: ChatGPT por sí solo no se conecta a Serena

El ChatGPT oficial (versión web y aplicación móvil) de OpenAI no tiene medios para acceder directamente a una instancia local de Serena.

Lo que se puede integrar con Serena son los clientes de ChatGPT que admiten MCP (Protocolo Centrado en la Máquina).

🔧 Cómo conectar ChatGPT y Serena

Método 1: Usa ChatGPT Desktop (aplicación no oficial)

Este es actualmente el método más fácil.

Resumen del procedimiento:

  1. Instala ChatGPT Desktop
  2. Abre config.json
  3. Establece Serena como el servidor MCP
  4. Accede al proyecto local desde ChatGPT usando serena://

🔌 Ejemplo de configuración de config.json (ChatGPT Desktop)

Edita el archivo de configuración de la siguiente manera (generalmente ~/.chatgpt/config.json):

{
  "mcpServers": {
    "serena": {
      "command": "/home/username/.local/bin/uv",
      "args": [
        "run",
        "--directory",
        "/home/username/serena",
        "serena-mcp-server"
      ]
    }
  }
}

💡 Nota: En Windows, puede estar en C:\Users\username\AppData\Roaming\chatgpt\config.json.

✅ Ejemplo de uso de ChatGPT (en conversación)

  1. Mantén Serena en ejecución (o haz que ChatGPT lo ejecute automáticamente al inicio)
  2. Habla con ChatGPT así:
Explica log_error() en serena://project/src/utils/logger.py

Luego, ChatGPT hará una llamada MCP a través de Serena localmente, analizará el archivo correspondiente y responderá.

❗ Notas

NotaDescripción
No es ChatGPT oficialLa versión de escritorio es un cliente de terceros de código abierto
No se puede usar con la API de OpenAINo se puede usar con la versión web o GPT-4 a través de la API
Se requiere Python 3.11El lado de Serena necesita ejecutarse en un entorno de Python 3.11

📦 Suplemento: También es posible usar Serena + Claude + ChatGPT juntos

Al usar múltiples clientes MCP (Claude Desktop, ChatGPT Desktop) en paralelo, Serena puede funcionar como un centro para el análisis local por parte de la IA.

🧪 ¿Realmente quieres usarlo con la versión web de ChatGPT?

No es imposible, pero requiere métodos indirectos como los siguientes:

  1. Exporta la información generada por Serena a un archivo
  2. Súbelo o cópialo y pégalo en ChatGPT
  3. Finge haber referenciado el archivo con un prompt personalizado

Pero honestamente, eso no aprovecha el verdadero valor de Serena.

✅ Resumen

PreguntaRespuesta
¿Puede ChatGPT conectarse a Serena?✅ Sí, usando ChatGPT Desktop (no oficial)
¿Qué pasa con la versión web de ChatGPT?❌ No se puede conectar
¿Dónde lo configuro?Escribe el comando y la ruta en config.json
¿Cómo iniciar el lado de Serena?Inicia serena-mcp-server con uv o uvx

🧠 Entonces, ¿cómo mejora eso la conversación con ChatGPT?

✅ Respuesta: Mejora cuando tienes una conversación a través de un cliente compatible con Serena. En otras palabras, piensa que “el rendimiento de ChatGPT se potencia” cuando se cumplen las siguientes dos condiciones:

CondiciónContenido
✅ Serena está en ejecuciónserena-mcp-server se está ejecutando en segundo plano
✅ Usando un cliente de ChatGPT compatible con MCPpor ejemplo, ChatGPT Desktop (no oficial), etc.

🔍 Qué mejora (ChatGPT × Serena)

antes (normal)después (a través de Serena)
“¿Qué hace esta función?” obtiene una respuesta fuera de contexto y desenfocadaUna explicación precisa después de leer el código local
Necesidad de pegar el código cada vezSolo una ruta serena:// es suficiente (súper ahorro de tiempo)
Molesto decir la ubicación del archivoChatGPT entiende la estructura y te guía con precisión
Respuestas mecánicasEs posible un consejo más centrado en el desarrollador y comprensivo

🚫 Por el contrario, no tiene efecto en la versión web de ChatGPT

Con la que estás hablando ahora mismo (versión web de ChatGPT) no tiene forma de acceder directamente a tu entorno local o a Serena.

Por lo tanto, “incluso si ejecutas Serena aquí mismo, nada cambiará.”

🧪 Si quieres probarlo

La siguiente configuración es la mejor:

  1. Instala uv y Serena
  2. Instala ChatGPT Desktop (GitHub oficial)
  3. Establece el comando de inicio de Serena en config.json
  4. Inicia ChatGPT Desktop
  5. ¡Haz preguntas en el formato serena://...!

✨ Ejemplo 🗣 En ChatGPT Desktop:

Parece que hay un error en fetch_data() en serena://project/app/main.py, por favor, échale un vistazo

🤖 ChatGPT:

Falta la verificación del código de estado HTTP en `fetch_data()`. La excepción puede ser absorbida.

📦 Resumen: Incluso si instalas Serena, necesitas una “ventana” para conectarte

ElementoRol
SerenaUn servidor de IA local que analiza y retiene tu proyecto
ChatGPT DesktopUna “ventana de conexión” entre ChatGPT y Serena
ChatGPT en síUna IA conversacional. Sin embargo, no tiene información local
Comando de inicio uvxLa clave para llamar a Serena

🎯 “Si estoy mostrando un repositorio de GitHub, ¿no es Codex (GPT-4) mejor que Serena?”

Creo que tienes esta pregunta. Sí, a primera vista, es correcto, pero la respuesta cambia según el caso de uso y el propósito.

✅ Comparación de Prerrequisitos: Serena vs Codex (ChatGPT)

Elemento de ComparaciónSerena (MCP)Codex / ChatGPT (GPT-4)
Código del entorno local✅ Acceso directo posible❌ Copiar y pegar manual o subir
Manejo de repositorios de GitHub✅ Clonar → Análisis posible✅ Análisis parcial posible con Copilot
Privacidad✅ Completado local❌ Enviado a OpenAI
Soporte multi-archivo✅ Entiende el todo y busca de forma cruzada⚠️ Límite de contexto (muro de longitud)
Continuidad (en conversación)✅ Recuerda la estructura de archivos y conversa❌ Responde solo en función del contexto actual
Autocompletado/asistencia de escritura❌ No completa✅ Muy excelente (Copilot)
Costo de aprendizajeAlgo alto (se requiere cliente MCP)Bajo (se puede usar tal cual)

🔍 3 patrones para mostrar a la IA el contenido de un repositorio de GitHub

MétodoEjemploCaso adecuado
🔹 Copiar y pegar o adjuntar zip a Codex (GPT-4)“Mira este repositorio”Cuando quieres un consejo único
🔸 GitHub Codespaces + CopilotAutocompletado de IA con integración de VSCodePara acelerar el trabajo de codificación en sí
🟢 Clonar GitHub localmente → Indexar con SerenaInstruir con serena://src/app.py etc.Consciente de la privacidad o quiere hablar con la IA a largo plazo

🧠 Cuándo deberías elegir Serena

  • 🚫 El repositorio en GitHub es privado o pre-lanzamiento
  • 🧩 Estructura compleja que requiere una revisión de diseño en múltiples archivos
  • 💬 Quieres refactorizar el código mientras tienes una conversación a largo plazo con ChatGPT o Claude
  • 🛡️ Ansioso por subir código a OpenAI

✋ Por otro lado, cuando Codex (ChatGPT) es suficiente

  • 🚀 Repositorio público donde está bien mostrar todo de manera casual
  • ⏳ Quieres solicitar revisiones o correcciones de código en un corto período de tiempo
  • 🧪 Solicitudes ligeras como “solo mejora esta función”
  • 🤖 El autocompletado de Copilot es suficiente

💡 Conclusión: Es fácil de entender si lo distingues así

PropósitoMedio óptimo
Diagnóstico de código de GitHub a corto plazo✅ Codex (versión web GPT-4) está bien
Gestión de proyectos privados✅ Serena + ChatGPT Desktop o Claude
Autocompletado o generación de código✅ Copilot (ChatGPT no puede completar)
Quieres “operar un proyecto por conversación” a largo plazo✅ Convierte a la IA en un programador de pares interno con Serena

🔧 Si tienes dudas…

🌱 Primero prueba con Codex, y si sientes sus limitaciones, introduce Serena → Esta es la forma más libre de estrés de proceder.

✅ ¿Cómo cambiarán las cosas con la llegada de sistemas similares a ChatGPT Code?

1. Evolución del entorno integrado

Lo que OpenAI está preparando, como “ChatGPT Code,” tiene como objetivo lo siguiente:

  • 🧠 Comprender la estructura del proyecto
  • 💬 Editar y crear código mientras se conversa en el acto
  • 🧪 Realizar todo, desde la ejecución hasta las pruebas, de una sola vez

→ Este es un futuro en el que el propio ChatGPT absorberá de forma nativa la “memoria de contexto” y la “comprensión entre archivos” de las que era responsable Serena.

🔄 Serena vs sistemas similares a ChatGPT Code: Cambio de roles

FunciónAhora (Serena + GPT)Futuro (ChatGPT Code)
Comprensión de la estructura local✅ Complementado por Serena✅ ¿Hacia el soporte nativo?
Operación/ejecución de archivos❌ Se requieren herramientas externas✅ A ser integrado
Refactorización de código a través de la conversación✅ Precisamente con Serena✅ ¿Completado solo con ChatGPT?
Seguridad✅ Completado local⚠️ Selección necesaria ya que está basado en la nube

🧠 ¿Qué valor le quedará a Serena incluso entonces?

Incluso si ChatGPT evoluciona en el futuro, los agentes solo locales como Serena pueden retener el siguiente valor:

Valor restanteDescripción
🔒 Sitios de desarrollo conscientes de la privacidadSe puede completar solo dentro del entorno local
🧩 Quieres usarlo como base para la integración de IA de fabricación propiaSe puede usar cuando quieres integrarte con Claude u otros LLM
🛠 Usuarios que quieren extender las funciones de la IAComo anfitrión para funciones MCP de fabricación propia
🐧 Desarrolladores orientados a Linux/CLIAdecuado para operaciones ligeras y orientadas a la flexibilidad

🔚 Conclusión: ¿Qué hacer cuando ChatGPT Code se generalice?

  • ✅ Para aquellos que escriben código, es probable que el futuro sea más fácil con ChatGPT Code
  • ❗ Sin embargo, si la seguridad es una prioridad o es necesario el completado local, Serena también permanecerá

7. Integración con Gemini CLI (La Forma Correcta)

Resumen La CLI de Gemini es un cliente que admite el Protocolo de Contexto del Modelo (MCP). Para usar Serena, primero debes registrar el servidor MCP de Serena en la CLI de Gemini. Después del registro, Gemini seleccionará y ejecutará automáticamente las herramientas de Serena (por ejemplo, búsqueda de símbolos o edición de código) según el contexto de la conversación. No se requiere una notación especial serena://, pero la configuración del servidor MCP en sí es obligatoria.

Referencia: El mecanismo para registrar y configurar MCP en la CLI de Gemini (mcpServers / gemini mcp add) se detalla en la guía oficial.

Corrigiendo Conceptos Erróneos Comunes

  • Incorrecto: “La CLI de Gemini puede usar Serena sin ninguna configuración especial.” CorrectoSe requiere el registro del servidor MCP (configuración de mcpServers o gemini mcp add).
  • Incorrecto: “La CLI de Gemini ensambla y ejecuta automáticamente uvx ... serena ....” Correcto: Especificamos el comando de inicio de Serena (por ejemplo, uvx ... serena start-mcp-server) durante el registro. A partir de entonces, Gemini llama a las herramientas de Serena basándose en esa configuración.
  • Incorrecto: “Hay una notación especial como serena://.” Correcto: Dicho esquema es innecesario y no se adopta. La configuración del servidor MCP es la forma correcta.

Beneficios de la Integración (Tabla)

CaracterísticaBeneficio
🧠 Interfaz de Lenguaje NaturalLas ricas herramientas de comprensión de código de Serena se pueden llamar en la conversación (Gemini selecciona apropiadamente).
🔐 Ejecución SeguraLa confirmación previa a la ejecución está disponible por defecto. La confirmación también se puede omitir estableciendo trust en true (usar con precaución).
🛠️ Fusión con Otras HerramientasPuedes usar las herramientas integradas de Gemini (GitHub/búsqueda/operaciones de archivo) + Serena de forma transversal.
📁 Soporte para Grandes Bases de CódigoEficiente incluso con grandes bases de código a través del análisis y edición a nivel de símbolo de Serena (capacidades similares a las de un IDE).

Enlaces de Referencia

  • Resumen de la CLI de Gemini e Integración MCP (Oficial)
  • CLI de Gemini: Configuración del Servidor MCP y gemini mcp add (Oficial)
  • Métodos de Inicio de Serena (uvx … serena start-mcp-server) y Configuraciones de Contexto Recomendadas (README Oficial)

Vamos a probarlo realmente.

Puntos Clave

  • La CLI de Gemini tiene herramientas integradas como exploración de archivos, listado y lectura de múltiples archivos (por ejemplo, list_directory / read_file / read_many_files) por defecto. Los “✔ ReadFolder” y “✔ ReadManyFiles” que aparecen en los registros son herramientas propias de Gemini, no de Serena.
  • Si quieres usar Serena, el registro del servidor MCP es obligatorio (mcpServers en settings.json). Después del registro, Gemini podrá seleccionar y llamar a las herramientas de Serena en la conversación.

1) Comando de Inicio de Serena (Referencia)

Serena se puede iniciar directamente desde uvx (no se requiere instalación local).

uvx --from git+https://github.com/oraios/serena serena start-mcp-server

※ Este es el procedimiento estándar en el README oficial de Serena.

uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant

Solo con esto se puede iniciar directamente el servidor MCP de Serena. (Agregar --context ide-assistant hace que funcione como un asistente para IDE, y agregar --project "C:/path/to/project" te permite especificar el proyecto de destino)

2) Registrar Serena (MCP) con Gemini

Configuración Mínima para Integrar Realmente

Lado del proyecto <project>/.gemini/settings.json (o global %USERPROFILE%\.gemini\settings.json):

{
  "mcpServers": {
    "serena": {
      "displayName": "Serena Coding Agent",
      "command": "uvx",
      "args": [
        "--from", "git+https://github.com/oraios/serena",
        "serena", "start-mcp-server",
        "--context", "ide-assistant"
      ]
    }
  }
}
  • Si quieres fijar --project, agrégalo con una ruta absoluta: "--project", "C:/path/to/your/project"

Procedimiento para la Verificación de la Operación (Más Corto)

  1. Abre un nuevo PowerShell y verifica si uvx -V funciona.
  2. Inicia Gemini en la raíz del proyecto → /mcp reload → /mcp list
    • Está bien si se convierte en serena - Connected (… tools cached).
  3. “Indexa este directorio con Serena” sugerirá y ejecutará project index.

Cuando inicies Gemini, el servidor MCP de Serena se iniciará automáticamente. Si ejecutas /mcp list en ese estado, se mostrará de la siguiente manera.

│ > /mcp list │
╰───────────────╯

ℹ Servidores MCP configurados:

🟢 serena - Listo (19 herramientas)
\- list_dir
\- find_file
\- search_for_pattern
\- get_symbols_overview
\- find_symbol
\- find_referencing_symbols
\- replace_symbol_body
\- insert_after_symbol
\- insert_before_symbol
\- write_memory
\- read_memory
\- list_memories
\- delete_memory
\- activate_project
\- check_onboarding_performed
\- onboarding
\- think_about_collected_information
\- think_about_task_adherence
\- think_about_whether_you_are_done

3) (Opcional) Pre-indexar Grandes Repositorios

Para acelerar la ejecución inicial, puedes indexar el proyecto:

uvx --from git+https://github.com/oraios/serena serena project index

(Este es el procedimiento acelerado recomendado por la documentación oficial de Serena.)

Sin embargo, ocurrió un error. Este error apareció durante la indexación.

La autogeneración de la configuración del proyecto falló después de 0.004 segundos
Traceback (most recent call last):
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/bin/serena", line 12, in <module>
    sys.exit(top_level())
             ~~~~~~~~~^^
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1442, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1363, in main
    rv = self.invoke(ctx)
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1830, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1830, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 1226, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/click/core.py", line 794, in invoke
    return callback(*args, **kwargs)
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/cli.py", line 434, in index
    ProjectCommands._index_project(project, log_level)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^\n  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/cli.py", line 447, in _index_project
    proj = Project.load(os.path.abspath(project))
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/project.py", line 62, in load
    project_config = ProjectConfig.load(project_root, autogenerate=autogenerate)
  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/config/serena_config.py", line 259, in load
    return cls.autogenerate(project_root)
           ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^\n  File "/home/mamu/.cache/uv/archive-v0/MqCQ5wrQ_K5PEzhGkR_n8/lib/python3.13/site-packages/serena/config/serena_config.py", line 198, in autogenerate
    raise ValueError(
    ...<8 lines>...
    )
ValueError: No se encontraron archivos fuente en /home/mamu/gemini

Para usar Serena con este proyecto, necesitas:
1. Agregar archivos fuente en uno de los lenguajes admitidos (Python, JavaScript/TypeScript, Java, C#, Rust, Go, Ruby, C++, PHP)
2. Crear un archivo de configuración del proyecto manualmente en:
   /home/mamu/gemini/.serena/project.yml

Ejemplo de project.yml:
  project_name: gemini
  language: python  # o typescript, java, csharp, rust, go, ruby, cpp, php

Después de investigar un poco, resulta que a partir de agosto de 2025, Serena no admite archivos .bat o .ps1 (script de PowerShell).

🔍 Lenguajes Admitidos por Serena (a agosto de 2025)

Como se indica claramente en la [plantilla de project.yml] de Serena y en los mensajes de error, los lenguajes admitidos son los siguientes:

LenguajeExtensión
Python.py
TypeScript / JavaScript.ts.js
Java.java
C#.cs
Rust.rs
Go.go
Ruby.rb
C++.cpp.hpp, etc.
PHP.php

❌ Tipos de Archivos no Admitidos

TipoExtensión
Script de Lote de Windows.bat
Script de PowerShell.ps1
Script de Shell (Soporte Parcial).sh (limitado)
Archivos Markdown/Texto.md.txt (destinados a ser utilizados con código)

✅ Cómo Agregar Soporte

Método 1: Crear Manualmente un Archivo de Configuración del Proyecto + Incluir Archivos .ps1

Aunque Serena no analiza formalmente los archivos .ps1, es posible configurarlo para incluirlos en los archivos que lee.

Intenta crear un archivo project.yml como este:

project_name: gemini
language: python  # Valor ficticio (puede ser cualquier cosa)
include:
  - "**/*.ps1"
  - "**/*.bat"

Luego, vuelve a indexar el proyecto.

✨ Flujo de Trabajo Real

  1. Pregúntale a la IA (por ejemplo, “Quiero saber el propósito de todos los archivos.”)
  2. Serena reconoce y resume el contenido de los archivos .ps1.bat y .yml.
  3. La IA recibe esta información y devuelve un resumen, análisis y explicación.

En otras palabras, la interacción actual es:

🔧 ¡Un caso de uso ideal de Serena (backend) + IA (frontend) trabajando en conjunto!

🔁 Sacarle Más Partido

Lo que quieres hacerPregunta de ejemplo (para la IA)
Visualizar el flujo de procesamiento“Por favor, ilustra los pasos de procesamiento de CompactWSLVHD.ps1 paso a paso.”
Investigar la causa de un error“¿Hay algún error en este archivo .ps1? ¿Hay algún código que sea problemático bajo las especificaciones de WSL?”
Hacerlo multiplataforma“¿Puedes hacer que este código funcione en entornos Mac y Linux?”
Refactorizar el código“Por favor, rediseña CompactWSLVHD.ps1 para que sea más legible.”

🔧 Anexo: Lo que Serena Hace por Ti

CaracterísticaDescripción
IndexaciónExtrae símbolos basados en la sintaxis (funciones, clases) (no aplicable a .ps1 en este caso)
Gestión de CachéReutiliza la información de los archivos que ya se han leído

🧠 Serena es una Herramienta de “Análisis Estático + Retención de Contexto”

En otras palabras:

🔸 Para los lenguajes con un analizador (como Python), los entiende “con significado.” 🔸 Para los archivos no admitidos (como .ps1), los trata “como texto sin formato.”

Por lo tanto, aunque no puede analizar y comprender correctamente el significado del código .ps1 o .batse puede utilizar como una ruta para pasar el contenido de esos archivos a la IA.

✍️ Resumen: El Mejor Enfoque por Ahora

  1. Guarda el siguiente archivo de configuración en /home/mamu/gemini/.serena/project.yml:
project_name: gemini
language: python  # Designación tentativa (no tiene significado)
include:
  - "**/*.ps1"
  - "**/*.bat"
  1. Vuelve a ejecutar la indexación:
uvx --from git+https://github.com/oraios/serena serena project index /home/mamu/gemini

El resultado es el siguiente:

Indexando símbolos en el proyecto /home/mamu/gemini…
Tiempo de espera agotado para la finalización del análisis de Pyright, procediendo de todos modos
Indexando: 0it [00:00, ?it/s]
Símbolos guardados en /home/mamu/gemini/.serena/cache/python/document_symbols_cache_v23-06-25.pkl

If you like this article, please
Follow !

¡Comparte esta publicación!
Índice