- :rocket: Serena — это мощный набор инструментов для создания агента кодирования , способный превратить LLM в полнофункциональный агент, работающий непосредственно с вашей кодовой базой .
- :wrench: Serena предоставляет необходимые инструменты для извлечения и редактирования семантического кода , которые аналогичны возможностям IDE, извлекая сущности кода на уровне символов и используя реляционную структуру.
- :free: Serena — бесплатная программа с открытым исходным кодом , расширяющая возможности LLM, к которым у вас уже есть бесплатный доступ.
Демонстрация
Вот демонстрация того, как Serena реализует небольшую функцию для себя (лучший GUI журнала) с помощью Claude Desktop. Обратите внимание, как инструменты Serena позволяют Claude находить и редактировать нужные символы.
https://github.com/user-attachments/assets/6eaa9aa1-610d-4723-a2d6-bf1e487ba753
Интеграция LLM
Serena предоставляет необходимые инструменты для кодирования рабочих процессов, но для выполнения фактической работы, организации использования инструментов, требуется степень магистра права.
Интеграция Serena с LLM возможна несколькими способами:
- с использованием протокола контекста модели (MCP) .
Serena предоставляет сервер MCP, который интегрируется с- Клод Десктоп,
- IDE, такие как VSCode, Cursor или IntelliJ,
- Расширения, такие как Cline или Roo Code
- Goose (для приятного использования CLI)
- и многие другие, включая приложение ChatGPT, которое скоро появится
- с использованием Agno — фреймворка агента, не зависящего от модели .
Агент Serena на основе Agno позволяет превратить практически любой LLM в агента кодирования, независимо от того, предоставляется ли он Google, OpenAI или Anthropic (с платным ключом API) или бесплатной моделью, предоставляемой Ollama, Together или Anyscale. - путем включения инструментов Serena в выбранную вами среду агента.
Реализация инструмента Serena отделена от кода, специфичного для фреймворка, и поэтому может быть легко адаптирована к любому фреймворку агента.
Поддержка языков программирования и возможности семантического анализа
Возможности семантического анализа кода Serena основаны на языковых серверах , использующих широко распространенный протокол языкового сервера (LSP). LSP предоставляет набор универсальных функций запроса и редактирования кода, основанных на символическом понимании кода. Оснащенная этими возможностями, Serena обнаруживает и редактирует код так же, как это делает опытный разработчик, использующий возможности IDE. Serena может эффективно находить нужный контекст и делать правильные вещи даже в очень больших и сложных проектах! Так что он не только бесплатный и с открытым исходным кодом, но и часто достигает лучших результатов, чем существующие решения, которые взимают плату.
Языковые серверы обеспечивают поддержку широкого спектра языков программирования. С Serena мы обеспечиваем
- прямая, готовая поддержка для:
- Питон
- TypeScript/JavaScript
- ФП
- Go (сначала необходимо установить go и gopls)
- Ржавчина
- С/С++
- Java ( Примечание : запуск медленный, особенно первоначальный. Похоже, что на Mac есть проблемы с Java)
- косвенная поддержка (может потребоваться изменение кода/ручная установка) для:
- Рубин (непроверено)
- C# (непроверено)
- Kotlin (непроверено)
- Дарт (непроверенный)
Эти языки поддерживаются языковой серверной библиотекой multilspy , которую Serena использует под капотом. Но мы не проверяли явно, работает ли поддержка этих языков на самом деле.
В принципе, можно легко обеспечить поддержку дополнительных языков, предоставив неглубокий адаптер для реализации нового языкового сервера.
Оглавление
- Для чего я могу использовать Serena?
- Бесплатные агенты кодирования с Serena
- Быстрый старт
- Инструменты и конфигурация Серены
- Сравнение с другими кодирующими агентами
- Адаптация и воспоминания
- Режимы и контексты
- Сочетание с другими серверами MCP
- Рекомендации по использованию Serena
- Поиск неисправностей
- Благодарности
- Настройка Серены
- Полный список инструментов
Для чего я могу использовать Serena?
Вы можете использовать Serena для любых задач кодирования – будь то анализ, планирование, проектирование новых компонентов или рефакторинг существующих. Поскольку инструменты Serena позволяют LLM замыкать когнитивный цикл восприятия-действия, агенты на основе Serena могут автономно выполнять задачи кодирования от начала до конца – от начального анализа до внедрения, тестирования и, наконец, фиксации системы контроля версий.
Serena может читать, писать и выполнять код, читать логи и вывод терминала. Хотя мы не обязательно поощряем это, "vibe-кодирование" определенно возможно, и если вы хотите почти чувствовать, что "код больше не существует", вы можете найти Serena даже более подходящей для vibing, чем агент внутри IDE (поскольку у вас будет отдельный GUI, который действительно позволит вам забыть).
Бесплатные агенты кодирования с Serena
Даже бесплатный уровень Claude от Anthropic поддерживает MCP-серверы, так что вы можете использовать Serena с Claude бесплатно. Предположительно, то же самое вскоре станет возможным и с ChatGPT Desktop, как только будет добавлена поддержка MCP-серверов.
С помощью Agno у вас также есть возможность использовать Serena с моделью свободных/открытых весов.
Serena — это вклад Oraios AI в сообщество разработчиков.
Мы сами пользуемся им регулярно.
Мы устали от необходимости платить за несколько подписок на основе IDE (например, Windsurf или Cursor), которые заставляли нас продолжать покупать токены сверх уже существующих расходов на подписку на чат. Значительные расходы на API, которые несут такие инструменты, как Claude Code, Cline, Aider и другие инструменты на основе API, также непривлекательны. Поэтому мы создали Serena с перспективой отмены большинства других подписок.
Быстрый старт
Serena можно использовать различными способами, ниже вы найдете инструкции по выборочным интеграциям.
- Если вы просто хотите превратить Claude в бесплатный агент кодирования, мы рекомендуем использовать Serena через Claude Desktop.
- Если вы хотите использовать Gemini или любую другую модель и вам нужен графический интерфейс, вам следует использовать Agno . На macOS вы также можете использовать графический интерфейс goose .
- Если вы предпочитаете использовать Serena через CLI, вы можете использовать goose . Здесь снова возможна почти любая модель.
- Если вы хотите использовать Serena, интегрированную в вашу IDE, см. раздел о других клиентах MCP .
Настройка и конфигурирование
- Установить
uv
(инструкции здесь ) - Клонируйте репозиторий в
/path/to/serena
. - Скопируйте
serena_config.template.yml
вserena_config.yml
и настройте параметры. - Скопируйте
project.template.yml
вproject.yml
и настройте параметры, специфичные для вашего проекта (добавьте один такой файл для каждого проекта, над которым вы хотите, чтобы работала Serena). Мы рекомендуем вам скопировать его в каталог.serena
вашего проекта, например, - Если вы хотите, чтобы Serena динамически переключалась между проектами, добавьте список всех файлов проектов, созданных на предыдущем шаге, в список
projects
вserena_config.yml
.
⚠️ Примечание: Serena находится в стадии активной разработки. Мы постоянно добавляем функции, улучшаем стабильность и UX. В результате конфигурация может измениться некорректно. Если у вас недопустимая конфигурация, сервер MCP или агент на базе Serena могут не запуститься (в первом случае изучите журналы MCP). Проверьте журнал изменений и шаблоны конфигурации при обновлении Serena, соответствующим образом адаптируя свои конфигурации.
После первоначальной настройки перейдите к одному из разделов ниже в зависимости от того, как вы хотите использовать Serena.
MCP-сервер (Claude Desktop)
- Создайте файл конфигурации для вашего проекта, например
myproject.yml
, на основе шаблона в myproject.template.yml . - Настройте сервер MCP в вашем клиенте.
Для Claude Desktop (доступно для Windows и macOS) перейдите в Файл / Настройки / Разработчик / Серверы MCP / Изменить конфигурацию, что позволит вам открыть файл JSONclaude_desktop_config.json
. Добавьте следующее (с измененными путями), чтобы включить Serena::info: Передача файла проекта необязательна, если вы установилиenable_project_activation
в своей конфигурации, поскольку этот параметр позволит вам просто указать Клоду активировать проект, над которым вы хотите работать.- Для Claude Desktop (как показано выше) контекст Serena по умолчанию (
desktop-app
) и режимы (например,interactive
,editing
) обычно подходят для общего использования. Обычно вам не нужно указывать их явно вargs
если вы не хотите переопределить значения по умолчанию. - Для интеграций IDE (например, VSCode, Cursor, Cline и т. д., настроенных путем добавления Serena в качестве сервера MCP) следует явно передать контекст
ide-assistant
, добавив"--context", "ide-assistant"
кargs
в конфигурации вашего клиента MCP. При желании можно также указать начальные режимы (например,"--mode", "editing"
). - Для определенных одноразовых задач на любом клиенте (например, создание отчета или плана за одно взаимодействие) вы можете указать Serena (после подключения) переключаться в такие режимы, как
planning
иone-shot
, с помощью инструментаswitch_modes
или изначально задать их с помощью флагов--mode
, если вы настраиваете команду запуска сервера непосредственно для таких задач.
Более подробную информацию о доступных параметрах и настройках см. в разделе «Режимы и контексты» .
Если вы используете пути, содержащие обратные косые черты, для путей в Windows (обратите внимание, что вы также можете использовать просто прямые косые черты), обязательно правильно экранируйте их (
\\
). - Для Claude Desktop (как показано выше) контекст Serena по умолчанию (
Вот и все! Сохраните конфигурацию и перезапустите Claude Desktop.
Поиск неисправностей
Сообщалось, что некоторые конфигурации клиента/ОС/установки вызывают проблемы при использовании Serena со стандартным протоколом stdio
, где сервер MCP запускается клиентским приложением. Если у вас возникли такие проблемы, вы можете запустить Serena в режиме sse
, запустив, например,
(опция --project
необязательна). Затем настройте клиент для подключения к http://localhost:9121
.
Примечание: для Windows и macOS существуют официальные приложения Claude Desktop от Anthropic, для Linux существует версия с открытым исходным кодом от сообщества .
⚠️ Обязательно полностью закройте приложение Claude Desktop, так как закрытие Claude просто свернёт его в системный трей — по крайней мере, в Windows.
После перезапуска вы должны увидеть инструменты Серены в интерфейсе чата (обратите внимание на маленький значок молотка).
⚠️ Имена инструментов: Claude Desktop (и большинство клиентов MCP) не разрешают имя сервера. Поэтому вам не следует говорить что-то вроде «используйте инструменты Serena». Вместо этого вы можете указать LLM использовать символические инструменты или использовать определенный инструмент, указав его имя. Более того, если вы используете несколько серверов MCP, вы можете получить конфликты имен инструментов , которые приведут к неопределенному поведению. Например, Serena в настоящее время несовместима с сервером Filesystem MCP из-за конфликтов имен инструментов.
ℹ️ Обратите внимание, что серверы MCP, которые используют stdio в качестве протокола, несколько необычны с точки зрения архитектуры клиент/сервер, поскольку сервер обязательно должен быть запущен клиентом, чтобы связь осуществлялась через стандартный поток ввода/вывода сервера. Другими словами, вам не нужно запускать сервер самостоятельно. Клиентское приложение (например, Claude Desktop) заботится об этом и поэтому его необходимо настроить с помощью команды запуска.
Более подробную информацию о серверах MCP с Claude Desktop можно найти в официальном кратком руководстве по началу работы .
Клод Код
Serena — отличный способ сделать Claude Code и дешевле, и мощнее! Мы собираем несколько примеров для этого и уже получили очень положительные отзывы. Пользователи Claude Code могут добавить serena с
Другие клиенты MCP — Cline, Roo-Code, Cursor, Windsurf и т. д.
Будучи сервером MCP, Serena может быть включена в любой клиент MCP. Та же конфигурация, что и выше, возможно, с небольшими изменениями, специфичными для клиента, должна работать. Большинство популярных существующих помощников кодирования (расширения IDE или IDE, подобные VSCode) принимают подключение к серверам MCP. Для этих интеграций **рекомендуется использовать контекст ide-assistant
**, добавляя "--context", "ide-assistant"
к args
в конфигурации вашего клиента MCP. Включение Serena обычно повышает их производительность, предоставляя им инструменты для символических операций.
В этом случае выставление счетов за использование продолжает контролироваться клиентом по вашему выбору (в отличие от клиента Claude Desktop). Но вы все равно можете захотеть использовать Serena с помощью такого подхода, например, по одной из следующих причин:
- Вы уже используете помощника по кодированию (например, Cline или Cursor) и просто хотите сделать его более мощным.
- Вы используете Linux и не хотите использовать созданный сообществом Claude Desktop
- Вы хотите более тесной интеграции Serena в вашу IDE и не против заплатить за это
Здесь применимы те же соображения, что и при использовании Serena для Claude Desktop (в частности, конфликты имен инструментов).
При использовании в IDE или расширении, которое имеет встроенные взаимодействия AI для кодирования (а это, по сути, все из них), полный набор инструментов Serena может привести к нежелательным взаимодействиям с внутренними инструментами клиента, которые вы как пользователь можете не контролировать. Это особенно касается инструментов редактирования, которые вы можете захотеть отключить для этой цели. По мере накопления опыта использования Serena в различных популярных клиентах мы будем собирать и улучшать лучшие практики, которые обеспечат плавный опыт.
Гусь
goose — это автономный агент кодирования, который имеет интеграцию для серверов MCP и предлагает CLI (и GUI на macOS). Использование goose в настоящее время является самым простым способом запуска Serena через CLI с LLM по вашему выбору.
Для установки следуйте инструкциям здесь .
После этого используйте goose configure
для добавления расширения. Для добавления Serena выберите опцию Command-line Extension
, назовите его Serena
и добавьте следующее в качестве команды:
Поскольку Serena может выполнять все необходимые операции редактирования и управления, вам следует отключить расширение developer
, которое goose включает по умолчанию. Для этого выполните
снова выберите опцию Toggle Extensions
и убедитесь, что опция Serena включена, а опция developer
— нет.
Вот и все. Ознакомьтесь с параметрами конфигурации goose, чтобы узнать, что вы можете с ним сделать (а их много, например, установка различных уровней разрешений для выполнения инструмента).
Goose, похоже, не всегда правильно завершает процессы python для серверов MCP при завершении сеанса. Возможно, вам захочется отключить Serena GUI и/или вручную очистить все запущенные процессы python после завершения работы с goose.
Агно Агент
Agno — это независимая от модели структура агента, которая позволяет превратить Serena в агента (независимо от технологии MCP) с большим количеством базовых LLM. Agno в настоящее время является самым простым способом запуска Serena в графическом интерфейсе чата с LLM по вашему выбору (если вы не используете Mac, то вам может подойти goose, который почти не требует настройки).
Хотя Agno пока не совсем стабилен, мы выбрали его, потому что он поставляется с собственным открытым исходным кодом пользовательского интерфейса, что позволяет легко использовать агента напрямую с помощью интерфейса чата. С Agno Serena превращается в агента (то есть больше не является MCP-сервером), поэтому его можно использовать программными способами (например, для бенчмаркинга или в вашем приложении).
Вот как это работает (см. также документацию Agno ):
- Загрузите код агента-ui с помощью npxили, в качестве альтернативы, клонируйте его вручную:
- Установите serena с дополнительными требованиями:
- Скопируйте
.env.example
в.env
и заполните ключи API для провайдера(ов), которых вы собираетесь использовать. - Запустите приложение agno agent с помощьюПо умолчанию скрипт использует в качестве модели Клода, но вы можете выбрать любую модель, поддерживаемую Agno (по сути, любую существующую модель).
- В новом терминале запустите пользовательский интерфейс agno с помощьюПодключите UI к агенту, который вы запустили выше, и начните общаться. У вас будут те же инструменты, что и в версии сервера MCP.
Ниже представлена короткая демонстрация того, как Серена выполняет небольшую аналитическую задачу с помощью новейшей модели Gemini:
https://github.com/user-attachments/assets/ccfcb968-277d-4ca9-af7f-b84578858c62
⚠️ ВАЖНО: В отличие от подхода MCP-сервера, выполнение инструмента в пользовательском интерфейсе Agno не запрашивает разрешения пользователя. Инструмент оболочки особенно важен, так как он может выполнять произвольное выполнение кода. Хотя мы никогда не сталкивались с какими-либо проблемами с этим в нашем тестировании с Клодом, разрешение этого может быть не совсем безопасным. Вы можете отключить определенные инструменты для своей настройки в файле конфигурации вашего проекта Serena ( .yml
).
Другие агентские фреймворки
Агент Agno особенно хорош благодаря пользовательскому интерфейсу Agno, но Serena легко интегрируется в любую среду агентов (например, pydantic-ai , langgraph или другие).
Вам просто нужно написать адаптер инструментов Serena к инструментам в выбранном вами фреймворке, как это было сделано нами для agno в SerenaAgnoToolkit .
Инструменты и конфигурация Серены
Serena объединяет инструменты для семантического извлечения кода с возможностями редактирования и выполнения оболочки. Поведение Serena можно дополнительно настроить с помощью режимов и контекстов . Полный список инструментов можно найти ниже .
Как правило, рекомендуется использовать все инструменты, поскольку это позволяет Serena обеспечить максимальную отдачу: только выполняя команды оболочки (в частности, тесты), Serena может самостоятельно выявлять и исправлять ошибки.
Однако следует отметить, что инструмент execute_shell_command
допускает выполнение произвольного кода. При использовании Serena в качестве сервера MCP клиенты обычно запрашивают у пользователя разрешение перед выполнением инструмента, поэтому, если пользователь заранее проверяет параметры выполнения, это не должно быть проблемой. Однако, если у вас есть опасения, вы можете отключить определенные команды в файле конфигурации .yml вашего проекта. Если вы хотите использовать Serena только для анализа кода и предложения реализаций без изменения кодовой базы, вы можете включить режим только для чтения, установив read_only: true
в файле конфигурации вашего проекта. Это автоматически отключит все инструменты редактирования и предотвратит любые изменения в вашей кодовой базе, при этом все возможности анализа и исследования останутся доступными.
В общем, обязательно делайте резервные копии своей работы и используйте систему контроля версий, чтобы избежать потери какой-либо работы.
Сравнение с другими кодирующими агентами
Насколько нам известно, Serena — первый полнофункциональный агент кодирования, все функции которого доступны через сервер MCP, что не требует API-ключей или подписок.
Агенты кодирования на основе подписки
Наиболее известные агенты кодирования на основе подписки являются частями IDE, таких как Windsurf, Cursor и VSCode. Функциональность Serena похожа на Cursor's Agent, Windsurf's Cascade или будущий режим агента VSCode.
Преимущество Serena в том, что она не требует подписки. Потенциальный недостаток в том, что она не интегрирована напрямую в IDE, поэтому проверка нового написанного кода не так проста.
Дополнительные технические различия:
- Serena не привязана к конкретной IDE. MCP-сервер Serena может использоваться с любым MCP-клиентом (включая некоторые IDE), а агент на основе Agno предоставляет дополнительные способы применения его функциональности.
- Serena не привязана к какой-либо конкретной крупной языковой модели или API.
- Serena перемещается и редактирует код с помощью языкового сервера, поэтому имеет символическое понимание кода. Инструменты на основе IDE часто используют подход на основе RAG или чисто текстовый, который часто менее эффективен, особенно для больших кодовых баз.
- Serena имеет открытый исходный код и небольшую кодовую базу, поэтому ее можно легко расширять и модифицировать.
Агенты кодирования на основе API
Альтернативой агентам на основе подписки являются агенты на основе API, такие как Claude Code, Cline, Aider, Roo Code и другие, где стоимость использования напрямую соответствует стоимости API базового LLM. Некоторые из них (например, Cline) могут быть даже включены в IDE в качестве расширения. Они часто очень мощные, и их главный недостаток — это (потенциально очень высокая) стоимость API.
Serena сама по себе может использоваться как агент на основе API (см. раздел об Agno выше). Мы пока не написали CLI-инструмент или специальное расширение IDE для Serena (и, вероятно, в последнем нет необходимости, поскольку Serena уже может использоваться с любой IDE, поддерживающей серверы MCP). Если возникнет спрос на Serena как CLI-инструмент, такой как Claude Code, мы рассмотрим возможность его написания.
Главное отличие Serena от других агентов на основе API заключается в том, что Serena может также использоваться как сервер MCP, не требуя при этом ключа API и обходя затраты на API. Это уникальная функция Serena.
Другие кодирующие агенты на основе MCP
Существуют и другие серверы MCP, предназначенные для кодирования, например DesktopCommander и codemcp . Однако, насколько нам известно, ни один из них не предоставляет инструменты для семантического поиска и редактирования кода; они полагаются исключительно на текстовый анализ. Именно интеграция языковых серверов и MCP делает Serena уникальной и такой мощной для сложных задач кодирования, особенно в контексте больших кодовых баз.
Адаптация и воспоминания
По умолчанию Serena выполнит процесс онбординга, когда она впервые запускается для проекта. Целью процесса является ознакомление Serena с проектом и сохранение воспоминаний, которые она затем сможет использовать в будущих взаимодействиях.
Воспоминания — это файлы, хранящиеся в .serena/memories/
в каталоге проекта, которые агент может выбрать для чтения. Можете свободно читать и корректировать их по мере необходимости; вы также можете добавлять новые вручную. Каждый файл в каталоге .serena/memories/
— это файл памяти.
Мы обнаружили, что воспоминания значительно улучшают пользовательский опыт с Сереной. Сама по себе Серена проинструктирована создавать новые воспоминания, когда это уместно.
Режимы и контексты
Поведение и набор инструментов Serena можно настроить с помощью контекстов и режимов . Они обеспечивают высокую степень настройки для наилучшего соответствия вашему рабочему процессу и среде, в которой работает Serena.
Контексты
Контекст определяет общую среду, в которой работает Serena. Он влияет на начальный системный запрос и набор доступных инструментов. Контекст задается при запуске Serena (например, через параметры CLI для сервера MCP или в скрипте агента) и не может быть изменен во время активного сеанса.
Serena поставляется с предопределенными контекстами:
desktop-app
: Разработано для использования с приложениями для настольных компьютеров, такими как Claude Desktop. Часто используется по умолчанию.agent
: разработан для сценариев, в которых Серена действует как более автономный агент, например, при использовании с Agno.ide-assistant
: оптимизирован для интеграции в такие среды разработки, как VSCode, Cursor или Cline, с упором на помощь при кодировании в редакторе.
Вам следует выбрать контекст, который лучше всего соответствует вашей интеграции.
Режимы
Режимы еще больше улучшают поведение Серены для определенных типов задач или стилей взаимодействия. Несколько режимов могут быть активны одновременно, что позволяет вам комбинировать их эффекты. Режимы влияют на системную подсказку и также могут изменять набор доступных инструментов, исключая некоторые из них.
Примеры встроенных режимов включают в себя:
planning
: Сосредоточивает Серену на задачах планирования и анализа.editing
: оптимизирует Serena для задач прямого изменения кода.interactive
: подходит для разговорного стиля взаимодействия.one-shot
: настраивает Serena для задач, которые должны быть выполнены за один раз, часто используется приplanning
для создания отчетов или первоначальных планов.no-onboarding
: пропускает первоначальный процесс регистрации, если он не нужен для конкретного сеанса.onboarding
: (обычно запускается автоматически) фокусируется на процессе онбординга проекта.
Режимы можно устанавливать при запуске (аналогично контекстам), но их также можно переключать динамически во время сеанса. Вы можете поручить LLM использовать инструмент switch_modes
для активации другого набора режимов (например, «переключиться на режимы планирования и одноразового использования»).
:warning: Совместимость режимов : хотя вы можете комбинировать режимы, некоторые из них могут быть семантически несовместимыми (например, interactive
и one-shot
). В настоящее время Serena не предотвращает несовместимые комбинации; выбор разумных конфигураций режимов остается за пользователем.
Настройка контекстов и режимов
Вы можете создавать собственные контексты и режимы, чтобы точно адаптировать Serena к вашим потребностям:
- Добавление в ваш клон Serena : создайте новые файлы
.yml
в каталогахconfig/contexts/
илиconfig/modes/
в вашем локальном репозитории Serena. Эти пользовательские контексты/режимы будут автоматически зарегистрированы и доступны для использования по имени файла (без расширения.yml
). Они также будут отображаться в списках доступных контекстов/режимов. - Использование внешних файлов YAML : при запуске Serena вы можете указать абсолютный путь к пользовательскому файлу
.yml
для контекста или режима.
Файл YAML контекста или режима обычно определяет:
name
: (Необязательно, если используется имя файла) Имя контекста/режима.prompt
: Строка, которая будет включена в системную подсказку Серены.description
: (Необязательно) Краткое описание.excluded_tools
: Список названий инструментов (строк), которые следует отключить, когда активен этот контекст/режим.
Такая настройка обеспечивает глубокую интеграцию и адаптацию Serena к конкретным требованиям проекта или личным предпочтениям.
Сочетание с другими серверами MCP
При использовании Serena через MCP Client вы можете использовать его вместе с другими MCP-серверами. Однако остерегайтесь конфликтов имен инструментов! См. информацию об этом выше.
В настоящее время существует конфликт с популярным Filesystem MCP Server. Поскольку Serena также обеспечивает операции с файловой системой, скорее всего, нет необходимости включать эти два одновременно.
Рекомендации по использованию Serena
Мы продолжим собирать лучшие практики по мере роста сообщества Serena. Ниже приведен краткий обзор того, что мы узнали при использовании Serena внутри компании.
Большинство этих рекомендаций справедливы для любого кодирующего агента, включая все агенты, упомянутые выше.
Какую модель выбрать?
К нашему удивлению, Serena, похоже, лучше всего работала с не думающей версией Claude 3.7 по сравнению с думающей версией (мы еще не проводили обширных сравнений с Gemini). Думающая версия работала дольше, испытывала больше трудностей в использовании инструментов и часто просто писала код, не читая достаточно контекста.
В наших первых экспериментах Gemini, похоже, работал очень хорошо. К сожалению, Gemini не поддерживает MCP (пока?), поэтому единственный способ использовать его — через API-ключ. С другой стороны, Gemini сравнительно дешев и может обрабатывать огромные длины контекста.
Адаптация
В самом первом взаимодействии Серене поручено выполнить онбординг и записать первые файлы памяти. Иногда (в зависимости от LLM) файлы не записываются на диск. В этом случае просто попросите Серену записать воспоминания.
На этом этапе Серена обычно читает и пишет довольно много текста и тем самым заполняет контекст. Мы рекомендуем вам переключиться на другой разговор после выполнения онбординга, чтобы не исчерпать токены. Онбординг будет выполнен только один раз, если вы явно не инициируете его.
После регистрации мы рекомендуем вам быстро просмотреть воспоминания и, при необходимости, отредактировать их или добавить дополнительные.
Перед редактированием кода
Лучше всего начинать задачу генерации кода с чистого состояния git. Это не только облегчит вам проверку изменений, но и сама модель получит возможность увидеть, что она изменила, вызвав git diff
и тем самым исправить себя или продолжить работу в последующем разговоре, если это необходимо.
:warning: Важно : поскольку Serena будет писать в файлы, используя системные окончания строк, и может захотеть посмотреть на git diff, важно установить git config core.autocrlf
в true
в Windows. Если git config core.autocrlf
установлен в false
в Windows, вы можете получить огромные diff только из-за окончаний строк. Обычно рекомендуется включить эту настройку git в Windows:
Возможные проблемы при редактировании кода
По нашему опыту, LLM действительно плохи в подсчетах, т.е. у них возникают проблемы со вставкой блоков кода в нужное место. Большинство операций редактирования можно выполнить на символическом уровне, что позволяет обойти эту проблему. Однако иногда вставки на уровне строк полезны.
Serena должна дважды проверить номера строк и любые блоки кода, которые она будет редактировать, но вы можете явно указать ей, как редактировать код, если у вас возникнут проблемы.
Исчезновение контекста
Для длительных и сложных задач или задач, где Серена прочитала много контента, вы можете приблизиться к пределам маркеров контекста. В этом случае часто бывает хорошей идеей продолжить в новом разговоре. У Серены есть специальный инструмент для создания сводки текущего состояния прогресса и всей соответствующей информации для его продолжения. Вы можете запросить создание этой сводки и записать ее в память. Затем, в новом разговоре, вы можете просто попросить Серену прочитать память и продолжить задачу. По нашему опыту, это сработало очень хорошо. С другой стороны, поскольку в одном сеансе не задействовано обобщение, Серена обычно не теряется (в отличие от некоторых других агентов, которые обобщают под капотом), и ей также поручено время от времени проверять, находится ли она на правильном пути.
Более того, Серена проинструктирована быть бережливой с контекстом (например, не читать тела символов кода без необходимости), но мы обнаружили, что Клод не всегда очень хорош в бережливости (Gemini, похоже, справляется с этим лучше). Вы можете явно проинструктировать его не читать тела, если знаете, что это не нужно.
Контроль выполнения инструмента
Claude Desktop спросит вас перед запуском инструмента. Для большинства инструментов вы можете просто нажать «Разрешить для этого чата», особенно если все ваши файлы находятся под контролем версий. Исключением является инструмент execute_shell_command
— в нем вы можете захотеть проверить каждый вызов по отдельности. Мы рекомендуем просматривать каждый вызов этой команды и не включать ее для всего чата.
Структурирование вашей кодовой базы
Serena использует структуру кода для поиска, чтения и редактирования кода. Это означает, что она будет хорошо работать с хорошо структурированным кодом, но может потерпеть неудачу с полностью неструктурированным (например, класс Бога с огромными немодульными функциями). Аннотации типов также очень помогают здесь. Чем лучше ваш код, тем лучше будет работать Serena. Поэтому мы обычно рекомендуем вам писать хорошо структурированный, модульный и типизированный код — это поможет не только вам, но и вашему ИИ ;).
Ведение журнала, линтинг и тестирование
Serena не может отлаживать (насколько нам известно, на данный момент ни один помощник по кодированию не может этого сделать). Это означает, что для улучшения результатов в цикле агента Serena необходимо получать информацию, выполняя тесты, скрипты, выполняя линтинг и т. д. Часто бывает очень полезно включать много сообщений журнала с явной информацией и иметь содержательные тесты. Особенно последние часто помогают агенту самокорректироваться.
Обычно мы рекомендуем начинать задачу редактирования из состояния, когда все проверки и тесты линтинга пройдены.
Общие советы
Мы обнаружили, что часто бывает полезно потратить некоторое время на концептуализацию и планирование задачи перед ее фактической реализацией, особенно для нетривиальной задачи. Это помогает как в достижении лучших результатов, так и в повышении чувства контроля и пребывания в курсе. Вы можете составить подробный план за один сеанс, где Серена может прочитать большую часть вашего кода, чтобы создать контекст, а затем продолжить реализацию в другом (возможно, после создания подходящих воспоминаний).
Поиск неисправностей
Поддержка серверов MCP в Claude Desktop и различных пакетах SDK для серверов MCP — это относительно новые разработки, которые могут работать нестабильно.
Рабочая конфигурация сервера MCP может различаться от платформы к платформе и от клиента к клиенту. Мы рекомендуем всегда использовать абсолютные пути, так как относительные пути могут быть источниками ошибок. Языковой сервер работает в отдельном подпроцессе и вызывается с помощью asyncio – иногда клиент может привести к его сбою. Если у вас включено окно журнала Serena, и оно исчезает, вы поймете, что произошло.
Некоторые клиенты (например, goose) могут некорректно завершать работу серверов MCP. Следите за зависшими процессами Python и завершайте их вручную, если это необходимо.
Серена Логгинг
Чтобы помочь с устранением неполадок, мы написали небольшую утилиту GUI для ведения журнала. Для большинства клиентов мы рекомендуем включить ее через конфигурацию проекта ( project.yml
), если у вас возникнут проблемы. Многие клиенты также пишут журналы MCP, которые могут помочь в выявлении проблем.
GUI для ведения журнала может работать не для всех клиентов и не во всех системах. В настоящее время он не работает на macOS или в расширениях VSCode, таких как Cline.
Благодарности
Мы создали Serena на основе множества существующих технологий с открытым исходным кодом, наиболее важными из которых являются:
- multilspy . Прекрасно спроектированная оболочка вокруг языковых серверов, следующая LSP. Ее было нелегко расширить с помощью символической логики, которая требовалась Serena, поэтому вместо того, чтобы включить ее как зависимость, мы скопировали исходный код и адаптировали его под наши нужды.
- Python MCP SDK
- Agno и связанный с ним агент-ui , который мы используем, чтобы позволить Serena работать с любой моделью, помимо тех, которые поддерживают MCP.
- Все языковые серверы, которые мы используем через multilspy.
Без этих проектов строительство Серены было бы невозможным (или его было бы значительно сложнее построить).
Настройка Серены
Очень легко расширить функциональность искусственного интеллекта Serena с помощью собственных идей. Просто реализуйте новый инструмент, создав подкласс serena.agent.Tool
и реализуйте метод apply
(не часть интерфейса, см. комментарий в Tool
). По умолчанию SerenaAgent
сразу получит к нему доступ.
Также относительно просто добавить поддержку нового языка . Мы с нетерпением ждем, что предложит сообщество! Подробности о том, как внести свой вклад, см. здесь .
Полный список инструментов
Вот полный список инструментов Serena с кратким описанием (вывод uv run serena-list-tools
):
activate_project
: Активирует проект по имени.check_onboarding_performed
: проверяет, была ли уже выполнена адаптация проекта.create_text_file
: создает/перезаписывает файл в каталоге проекта.delete_lines
: Удаляет диапазон строк в файле.delete_memory
: Удаляет воспоминание из хранилища памяти проекта Серены.execute_shell_command
: выполняет команду оболочки.find_referencing_code_snippets
: Находит фрагменты кода, в которых упоминается символ в указанном месте.find_referencing_symbols
: находит символы, ссылающиеся на символ в указанном месте (возможно фильтрование по типу).find_symbol
: выполняет глобальный (или локальный) поиск символов с/содержащими заданное имя/подстроку (возможно фильтрование по типу).get_active_project
: получает имя текущего активного проекта (если есть) и выводит список существующих проектовget_current_config
: выводит текущую конфигурацию агента, включая активные режимы, инструменты и контекст.get_symbols_overview
: Получает обзор символов верхнего уровня, определенных в указанном файле или каталоге.initial_instructions
: Получает начальные инструкции для текущего проекта. Следует использовать только в настройках, где системная подсказка не может быть установлена, например, в клиентах, над которыми вы не имеете контроля, таких как Claude Desktop.insert_after_symbol
: вставляет содержимое после окончания определения заданного символа.insert_at_line
: вставляет содержимое в указанную строку файла.insert_before_symbol
: вставляет содержимое перед началом определения заданного символа.list_dir
: Выводит список файлов и каталогов в указанном каталоге (возможно с рекурсией).list_memories
: Перечисляет воспоминания в хранилище памяти проекта Серены.onboarding
: выполняет адаптацию (определяет структуру проекта и основные задачи, например, для тестирования или сборки).prepare_for_new_conversation
: предоставляет инструкции по подготовке к новому разговору (чтобы продолжить с необходимым контекстом).read_file
: читает файл в каталоге проекта.read_memory
: считывает память с указанным именем из хранилища памяти проекта Serena.replace_lines
: заменяет диапазон строк в файле новым содержимым.replace_symbol_body
: Заменяет полное определение символа.restart_language_server
: Перезапускает языковой сервер, может потребоваться при внесении изменений не через Serena.search_for_pattern
: Выполняет поиск шаблона в проекте.summarize_changes
: Содержит инструкции по обобщению изменений, внесенных в кодовую базу.switch_modes
: активирует режимы, предоставляя список их названийthink_about_collected_information
: Инструмент для размышления о полноте собранной информации.think_about_task_adherence
: инструмент для размышлений, позволяющий определить, находится ли агент на пути к выполнению текущей задачи.think_about_whether_you_are_done
: Инструмент для размышлений, позволяющий определить, действительно ли выполнена задача.write_memory
: записывает именованную память (для дальнейшего использования) в хранилище памяти проекта Serena.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Полнофункциональный кодирующий агент, который использует символические операции (включенные языковыми серверами) и хорошо работает даже в больших кодовых базах. По сути, бесплатная альтернатива Cursor и Windsurf Agents, Cline, Roo Code и другим.
- Интеграция LLM
- Поддержка языков программирования и возможности семантического анализа
- Оглавление
- Для чего я могу использовать Serena?
- Бесплатные агенты кодирования с Serena
- Быстрый старт
- Инструменты и конфигурация Серены
- Сравнение с другими кодирующими агентами
- Адаптация и воспоминания
- Режимы и контексты
- Сочетание с другими серверами MCP
- Рекомендации по использованию Serena
- Поиск неисправностей
- Благодарности
- Настройка Серены
- Полный список инструментов
Related MCP Servers
- -securityFlicense-qualityServer that enhances the capabilities of the Cline coding agent. It provides intelligent code suggestions, reduces hallucinations, and documents the knowledge base by leveraging your project's documentation and detecting the technologies used in your codebase.Last updated -10JavaScript
- -securityAlicense-qualityThe sessionless code interpreter. Securely run AI-generated code in stateful sandboxes that run forever.Last updated -65176RustMIT License
- -securityAlicense-qualityA Cursor-compatible toolkit that provides intelligent coding assistance through custom AI tools for code architecture planning, screenshot analysis, code review, and file reading capabilities.Last updated -1,1332TypeScriptMIT License
Apifox MCP Serverofficial
-securityFlicense-qualityA server that connects AI coding assistants like Cursor and Cline to Apifox API definitions, allowing developers to implement API interfaces through natural language commands.Last updated -8321