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.
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
- Instale
uv
(consulte la documentación oficial para obtener instrucciones de instalación: documentación oficial) - Clone el repositorio en
/path/to/serena
- Copie
serena_config.template.yml
comoserena_config.yml
y ajuste la configuración - Copie
myproject.template.yml
comomyproject.yml
y ajuste la configuración específica del proyecto - Si necesita cambiar de proyecto dinámicamente, agregue todos los archivos del proyecto a la lista
projects
enserena_config.yml
Integración con Claude Desktop
- Cree un archivo de configuración del proyecto
myproject.yml
- 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"] } } }
- Guarde la configuración y reinicie Claude Desktop
Uso de Goose CLI
- Instale goose
- Use
goose configure
para agregar una extensión - Seleccione "Command-line Extension" y nómbrela "Serena"
- Agregue el comando:
/abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
- Desactive la extensión
developer
predeterminada
Uso de Agno GUI
- Descargue el código de agent-ui:
npx create-agent-ui@latest
- Instale Serena:
uv pip install --all-extras -r pyproject.toml -e .
- Copie
.env.example
como.env
y complete las claves API - Inicie el agente Agno:
uv run python scripts/agno_agent.py
- 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
- Control de versiones: Es mejor comenzar las tareas de generación de código desde un estado git limpio
- Configuración de Windows: Configure
git config --global core.autocrlf true
en Windows - Estructura del código: Utilice código bien estructurado, modular y con anotaciones de tipo
- Pruebas y registros: Incluya información de registro detallada y pruebas significativas
- Planificación primero: Para tareas complejas, primero conceptualice y planifique
- 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 nombrecheck_onboarding_performed
: Comprueba si se ha realizado la guía de iniciocreate_text_file
: Crea/sobrescribe un archivo en el directorio del proyectodelete_lines
: Elimina un rango de líneas en un archivodelete_memory
: Elimina un recuerdo del almacenamiento de memoria específico del proyecto de Serenaexecute_shell_command
: Ejecuta un comando de shellfind_referencing_code_snippets
: Encuentra fragmentos de código que hacen referencia a un símbolo en una ubicación dadafind_referencing_symbols
: Encuentra símbolos que hacen referencia a un símbolo en una ubicación dadafind_symbol
: Realiza una búsqueda de símbolos global (o local)get_active_project
: Obtiene el nombre del proyecto activo actualget_symbols_overview
: Obtiene una descripción general de los símbolos de nivel superior en un archivo o directorioinsert_after_symbol
: Inserta contenido después de la definición de un símboloinsert_at_line
: Inserta contenido en una línea dada de un archivoinsert_before_symbol
: Inserta contenido antes del inicio de la definición de un símbololist_dir
: Lista los archivos y directorios en un directoriolist_memories
: Lista los recuerdos en el almacenamiento de memoriaonboarding
: Realiza la guía de inicioprepare_for_new_conversation
: Se prepara para una nueva conversaciónread_file
: Lee un archivo en el directorio del proyectoread_memory
: Lee un recuerdo con el nombre especificadoreplace_lines
: Reemplaza un rango de líneas en un archivo con contenido nuevoreplace_symbol_body
: Reemplaza la definición completa de un símbolorestart_language_server
: Reinicia el servidor de lenguajesearch_for_pattern
: Busca un patrón en el proyectosummarize_changes
: Proporciona un resumen de los cambios en la base de códigothink_about_collected_information
: Herramienta de pensamiento para considerar la integridad de la información recopiladathink_about_task_adherence
: Herramienta de pensamiento para determinar si el agente inteligente todavía está en el camino correcto de la tarea actualthink_about_whether_you_are_done
: Herramienta de pensamiento para determinar si la tarea realmente está completawrite_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.