하나의 무시(ignore) 규칙이 서로 반대되는 두 가지 작업을 수행해야 하는 이유
Qwen Code의 지침 파일부터 시작해 보겠습니다. Qwen Code의 메모리 문서에는 QWEN.md를 위한 세 가지 위치가 나열되어 있습니다. '모든 프로젝트에 걸친 사용자 자신'을 위한 ~/.qwen/QWEN.md, '팀 전체(소스 제어에 커밋)'를 위한 프로젝트 루트의 QWEN.md, 그리고 '이 프로젝트의 사용자 자신만(git 제외)'을 위한 .qwen/QWEN.local.md입니다. Qwen은 '세션을 시작할 때 이 모두를 로드'합니다.
로컬 파일은 '사용자 자신의 클러스터 ID, 컨테이너 레지스트리 네임스페이스 또는 클라우드 계정' 및 '로컬 환경을 하드코딩하는 개인 디버그 명령'과 같은 항목을 위한 것입니다. 이 파일은 '공유 프로젝트 QWEN.md 이후에 로드되므로 로컬 지침이 팀의 지침을 보완하거나 재정의할 수 있습니다.'
그 다음 Qwen이 사용자에게 부여하는 책임은 다음과 같습니다. '직접 gitignore해야 합니다. .qwen/은 종종 로컬 디렉터리로 취급되지만, qwen-code는 사용자를 위해 .gitignore를 생성하지 않으며, 일부 프로젝트는 .qwen/settings.json을 커밋합니다.'
이제 팀 메모리입니다. 기본적으로 Qwen의 자동 메모리는 비공개입니다. '자동 메모리 파일은 홈 디렉터리 아래의 ~/.qwen/projects/<project>/memory/에 위치합니다.' 팀 메모리는 다릅니다. '팀 메모리는 팀 전체가 git을 통해 공유하는 옵트인(opt-in) 계층입니다.' 활성화되면 'Qwen은 리포지토리 내부의 .qwen/team-memory/에 세 번째 메모리 디렉터리를 확보합니다.' 공유는 '일반적인 방식'으로 작동합니다. 즉, git pull을 통해 팀원의 메모리를 받고, 커밋/푸시를 통해 자신의 메모리를 공유합니다. 이 기능은 '기본적으로 꺼져 있습니다.'
이 기능이 작동하려면 문서에 명시되어 있어야 합니다. '디렉터리가 git으로 추적되어야 합니다.' 그리고 모든 것을 결정하는 경고가 이어집니다.
"경고: 슬래시가 붙은 디렉터리 형식(.qwen/)이 아닌 파일 글롭 무시 형식(.qwen/*)을 사용하세요. 디렉터리 형식의 무시는 git이 폴더를 완전히 건너뛰게 만들므로, 그 아래의!재포함(re-include)은 아무런 동작도 하지 않으며(no-op) 팀 계층은 git에서 조용히 비어 있는 상태로 유지됩니다."
따라서 두 파일은 서로 반대 방향으로 작동합니다. QWEN.local.md를 비공개로 유지하려다 보면 폴더를 무시하고 싶어집니다. 하지만 디렉터리 형식으로 폴더를 무시하면 팀 계층을 다시 포함하는 것이 불가능해집니다. 두 가지를 모두 만족하는 유일한 규칙은 명시적 재포함이 포함된 파일 글롭 형식입니다.
Qwen은 이 실수를 감지하려고 시도합니다. '계층이 활성화되었지만 해당 디렉터리가 git에서 무시되거나 git 리포지토리 외부에 있을 때 시작 시 한 번 경고하므로, 이 잘못된 구성이 감지되지 않고 넘어가지 않도록 합니다.' 이 경고는 기능을 활성화한 사람에게 시작 시 딱 한 번 표시됩니다. 팀 메모리를 활성화하지 않은 팀원에게는 아무것도 표시되지 않으며, 리포지토리를 검토하는 사람에게도 표시되지 않습니다.
대신 시도하는 방법들
.qwen/을 디렉터리로 무시하기. 이렇게 하면 QWEN.local.md가 git에 포함되지 않지만, git이 폴더 전체를 건너뛰게 됩니다. 그 아래의 모든 재포함은 문서의 표현대로 '아무런 동작도 하지 않습니다(no-op).'
아무것도 무시하지 않기. 팀 메모리는 작동하지만, 누군가 처음으로 git add .을 실행하는 순간 그들의 개인 클러스터 ID나 로컬 디버그 명령이 리포지토리에 함께 들어가게 됩니다.
재포함 줄을 추가하고 작동할 것이라 가정하기. .qwen/team-memory/를 재포함하는 줄은 어떤 형식으로든 올바르게 보입니다. 하지만 이는 디렉터리 무시 아래가 아닌, 파일 글롭 무시 아래에서만 효과가 있습니다.
시작 경고에 의존하기. 이 경고는 계층이 활성화된 사람에게 한 번만 발생합니다. 이는 유용한 방어책이 될 수는 있지만, 올바른 ignore 파일을 대체하기에는 턱없이 부족합니다.
팀 메모리를 개인 노트북처럼 취급하기. 문서에서는 다음과 같이 직접적으로 언급합니다. '이것은 소스 제어 대상이며 리포지토리 액세스 권한이 있는 모든 사람에게 보입니다. 팀 메모리는 리포지토리에 커밋하는 것처럼 취급하세요.' 개인적인 메모는 비공개 계층에 보관해야 합니다.
비밀번호/자격 증명 스캔(secret scan)에 의존하기. 팀 폴더에 쓰는 내용은 자격 증명이 있는지 스캔되며, '감지된 비밀 정보는 거부되고 절대 기록되지 않습니다.' Qwen은 다음과 같이 덧붙입니다. '스캔은 방어책일 뿐 보장책이 아닙니다. 민감한 데이터를 그곳에 두지 마세요.'
해결책: .qwen에 있는 항목을 매핑하고, 파일 글롭 형식으로 무시 규칙을 작성한 다음, 두 부분 모두 검증하기
목표는 QWEN.local.md는 절대 커밋될 수 없고, .qwen/team-memory/는 항상 커밋되며, .qwen/ 아래의 다른 모든 항목은 의도적으로 둘 중 하나로 분류되는 리포지토리를 만드는 것입니다.
1단계: 프로젝트의 .qwen/ 아래에 있는 모든 항목 매핑하기
프로젝트를 열고 .qwen/의 내용을 나열합니다. 다음 네 가지 종류의 파일을 찾으십시오.
누군가 사용 중인 경우 QWEN.local.md. 이는 git에 포함되지 않아야 합니다.
settings.json. Qwen은 '일부 프로젝트는 .qwen/settings.json을 커밋한다'고 언급합니다. 만약 여러분의 프로젝트가 그렇다면(예: 모든 사람에게 팀 메모리를 켜기 위해), 이 파일은 계속 추적되어야 합니다.
계층이 활성화되었거나 활성화될 예정인 경우 team-memory/. 이는 추적되어야 합니다.
도구나 팀원이 그곳에 둔 다른 모든 항목. 각 항목이 개인용인지 공유용인지 결정합니다.
그런 다음 컴퓨터의 글로벌 git ignore를 포함하여 현재 무시 규칙을 확인합니다. 특히 끝에 슬래시가 있는 .qwen/을 찾으십시오. 이것이 경고에서 주의를 준 형식입니다.
2단계: 명시적 재포함이 포함된 파일 글롭 형식으로 무시 규칙 작성하기
디렉터리 형식의 규칙을 파일 글롭 형식으로 바꿉니다. 실제로 .gitignore에는 세 가지 종류의 줄이 필요합니다.
첫째, 파일 글롭 무시: .qwen/*. 이는 폴더 내부의 모든 것을 무시하면서도 git이 폴더 내부를 들여다볼 수 있게 하여 재포함을 가능하게 만듭니다.
둘째, 문서에 나와 있는 그대로의 팀 메모리 재포함 규칙: !.qwen/team-memory/ 및 !.qwen/team-memory/**. 프로젝트에서 설정을 커밋하는 경우 .qwen/settings.json에 대한 재포함 규칙도 추가합니다.
셋째, QWEN.local.md에 대해서는 추가 조치가 필요하지 않습니다. 파일 글롭 규칙이 이미 이를 처리하고 있으며, 재포함되지 않았기 때문에 계속 무시됩니다. 본인의 컴퓨터에서 보안을 한층 더 강화하기 위해, 문서에서는 .qwen/QWEN.local.md를 '글로벌 git ignore'에 추가할 것도 권장합니다.
이 형식이 왜 중요한지 설명하는 메시지와 함께 .gitignore 변경 사항만 단독으로 커밋합니다. 다음에 ignore 파일을 .qwen/으로 '정리'하려는 사람은 왜 그렇게 하면 안 되는지 알게 될 것입니다.
3단계: 파일 브라우저가 아닌 git으로 검증하기
여기서 디스크의 파일은 아무것도 알려주지 않습니다. 중요한 것은 git의 관점입니다. 팀 메모리가 활성화된 상태에서 Qwen이 무해한 팀 메모리(모두가 이미 따르고 있는 규칙에 대한 짧은 메모)를 작성하도록 하거나, 메모당 하나의 파일 레이아웃으로 직접 추가해 봅니다.
그런 다음 git status를 확인합니다. 문서에 따르면 '팀 메모리 쓰기는 다른 파일과 마찬가지로 git status / PR diff에 표시되므로 커밋하기 전에 검토할 수 있습니다.' 새 파일이 나타나면 재포함이 작동하는 것입니다. 나타나지 않는다면 폴더를 여전히 건너뛰고 있는 것이며, 무시 규칙이 어딘가(글로벌 ignore 파일일 수도 있음)에 여전히 디렉터리 형식으로 남아 있는 것입니다.
반대쪽도 같은 방식으로 확인합니다. .qwen/QWEN.local.md를 생성하거나 touch한 후 나타나지 않는지 확인합니다. 그런 다음 Qwen을 한 번 재시작하고 시작 경고가 표시되는지 확인합니다. 더 이상 나타나지 않는다면 해당 계층이 추적되고 있는 것입니다.
마지막으로 팀원에게 pull을 받아 테스트 메모리를 수신했는지 확인하도록 요청합니다. 공유가 이 계층의 핵심이며, 공유에 대한 유일한 실제 테스트는 다른 사람이 이를 확인하는 것입니다.
MemoryLake에서 설정하기
팀 메모리는 하나의 리포지토리에 속한 규칙을 보관하기에 좋은 곳입니다. 하지만 팀이 알고 있는 지식 중 일부는 여러 리포지토리, 여러 도구 또는 Qwen Code를 전혀 사용하지 않는 사람들에게 걸쳐 있습니다. MemoryLake는 하나의 리포지토리에 있는 하나의 폴더가 올바르게 추적되는지에 의존하지 않도록 더 넓은 범위의 지식을 보관할 수 있는 공간입니다.
사용자는 자신의 언어로 직접 항목을 작성합니다. .qwen/, 팀 메모리 폴더, 자동 메모리 디렉터리 또는 공급업체의 저장소에서 아무것도 읽거나 쓰거나 삭제하지 않습니다.
1단계: API 키 생성하기
로그인하고 대시보드에서 키를 생성합니다. 이 키는 에이전트가 Qwen Code나 팀이 사용하는 다른 도구에서 작성된 항목을 읽을 수 있도록 해줍니다.

2단계: 첫 번째 메모리 업로드하기
명명 규칙, 검토 규칙, 아키텍처 선택 배경 등 여러 리포지토리에 적용되는 결정을 추가합니다. 항목당 하나의 결정을 이유와 함께 첨부합니다.

3단계: AI 및 에이전트 연결하기
에이전트가 워크스페이스를 가리키도록 설정합니다. 그러면 .qwen 폴더가 없는 리포지토리와 도구를 포함하여 모든 리포지토리와 도구에서 동일한 결정을 사용할 수 있게 됩니다.

실제 적용 시 달라지는 점
첫 번째 차이점은 개인 계층과 팀 계층이 더 이상 충돌하지 않는다는 것입니다. 재포함이 포함된 파일 글롭 무시를 사용하면 누구나 우회 방법을 기억할 필요 없이 동일한 폴더 내에서 QWEN.local.md를 비공개로 유지하고 팀 메모리를 공유할 수 있습니다.
두 번째는 팀 메모리를 일반적인 방식으로 검토할 수 있게 된다는 점입니다. 작성된 내용이 git status 및 풀 리퀘스트에 표시되므로 잘못된 규칙을 검토 과정에서 잡아낼 수 있습니다. 생성된 지식이 직접 작성한 규칙 옆에 나란히 위치한다는 동일한 개념이 fencing hand-written Amazon Q rules off from its generated memory bank의 배경이기도 합니다.
세 번째는 워크트리가 예측 가능하게 작동한다는 점입니다. Qwen은 비공개 자동 메모리에 대해 '연결된 각 git 워크트리는 자체 메모리 폴더를 갖는다'고 언급하며, 리포지토리 전체 규칙은 팀 메모리를 가리키도록 합니다. 계층이 올바르게 추적되면 모든 워크트리에서 동일한 공유 규칙을 볼 수 있습니다. 머신 간에 작업을 이동하는 것은 Claude Code forgetting context across machines와 동일한 양상을 보입니다.
네 번째는 선택적 동기화를 안전하게 고려할 수 있게 된다는 점입니다. Qwen은 팀 메모리에 대한 자동 git 동기화를 제공하며, 문서화된 경고가 있습니다. '패스트 포워드 풀(fast-forward pull)은 .qwen/team-memory/뿐만 아니라 현재 브랜치 전체에 작용합니다.' 이는 활성화하기 전에 알아둘 가치가 있으며, 계층이 실제로 추적되고 있을 때만 의미가 있습니다.
다섯 번째는 팀 메모리가 다른 레이어들과 함께 적절한 위치를 차지하게 된다는 점입니다. 커밋된 QWEN.md는 규칙을 명시하고, 팀 메모리는 팀이 학습한 내용을 보관하며, 개인 계층은 자신에게만 필요한 내용을 보관합니다. 다른 에이전트들은 동일한 책임을 다르게 분할하지만 — sharing context between Claude Code sessions 및 why Claude Code forgets project context에서 이에 상응하는 문제를 설명합니다 — 핵심은 항상 특정 사실이 어떤 레이어에 속하고 누가 볼 수 있는지입니다.
QWEN.md 파일 및 팀 메모리를 위한 모범 사례
절대 .qwen/을 디렉터리 형식으로 무시하지 마세요. .qwen/*을 사용한 다음 공유해야 하는 항목을 재포함하세요.
팀 메모리를 명시적으로 재포함하세요. 문서에 나와 있는 두 줄(폴더와 그 내용물)을 모두 사용하세요.
settings.json에 대해 신중하게 결정하세요. 일부 프로젝트는 이를 커밋합니다. 여러분의 프로젝트가 그렇다면 재포함하세요.
개인적인 세부 정보는 개인 계층에 보관하세요. QWEN.local.md와 개인 자동 메모리는 본인만을 위한 것입니다. 팀 메모리는 리포지토리 액세스 권한이 있는 모든 사람에게 보입니다.
비밀 정보는 완전히 제외하세요. 자격 증명 스캔은 방어책일 뿐입니다. Qwen의 자체 권장 사항은 '민감한 데이터를 그곳에 두지 마세요'입니다.
git 및 팀원과 함께 검증하세요. git status는 파일이 추적되고 있음을 알려주고, 팀원의 pull은 파일이 공유되고 있음을 알려줍니다. 확장 파일이 Qwen이 로드하는 내용에 어떻게 추가되는지 보려면 Qwen Code's extension context attribution을 참고하세요. 모델 변경에 대해서는 switching to Qwen 3.8 Max without losing context를, 코드 내 팀 지식이라는 더 넓은 주제에 대해서는 codebase memory tools for engineering teams에서 옵션들을 비교해 보세요.
결론
Qwen Code의 메모리 설계는 사려 깊습니다. 개인 지침은 로컬에 유지되고, 자동 메모리는 기본적으로 비공개로 유지되며, 팀 메모리는 모든 팀이 이미 사용하는 도구인 git을 통해 공유됩니다. 한 가지 까다로운 점은 개인 파일과 공유 폴더가 나란히 존재하며, git의 무시 규칙이 끝에 슬래시가 있는 폴더와 별표가 있는 폴더를 매우 다르게 취급한다는 것입니다.
문서에서는 이 문제를 정확히 지적합니다. 디렉터리 형식의 무시는 'git이 폴더를 완전히 건너뛰게 만들며', '팀 계층은 git에서 조용히 비어 있는 상태로 유지됩니다.'
.qwen/에 무엇이 있는지 매핑하고, 명시적 재포함이 포함된 파일 글롭 형식으로 전환한 다음, git status와 팀원의 pull로 검증하세요. 그런 다음 여러 리포지토리에 걸친 지식은 어느 하나의 ignore 파일이 올바르게 설정되었는지 여부에 의존하지 않는 곳에 보관하세요.