본문으로 건너뛰기

GitHub Copilot CLI 사용자를 위한

Copilot은 매 세션을 아무것도 모르는 상태로 시작합니다.

사용자 지정 지침은 Copilot에게 어떻게 행동해야 하는지 알려주지만, 저장소에 무엇이 있는지는 알려주지 않습니다. Maguyva는 코드베이스를 인덱싱하고 MCP를 통해 다시 제공하여, GitHub Copilot CLI가 이미 코드를 읽은 것처럼 편집하도록 합니다.

Free 등급: 리포지토리 3개, 인덱싱된 리포지토리 라인 최대 5만 줄, 카드 등록 불필요.

행동에는 지침을 사용하세요. 최신 코드베이스 사실에는 Maguyva를 사용하세요.

레이어로 이루어진 스택

네 가지 개념. 각각 하나의 역할을 합니다.

// 합의

copilot-instructions.md

Copilot이 이 리포지토리에서 어떻게 행동해야 하는지.

// 전송 계층

MCP

Copilot이 외부 도구와 컨텍스트에 접근하는 방법.

// 코드베이스

Maguyva

근거 있는 리포지토리 사실을 반환하는 MCP 서버.

// 누가 비용을 내는가

좌석이 아니라 워크스페이스

에이전트는 좌석 비용을 내지 않습니다. 요금제 보기

사용자 지정 지침은 작업 합의서입니다. 이를 활용하세요.

# .github/copilot-instructions.md
- 기존 모듈 경계를 우선하세요.
- 머지를 제안하기 전에 저장소의 테스트 명령을 실행하세요.
- 파일 경로를 지어내지 마세요. 새 패키지를 만들기 전에 먼저 물어보세요.

지속적인 지침은 .github/copilot-instructions.md에 속해야 합니다. 그곳은 다음 항목에 적합한 위치입니다:

  • Copilot이 실행해야 하는 빌드, 테스트, 린트 명령.
  • 이 저장소에 한정된 “항상 X를 해라 / 절대 Y를 하지 마라” 가드레일.
  • 네이밍 규칙과 리뷰 선호사항.
  • 결정 로그에 대한 포인터 — 모든 심볼의 덤프가 아닙니다.

그 파일은 저장소의 조회 가능한 인덱스였던 적이 없습니다. Copilot에게 어떻게 작업할지는 알려주지만, 무엇이 있는지는 알려주지 않습니다.

사용자 지정 지침이 대규모로는 통하지 않는 지점

Copilot이 markdown 파일만으로는 해결할 수 없는 네 가지 실패 모드.

// 지침은 인덱스가 아니다

Telling Copilot how to behave does not tell it which class owns parseConfig, or which package actually implements the public API. 낯선 트리에서의 첫 편집은 파일 구조에 대한 추측일 뿐입니다.

// 문서는 오래되지만, 코드는 그렇지 않다

지난 분기의 인증 흐름을 설명하는 지침 블록은 누군가 세션 스토어를 분리하는 날 명백히 틀린 것이 됩니다. Copilot will prefer the file you committed over the code that shipped.

// 의존성은 markdown에 없다

“이것을 임포트하는 것은 무엇인가요?” is a graph question. 지침은 모든 호출자를 나열할 수 없으며, 여러분도 그것을 원하지 않을 것입니다.

// 컨텍스트 윈도우에는 예산이 있다

저장소의 더 많은 내용을 지침에 욱여넣는 것은 추론 토큰을 오래된 스냅샷과 맞바꾸는 일입니다. 몇 KB를 넘어서면 더 나쁜 지도에 비용을 지불하는 셈입니다.

추가 레이어로서의 Maguyva

Copilot은 이미 지침과 도구로 사고합니다.

copilot-instructions.md

합의

Copilot의 행동 방식

MCP

채널

도달 방식

Maguyva

코드베이스 사실

보이는 것

  • 저장소의 조회 가능한 지도 원격 스트리머블 HTTP 서버로 MCP를 통해 제공됩니다.
  • 11개의 고객 대면 도구 시맨틱, 구조적(AST), 그래프, 텍스트 검색에 걸쳐, 심볼, 의존 요소, 파일 검색까지 포함합니다.
  • 파일 경로와 줄 번호가 포함된 순위화된 결과 284개 이상의 언어와 텍스트 기반 기술에 걸쳐 제공됩니다.
  • 하나의 설정 동일한 워크스페이스가 Copilot, Claude Code, Cursor, Codex 및 기타 모든 MCP 호환 클라이언트에서 응답합니다.

사용자 지정 지침은 Copilot에게 어떻게 행동해야 하는지 알려줍니다.

Maguyva는 Copilot에게 조회 가능한 코드 지도를 제공합니다.

세 가지 워크플로

diff를 수락하기 전에 지도에 물어보세요.

// workflow 01

테스트 스텁이 아니라 실제 구현을 찾기

copilot> normalizePhoneNumber는 E.164를 어떻게 처리하나요?

semantic::query("normalize phone E.164")
  src/util/phone.ts:88   normalizePhoneNumber()   ← 실제 구현
  test/util/phone.spec.ts:14  jest.mock(...)      ← 스텁

→ Copilot이 모의 객체가 아니라 구현을 엽니다.
[exit 0]

이름은 거짓말을 합니다. 모의 객체는 실제 코드를 가립니다. Maguyva는 테스트 모의 객체보다 실제 구현을 상위에 배치합니다.

// workflow 02

리팩터링 전에 영향 범위 확인하기

copilot> 무엇이 QueueDispatcher.publish를 호출하나요?

graph::callers(QueueDispatcher.publish)
  src/billing/* 내 3건    src/audit/* 내 1건    src/notifications/* 내 1건

→ diff는 실제 임포터를 근거로 합니다.
[exit 0]

패키지 간 호출 지점이 바로 표시됩니다. diff는 Copilot의 grep이 아니라 실제 임포터를 근거로 합니다.

// workflow 03

공유 클래스 이름 바꾸기, 먼저 모든 의존 요소 찾기

copilot> rename PaymentClient → BillingClient

graph::callers(PaymentClient)            7개 패키지에서 12건 참조
graph::importers(src/payments/client.ts)  9개 임포터
graph::extends(PaymentClient)             2개 하위 클래스 (RetryClient, MockClient)

→ Copilot이 파일 목록을 포함한 마이그레이션을 제안합니다.
[exit 0]

Copilot은 편집을 시작하기 전에 의존 요소에 대해 Maguyva에 물어봅니다. 마이그레이션 목록은 Copilot의 기억이 아니라 실제 그래프를 근거로 반환됩니다.

GitHub Copilot CLI에서 설정하기

세 단계로 끝. Free 등급: 리포지토리 3개, 인덱싱된 리포지토리 라인 최대 5만 줄, 카드 등록 불필요.

  1. // step 01

    maguyva.ai에서 저장소 인덱싱하기

    답을 평가할 수 있도록 이미 알고 있는 저장소를 선택하세요. 무료로 가입하고, GitHub를 연결한 다음, 인덱싱을 기다리세요.

  2. // step 02

    Copilot에 Maguyva를 원격 MCP 서버로 추가하기

    copilot mcp add --transport http --header "Authorization: Bearer mgv_xxxx" maguyva https://maguyva.tools/mcp

    ~/.copilot/mcp-config.json

    {
      "mcpServers": {
        "maguyva": {
          "type": "http",
          "url": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer mgv_xxxx"
          }
        }
      }
    }
  3. // step 03

    이미 답을 알고 있는 질문을 하나 해보기

    회사 전체로 시작하지 마세요. 이미 답을 알고 있는 질문을 하나 하고, 인용된 파일을 열어보세요.