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
como serena_config.yml
y ajuste la configuración
- Copie
myproject.template.yml
como myproject.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
en serena_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 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.