// 에디터
Windsurf
여러분과 Cascade가 실제로 작업하는 곳입니다.
Windsurf 사용자를 위해
Windsurf는 에디터이고 Cascade는 에이전트입니다. 모노레포에서는 에이전트에게 여전히 어떤 파일이 중요한지 알려주는 지도가 필요합니다. Maguyva는 코드베이스를 인덱싱해 MCP(시맨틱, AST, 그래프, 텍스트)로 되돌려주므로, "인증이 어디서 일어나는가"라는 질문에 테스트 스텁 일곱 개가 아니라 실제 인증 흐름이 돌아옵니다.
Free 등급: 리포지토리 3개, 인덱싱된 리포지토리 라인 최대 5만 줄, 카드 등록 불필요.
Windsurf는 여러분이 가리킨 것을 편집합니다. Maguyva는 Cascade에게 무엇을 가리켜야 할지 알려줍니다.네 가지 조각. 각각 맡은 역할이 있습니다.
// 에디터
여러분과 Cascade가 실제로 작업하는 곳입니다.
// 수동 컨텍스트
리포지토리가 커지기 전까지는 수동 컨텍스트가 통합니다.
// 코드베이스
MCP를 통한 자동 코드베이스 사실 제공.
// 누가 비용을 내는가
에이전트는 좌석 비용을 내지 않습니다. 요금제 보기
IDE 자체가 문제는 아닙니다. Cascade, 탭 완성, 다중 파일 편집, .windsurfrules는 훌륭하며, 여러분은 이미 다음과 같은 용도로 사용하고 있을 것입니다:
.windsurfrules.@ 멘션.계속 그렇게 하세요. 그 어느 것도 사라지지 않습니다.
하지만 실제 모노레포(워크스페이스 의존성이 있는 TypeScript, Python 서비스, 혼합 패키지)에서는 관련 파일이 아직 Cascade의 레이더에 없는 순간 에이전트 컨텍스트가 깨집니다.
네 가지 수동 해결책과 각각의 실패 양상. 왼쪽 = 오늘 하고 있는 일. 오른쪽 = 깨지는 지점.
// the fix
중요하다고 생각하는 파일 세 개를 @로 멘션합니다. Cascade는 그 안에서 깔끔하게 편집합니다.
// where it breaks
어떤 파일이 관련되어 있는지 이미 알고 있을 때만 통합니다. 컨텍스트 도구의 핵심은 멘션할 줄 몰랐던 파일까지 드러내는 데 있습니다.
// the fix
Cascade에게 충분한 컨텍스트를 주려고 다른 패키지에서 200줄을 붙여넣습니다.
// where it breaks
오전 9시에 붙여넣은 코드 조각은 팀원이 오전 11시에 반영한 리베이스를 반영하지 않습니다. Cascade는 패키지의 유령 버전을 대상으로 편집하고 있는 셈입니다.
// the fix
.windsurfrules 파일이나 아키텍처 마크다운을 작성합니다. 오늘은 맞습니다.
// where it breaks
손으로 작성한 것은 무엇이든 낡습니다. 코드가 진실의 원천입니다. 큐 레이어를 설명하는 문서는 일주일간은 맞다가, 그 뒤로는 영원히 틀리게 됩니다.
// the fix
네이밍, 린트, 빌드 명령어를 위해 .windsurfrules를 추가합니다. 행동 방식에는 훌륭합니다.
// where it breaks
.windsurfrules는 “커밋 전에 항상 pnpm tsc -b를 실행하라” 같은 규칙에 적합한 곳입니다. 모노레포의 모든 심볼, 파일, 호출 지점을 담은 조회 가능한 인덱스는 아닙니다.
Windsurf를 대체하지 않습니다. Cascade의 MCP 지원에 연결되는 리포지토리 컨텍스트 레이어입니다.
.windsurfrules는 계속 제 역할을 합니다. @ 멘션도 계속 제 역할을 합니다. Maguyva는 그것들이 채우지 못하는 빈틈을 채웁니다.Cascade는 여러분이 가리킨 파일을 편집합니다.
Maguyva는 에이전트에게 무엇을 가리켜야 할지 알려줍니다.
패키지와 언어를 넘나듭니다. Cascade의 grep이 아니라 실제 호출 그래프에 근거합니다.
// workflow 01
cascade> 이 모노레포에서 인증은 어디서 일어나나요? graph::query("authentication flow") packages/web/src/auth/session.ts:42 미들웨어 packages/api/src/auth/jwt.ts:88 토큰 검증 packages/shared/src/auth/types.ts:12 AuthContext packages/admin/src/auth/admin-only.ts:31 RBAC 게이트 → 4개 패키지에 걸친 4개의 진입점, 호출 지점 밀도 순으로 랭킹됨. [exit 0]
파일을 멘션하지도, 코드 조각을 붙여넣지도 않았습니다. Cascade는 중요한 네 개의 파일을 올바른 순위로 확보했고, 근거 있는 편집을 할 수 있습니다.
// workflow 02
cascade> normalizePhoneNumber는 E.164를 어떻게 처리하나요? semantic::query("normalize phone E.164") packages/shared/util/phone.ts:88 normalizePhoneNumber() ← 실제 구현 packages/api/test/phone.spec.ts:14 jest.mock(...) ← 스텁 [exit 0]
이름은 거짓말을 합니다. 목(mock)은 실제 코드를 가립니다. Maguyva는 모든 패키지에서 테스트 목보다 실제 구현을 위에 올려 랭킹합니다.
// workflow 03
cascade> 모노레포 전체에서 QueueDispatcher.publish를 호출하는 곳은 어디인가요? graph::callers(QueueDispatcher.publish) 3 in packages/billing/* 1 in packages/audit/* 1 in packages/notifications/* 1 in services/python-worker/* ← gRPC 스텁을 통한 교차 언어 호출 [exit 0]
패키지를 넘나들고, 여러 언어를 쓰는 리포지토리라면 언어까지 넘나들며, 호출 지점이 인라인으로 드러납니다. 변경 사항은 Cascade의 grep이 아니라 실제 임포터에 근거합니다.
세 단계로 끝. Free 등급: 리포지토리 3개, 인덱싱된 리포지토리 라인 최대 5만 줄, 카드 등록 불필요.
// step 01
컨텍스트 문제를 가장 많이 겪은 모노레포를 선택하세요.
// step 02
// ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"maguyva": {
"serverUrl": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer <your-key>"
}
}
}
}// step 03
회사 전체로 시작하지 마세요. 리포지토리 하나와 검증 가능한 질문 하나로 시작하세요. 예를 들어 "패키지 전반에서 formatInvoice를 호출하는 곳은 어디인가요?" 같은 질문입니다.