Cascade가 기억을 멈춘 이유
먼저, 문서 위치가 이동했고 제품 이름도 변경되었습니다
이전 가이드를 따라하기 어렵게 만드는 실질적인 참고 사항을 먼저 말씀드리자면, 현재 docs.windsurf.com은 docs.devin.ai로 리디렉션되며, 에디터는 Devin Desktop으로 문서화되어 있습니다. Cascade memories 페이지는 docs.devin.ai/desktop/cascade/memories에 있습니다.
이러한 변화는 파일 경로에도 반영되어 있습니다. 이제 워크스페이스 규칙(rules)의 권장 위치는 .devin/rules/이며, .windsurf/rules/는 폴백(fallback)으로 유지됩니다. 문서에 따르면 .devin/이 "권장 위치이며 우선순위를 가집니다." 만약 .windsurf/만 언급된 설명서를 읽고 있다면 여전히 작동은 하지만, 이는 폴백 설정을 설명하고 있는 것입니다.
Memories는 레거시 에이전트에 속합니다
다시 주요 원인으로 돌아가 보겠습니다. Devin Desktop에는 대화 전반에 걸쳐 컨텍스트를 유지하기 위해 문서화된 두 가지 메커니즘이 있습니다. 바로 "Cascade에 의해 자동으로 생성되는 Memories와 사용자가 전역, 워크스페이스 또는 시스템 수준에서 수동으로 정의하는 Rules"입니다.
Memories는 레거시 Cascade 에이전트로 범위가 제한됩니다. 새 탭은 기본적으로 Devin Local 에이전트로 열리며, 문서에 따르면 이 에이전트는 "Memories를 유지하지 않습니다." 따라서 '어제는 잘 되었는데 오늘은 초기화되었다'는 증상은 실제로 기억을 잃어버린 것이 아니라, 애초에 그 기억을 가지고 있지 않은 다른 에이전트가 실행되었기 때문인 경우가 많습니다.
문서에 제시된 해결책은 마이그레이션 마법사입니다. Devin: Open Cascade Migration Wizard 명령을 사용하면 의존하고 있는 Memories를 Skills로 이동할 수 있습니다.
자동 생성된 Memories는 항상 로컬 및 워크스페이스에 종속적이었습니다
레거시 에이전트에서도 Memories의 범위는 대부분의 사람들이 생각하는 것보다 좁습니다. Cascade는 "기억해 두면 유용하다고 판단되는 컨텍스트를 만나면 자동으로 Memories를 생성하고 저장할 수 있으며", 사용자는 언제든지 "...에 대한 memory를 생성해 줘"라고 프롬프트를 보낼 수 있습니다.
하지만 이들은 "생성된 워크스페이스와 연관되며 로컬의 ~/.codeium/windsurf/memories/에 저장됩니다." 그리고 명시적으로 "한 워크스페이스에서 생성된 Memories는 다른 워크스페이스에서 사용할 수 없으며, 리포지토리에 커밋되지 않습니다." 문서의 노트에는 "자동 생성된 Memories는 오직 사용자의 컴퓨터에만 존재합니다"라고 명확히 명시되어 있습니다.
따라서 새 노트북, 두 번째 체크아웃 또는 팀원의 컴퓨터에는 이러한 기억이 전혀 존재하지 않습니다. 한 가지 작은 위안은 "자동 생성된 Memories를 생성하고 사용하는 것은 크레딧을 소비하지 않는다"는 점입니다.
개발사 자체의 권장 사항은 이에 의존하지 않는 것입니다
이 부분은 외부 의견이 아닌 개발사의 공식 권장 사항이므로 진지하게 받아들일 가치가 있습니다. "Cascade가 안정적으로 재사용하기를 원하는 지식의 경우, 자동 생성된 Memories에 의존하기보다는 Rule로 작성하거나 리포지토리의 AGENTS.md에 추가하세요. Rules는 버전 관리와 팀 공유가 가능하며, 활성화에 대한 명시적인 제어권을 제공합니다."
기능 비교 표에서도 한 줄로 동일한 내용을 말하고 있습니다. Memories는 Cascade가 "일회성 사실을 기억하도록" 하기 위한 것이며, "지속적인 지식을 위해서는 Rules 또는 AGENTS.md를 선호하라"고 합니다. Skills에 대해서는 훨씬 더 직설적인 노트가 붙어 있습니다. 여기에 투자하세요.
Rules는 유지되지만, 설정한 모드에서만 작동합니다
Rules는 세션 경계를 넘어 유지됩니다. 특정 메시지에서 이들이 Cascade에 전달되는지 여부는 프런트매터(frontmatter)의 trigger 필드에 전적으로 달려 있습니다:
| 모드 | trigger: | Cascade에 도달하는 방식 | 컨텍스트 비용 |
|---|---|---|---|
| Always On | always_on | 모든 메시지의 시스템 프롬프트에 전체 rule 콘텐츠 포함 | 모든 메시지 |
| Model Decision | model_decision | 시스템 프롬프트에는 설명(description)만 포함되며, Cascade가 설명이 관련되어 있다고 판단할 때 전체 파일을 읽음 | 설명은 항상 포함, 콘텐츠는 필요할 때만 |
| Glob | glob | Cascade가 globs와 일치하는 파일을 읽거나 편집할 때 적용됨 | 일치하는 파일을 터치할 때만 |
| Manual | manual | 시스템 프롬프트에 포함되지 않음. 활성화하려면 @rule-name을 직접 입력해야 함 | @-언급될 때만 |
manual로 설정된 rule은 호출하기 전까지는 보이지 않습니다. 모호한 설명을 가진 model_decision 설정 rule은 아예 불러와지지 않을 수도 있습니다. 둘 다 고장 난 것이 아니라 설계된 대로 작동하는 것이며, 이는 why agents ignore the instruction files you wrote에서 설명한 것과 동일한 종류의 문제입니다.
기억해 둘 만한 두 가지 예외 사항은 다음과 같습니다. "전역 rules 파일(global_rules.md)과 루트 레벨의 AGENTS.md 파일은 프런트매터를 사용하지 않으며, 항상 켜져(always on) 있습니다."
글자 수 제한 및 새 rule이 실제로 저장되는 위치
문서화된 한도: ~/.codeium/windsurf/memories/global_rules.md에 있는 전역 rules 파일은 "6,000자로 제한"되며, .devin/rules/*.md에 있는 워크스페이스 rules는 "파일당 12,000자로 제한"됩니다. 워크스페이스 루트에 있는 레거시 단일 파일 .windsurfrules도 여전히 읽힙니다.
그리고 범위(scoping)와 관련된 함정이 있습니다. rules 탐색은 워크스페이스, 하위 디렉터리, 그리고 git 루트까지 검색하지만, "새 rule을 생성하면 git 루트가 아니라 현재 워크스페이스의 .devin/rules 디렉터리에 저장됩니다." 하위 폴더를 워크스페이스로 열면 새 rule의 범위가 해당 하위 폴더로 제한됩니다.
사람들이 시도하는 방법들
매일 아침 프로젝트를 다시 설명하기. 언제나 작동하지만 매번 동일한 비용이 듭니다. 이는 how to stop re-explaining context to AI에서 다룬 루프입니다.
Cascade에게 중요한 모든 것을 "memory로 생성"해 달라고 요청하기. 레거시 에이전트에서는 아무것도 안 하는 것보다 낫지만, 로컬에 저장되고 워크스페이스에 종속되며 커밋되지 않고 새 탭의 기본 에이전트에서는 사용할 수 없는 결과물이 생성됩니다.
모든 것을 global_rules.md에 넣기. 항상 켜져 있으며, 모든 워크스페이스의 모든 메시지와 함께 6,000자가 전송됩니다. 이는 단순한 보관함이 아니라 실제 비용(컨텍스트 예산)이 드는 방식입니다.
모든 rule을 Always On으로 설정하기. 신뢰성 문제는 해결되지만, 관련 없는 모든 작업에서도 매 메시지마다 전체 컨텍스트 비용을 지불하게 됩니다.
컴퓨터 간에 ~/.codeium 복사하기. 지원되지 않는 영역이며, 동일한 지식이 필요한 팀원에게는 도움이 되지 않습니다. 이는 why Windsurf forgets project rules에서 다룬 일반적인 사례입니다.
이름 변경으로 인해 무언가 고장 났다고 가정하기. 보통은 그렇지 않습니다. 폴백으로 .windsurf/rules가 여전히 작동하며, .windsurfrules도 여전히 읽힙니다. 기능이 퇴화했다고 결론 내리기 전에 탭의 에이전트를 먼저 확인하세요.
해결책: 자동 Memories에서 벗어나 Rules, AGENTS.md, 그리고 Skills 사용하기
개발사의 권장 사항과 실질적인 해결책은 동일합니다. 이 작업을 한 번만 수행하면 탭 수준의 에이전트 차이는 더 이상 중요하지 않게 됩니다.
마이그레이션 마법사 실행하기. 자동 생성된 memories에 의존했다면, 문서의 지침대로 Devin: Open Cascade Migration Wizard를 사용하여 Skills로 이동하세요. 이 단계는 대부분의 사람들이 건너뛰고 일주일 동안 혼란스러워하는 부분입니다.
지속적인 지식은 AGENTS.md에 넣기. 루트 레벨은 프런트매터 없이 항상 켜져 있으며, 하위 디렉터리 파일은 해당 디렉터리에 대해 자동으로 glob 처리됩니다. 유지 관리 비용이 가장 적게 드는 옵션이며 버전 관리가 가능하므로 공유하기에 적합합니다.
규칙(rules)의 타입을 의도적으로 설정하기. 보편적인 제약 조건은 always_on. 특정 언어 또는 경로 관련 컨벤션은 glob. 상황별 가이드는 라우팅이 가능할 정도로 구체적인 설명을 포함한 model_decision. 거의 필요하지 않은 절차는 manual로 설정하고, 사용할 때는 반드시 @로 언급해야 함을 기억하세요.
global_rules.md는 진정으로 전역적인 제약 조건에만 사용하기. 모든 워크스페이스의 모든 메시지마다 6,000자가 소모됩니다. 비용이 많이 드는 것으로 취급하세요.
다단계 절차를 위해 Skills에 투자하기. 문서에서는 Cascade가 참조 파일이 필요한 복잡한 작업에 대해 Skills를 특별히 강조하고 있으며, 마이그레이션된 memories가 저장되는 공식적인 목적지이기도 합니다.
가독성을 고려한 포맷팅. Cascade의 자체 모범 사례: 규칙을 단순하고 간결하며 구체적으로 유지하세요. "좋은 코드 작성하기"와 같은 일반적인 규칙은 이미 학습 데이터에 있으므로 생략하세요. 긴 단락 대신 글머리 기호, 번호 매기기 목록, 마크다운을 사용하세요. 관련된 규칙은 XML 태그로 그룹화하세요.
이것으로 도구 내부에서 유지되는 것들은 해결됩니다. 하지만 이러한 보관함 중 어느 것도 컨벤션 뒤에 숨겨진 '이유'(특정 접근 방식을 거부한 이유, 어떤 제약 조건 때문에 특이한 결정이 옳았는지 등)를 담지는 못합니다. Rules는 글자 수 제한이 있고 AGENTS.md는 논증이 아닌 컨벤션 파일이기 때문입니다.
이것이 바로 MemoryLake가 존재하는 이유입니다. 프로젝트의 지속적인 지식을 도구가 읽을 수 있는 레이어에 저장하여, 특정 컴퓨터나 특정 에이전트 모드에 종속되지 않도록 합니다. 설정은 세 단계로 진행됩니다.
1단계: API 키 생성
MemoryLake에 로그인하고 API 키를 생성합니다. 연결하는 여러 도구에서 하나의 자격 증명만 사용하면 됩니다.

2단계: 첫 번째 memories 업로드
rules 파일에 담기에는 적합하지 않은 내용에 초점을 맞추어, 하나의 주장당 하나의 짧은 항목으로 작성합니다:

결정과 이를 만들어낸 제약 조건. rule은 "큐 어댑터를 사용하라"고 말할 수 있습니다. 하지만 그 이유만이 다음 주에 대안이 다시 제안되는 것을 막아줍니다.
이미 제외된 접근 방식. 리포지토리의 그 어디에도 이러한 기록은 남지 않으며, 새로운 대화가 시작될 때마다 AI는 이를 다시 제안할 것입니다.
여러 워크스페이스에 걸친 지식. Memories는 설계상 워크스페이스에 종속되고 Rules는 리포지토리별로 적용됩니다. 하지만 여러분의 도메인 어휘와 표준은 둘 중 어디에도 국한되지 않습니다.
반복했던 수정 사항. 두 번 이상 말한 내용이라면 누락된 항목이 있는 것이며, 그 이유도 함께 기록되어야 합니다.
3단계: AI 및 에이전트 연결
사용하는 도구들을 연결합니다. MemoryLake는 MCP 및 API를 통해 액세스할 수 있으므로, Claude Code, Codex, OpenClaw를 포함한 MCP 네이티브 에이전트들은 MCP 서버를 가리켜 연결하고, 다른 어시스턴트들은 API를 통해 동일한 memory를 읽습니다.

세 가지 솔직한 한계가 있습니다. MemoryLake는 Rules나 AGENTS.md를 대체하지 않습니다. 이들은 Cascade를 제어하는 방법이므로 여전히 올바르게 설정해야 합니다. 또한 마법사가 수행하는 자동 생성된 memories의 마이그레이션을 대신해 줄 수도 없습니다. MemoryLake는 오직 사용자나 에이전트가 직접 기록한 내용만 보관합니다. 그리고 무언가를 강제하지는 않습니다. 규칙은 컨텍스트일 뿐이며, 규정 준수를 보장하는 것은 아닙니다.
실제 적용 시 변화되는 점
어떤 에이전트가 탭을 열었는지가 유지되는 정보를 결정하지 않게 됩니다. AGENTS.md 및 메모리 레이어에 있는 지식은 레거시 에이전트에 국한된 memories 기능에 의존하지 않습니다.
두 번째 컴퓨터는 그저 또 하나의 컴퓨터일 뿐입니다. 자동 생성된 memories는 이를 생성한 컴퓨터에만 존재합니다. 하지만 커밋된 rules와 외부 메모리 레이어는 그렇지 않습니다.
팀원들도 여러분과 동일한 컨텍스트를 갖게 됩니다. Memories는 리포지토리에 커밋되지 않지만, rules와 AGENTS.md는 커밋되며, 공유 지식은 이 두 가지 외부에서 존재합니다.
Always-on 예산이 다시 충분해집니다. 아키텍처 노트까지 담을 필요가 없어지면, 실제 제약 조건을 담기에 6,000자 전역 제한은 충분히 넉넉합니다.
이름 변경으로 인한 비용이 발생하지 않습니다. Windsurf에서 Devin Desktop으로, .windsurf/에서 .devin/으로의 변경 등 에디터 외부의 지식 레이어는 이 모든 변화에 영향을 받지 않습니다. 이에 대한 구체적인 형태는 what persistent memory actually means에서 다룹니다.
Cascade 컨텍스트 유지를 위한 모범 사례
탭이 어떤 에이전트를 사용하고 있는지 먼저 확인하세요. Memories는 레거시 Cascade 에이전트에만 적용됩니다. 이는 가장 효과적인 단일 진단 방법입니다.
지속적인 지식에는 AGENTS.md를 선호하세요. 설정이 필요 없고, 루트에서 항상 켜져 있으며, 하위 디렉터리에서 자동으로 glob 처리되고, 버전 관리가 가능합니다.
새로운 규칙에는 .devin/rules/를 사용하세요. 이곳이 권장 위치이며 우선순위를 가집니다. .windsurf/는 폴백으로 유지됩니다.
trigger를 의도적으로 설정하세요. manual 규칙은 시스템 프롬프트에 전혀 포함되지 않습니다. 의도한 것이 아니라면 그대로 두지 마세요.
라우팅이 가능한 설명을 작성하세요. model_decision은 설명이 Cascade에게 해당 규칙이 언제 중요한지 알려줄 때만 작동합니다.
글자 수 제한을 준수하세요. 전역 6,000자, 워크스페이스 규칙 파일당 12,000자입니다. 압축하기보다는 파일을 분할하세요.
규칙이 저장된 위치를 확인하세요. 새 규칙은 반드시 git 루트가 아니라 현재 워크스페이스의 .devin/rules에 저장됩니다.
규칙 외부에서 이유를 관리하세요. 컨벤션은 리포지토리에 속하지만, 그 뒤에 숨겨진 논거는 검색 가능한 다른 곳에 있어야 합니다. 이는 why RAG isn't memory에서 다룬 일반적인 문제입니다.
결론
에이전트 확인부터 시작하세요. Devin Desktop의 Memories는 레거시 Cascade 에이전트에만 적용되며, 새 탭의 기본 에이전트는 이를 유지하지 않습니다. 문서화된 해결책은 Cascade Migration Wizard를 사용하여 의존하는 정보를 Skills로 마이그레이션하는 것입니다. 이것만으로도 갑작스러운 컨텍스트 손실의 대부분을 설명할 수 있습니다.
그런 다음 개발사의 권장 사항을 따르세요. 지속적인 지식은 커밋되지 않고 단일 컴퓨터의 단일 워크스페이스에만 존재하는 자동 생성된 memories가 아니라, Rules 또는 AGENTS.md에 있어야 합니다. 필요할 때 로드되도록 규칙의 타입을 지정하고, 전역 파일을 6,000자 이내로 유지하며, 의사 결정, 제약 조건, 거부된 접근 방식과 같은 논거는 어떤 에이전트가 탭을 열었는지 또는 이번 분기에 에디터 이름이 무엇으로 불리는지 상관하지 않는 레이어에 보관하세요.