Home
Login

Serena es un potente conjunto de herramientas de agente de codificación que transforma los grandes modelos de lenguaje (LLM) en un agente con todas las funciones que trabaja directamente en su base de código.

MITPython 1.2koraios Last Updated: 2025-06-13

Descripción Detallada del Proyecto Serena

Resumen del Proyecto

Serena es un potente kit de herramientas de agente inteligente de programación, capaz de transformar grandes modelos de lenguaje (LLM) en agentes inteligentes de programación completamente funcionales, que trabajan directamente en su base de código. Este proyecto ha sido desarrollado por Oraios AI y contribuido como código abierto a la comunidad de desarrolladores.

Características Principales

🚀 Capacidades Centrales

  • Recuperación y edición semántica de código: Proporciona capacidades similares a un IDE, extrayendo entidades de código a nivel de símbolo y utilizando estructuras de relación.
  • Completamente de código abierto y gratuito: Mejora las capacidades de sus LLM existentes sin costo adicional.
  • Múltiples métodos de integración: Admite la integración con el servidor MCP, el framework Agno y frameworks de agentes inteligentes personalizados.

🔧 Ventajas Técnicas

  • Basado en el Protocolo de Servidor de Lenguaje (LSP): Proporciona múltiples funciones de consulta y edición de código a través del LSP, ampliamente implementado.
  • Comprensión a nivel de símbolo: Realiza el descubrimiento y la edición basados en la comprensión simbólica del código, como lo haría un desarrollador experimentado utilizando un IDE.
  • Eficiente y preciso: Encuentra eficientemente el contexto correcto y ejecuta las acciones correctas, incluso en proyectos grandes y complejos.

Lenguajes de Programación Compatibles

Soporte Directo (Listo para usar)

  • Python
  • Java (Atención: el inicio es lento, especialmente la primera vez)
  • TypeScript

Estos lenguajes son compatibles a través de la biblioteca del servidor de lenguaje multilspy utilizada por Serena.

Métodos de Integración

1. Protocolo de Contexto del Modelo (MCP)

Serena proporciona un servidor MCP que se puede integrar con los siguientes clientes:

  • Claude Desktop
  • IDEs (como VSCode, Cursor, IntelliJ)
  • Extensiones (como Cline, Roo Code)
  • Goose (proporciona una buena experiencia CLI)
  • Y muchos otros clientes, incluyendo la próxima compatibilidad con la aplicación ChatGPT

2. Framework Agno

A través de Agno (un framework de agente independiente del modelo), Serena puede transformar casi cualquier LLM en un agente inteligente de programación, compatible con:

  • Modelos de API de pago proporcionados por Google, OpenAI, Anthropic
  • Modelos gratuitos proporcionados por Ollama, Together, Anyscale

3. Framework de Agente Inteligente Personalizado

La implementación de herramientas de Serena está desacoplada del código específico del framework, lo que facilita la adaptación a cualquier framework de agente inteligente.

Casos de Uso

Serena se puede utilizar para cualquier tarea de programación, incluyendo:

  • Análisis de código
  • Planificación de proyectos
  • Diseño de nuevos componentes
  • Refactorización de código existente
  • Tareas completas de programación autónoma, desde el análisis inicial hasta la implementación, las pruebas y, finalmente, la confirmación en el sistema de control de versiones.

Inicio Rápido

Instalación Básica

  1. Instale uv (consulte la documentación oficial para obtener instrucciones de instalación: documentación oficial)
  2. Clone el repositorio en /path/to/serena
  3. Copie serena_config.template.yml como serena_config.yml y ajuste la configuración
  4. Copie myproject.template.yml como myproject.yml y ajuste la configuración específica del proyecto
  5. Si necesita cambiar de proyecto dinámicamente, agregue todos los archivos del proyecto a la lista projects en serena_config.yml

Integración con Claude Desktop

  1. Cree un archivo de configuración del proyecto myproject.yml
  2. Configure el servidor MCP en Claude Desktop:
    • Abra File / Settings / Developer / MCP Servers / Edit Config
    • En claude_desktop_config.json, agregue:
    {
      "mcpServers": {
        "serena": {
          "command": "/abs/path/to/uv",
          "args": ["run", "--directory", "/abs/path/to/serena", "serena-mcp-server", "--project-file", "/abs/path/to/myproject.yml"]
        }
      }
    }
    
  3. Guarde la configuración y reinicie Claude Desktop

Uso de Goose CLI

  1. Instale goose
  2. Use goose configure para agregar una extensión
  3. Seleccione "Command-line Extension" y nómbrela "Serena"
  4. Agregue el comando: /abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
  5. Desactive la extensión developer predeterminada

Uso de Agno GUI

  1. Descargue el código de agent-ui: npx create-agent-ui@latest
  2. Instale Serena: uv pip install --all-extras -r pyproject.toml -e .
  3. Copie .env.example como .env y complete las claves API
  4. Inicie el agente Agno: uv run python scripts/agno_agent.py
  5. Inicie la UI: cd agent-ui && pnpm dev

Herramientas y Configuración

Categorías Principales de Herramientas

  • Herramientas de recuperación semántica de código: Encuentra símbolos, referencias, fragmentos de código
  • Herramientas de edición de código: Inserta, reemplaza, elimina código
  • Operaciones del sistema de archivos: Lee, crea, lista archivos y directorios
  • Ejecución de Shell: Ejecuta comandos de shell
  • Gestión de proyectos: Activa proyectos, guía de inicio, gestión de memoria

Consideraciones de Seguridad

  • El uso de todas las herramientas generalmente se recomienda para proporcionar el máximo valor
  • La herramienta execute_shell_command permite la ejecución de código arbitrario y debe usarse con precaución
  • Los comandos específicos se pueden deshabilitar en el archivo de configuración del proyecto
  • Admite el modo de solo lectura (read_only: true), que solo permite el análisis y las sugerencias, sin modificar la base de código

Comparación con Otros Agentes Inteligentes de Programación

En comparación con los agentes inteligentes basados en suscripción (Windsurf, Cursor, VSCode)

Ventajas:

  • Sin cuotas de suscripción
  • No está vinculado a un IDE específico
  • No está vinculado a un modelo de lenguaje grande o API específico
  • Utiliza un servidor de lenguaje para la comprensión del código a nivel de símbolo
  • Código abierto y base de código pequeña, fácil de ampliar y modificar

Desventajas:

  • No se integra directamente en el IDE, la inspección de código nuevo no es tan fluida como las herramientas integradas en el IDE

En comparación con los agentes inteligentes basados en API (Claude Code, Cline, Aider)

Ventajas:

  • Se puede utilizar como un servidor MCP, sin necesidad de claves API, evitando los costos de API
  • Esta es una característica única de Serena

Similitudes:

  • Ambos pueden utilizarse como agentes inteligentes básicos de API
  • Ambos son potentes, la principal desventaja son los posibles altos costos de API

En comparación con otros servidores MCP

  • Hasta donde se sabe, otros servidores MCP relacionados con la programación (como DesktopCommander, codemcp) no proporcionan herramientas de recuperación y edición semántica de código
  • Se basan en un análisis puramente basado en texto
  • La integración de Serena del servidor de lenguaje y las características de MCP la hacen única y poderosa para abordar tareas de programación desafiantes en grandes bases de código

Guía de Inicio y Sistema de Memoria

Guía de Inicio

  • De forma predeterminada, Serena ejecuta un proceso de guía de inicio la primera vez que se inicia para un proyecto
  • El objetivo es que Serena se familiarice con el proyecto y almacene recuerdos para futuras interacciones

Sistema de Memoria

  • Los archivos de memoria se almacenan en .serena/memories/ en el directorio del proyecto
  • El agente inteligente puede optar por leer estos archivos
  • Los usuarios pueden leer y ajustar los archivos de memoria según sea necesario, o agregar manualmente nuevos archivos de memoria
  • El sistema de memoria mejora significativamente la experiencia del usuario con Serena

Recomendaciones de Uso

Selección de Modelo

  • La versión no pensante de Claude 3.7 parece funcionar mejor que la versión pensante
  • Gemini ha mostrado un buen rendimiento en experimentos preliminares, pero aún no es compatible con MCP
  • Gemini es relativamente económico y puede manejar enormes longitudes de contexto

Mejores Prácticas

  1. Control de versiones: Es mejor comenzar las tareas de generación de código desde un estado git limpio
  2. Configuración de Windows: Configure git config --global core.autocrlf true en Windows
  3. Estructura del código: Utilice código bien estructurado, modular y con anotaciones de tipo
  4. Pruebas y registros: Incluya información de registro detallada y pruebas significativas
  5. Planificación primero: Para tareas complejas, primero conceptualice y planifique
  6. Gestión del contexto: Para tareas largas, puede crear resúmenes y continuar en nuevas conversaciones

Lista Completa de Herramientas

La siguiente es la lista completa de todas las herramientas de Serena:

  • activate_project: Activa el proyecto por nombre
  • check_onboarding_performed: Comprueba si se ha realizado la guía de inicio
  • create_text_file: Crea/sobrescribe un archivo en el directorio del proyecto
  • delete_lines: Elimina un rango de líneas en un archivo
  • delete_memory: Elimina un recuerdo del almacenamiento de memoria específico del proyecto de Serena
  • execute_shell_command: Ejecuta un comando de shell
  • find_referencing_code_snippets: Encuentra fragmentos de código que hacen referencia a un símbolo en una ubicación dada
  • find_referencing_symbols: Encuentra símbolos que hacen referencia a un símbolo en una ubicación dada
  • find_symbol: Realiza una búsqueda de símbolos global (o local)
  • get_active_project: Obtiene el nombre del proyecto activo actual
  • get_symbols_overview: Obtiene una descripción general de los símbolos de nivel superior en un archivo o directorio
  • insert_after_symbol: Inserta contenido después de la definición de un símbolo
  • insert_at_line: Inserta contenido en una línea dada de un archivo
  • insert_before_symbol: Inserta contenido antes del inicio de la definición de un símbolo
  • list_dir: Lista los archivos y directorios en un directorio
  • list_memories: Lista los recuerdos en el almacenamiento de memoria
  • onboarding: Realiza la guía de inicio
  • prepare_for_new_conversation: Se prepara para una nueva conversación
  • read_file: Lee un archivo en el directorio del proyecto
  • read_memory: Lee un recuerdo con el nombre especificado
  • replace_lines: Reemplaza un rango de líneas en un archivo con contenido nuevo
  • replace_symbol_body: Reemplaza la definición completa de un símbolo
  • restart_language_server: Reinicia el servidor de lenguaje
  • search_for_pattern: Busca un patrón en el proyecto
  • summarize_changes: Proporciona un resumen de los cambios en la base de código
  • think_about_collected_information: Herramienta de pensamiento para considerar la integridad de la información recopilada
  • think_about_task_adherence: Herramienta de pensamiento para determinar si el agente inteligente todavía está en el camino correcto de la tarea actual
  • think_about_whether_you_are_done: Herramienta de pensamiento para determinar si la tarea realmente está completa
  • write_memory: Escribe un recuerdo nombrado en el almacenamiento de memoria para referencia futura

Resumen

Serena es un potente kit de herramientas de agente inteligente de programación de código abierto, que proporciona una solución de asistente de programación de IA gratuita y potente para desarrolladores a través de la comprensión semántica del código y múltiples métodos de integración. Ya sea a través de la integración del servidor MCP con Claude Desktop o mediante el uso de varios LLM a través del framework Agno, Serena puede mejorar significativamente la eficiencia de la programación y la calidad del código.