코딩 에이전트를 위한 IDE
요약
Serena는 IDE 기능을 모방한 코딩 에이전트 전용 도구로, 시맨틱 코드 검색, 편집, 리팩토링 및 디버깅을 심볼 레벨에서 지원합니다. 이 '에이전트 우선' 설계 덕분에 복잡한 코드베이스에서도 빠르고 안정적인 성능을 보여줍니다. 최근에는 REPL 기반 에이전트 인터페이스가 추가되어 활용도가 높아졌습니다.
핵심 포인트
- Serena는 시맨틱 검색, 리팩토링 등 IDE 기능을 제공합니다.
- 에이전트 우선 설계로 복잡한 코드베이스에서 효율적입니다.
- MCP를 통해 다양한 LLM 및 클라이언트와 통합됩니다.
- REPL 기반 인터페이스가 추가되어 에이전트 활용도가 높아졌습니다.
- Serena는 IDE의 기능과 유사한 시맨틱 코드 검색, 편집, 리팩토링 및 디버깅 도구를 제공하며, 심볼 레벨에서 작동하고 관계적 구조(relational structure)를 활용합니다.
- 이는 모델 컨텍스트 프로토콜(MCP)을 통해 모든 클라이언트/LLM과 통합됩니다.
Serena의 에이전트 우선(agent-first) 도구 설계는 강력한 고수준 추상화(high-level abstractions)를 포함하며, 라인 번호나 기본 검색 패턴 같은 저수준 개념에 의존하는 접근 방식과 차별화됩니다.
실질적으로 이는 에이전트가 특히 크고 복잡한 코드베이스에서 더 빠르고, 더 효율적이며, 더 안정적으로 작동한다는 것을 의미합니다.
[!TIP]
새로운 REPL 기반 에이전트 인터페이스를 갖춘 Serena v2가 출시되었습니다.
새로운 인터페이스에 대해 알아보기
및 설정 방법을 확인하세요.
비디오
<a href="https://www.youtube.com/watch?v=5QN7gN1KYLA"><img src="resources/serena-video-placeholder.png" style="width:500px"></a>
Serena를 다운로드하고 설정하는 것은 사람이지만, 우리의 최종 사용자는 본질적으로 AI 에이전트입니다.
실제로 Serena의 도구를 사용하는 주체로서, 그들은 Serena를 평가할 최적의 위치에 있습니다.
우리는 에이전트가 일상적인 개발 작업을 대표하는 약 20가지 루틴 코딩 작업을 수행하도록 유도하는 편향되지 않은(unbiased) 평가 프롬프트를 제작했습니다. 이를 통해 자체 내장 기능과 함께 사용될 때 Serena의 도구가 추가하는 가치를 추정할 수 있습니다.
에이전트들이 남긴 내용을 한 문장으로 요약하면 다음과 같습니다:
Opus 4.6 (높음)을 대규모 Python 코드베이스에서 Claude Code로 사용했을 경우:
"Serena의 IDE 기반 의미론적(semantic) 도구는 제 툴킷에 가장 영향력 있는 추가 기능입니다. 파일 간 이름 변경, 이동 및 참조 조회 같은 작업은 저에게 8~12번의 신중하고 오류가 발생하기 쉬운 단계를 거치게 하지만, 원자적인 호출(atomic call) 하나로 처리할 수 있게 해줍니다. 저는 제가 협업하는 개발자 누구에게든 이것을 설정해 달라고 요청할 것입니다."
GPT 5.4 (높음)를 Java 코드베이스에서 Codex CLI로 사용했을 경우:
"코딩 AI 에이전트로서, 저는 제 소유주가 Serena를 추가하도록 요청할 것입니다. 왜냐하면 이는 기호(symbol), 참조 및 리팩토링에 대한 누락된 IDE 수준의 이해력을 제공하여, 의미론적 요소가 중요한 곳에서 취약한 텍스트 수술을 더 차분하고 빠르며 자신감 있는 코드 변경으로 바꿔주기 때문입니다."
GPT 5.4 (중간)를 대규모 다국어 모노레포(monorepo)에서 Copilot CLI로 사용했을 경우:
"코딩 에이전트로서, 저는 제 소유주가 Serena를 추가하도록 요청할 것입니다. 왜냐하면 이는 실제 코드에 대해 저를 눈에 띄게 더 날카롭고 차분하게 만들어 주기 때문입니다. 특히 기호 인식 탐색(symbol-aware navigation), 파일 간 리팩토링, 모노레포 의존성 점프 같은 기능들 덕분이며, 작은 텍스트 편집이나 코딩 외 작업은 여전히 내장 기능을 활용합니다."
서로 다른 환경에 있는 다양한 에이전트들이 독립적으로 동일한 결론에 도달했습니다.
여러분의 에이전트가 요청해 온 도구를 제공하고, Serena MCP를 클라이언트에 추가하세요!
전체 방법론과 훨씬 더 상세한 평가 결과를 보려면 documentation을 확인하거나, 원하는 프로젝트로 직접 평가를 실행해 보세요.
Serena 작동 방식
Serena는 코딩 워크플로우에 필요한 도구를 제공하지만, 실제 작업을 수행하고 도구 사용을 오케스트레이션(orchestrating)하는 것은 LLM이 필요합니다.
Serena는 **모델 컨텍스트 프로토콜(Model Context Protocol, MCP)**을 통해 기존 AI 클라이언트의 기능을 확장할 수 있습니다. 대부분의 최신 AI 채팅 클라이언트는 다음을 포함하여 MCP를 직접 지원합니다:
- Claude Code, Codex, OpenCode, 또는 Gemini-CLI와 같은 터미널 기반 클라이언트,
- VSCode, Cursor 및 JetBrains IDE용 IDE 및 IDE 어시스턴트 플러그인 (Copilot, Junie, JetBrains AI Assistant 등),
- Claude Desktop, Codex App, 또는 OpenWebUI와 같은 데스크톱 및 웹 클라이언트.
:tv: 참고: 5분 만에 알아보는 Serena 소개 (YouTube)
Serena MCP 서버를 클라이언트에 연결하려면 다음 중 하나를 수행해야 합니다:
- 클라이언트에게 MCP 서버를 시작할 수 있는 실행 명령을 제공하거나,
- 직접 HTTP 모드에서 Serena MCP 서버를 시작하고 클라이언트에게 URL을 제공합니다.
시작 방법은 아래 빠른 시작 섹션에서 확인하세요.
프로그래밍 언어 지원 및 의미론적 분석 기능
Serena는 코드의 기호적 이해(symbolic understanding)를 기반으로 다양한 코드 질의 및 편집 기능을 제공합니다. 이러한 기능을 갖춘 에이전트는 마치 IDE의 기능을 활용하는 숙련된 개발자처럼 코드를 발견하고 편집할 수 있습니다. Serena는 매우 크고 복잡한 프로젝트에서도 적절한 컨텍스트를 효율적으로 찾고 올바른 작업을 수행할 수 있습니다!
이러한 기능에 동력을 공급하는 두 가지 대안 기술이 있습니다:
- 언어 서버 프로토콜(Language Server Protocol, LSP)을 구현하는 언어 서버 — 기본으로 사용되는 무료/오픈 소스 대안입니다.
- JetBrains IDE의 강력한 코드 분석 및 편집 기능을 활용하는 Serena JetBrains 플러그인 (유료 플러그인; 무료 체험판 이용 가능).
선호도와 요구 사항에 따라 이 백엔드 중 하나를 선택할 수 있습니다.
언어 서버 (Language Servers)
Serena는 언어 서버 프로토콜(LSP)을 구현하는 언어 서버 통합을 위한 강력한 추상화 계층을 포함합니다. 기반이 되는 언어 서버들은 일반적으로 오픈 소스 프로젝트이거나 적어도 사용 가능한 무료 자원입니다.
Serena의 언어 서버 백엔드를 사용할 때, 저희는 다음을 포함하여 40개 이상의 프로그래밍 언어에 대한 지원을 제공합니다:
Ada / SPARK, AL, Angular, Ansible, Astro, Bash, BSL, C#, C/C++, Clojure, Crystal, CUE, Dart, Deno, Elixir, Elm, Erlang, Fortran, F#, GDScript, Gleam, GLSL, Go, Groovy, Haskell, Haxe, HLSL, HTML, Java, JavaScript, JSON, Julia, Kotlin, LaTeX, Lean 4, Lua, Luau, Markdown, MATLAB, mSL, Nextflow, Nix, OCaml, Pascal, Perl, PHP, PowerShell, Python, QML, R, Rego, Ruby, Rust, Scala, SCSS / Sass / CSS, Solidity, Svelte, Swift, SystemVerilog, Terraform, TOML, TypeScript, Vue, WGSL, Wolfram Language, YAML, 그리고 Zig.
Serena JetBrains 플러그인
유료 Serena JetBrains 플러그인(무료 체험판 이용 가능)은 사용자의 JetBrains IDE의 강력한 코드 분석 기능을 활용합니다. 이 플러그인은 IntelliJ IDEA, PyCharm, Android Studio, WebStorm, PhpStorm, RubyMine, GoLand 등 JetBrains IDE에서 지원하는 모든 프로그래밍 언어 및 프레임워크를 자연스럽게 지원하며, 잠재적으로 다른 IDE도 지원할 수 있습니다 (다만 Rider와 CLion은 미지원입니다).
<a href="https://plugins.jetbrains.com/plugin/28946-serena/"><img src="docs/_static/images/jetbrains-marketplace-button.png"></a>
추가 세부 정보 및 플러그인 적용 방법에 대한 지침은 문서 페이지를 참조하십시오.
기능 (Features)
Serena는 효율적인 코드 검색, 편집 및 리팩토링을 위한 광범위한 도구를 제공하며, 장기간 유지되는 에이전트 워크플로우를 위한 메모리 시스템도 갖추고 있습니다.
그 범위가 넓은 만큼, Serena는 다층적 구성 시스템을 제공하여 사용자의 필요에 맞게 조정됩니다.
<details> <summary>세부 정보</summary>검색 (Retrieval)
Serena의 검색 도구는 에이전트가 전체 파일을 읽지 않고도 심볼 수준에서 코드베이스를 탐색하여 구조와 관계를 이해할 수 있게 합니다.
| 기능 | 언어 서버 (Language Servers) | JetBrains 플러그인 |
|---|---|---|
| find symbol | yes | yes |
| ... | ||
| *: 외부 종속성(external dependencies)의 선언에 대해서는 일반적으로 작동하지 않습니다. <br> | ||
| **: 일부 언어에서만 사용 가능하며, 언어 서버 기능에 의해 제한됩니다. |
리팩토링 (Refactoring)
정확한 리팩토링 도구 없이는 에이전트는 신뢰하기 어렵고 비용이 많이 드는 검색 및 바꾸기(search and replace) 작업에 의존할 수밖에 없습니다.
| 기능 | 언어 서버 (Language Servers) | JetBrains 플러그인 |
|---|---|---|
| rename | yes (심볼만) | yes (심볼, 파일, 디렉토리) |
| ... |
심볼릭 편집 (Symbolic Editing)
Serena의 심볼릭 편집 도구는 일반적인 대안보다 오류 발생률이 낮고 토큰 효율성이 훨씬 높습니다.
| 기능 | 언어 서버 (Language Servers) | JetBrains 플러그인 |
|---|---|---|
| replace symbol body | yes | yes |
| ... |
대화형 디버깅 (Interactive Debugging)
JetBrains 플러그인 전용 기능으로, Serena는 에이전트가 중단점(breakpoints)을 설정하고, 변수를 검사하며, 표현식을 평가하고, 지속적인 REPL 스타일 인터페이스를 통해 실행 흐름을 제어할 수 있도록 하는 매우 일반적인 디버깅 도구를 지원합니다.
기본 기능 (Basic Features)
의미론적(semantic) 역량 외에도, Serena는 완전성을 위해 일련의 기본적인 유틸리티를 포함하고 있습니다. Serena가 Claude Code나 Codex와 같은 에이전트 하니스(agentic harness) 내부에서 사용될 때, 주변 하니스가 이미 중복되는 파일, 검색 및 셸 기능을 제공하기 때문에 일반적으로 기본적으로 비활성화됩니다.
메모리 관리 (Memory Management)
메모리 시스템은 장기간 지속되는 에이전트 워크플로우에 필수적이며, 특히 지식을 세션, 사용자 및 프로젝트 전반에 걸쳐 공유해야 할 때 더욱 그렇습니다.
단순함에도 불구하고, 많은 사용자들이 Serena의 메모리 관리 시스템을 자신들의 에이전트 내부 시스템(예: AGENTS.md 파일)과 결합하는 데서 긍정적인 피드백을 받았습니다.
다른 것을 사용하고 싶다면 쉽게 비활성화할 수 있습니다.
설정 가능성 (Configurability)
활성 도구, 도구 설명, 프롬프트, 언어 백엔드 세부 정보 및 Serena의 다른 많은 측면들은 YAML 몇 줄만 조정함으로써 사례별로 유연하게 구성될 수 있습니다. 이를 달성하기 위해 Serena는 여러 수준의 (조합 가능한) 구성을 제공합니다:
- 전역 설정 (global configuration)
- MCP 실행 명령어 (CLI) 설정
- 프로젝트별 설정 (지역 오버라이드 포함)
- 실행 컨텍스트별 설정 (예: 특정 클라이언트를 위한 경우)
- 동적으로 조합 가능한 구성 조각 (모드, modes)
빠른 시작 (Quick Start)
[!중요]
MCP 또는 플러그인 마켓플레이스를 통해 Serena를 설치하지 마십시오! 여기에는 오래되고 최적이 아닌 설치 명령어가 포함되어 있습니다.
사전 요구 사항 (Prerequisites). Serena는 uv로 관리되며, uv 설치가 유일하게 필요한 사전 요구 사항입니다.
Serena 설치. Serena는 다음을 통해 uv로 설치됩니다:
uv tool install -p 3.13 serena-agent
성공적으로 설치한 후, serena 명령어가 셸에서 사용 가능해야 합니다.
⚠️ [IMG:N]
[!NOTE]
언어 서버 백엔드를 사용할 때, 특정 언어를 지원하기 위해 추가 종속성이 설치되어야 할 수 있습니다. 자세한 내용은 Language Support 페이지를 참조하십시오.
Serena 초기화. Serena를 초기화하고 설정이 올바르게 작동하는지 확인하려면, 단순히 다음을 실행하십시오:
serena init
기본적으로 이것은 Serena가 언어 서버 백엔드를 사용하도록 설정합니다. 대신 JetBrains 백엔드를 사용하려면, 매개변수 -b JetBrains를 추가하십시오 (추가 사용 세부 정보는 JetBrains 플러그인 문서 페이지를 참조하십시오). 어느 쪽이든, Serena가 성공적으로 초기화되었음을 나타내는 성공 메시지를 받게 될 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기