LLM이 답하기 전에 보는 지시문, 도구 정의, 검색 결과, 대화 이력, 작업 상태까지 무엇을, 얼마나, 언제 넣을지 설계하는 방법이다. 프롬프트 한 줄을 다듬는 데서 그치지 않고 컨텍스트 윈도우 전체를 다루며, 여러 단계를 스스로 처리하는 에이전트를 만들 때 특히 중요하다.
| 구분 | 프롬프트 엔지니어링 | 컨텍스트 엔지니어링 |
|---|---|---|
| 관심사 | 어떻게 지시할까 | 모델에게 무엇을 보여줄까 |
| 범위 | 지시문 한 덩어리 | 컨텍스트 윈도우 전체 |
| 잘 맞는 일 | 한 번 묻고 끝나는 작업 | 여러 턴 동안 도구를 쓰는 에이전트 |
이 용어는 Shopify CEO 토비 뤼트케(Tobi Lütke)와 안드레이 카파시(Andrej Karpathy)가 쓰면서 널리 퍼졌다.
모델은 컨텍스트에 들어온 정보만 보고 판단한다. 그래서 요소마다 무엇을 넣고 무엇을 뺄지 정해야 한다.
| 구성 요소 | 예 | 설계 포인트 |
|---|---|---|
| 시스템 프롬프트 | 역할, 규칙 | 너무 세세하지도, 너무 막연하지도 않게 |
| 도구 정의 | 함수 이름·설명 | 기능이 겹치지 않게 적게 두고 설명은 분명하게 |
| 검색 결과(RAG) | 문서 조각 | 질문과 관련된 것만 |
| 대화 이력·메모 | 이전 결정, 진행 상황 | 길어지면 요약 |
Claude Code를 쓴다면 프롬프트를 손보기보다 아래 구조를 정리하는 쪽이 에이전트 품질에 더 큰 영향을 준다.
| 하는 일 | 어디에 | 효과 |
|---|---|---|
| 프로젝트 규칙 | CLAUDE.md | 세션마다 자동으로 읽힌다 |
| 역할별 에이전트 | .claude/agents/ | 별도 컨텍스트에서 일하고 결과만 돌려준다 |
| 외부 도구 연결 | MCP 서버 | 필요한 도구만 붙인다 |
| 가드레일 | 훅 | 특정 동작 전후에 자동으로 검사한다 |
컨텍스트가 길어지면 모델이 중간에 있는 정보를 놓치거나 지난 내용에 끌려가기 쉽다. 토큰이 늘면 비용도 늘고 응답도 느려진다. 그래서 목표는 꼭 필요한 정보만 최소한으로 넣는 것이다.
| 기법 | 방법 | 언제 |
|---|---|---|
| 요약(압축) | 긴 대화에서 핵심만 남긴다 (Claude Code는 /compact) | 세션이 길어질 때 |
| 메모 파일 | 진행 상황을 파일에 적어 두고 다시 읽는다 | 여러 세션에 걸친 작업 |
| 필요할 때 불러오기 | 파일 경로만 알려 주고 내용은 도구로 읽게 한다 | 코드베이스가 클 때 |
| 서브에이전트 | 탐색은 따로 맡기고 요약만 받는다 | 조사할 양이 많을 때 |
한 번 묻고 끝나는 질문이라면 프롬프트만 잘 써도 충분하다. 반대로 에이전트가 엉뚱한 파일을 고치거나 같은 실수를 되풀이한다면, 프롬프트보다 컨텍스트에 무엇이 들어 있는지부터 확인한다. 흔한 원인은 CLAUDE.md에 남은 오래된 규칙, 너무 많아 헷갈리는 도구, 관련 없는 작업 이력이다. 작업 주제가 바뀌면 /clear로 새로 시작하는 것도 방법이다.
가장 흔하게 쓰는 곳은 코딩 에이전트다. 규칙 파일과 메모로 꼭 필요한 정보만 넣어 두고, 긴 탐색은 따로 맡겨 메인 대화를 가볍게 유지한다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | 프로젝트 규칙은 CLAUDE.md에, 큰 코드베이스는 경로만 알려 주고 필요한 파일만 읽게 한다 |
| 사내 문서 검색 챗봇 | 질문과 관련된 문서 조각만 골라 넣어 엉뚱한 답을 줄인다 |
| 여러 턴 이어지는 상담·비서 봇 | 지난 대화는 요약해 두고 이번 요청에 필요한 이력만 남긴다 |
| 오래 도는 조사 작업 | 진행 상황을 메모 파일에 적고, 세부 탐색은 서브에이전트에 맡겨 요약만 받는다 |