왜 커서는 프로젝트에 이미 있는 구현체를 사용하지 않고 집합을 다시 작성하는 걸 좋아하나요? 이런 불만은 흔하지만, Cursor는 기존 코드 재사용 모드에서 명확히 답을 밝혔습니다: "새 구현을 작성하기 전에 기존 구현을 찾아라"고 명시적으로 요청하지 않으면 기본적으로 새 버전을 생성할 수 있습니다.
왜 이런 일이 일어나는 걸까요?
AI 편집자들은 완성과 생성에 능숙하지만, '생성'이 '창고에 가장 적합한' 것을 의미하지는 않습니다. 특히 오래된 프로젝트, 다인 협업 프로젝트, 모노레포에서는 기존 모델을 따르는 것이 더 합리적인 접근법입니다. 하지만 만약 프롬프트가 단순히 "로그인 체크 작성 도와줘"나 "캐싱 레이어를 추가해줘"라면, 검색 단계를 건너뛰고 새 휠을 직접 만드는 것도 충분히 가능합니다.
더 실용적인 해결책
가장 직접적인 방법은 모델을 바꾸는 것이 아니라 규칙을 앞에 내세우는 것입니다. 공식적인 아이디어는 먼저 커서에게 요청을 "이미 이 기능을 할 수 있는 코드가 있는지 찾고 있다"로 다시 작성해 달라고 요청하고, 먼저 코드베이스를 검색한 뒤 새 구현을 할지 결정하는 것입니다. 착륙 시 다음과 같이 할 수 있습니다:
- 프로젝트 규칙에는 다음과 같이 명시되어 있습니다: 먼저 유사한 구현을 검색한 후 새 코드를 생성하라.
- 질문할 때는 문장을 덧붙이세요: 기존의 사용 내용, 기존 구성 요소, 기존 서비스를 먼저 찾아내고, 즉시 다시 작성하지 마세요.
- 키 파일에 대해 '@Files'이나 채팅 컨텍스트로 명확한 포인트를 주고, 몇 줄의 코드만 가지고 장난치지 마세요.
그래서 이런 문제의 핵심은 '커서가 재사용되지 않는다'가 아니라, 먼저 재사용해야 하는 작업 명령을 내리지 않는 것입니다. 순서가 올바르게 설정되면 보통 훨씬 더 안정적으로 동작하며, 기존 코드베이스에 잘 맞는 협업자처럼 작동합니다.