Home
Login

Serena는 강력한 코딩 에이전트 툴킷으로, 대규모 언어 모델(LLM)을 완전한 기능을 갖춘 에이전트로 전환하여 코드베이스에서 직접 작업할 수 있도록 합니다.

MITPython 1.2koraios Last Updated: 2025-06-13

Serena 프로젝트 상세 소개

프로젝트 개요

Serena는 강력한 프로그래밍 지능 에이전트 툴킷으로, 대규모 언어 모델(LLM)을 완전한 기능을 갖춘 프로그래밍 지능 에이전트로 전환하여 코드베이스에서 직접 작업할 수 있도록 합니다. 이 프로젝트는 Oraios AI에서 개발하고 개발자 커뮤니티에 오픈 소스로 기여했습니다.

핵심 기능

🚀 핵심 역량

  • 의미적 코드 검색 및 편집 기능: IDE와 유사한 기능을 제공하여 심볼 수준에서 코드 엔티티를 추출하고 관계 구조를 활용합니다.
  • 완전 오픈 소스 무료: 추가 비용 없이 기존 LLM의 기능을 향상시킵니다.
  • 다양한 통합 방식: MCP 서버, Agno 프레임워크 및 사용자 정의 에이전트 프레임워크 통합을 지원합니다.

🔧 기술적 장점

  • 언어 서버 프로토콜(LSP) 기반: 널리 구현된 LSP를 통해 다양한 코드 쿼리 및 편집 기능을 제공합니다.
  • 심볼 수준 이해: 숙련된 개발자가 IDE를 사용하는 것처럼 코드의 심볼 이해를 기반으로 검색 및 편집을 수행합니다.
  • 효율적이고 정확함: 대규모 복잡한 프로젝트에서도 올바른 컨텍스트를 효율적으로 찾고 올바른 작업을 수행합니다.

지원하는 프로그래밍 언어

직접 지원 (즉시 사용 가능)

  • Python
  • Java (주의: 시작 속도가 느리며, 특히 처음 시작할 때 두드러집니다.)
  • TypeScript

이러한 언어는 Serena의 기본으로 사용되는 multilspy 언어 서버 라이브러리를 통해 지원됩니다.

통합 방식

1. 모델 컨텍스트 프로토콜 (MCP)

Serena는 MCP 서버를 제공하며, 다음 클라이언트와 통합할 수 있습니다.

  • Claude Desktop
  • IDE (예: VSCode, Cursor, IntelliJ)
  • 확장 (예: Cline, Roo Code)
  • Goose (훌륭한 CLI 경험 제공)
  • 그리고 곧 지원될 ChatGPT 앱을 포함한 많은 다른 클라이언트

2. Agno 프레임워크

Agno (모델 독립적인 에이전트 프레임워크)를 통해 Serena는 거의 모든 LLM을 프로그래밍 지능 에이전트로 전환할 수 있으며, 다음을 지원합니다.

  • Google, OpenAI, Anthropic에서 제공하는 유료 API 모델
  • Ollama, Together, Anyscale에서 제공하는 무료 모델

3. 사용자 정의 에이전트 프레임워크

Serena의 도구 구현은 프레임워크 특정 코드와 분리되어 있어 모든 에이전트 프레임워크에 쉽게 적용할 수 있습니다.

사용 시나리오

Serena는 다음을 포함한 모든 프로그래밍 작업에 사용할 수 있습니다.

  • 코드 분석
  • 프로젝트 계획
  • 새로운 컴포넌트 설계
  • 기존 코드 리팩토링
  • 초기 분석부터 구현, 테스트, 최종적으로 버전 관리 시스템 제출까지의 완전한 자율 프로그래밍 작업

빠른 시작

기본 설치

  1. uv 설치 (설치 설명은 공식 문서 참조)
  2. 저장소를 /path/to/serena로 클론
  3. serena_config.template.ymlserena_config.yml로 복사하고 설정 조정
  4. myproject.template.ymlmyproject.yml로 복사하고 프로젝트 특정 설정 조정
  5. 프로젝트를 동적으로 전환하려면 모든 프로젝트 파일을 serena_config.ymlprojects 목록에 추가

Claude Desktop 통합

  1. 프로젝트 구성 파일 myproject.yml 생성
  2. Claude Desktop에서 MCP 서버 구성:
    • File / Settings / Developer / MCP Servers / Edit Config 열기
    • claude_desktop_config.json에 다음 내용 추가:
    {
      "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. 구성 저장 후 Claude Desktop 재시작

Goose CLI 사용

  1. goose 설치
  2. goose configure를 사용하여 확장 추가
  3. "Command-line Extension"을 선택하고 이름을 "Serena"로 지정
  4. 명령 추가: /abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
  5. 기본 developer 확장 비활성화

Agno GUI 사용

  1. agent-ui 코드 다운로드: npx create-agent-ui@latest
  2. Serena 설치: uv pip install --all-extras -r pyproject.toml -e .
  3. .env.example.env로 복사하고 API 키 입력
  4. Agno 에이전트 시작: uv run python scripts/agno_agent.py
  5. UI 시작: cd agent-ui && pnpm dev

도구 및 구성

주요 도구 범주

  • 의미적 코드 검색 도구: 심볼, 참조, 코드 스니펫 찾기
  • 코드 편집 도구: 코드 삽입, 교체, 삭제
  • 파일 시스템 작업: 파일 및 디렉토리 읽기, 생성, 나열
  • Shell 실행: shell 명령 실행
  • 프로젝트 관리: 프로젝트 활성화, 온보딩, 메모리 관리

안전 고려 사항

  • 모든 도구의 사용은 일반적으로 최대 가치를 제공하기 위해 권장됩니다.
  • execute_shell_command 도구는 임의의 코드 실행을 허용하므로 신중하게 사용해야 합니다.
  • 프로젝트 구성 파일에서 특정 명령을 비활성화할 수 있습니다.
  • 읽기 전용 모드(read_only: true)를 지원하여 분석 및 제안만 허용하고 코드베이스를 수정하지 않습니다.

다른 프로그래밍 지능 에이전트와의 비교

구독 기반 에이전트 (Windsurf, Cursor, VSCode) 대비

장점:

  • 구독 비용 없음
  • 특정 IDE에 종속되지 않음
  • 특정 대규모 언어 모델 또는 API에 종속되지 않음
  • 언어 서버를 사용하여 심볼 수준의 코드 이해
  • 오픈 소스이며 코드베이스가 작아 확장 및 수정 용이

단점:

  • IDE에 직접 통합되지 않아 새로운 코드 검사가 IDE 내장 도구만큼 원활하지 않음

API 기반 에이전트 (Claude Code, Cline, Aider) 대비

장점:

  • MCP 서버로 사용할 수 있어 API 키가 필요 없고 API 비용을 절감할 수 있습니다.
  • 이는 Serena의 고유한 기능입니다.

유사점:

  • 모두 API 기반 에이전트로 사용할 수 있습니다.
  • 모두 강력하며, 주요 단점은 잠재적으로 높은 API 비용입니다.

다른 MCP 서버 대비

  • 알려진 바에 따르면 다른 프로그래밍 관련 MCP 서버 (예: DesktopCommander, codemcp)는 의미적 코드 검색 및 편집 도구를 제공하지 않습니다.
  • 순수한 텍스트 기반 분석에 의존합니다.
  • Serena는 언어 서버와 MCP를 통합하는 특성으로 인해 대규모 코드베이스의 어려운 프로그래밍 작업을 처리할 때 독특하고 강력합니다.

온보딩 및 기억 시스템

온보딩

  • 기본적으로 Serena는 프로젝트를 처음 시작할 때 온보딩 프로세스를 수행합니다.
  • 목표는 Serena가 프로젝트에 익숙해지고 향후 상호 작용에 사용할 수 있도록 기억을 저장하는 것입니다.

기억 시스템

  • 기억 파일은 프로젝트 디렉토리의 .serena/memories/에 저장됩니다.
  • 에이전트는 이러한 파일을 읽도록 선택할 수 있습니다.
  • 사용자는 필요에 따라 기억 파일을 읽고 조정하거나 수동으로 새로운 기억 파일을 추가할 수 있습니다.
  • 기억 시스템은 사용자가 Serena를 사용하는 경험을 크게 개선합니다.

사용 권장 사항

모델 선택

  • 사고 버전이 아닌 Claude 3.7 버전이 사고 버전보다 효과가 더 좋은 것으로 보입니다.
  • Gemini는 초기 실험에서 좋은 성능을 보였지만 아직 MCP를 지원하지 않습니다.
  • Gemini는 상대적으로 저렴하고 엄청난 컨텍스트 길이를 처리할 수 있습니다.

모범 사례

  1. 버전 관리: 코드 생성 작업을 깨끗한 git 상태에서 시작하는 것이 좋습니다.
  2. Windows 구성: Windows에서 git config --global core.autocrlf true 설정
  3. 코드 구조: 구조가 잘 잡히고 모듈화되었으며 타입 어노테이션이 있는 코드 사용
  4. 테스트 및 로그: 자세한 로그 정보와 의미 있는 테스트 포함
  5. 계획 우선: 복잡한 작업의 경우 먼저 개념화 및 계획 수행
  6. 컨텍스트 관리: 긴 작업 시 요약을 생성하고 새로운 대화에서 계속 진행

전체 도구 목록

다음은 Serena의 모든 도구의 전체 목록입니다.

  • activate_project: 이름으로 프로젝트 활성화
  • check_onboarding_performed: 온보딩이 수행되었는지 확인
  • create_text_file: 프로젝트 디렉토리에 파일 생성/덮어쓰기
  • delete_lines: 파일에서 행 범위 삭제
  • delete_memory: Serena의 프로젝트 특정 메모리 저장소에서 기억 삭제
  • execute_shell_command: shell 명령 실행
  • find_referencing_code_snippets: 주어진 위치의 심볼을 참조하는 코드 스니펫 찾기
  • find_referencing_symbols: 주어진 위치의 심볼을 참조하는 심볼 찾기
  • find_symbol: 전역 (또는 로컬) 심볼 검색 수행
  • get_active_project: 현재 활성 프로젝트 이름 가져오기
  • get_symbols_overview: 파일 또는 디렉토리에서 최상위 심볼의 개요 가져오기
  • insert_after_symbol: 심볼 정의가 끝난 후 내용 삽입
  • insert_at_line: 파일의 주어진 행에 내용 삽입
  • insert_before_symbol: 심볼 정의가 시작되기 전에 내용 삽입
  • list_dir: 디렉토리의 파일 및 디렉토리 나열
  • list_memories: 메모리 저장소의 기억 나열
  • onboarding: 온보딩 수행
  • prepare_for_new_conversation: 새로운 대화를 위해 준비
  • read_file: 프로젝트 디렉토리에서 파일 읽기
  • read_memory: 지정된 이름의 기억 읽기
  • replace_lines: 파일에서 행 범위를 새 내용으로 교체
  • replace_symbol_body: 심볼의 전체 정의 교체
  • restart_language_server: 언어 서버 재시작
  • search_for_pattern: 프로젝트에서 패턴 검색
  • summarize_changes: 코드베이스 변경 사항에 대한 요약 설명 제공
  • think_about_collected_information: 수집된 정보의 완전성을 고려하기 위한 사고 도구
  • think_about_task_adherence: 에이전트가 여전히 현재 작업의 올바른 궤도에 있는지 확인하기 위한 사고 도구
  • think_about_whether_you_are_done: 작업이 실제로 완료되었는지 확인하기 위한 사고 도구
  • write_memory: 향후 참조를 위해 명명된 기억을 메모리 저장소에 쓰기

요약

Serena는 강력하고 완전한 오픈 소스 프로그래밍 지능 에이전트 툴킷으로, 의미적 코드 이해와 다양한 통합 방식을 통해 개발자에게 무료이며 강력한 AI 프로그래밍 지원 솔루션을 제공합니다. MCP 서버를 통해 Claude Desktop과 통합하거나 Agno 프레임워크를 통해 다양한 LLM을 사용하든 Serena는 프로그래밍 효율성과 코드 품질을 크게 향상시킬 수 있습니다.