Cursor AI가 .NET 아키텍처를 잊어버리는 것을 방지하는 방법 ($9 해결책)
요약
Cursor AI 사용 시 발생하는 '컨텍스트 세금(Context Tax)' 문제를 해결하기 위한 전략을 제시합니다. 단일 규칙 파일의 토큰 낭비와 상태 유지 문제를 지적하며, 디렉터리 범위 규칙과 상태 유지형 학습 로그를 통한 효율적인 컨텍스트 관리 방법을 제안합니다.
핵심 포인트
- 컨텍스트 세금: 매 세션마다 아키텍처를 재설명하며 발생하는 시간 및 비용 손실
- 단일 규칙의 한계: 모든 프롬프트에 거대한 규칙을 로드하여 토큰을 낭비함
- 해결책 1: 디렉터리 범위 규칙을 통해 필요한 컨텍스트만 선택적 로드
- 해결책 2: 학습 로그(Learning Log)를 활용하여 AI가 상태를 유지하도록 관리
Cursor AI가 .NET 아키텍처를 잊어버리는 것을 방지하는 방법 ($9 해결책)
**
Cursor 세션이 시작됩니다. 당신은 첫 번째 프롬프트를 입력합니다. AI는 자신 있게 당신의 Repository 내부에 HttpClient를 인스턴스화할 것을 제안합니다. 이는 당신이 6개월 전에 금지했던 바로 그 안티 패턴(Anti-pattern)입니다. 당신은 한숨을 쉬며 '사실 우리는 DI를 통해 등록된 typed HttpClients를 사용합니다'라고 입력하고, 당신을 도와줘야 할 AI를 다시 가르치는 데 15분을 허비합니다. 이것이 바로 컨텍스트 세금(Context Tax)입니다. Cursor를 사용하는 모든 .NET 개발자는 이 세금을 지불하고 있습니다. 이를 멈추는 방법을 소개합니다.
컨텍스트 세금: 매일 아침 당신이 치르는 대가
컨텍스트 세금이란 매 세션 시작 시 Cursor에게 코드베이스를 다시 설명하는 데 소비하는 15분을 의미합니다. 당신은 DI 컨벤션(Conventions), Clean Architecture 레이어, EF Core 패턴, Result 파이프라인을 설명합니다. Cursor는 고개를 끄덕입니다. 당신은 기능을 구현합니다. 세션이 종료됩니다. 다음 날 아침? 다시 원점으로 돌아갑니다.
이를 연간 근무일 250일로 곱하면, 컨텍스트를 다시 설정하는 데만 연간 62시간 — 거의 꼬박 2주일 — 을 낭비하게 됩니다. 시간당 £75의 시니어 계약자 요율을 적용하면, 개발자 한 명당 £4,650의 시간 손실이 발생합니다.
Cursor의 내장 규칙(Built-in rules)이 충분하지 않은 이유
Cursor는 .cursor/rules/ 디렉토리를 지원합니다. 여기에 .mdc 파일을 넣어두면 AI가 이를 읽습니다. 그런데 왜 이것이 문제를 해결하지 못할까요?
- 단일 규칙(Monolithic rules)은 컨텍스트가 아닌 토큰을 낭비합니다
**
대부분의 공개된 Cursor 규칙 저장소(Repos)는 모든 프롬프트마다 로드되는 단일 rules.mdc 파일을 제공합니다. 매.번. 모든. 프롬프트마다 말이죠. 이는 실제 지시 사항이 나오기 전에 2,000개 이상의 토큰이 서문(Preamble)으로 소모됨을 의미합니다. 당신의 빠른 요청(Fast-request) 예산은 편집 중인 파일과 전혀 관련 없는 규칙들로 인해 증발해 버립니다.
- 규칙은 설명할 뿐, 지속되지 않습니다
**
"예외(Exceptions) 대신 Result를 사용하라"고 말하는 규칙은 Cursor에게 무엇을 할지 알려줍니다. 하지만 왜 그 패턴을 선택했는지, 그전에 무엇을 시도했는지, 혹은 어떤 예외 케이스(Edge cases)를 겪었는지는 알려주지 않습니다. 그것은 상태(State)입니다. 그리고 규칙만으로는 상태를 유지할 수 없습니다.
- 환각(Hallucinations)에 대한 차단기(Circuit breaker)가 없음
Cursor가 막혔을 때 — 그리고 반드시 막히게 될 텐데 — Cursor는 언제 멈춰야 할지를 모릅니다. 존재하지 않는 메서드를 만들어내고, 틀린 답변을 고집하며, 루프 속에서 토큰을 낭비합니다. "한 걸음 물러나서 파일을 다시 읽어라"라고 말할 수 있는 내장된 메커니즘이 없습니다.
해결책: 디렉터리 범위 규칙(directory-scoped rules) + 상태 유지형 학습 로그(stateful Learning Log)
컨텍스트 드리프트(Context drift)에 대한 해결책은 더 큰 프롬프트 파일이 아닙니다. 그것은 지속성 프로토콜(persistence protocol)입니다. 즉, 적절한 파일에 대해서만 적절한 규칙을 로드하고, AI가 읽고, 업데이트하며, 세션 전반에 걸쳐 유지하는 학습 로그(Learning Log)를 관리하는 시스템입니다.
실제 적용 사례는 다음과 같습니다. ~/api/Services/ 내의 파일을 열면, DI 감사(DI auditor) 및 아키텍처 경계 규칙만 활성화됩니다. 데이터 레이어(data layer)에 있을 때는 EF Core 읽기 패턴 강제 규칙(EF Core read-pattern enforcer)만 작동합니다. 그리고 당신이 내리는 모든 아키텍처 결정은 로그에 기록되므로, 내일 아침 AI는 당신이 멈춘 바로 그 지점에서 작업을 이어갑니다.
Cursor를 상태 유지형(stateful)으로 만드는 4가지 규칙
Agentic Architect 프레임워크는 4개의 전문적인 .mdc 규칙을 제공합니다. 각 규칙은 컨텍스트 비용(Context Tax)의 특정 실패 모드를 해결합니다.
arch-core.mdc — 경계 수호자(The Boundary Guardian)
당신의 클린 아키텍처(Clean Architecture) 레이어를 강제합니다. 컨트롤러(controllers)에 DbContext를 두지 않습니다. 리포지토리(repositories)에 비즈니스 로직을 두지 않습니다. 명시적인 정당성 없이 레이어 경계를 넘나들지 못하게 합니다. AI는 모든 프롬프트를 시작할 때 이미 당신의 SOLID 경계를 알고 있는 상태로 시작합니다.
- 모든 AI 제안에 대한 SOLID 준수 여부 감사
- 레이어 경계 강제 (Presentation / Application / Domain / Infrastructure)
- 안티 패턴(Anti-pattern) 조기 경보 — '빅 볼 오브 머드(Big Ball of Mud)'가 시작되기 전에 포착
###
dotnet-di.mdc — DI 감사관(The DI Auditor)
AI 코드 생성 중에 발생하는 Scoped → Singleton 캡처 버그를 잡아내는 전용 의존성 주입(Dependency Injection) 감사관입니다. IServiceCollection, Scrutor, Autofac, 그리고 Microsoft DI 컨테이너를 완벽하게 숙지하고 있습니다.
- 수명 주기 불일치 감지 (Scoped가 Singleton에 주입되는 경우)
- 생성자 주입 (Constructor-injection) 베스트 프랙티스 강제
- 모듈 등록 규율 — 스파게티 등록 (spaghetti registrations) 방지
###
bug-breaker.mdc — 환각 킬러 (The Hallucination Killer)
AI가 잘못된 해결책을 가지고 루프(looping)에 빠지는 것을 감지하는 서킷 브레이커 (circuit-breaker)입니다. Cursor가 존재하지 않는 메서드를 만들어내며 토큰 예산을 낭비하는 대신, 한 걸음 물러나 파일을 다시 읽고 사용자에게 질문하도록 강제합니다.
- 반복되는 실패 시도에 대한 루프 감지 (Loop-detection)
- 강제 컨텍스트 재독 프로토콜 (Forced context re-read protocol) — 악순환 방지
- 토큰 낭비 방지 — 환각 (hallucinations)으로 인한 토큰 소모 감소
###
persistence.mdc — 학습 로그 엔진 (The Learning Log Engine) ★
이 규칙의 핵심입니다. 이 규칙은 프로젝트 루트에 LEARNING_LOG.md 파일을 유지 관리합니다. 이는 모든 아키텍처 결정, 리팩터링 이유, 제약 조건 발견, 그리고 '이건 시도해 봤으니 다시 하지 말 것'과 같은 교훈을 기록하는 살아있는 문서입니다. 각 세션은 AI가 로그로부터 자동으로 데이터를 채우는 (auto-hydrating) 과정으로 시작됩니다.
- ADR(Architectural Decision Records) 스타일의 결정 로깅 (아키텍처 결정에 타임스탬프가 찍힌 항목 생성)
- 세션 시작 시 데이터 로드 (Session-start hydration) — AI가 프롬프트를 처리하기 전에 로그를 읽음
- 세션 간 연속성 (Cross-session continuity) — AI가 지난주, 지난달의 결정을 기억함
규칙이 실제로 방지하는 것들 (실제 드리프트 사례)
이것들은 가설이 아닙니다. 순수 Cursor를 사용할 때 기꺼이 생성해낼 수 있는 구체적인 퇴보(regressions) 사례들입니다.
드리프트 (The Drift) | Cursor가 하는 일 | 규칙이 하는 일
Result 대신 throw | Cursor는 컨트롤러에서 try/catch/throw를 기본값으로 사용함 — 6개월 전에 설정한 Result 컨벤션을 무시함 | arch-core.mdc가 컨트롤러에서의 throw를 차단함. dotnet-di.mdc는 파이프라인을 통한 Result 사용을 요구함.
...
60초 만에 설치하세요. 빌드 단계도, 설정도 필요 없습니다.
1. 키트를 다운로드하세요 — 전체 `.cursor/rules/` 폴더와 데이터가 미리 채워진 `LEARNING_LOG.md`를 받게 됩니다.
2. 프로젝트 루트에 넣으세요 — `.cursor/rules/`는 자동으로 감지됩니다. CLI 명령어도, 빌드 도구도 필요 없습니다.
3. 하이드레이트(Hydrate) 프롬프트를 한 번 실행하세요 — AI가 코드베이스를 읽고, 기존 패턴으로 Learning Log를 채운 뒤, 그때부터 추적을 시작합니다.
9개의 전문 규칙 전체, 단 £9.00
전체 키트는 프로덕션에서 검증된 9개의 `.mdc` 규칙과 함께 제공됩니다 — 위에서 설명한 4개에 더해 Result 패턴 규율, EF Core 성능 패턴, MediatR 컨벤션 등을 다루는 5개의 규칙이 추가로 포함되어 있습니다. MIT 라이선스입니다. 커밋하세요. 팀과 공유하세요. 수정하세요. 당신의 것입니다.
- 9개의 전문 `.mdc` 규칙 — 디렉토리 범위 지정(directory-scoped), 토큰 효율적(token-efficient)
- 데이터가 미리 채워진 `LEARNING_LOG.md` 템플릿
- 퀵스타트 PDF — 60초 만에 설치 및 하이드레이트(hydrate)
- 평생 업데이트 — 새로운 규칙 및 프로토콜 업그레이드 영구 무료
- MIT 라이선스 — 구독 없음, 클라우드 종속성 없음, 벤더 의존성 없음
- 14일 무조건 환불 — 컨텍스트 세금(Context Tax)을 줄여주지 못한다면 환불해 드립니다
초보자가 아닌 시니어 .NET 엔지니어를 위해 제작되었습니다
이 프레임워크는 당신이 이미 Clean Architecture/DDD 코드베이스를 보유하고 있고, Cursor를 매일 사용하며, AI가 당신의 컨벤션(conventions)을 잊어버리는 것에 지쳐 있다고 가정합니다. 만약 C#을 처음 배우는 단계라면, 보호해야 할 아키텍처가 생겼을 때 다시 돌아오세요.
지난 6개월 동안 Result와 오케스트레이션된 핸들러(orchestrated handlers)를 사용하여 MediatR 파이프라인을 구축해 온 Staff Engineer인데도, Cursor가 여전히 컨트롤러에서 `throw new Exception()`을 제안한다면 — 이것이 바로 당신을 위한 것입니다.
본문은 [https://agenticstandardcontact-byte.github.io/agentic-architect/blog/06-stop-cursor-ai-drift-dotnet.html](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/06-stop-cursor-ai-drift-dotnet.html)에 처음 게시되었습니다. Cursor + .NET을 위한 [Agentic Architect](https://agenticstandardcontact-byte.github.io/agentic-architect/) 지속성 키트의 일부입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기