MemoryLake
모든 글로 돌아가기
Tutorial2026년 9월 3일·10 분 소요

Amp 지침을 적용 대상 파일로 제한하는 방법 (2026년 가이드)

대부분의 코딩 에이전트는 지침 파일에 대해 두 가지 설정만 제공합니다. 바로 '켜기' 또는 '켜기'입니다. 매 세션마다 로드되며, React 컴포넌트를 편집하든 데이터베이스 마이그레이션을 편집하든 동일한 토큰 비용이 발생합니다. 비용을 줄이는 유일한 방법은 나중에 필요할지도 모르는 내용을 삭제하는 것뿐입니다.

Amp에는 세 번째 옵션이 있지만, 이를 사용하는 사람은 거의 없습니다. AGENTS.md에서 참조하는 파일의 프론트매터(frontmatter)에 globs 필드를 추가하면, 에이전트가 해당 패턴과 일치하는 파일을 실제로 읽은 후에만 그 파일이 로드됩니다. TypeScript 규칙은 TypeScript가 사용될 때만 적용되고, 마이그레이션 규칙은 누군가 마이그레이션 파일을 건드리기 전까지는 방해하지 않고 대기합니다.

이 메커니즘은 공식 문서에 나와 있으며, 단 몇 줄의 YAML로 구성되어 지침 파일의 용도를 완전히 바꾸어 놓습니다. 이 가이드에서는 Amp가 포함할 내용을 결정하는 방법, 조건부 가이드를 설정하는 방법, 그리고 그 한계가 어디인지 다룹니다.

먼저 한 가지 한계를 짚고 넘어가겠습니다. 이는 에이전트가 작성된 지침을 무시하는 일반적인 문제(모든 도구에서 발생하며 에이전트가 지침 파일을 무시하는 이유에서 다룸)가 아닙니다. 오히려 그 반대 상황입니다. Amp는 파일을 안정적으로 읽으며, 문제는 어떻게 하면 매번 모든 파일을 읽지 않게 만들 것인가 하는 점입니다.

Amp가 요청한 것보다 더 많은 파일을 로드하는 이유

세 가지 포함 규칙, 그리고 그 중 두 가지는 무조건적입니다

Amp의 탐색 방식은 매우 명확하므로, 한 번 읽어두면 쉽게 이해할 수 있습니다:

"현재 작업 디렉터리(또는 에디터 워크스페이스 루트) 상위 디렉터리($HOME까지)에 있는 AGENTS.md 파일은 항상 포함됩니다."
"하위 트리(subtree)의 AGENTS.md 파일은 에이전트가 해당 하위 트리의 파일을 읽을 때 포함됩니다."
"시스템 전반의 가이드 파일뿐만 아니라 $HOME/.config/amp/AGENTS.md$HOME/.config/AGENTS.md가 존재하면 항상 포함됩니다."

따라서 세 가지 중 두 가지는 항상 적용됩니다. 오직 하위 트리 규칙만 조건부이며, 이는 사용자가 설정한 구성이 아니라 에이전트가 해당 하위 트리의 파일을 읽을 때 트리거됩니다.

즉, 가이드를 추가하는 가장 기본적인 방법인 루트 AGENTS.md에 넣는 방식이 비용이 가장 많이 드는 방식이기도 합니다. 저장소의 모든 작업에 대해 항상 상주하기 때문입니다.

개인 및 시스템 파일이 그 위에 쌓집니다

위치 테이블에는 Amp가 탐색하는 여러 경로가 나열되어 있습니다. 저장소 파일, "커밋하기 전에 로컬에서 테스트하는 개인 기본 설정, 기기별 명령 및 가이드"를 위한 $HOME/.config/amp/AGENTS.md$HOME/.config/AGENTS.md, 그리고 "모든 Amp 세션에 대한 시스템 전반 또는 조직 관리 가이드"를 위한 /etc/ampcode/AGENTS.md, /Library/Application Support/ampcode/AGENTS.md 또는 %ProgramData%\ampcode\AGENTS.md가 있습니다.

이 파일들은 존재할 경우 항상 포함됩니다. 조직 관리 파일이 설정되어 있고, 개인 파일이 있으며, 저장소에 루트 파일이 있는 컴퓨터에서는 에이전트가 코드를 보기도 전에 이미 세 개의 파일이 상주하게 됩니다.

예상치 못한 대체(Fallback) 규칙

"디렉터리에 AGENTS.md가 존재하지 않지만, AGENT.md('S'가 없는) 또는 CLAUDE.md라는 이름의 파일이 존재하면 해당 파일이 포함됩니다."

이는 유용합니다. 다른 도구를 위해 설정된 저장소가 변경 없이 Amp에서 작동함을 의미하기 때문입니다. 하지만 동시에 잊고 있던 오래된 CLAUDE.md가 활성 가이드로 작동할 수 있으며, 지침을 제거했다고 생각한 디렉터리에 여전히 지침이 남아있을 수 있음을 의미하기도 합니다. 오래된 규칙이 왜 자꾸 다시 나타나는지 원인을 찾기 전에 알아두면 좋은 사실입니다.

Amp 자체에서도 분할을 권장합니다

공식 문서에서는 하나의 거대한 루트 파일을 사용하는 것을 권장하지 않습니다:

"여러 하위 프로젝트가 있는 대규모 저장소에서는 최상위 AGENTS.md를 일반적인 내용으로 유지하고, 각 하위 프로젝트의 하위 트리에 더 구체적인 AGENTS.md 파일을 만드는 것을 권장합니다."

이것이 해답의 전반부입니다. globs 메커니즘은 후반부이며, 하위 트리가 처리할 수 없는 경우인 디렉터리가 아닌 파일 유형에 적용되는 가이드를 처리합니다.

사람들이 시도하는 방법들

모든 내용을 루트 AGENTS.md에 넣기. 기본 방식이며, 파일이 너무 커져서 에이전트가 모든 지침을 안정적으로 따르지 못하는 지점에 도달하기 전까지는 잘 작동합니다. 모든 작업에서 모든 규칙이 서로 주의를 끌기 위해 경쟁하게 됩니다.

컨텍스트를 절약하기 위해 가이드 삭제하기. 효과적이지만 손실이 큽니다. 삭제한 규칙은 과거에 누군가 실수를 저질렀기 때문에 존재했던 것입니다.

모든 것에 대해 하위 트리 파일 만들기. 가이드가 디렉터리 구조에 맞을 때는 정말 좋은 방법이며, Amp가 이를 권장하는 이유이기도 합니다. 하지만 파일 위치와 상관없이 TypeScript 파일에 적용되는 "any 타입을 절대 사용하지 말 것"과 같은 규칙에는 아무런 도움이 되지 않습니다.

조건을 줄글로 작성하고 잘 작동하기를 바라기. 상주 파일에 "API 엔드포인트를 작업할 때는 다음 규칙을 따르십시오"라고 추가하는 방식입니다. 텍스트 비용은 여전히 동일하게 발생하며, 패턴으로 명확히 표현할 수 있었던 필터링을 모델이 알아서 적용해 주기를 기대해야 합니다.

프론트매터 없이 파일 @-언급하기. 절반의 성공입니다. Amp는 다른 파일을 가져오기 위해 @-언급을 지원하며, 문서는 기본값에 대해 명확히 설명합니다. "globs가 지정되지 않은 경우, @-언급 시 파일이 항상 포함됩니다." 따라서 언급만으로는 로드되는 양을 줄이지 못하고 파일 구조만 재조정할 뿐입니다.

모든 작업에 하나의 긴 스레드 사용하기. 인접한 문제이자 동일한 증상입니다. Amp 자체의 조언은 다음과 같습니다. "작업당 하나의 스레드를 사용하십시오. 스레드는 오랫동안 지속될 수 있지만, 관련 없는 작업이 섞인 스레드는 에이전트가 추론할 수 있는 컨텍스트를 악화시킵니다." 스레드가 길어질 때 문서에 제안된 조치는 핸드오프(handoff)입니다. "에이전트에게 'Handoff and ...'를 요청하면 중요한 컨텍스트만 가지고 새 스레드를 시작합니다."

해결책: AGENTS.md에서 파일을 참조하고 Glob으로 제한하기

1단계: 트리거 기준에 따라 루트 파일 분할하기

루트 AGENTS.md를 읽고 모든 블록을 세 가지 범주로 분류합니다.

범용(Universal). 빌드 및 테스트 명령, 저장소 레이아웃, 검토 및 릴리스 단계 등 어디서나 적용되는 규칙입니다. 이는 루트 파일에 그대로 둡니다. Amp의 위치 테이블은 루트 파일에 대해 정확히 이 내용을 설명합니다. "아키텍처, 빌드/테스트 명령, 내부 API 개요, 검토 및 릴리스 단계."

디렉터리 형태(Directory-shaped). 특정 하위 프로젝트 내부에서만 중요한 가이드입니다. 이는 해당 하위 트리의 AGENTS.md가 되며, Amp는 에이전트가 그곳의 파일을 읽을 때 이를 포함합니다.

파일 유형 형태(File-type-shaped). 언어 규칙, 테스트 패턴, 프레임워크 규칙입니다. 이것이 바로 glob이 필요한 이유이며, 성숙한 저장소에서 보통 가장 큰 비중을 차지합니다.

2단계: Glob으로 제한된 파일 연결하기

문서에 설명된 대로 정확히 세 가지 단계를 거칩니다.

첫째, AGENTS.md에 언급(mention)을 추가합니다. 파일 내 어디에나 배치할 수 있습니다: See @docs/*.md. 언급 자체에서 glob 패턴이 지원되므로, 한 줄로 규칙 파일이 있는 디렉터리 전체를 지정할 수 있습니다.

둘째, 참조되는 각 파일의 YAML 프론트매터에 globs 목록을 작성하여 생성합니다. 문서의 예시에서는 docs/typescript-conventions.md를 생성하고, globs'**/*.ts''**/*.tsx'를 나열하는 프론트매터 블록으로 시작한 다음, 실제 규칙(예: "Never use the any type")을 작성합니다.

셋째, 언어 또는 관심사별로 이를 반복합니다. 문서에서는 복사하여 사용할 수 있는 세 가지 형태를 제공합니다. 프론트엔드 가이드는 globs: ["src/components/**", "**/*.tsx"], 백엔드는 globs: ["server/**", "api/**"], 테스트 가이드는 globs: ["*.test.ts", "__tests__/*"]입니다.

동작 방식은 명확하게 명시되어 있습니다. "globs가 있는 언급된 파일은 Amp가 해당 glob 중 하나와 일치하는 파일을 읽은 경우에만 포함됩니다." 트리거 조건은 사용자가 파일을 연 것이 아니라, Amp가 일치하는 파일을 읽었을 때라는 점에 유의하십시오.

혼란을 줄여줄 두 가지 세부 사항이 있습니다. 언급에 대한 경로 해석은 작업 디렉터리가 아니라 언급이 포함된 파일을 기준으로 합니다. "상대 경로는 언급을 포함하는 에이전트 파일을 기준으로 해석됩니다." 절대 경로와 @~/some/path도 작동합니다. 또한 glob 해석에는 자체 규칙이 있습니다. "glob은 ../ 또는 ./로 시작하지 않는 한 암묵적으로 앞에 **/가 붙으며, 이 경우 언급된 파일에 대한 상대 경로를 참조합니다." 따라서 *.test.ts는 어디에 있는 테스트 파일이든 일치하는 반면, ./fixtures/*.json은 해당 규칙을 선언한 파일과 같은 위치에 있는 파일을 의미합니다.

줄글로 경로를 문서화할 때 중요한 한 가지가 더 있습니다. "오탐을 방지하기 위해 코드 블록 내의 @-언급은 무시됩니다." 백틱 안에 경로를 작성하면 가져오기(import)를 수행하지 않고도 경로에 대해 설명할 수 있습니다.

3단계: 로드된 내용 확인 후 팩트(Fact) 분리하기

Amp는 작업 결과를 확인할 수 있는 직접적인 방법을 제공합니다. "Amp가 사용 중인 에이전트 파일을 보려면 명령 팔레트에서 agents-md list를 선택하십시오." 몇 개의 서로 다른 디렉터리에서 실행해 보거나, 에이전트가 다른 파일 유형을 건드린 후에 실행해 보십시오. 이것이 glob이 의도한 대로 작동하는지 확인하는 가장 빠른 방법입니다.

그 다음 실제로 상주 세트의 크기를 줄이는 작업을 수행합니다. 루트 파일에 남은 내용을 다시 살펴보며 각 줄이 지침(instruction)인지 팩트(fact)인지 자문해 보십시오. "커밋하기 전에 pnpm test 실행"은 지침입니다. 짧고 행동 지향적이며 AGENTS.md에 속합니다. 반면 "두 모바일 클라이언트가 이전 빌드를 고정하고 있기 때문에 API 경로에 버전이 지정되어 있음"은 팩트입니다. 이는 파일 유형에 관한 것이 아니기 때문에 적합한 glob이 없습니다. 프로젝트 자체에 관한 것이며, 에이전트는 패턴이 일치할 때가 아니라 해당 주제가 언급될 때마다 이 정보가 필요합니다.

팩트는 지침 파일이 너무 커져서 제대로 준수되지 못하게 만드는 주범이며, 어떤 제한 메커니즘으로도 이를 해결할 수 없습니다. 제한 조건의 형태가 항상 맞지 않기 때문입니다. 이를 해결하는 방법은 에이전트가 필요할 때만 읽을 수 있는 곳에 팩트를 보관하는 것입니다. MemoryLake는 세 단계로 설정할 수 있습니다.

1단계: API 키 생성

로그인 후 대시보드에서 API 키를 생성합니다. 이는 AGENTS.md 체인과 완전히 독립되어 있으므로, 여기에 포함된 내용은 매 세션마다 상주하지 않으며 맞지 않는 패턴으로 제한되지도 않습니다.

팩트가 Amp의 항상 포함되는 지침 파일 외부에 존재하도록 MemoryLake API 키 생성하기
팩트가 Amp의 항상 포함되는 지침 파일 외부에 존재하도록 MemoryLake API 키 생성하기

2단계: 첫 번째 메모리 업로드

팩트를 입력합니다. 아키텍처 결정과 그 배경, 도메인 어휘, 서비스 소유권, 임시 방편(workaround)이 존재하는 이유, 코드 리뷰에서 자주 반복하는 답변 등이 이에 해당합니다. 파일 유형이 아니라 프로젝트 자체에 대해 참인 모든 정보가 대상입니다.

루트 AGENTS.md를 키우는 대신 MemoryLake에 프로젝트 팩트 업로드하기
루트 AGENTS.md를 키우는 대신 MemoryLake에 프로젝트 팩트 업로드하기

행동 지침은 AGENTS.md에 남겨두고, 패턴이 실제로 적용되는 곳에 glob으로 제한하십시오. 두 레이어는 서로 다른 역할을 수행합니다.

3단계: AI 및 에이전트 연결

Amp가 저장소를 가리키도록 설정합니다. 루트 파일은 안정적으로 준수될 수 있을 만큼 충분히 짧아지고, glob으로 제한된 파일은 좁은 범위의 행동 지침으로 유지되며, 프로젝트 지식은 질문이 있을 때만 제공됩니다. 이는 메모리 레이어로 토큰 사용량 줄이기의 배경이 되는 논리와 동일합니다.

가이드가 범위 내로 유지되도록 MCP를 통해 Amp를 MemoryLake에 연결하기
가이드가 범위 내로 유지되도록 MCP를 통해 Amp를 MemoryLake에 연결하기

실제 적용 시 변화되는 점

첫 번째 변화는 가이드를 추가하는 것이 더 이상 트레이드오프가 아니라는 점입니다. 현재는 새로운 규칙을 상주 파일에 추가하여 모든 작업에 부담을 주거나, 아니면 아예 제외해야 합니다. 제한된 파일(gated files)은 파일 유형 형태를 가진 모든 규칙에 대해 이러한 고민을 없애줍니다.

두 번째는 더 나은 문장을 쓰지 않고도 지침 준수율이 향상된다는 점입니다. 짧은 상주 지침 세트는 긴 지침 세트보다 더 일관되게 준수되므로, 컨텍스트 예산이 넉넉하더라도 분할 작업을 수행할 가치가 있습니다.

세 번째는 도구 전환 비용이 저렴해진다는 점입니다. Amp는 이미 AGENT.mdCLAUDE.md를 대체 파일로 읽으므로, 지침 레이어는 이식성이 매우 높습니다. 이는 CLAUDE.md를 AGENTS.md로 마이그레이션하기에 설명된 형태와 유사합니다. 반면 팩트 레이어는 도구 외부에 보관할 때만 이식성을 유지할 수 있는 부분입니다.

Amp 지침 범위 지정을 위한 모범 사례

  • 루트 파일은 일반적인 내용으로 유지하십시오. 아키텍처, 빌드 및 테스트 명령, 검토 및 릴리스 단계 등이 해당됩니다. 이는 대규모 저장소에 대한 Amp 자체의 권장 사항입니다.
  • 디렉터리 형태의 가이드에는 하위 트리 파일을 사용하십시오. 에이전트가 하위 트리의 파일을 읽을 때 로드됩니다.
  • 파일 유형 형태의 가이드에는 globs를 사용하십시오. 언어 규칙, 테스트 패턴, 프레임워크 규칙 등이 해당됩니다.
  • 단순한 @-언급은 여전히 무조건적이라는 점을 기억하십시오. globs가 없으면 언급된 파일이 항상 포함됩니다.
  • 두 가지 경로 해석 규칙에 유의하십시오. 언급 경로는 언급이 포함된 파일을 기준으로 해석되며, glob은 ./ 또는 ../로 시작하지 않는 한 암묵적으로 **/가 앞에 붙습니다.
  • 오래된 대체 파일을 확인하십시오. AGENTS.md가 없는 디렉터리에 남겨진 AGENT.md 또는 CLAUDE.md는 활성 가이드로 작동합니다.
  • agents-md list로 확인하십시오. 서로 다른 디렉터리에서 실행하거나 다른 파일 유형을 건드린 후에 실행해 보십시오.
  • 작업당 하나의 스레드를 사용하고, 스레드가 길어지면 핸드오프하십시오. 이는 정리 정돈보다는 컨텍스트 품질을 위한 Amp의 가이드라인입니다.

결론

Amp의 지침 시스템은 각 파일이 로드되는 시점을 매우 명확하게 규정하고 있으며, AGENTS.md에서 참조되는 glob 제한 파일 모드는 지침을 고정 비용에서 조건부 비용으로 전환해 줍니다. 프론트매터 몇 줄만 추가하면 되며, 루트 파일이 너무 커진 저장소에서 적용할 수 있는 가장 효과적인 단일 개선책입니다.

하지만 이 방법으로도 패턴이 없는 콘텐츠는 해결할 수 없습니다. 프로젝트 팩트는 파일 유형 형태가 아니므로 제한(gating) 도구가 적합하지 않습니다. 지침과 지식을 분리하고, 지침은 제한하며, 지식은 매 세션마다 불필요한 비용을 지불하지 않고도 에이전트가 접근할 수 있는 곳에 보관하십시오.

자주 묻는 질문

@로 참조된 파일은 매번 로드되나요?

globs가 없는 경우에만 그렇습니다. 문서에 명확히 명시되어 있습니다. "globs가 지정되지 않은 경우, @-언급 시 파일이 항상 포함됩니다." globs 목록을 추가해야만 조건부로 포함되도록 설정할 수 있습니다.

glob으로 제한된 파일은 정확히 언제 트리거되나요?

Amp가 일치하는 파일을 읽었을 때 트리거됩니다. 문구는 "globs가 있는 언급된 파일은 Amp가 해당 glob 중 하나와 일치하는 파일을 읽은 경우에만 포함됩니다"로 되어 있습니다. 즉, 에디터 상태가 아니라 작업 중 에이전트가 실제로 파일을 읽는 동작을 따릅니다.

glob 패턴은 어디를 기준으로 해석되나요?

glob은 "../ 또는 ./로 시작하지 않는 한" 암묵적으로 앞에 **/가 붙으며, 이 경우 언급된 파일에 대한 상대 경로를 참조합니다. 언급 경로 자체는 작업 디렉터리가 아니라 언급이 포함된 에이전트 파일을 기준으로 해석되며, 절대 경로와 @~/some/path도 지원됩니다.

Amp가 항상 포함하는 파일은 무엇인가요?

작업 디렉터리 및 $HOME까지의 상위 디렉터리에 있는 AGENTS.md 파일, 그리고 시스템 전반의 가이드와 $HOME/.config/amp/AGENTS.md$HOME/.config/AGENTS.md가 존재할 경우 이들이 항상 포함됩니다. 하위 트리 파일은 조건부 사례로, 에이전트가 해당 하위 트리의 파일을 읽을 때 포함됩니다.

남겨둔 CLAUDE.md 파일도 Amp가 읽나요?

네, AGENTS.md가 없는 디렉터리에서는 읽습니다. "디렉터리에 AGENTS.md가 존재하지 않지만, AGENT.md('S'가 없는) 또는 CLAUDE.md라는 이름의 파일이 존재하면 해당 파일이 포함됩니다." 마이그레이션 시 편리하지만, 오래된 규칙이 계속 다시 나타난다면 점검해 볼 필요가 있습니다.

Amp가 실제로 로드한 내용을 어떻게 확인하나요?

명령 팔레트에서 agents-md list를 선택하십시오. 사용 중인 에이전트 파일을 보여주므로, 동작을 통해 추측하는 대신 glob이 의도한 대로 제한하고 있는지 확인할 수 있는 가장 확실한 방법입니다. 이는 코딩 에이전트가 실제로 읽는 내용에서 설명한 일반적인 습관과 일치합니다.