본문으로 건너뛰기
cd /languages
동적 시스템프로그래밍완전한 그래프 지원

Maguyva의 Python 지원: AI 코드 검색과 리팩터링

Maguyva는 AST 파싱과 심볼 추출로 Python을 지원하여, AI 에이전트가 실제 Python 저장소에서 데코레이터, self/cls 메서드, import, 모듈 간 의존성을 따라갈 수 있도록 돕습니다.

Python 저장소가 얕은 AI 도구를 무너뜨리는 지점

Python은 많은 AI 코딩 도구가 처음에는 괜찮아 보이다가 프로덕션에서 추측을 시작하는 지점입니다. 어려운 부분들은 익숙합니다. 데코레이트된 진입점, 서비스 클래스, 타입 스텁, 곳곳에 흩어진 작은 헬퍼 모듈, 그리고 self이나 cls을 그것이 속한 클래스에 다시 연결해야만 의미가 통하는 메서드들이죠.

Python의 경우, 진짜 질문은 “.py 파일을 읽을 수 있는가?“가 아닙니다. 질문은 에이전트가 엔드포인트에서 서비스로, 백그라운드 태스크에서 헬퍼로, 혹은 클래스 이름에서 실제로 그 동작을 구현하는 메서드로 이동하는 동안 근거를 잃지 않을 수 있는가입니다.

Maguyva가 Python에서 실제로 추출하는 것

Maguyva는 Python을 완전한 구조적 언어로 다룹니다. 설정은 .py, .pyw, .pyi를 다루고, decorated_definition을 함수 심볼로 다시 매핑하며, self / cls 메서드 호출을 그것을 감싸는 클래스로 다시 한정합니다. 이는 중요한데, 바로 이런 지점들이 Python 저장소가 사람에게는 명확하게 느껴지지만 LLM에게는 모호하게 느껴지기 시작하는 지점이기 때문입니다.

또한 관계 추출 과정에서 표준 라이브러리 노이즈를 대량으로 필터링합니다. 이는 pathlib, typing, logging 같은 모듈의 흔한 런타임 호출이 여러분이 실제로 관심 있는 저장소 고유의 관계를 뒤덮을 가능성을 낮춘다는 뜻입니다.

Python 저장소를 위한 유용한 MCP 워크플로

가장 간단하면서도 유용한 워크플로는 다음과 같습니다.

  • “인보이스 동기화 주변의 재시도 로직”이나 “청구 엔드포인트의 권한 확인” 같은 동작 관련 질문에는 intelligent_search로 시작합니다.
  • 관심 있는 클래스나 함수 이름을 알게 되면 find_symbol으로 전환합니다.
  • 공유 서비스, 헬퍼, 베이스 클래스를 리팩터링하기 전에는 인바운드 탐색과 함께 dependency_search를 사용합니다.

이 패턴은 처음부터 에이전트에게 “청구 흐름을 업데이트해줘”라고 요청하는 것보다 낫습니다. 에이전트가 먼저 지도를 그리고, 그다음에 코드를 변경하도록 해주기 때문입니다.

이 페이지가 유용한 경우

이 페이지는 서비스 코드, 작업, 스크립트, 생성된 타입, 주변 설정 등 이미 어느 정도 연식과 복잡도를 갖춘 Python 저장소를 위한 것입니다. 주된 비교 대상이 폴리글랏 웹 모노레포 전반이라면 TypeScript 가이드도 읽어보세요. 전체 지원 매트릭스만 필요하다면 compatibility를 이용하세요.

가장 적합한 경우

  • >애플리케이션 코드와 운영 스크립트가 공존하는 FastAPI, Django, 데이터 플랫폼, 또는 내부 도구 저장소.
  • >이미 데코레이터, 백그라운드 작업, 암묵적으로 얽힌 배선이 많은 오래된 Python 서비스를 리팩터링하는 팀.
  • >핸들러, 서비스, 모델, 헬퍼를 변경하기 전에 grep 이상이 필요한 에이전트 워크플로.

에이전트 워크플로

  • >수정하기 전에 엔드포인트, 태스크, CLI 명령을 헬퍼와 공유 모듈을 거쳐 추적합니다.
  • >서비스, 클래스, 유틸리티 함수가 저장소 전체에서 어디서 인스턴스화되고 재사용되는지 찾습니다.
  • >에이전트가 가장 유사한 문자열이 아니라 올바른 추상화를 수정하도록 인접한 구현들을 비교합니다.

엔진 세부 정보

  • >데코레이터가 붙은 정의도 함수로 취급되어, 데코레이터가 적용된 뷰와 태스크가 심볼로 계속 검색 가능합니다.
  • >`self`와 `cls` 메서드 호출은 포함하는 클래스로 다시 한정되어, 클래스 중심 서비스 코드에서 그래프가 계속 유용하게 유지됩니다.
  • >임포트, 호출, 심볼 정규화기가 활성화되어 있으며, `pathlib.*`, `typing.*`, `logging.*` 같은 흔한 표준 라이브러리 노이즈는 관계에서 필터링됩니다.

유용한 MCP 진입점

  • intelligent_search

    "인보이스 동기화 관련 재시도 로직"처럼 개념적인 쿼리로 시작하고, 리포지토리가 여러 언어를 섞어 쓴다면 `language_filter="python"`을 설정하세요.

  • find_symbol

    클래스나 함수 이름을 알고 있고, 편집 전에 정의와 참조를 함께 확인해야 할 때 사용하세요.

  • dependency_search

    공유 서비스나 헬퍼를 리팩터링하기 전에 무엇이 이에 의존하는지 보려면 수신(incoming) 방향을 사용하세요.