GitHub Copilot Chat 가이드: VS Code에서 슬래시 명령, 컨텍스트 변수, 에이전트 모드 활용하기
GitHub Copilot Chat이 강력한 이유
GitHub Copilot Chat은 단순한 코드 자동완성 도구가 아니다. VS Code 내에서 대화형 인터페이스를 통해 코드를 설명받고, 버그를 수정하고, 테스트를 생성하고, 문서를 작성하는 등 개발 워크플로 전반을 지원하는 AI 어시스턴트다. 기존 Copilot 인라인 제안이 “다음 줄 예측”에 집중했다면, Copilot Chat은 개발자의 의도를 이해하고 멀티스텝 작업을 수행할 수 있다는 점에서 근본적으로 다르다.
Copilot Chat이 특히 강력한 이유는 세 가지 핵심 메커니즘에 있다.
첫째, **슬래시 명령(Slash Commands)**은 자주 반복되는 작업을 한 단어로 실행할 수 있게 해준다. /explain이라고 입력하면 코드 설명이, /fix라고 입력하면 버그 수정 제안이 즉시 나온다. 자연어로 길게 프롬프트를 작성할 필요 없이, 의도를 명확하게 전달할 수 있다.
둘째, **컨텍스트 변수(Context Variables)**는 Copilot에게 정확히 어떤 파일, 어떤 코드 범위, 어떤 상황을 참고해야 하는지 지정할 수 있게 해준다. #file:utils.ts처럼 특정 파일을 가리키거나, #selection으로 현재 선택된 코드 블록을 전달하면, Copilot의 응답 정확도가 비약적으로 높아진다.
셋째, **에이전트 모드(Agent Mode)**는 Copilot이 프로젝트 전체를 인식하고 멀티스텝 작업을 자율적으로 수행할 수 있게 해준다. @workspace로 코드베이스 전체에 걸친 질문을 하거나, @terminal로 터미널 명령어 관련 도움을 받을 수 있다.
이 세 가지를 조합하면, 단순 질문-응답을 넘어 실질적인 개발 파트너로 Copilot Chat을 활용할 수 있다.
슬래시 명령 완전 가이드
슬래시 명령은 Copilot Chat 입력창에서 /를 입력하면 나타나는 내장 명령어다. 프롬프트 엔지니어링 없이도 특정 작업을 정확하게 수행할 수 있도록 설계되어 있다.
/explain — 코드 설명
/explain 명령은 선택한 코드 블록이나 현재 열린 파일의 코드를 상세하게 설명해준다. 복잡한 알고리즘, 레거시 코드, 팀원이 작성한 낯선 코드를 이해할 때 특히 유용하다.
/explain
코드를 선택한 상태에서 실행하면 해당 부분만 설명한다. 선택 없이 실행하면 현재 에디터에 열린 파일 전체를 대상으로 설명한다. 단순히 “이 코드가 무엇을 하는가”만 알려주는 것이 아니라, 왜 이런 패턴을 사용했는지, 잠재적인 문제점은 무엇인지까지 분석해준다.
활용 예시:
/explain 이 정규표현식이 어떤 패턴을 매칭하는지 알려줘
/explain 이 재귀 함수의 종료 조건과 시간 복잡도를 분석해줘
/fix — 버그 수정
/fix 명령은 선택한 코드의 버그를 감지하고 수정안을 제시한다. 에러 메시지를 함께 전달하면 더 정확한 수정을 받을 수 있다.
/fix
터미널에서 에러가 발생했을 때 에러 메시지를 복사해서 함께 전달하는 것이 효과적이다:
/fix TypeError: Cannot read properties of undefined (reading 'map')
/fix는 단순한 구문 오류뿐 아니라, 타입 불일치, null 참조, 비동기 처리 누락, 경계값 문제 등 다양한 유형의 버그를 인식한다. 수정 제안은 diff 형태로 보여주며, “Apply” 버튼으로 즉시 적용할 수 있다.
/tests — 테스트 생성
/tests 명령은 선택한 함수나 클래스에 대한 단위 테스트를 자동 생성한다. 프로젝트에서 사용 중인 테스트 프레임워크를 인식하여 적절한 형식으로 생성한다.
/tests
Jest, Mocha, pytest, JUnit 등 주요 테스트 프레임워크를 자동 감지한다. 엣지 케이스와 경계값 테스트도 포함하는 경향이 있어, 수동으로 작성할 때 놓치기 쉬운 시나리오까지 커버할 수 있다.
/tests Jest를 사용해서 이 API 핸들러의 성공/실패/엣지 케이스를 테스트해줘
/doc — 문서화
/doc 명령은 선택한 코드에 대한 문서 주석을 생성한다. JSDoc, Python docstring, Javadoc 등 언어에 맞는 형식을 자동으로 적용한다.
/doc
함수 시그니처를 분석하여 매개변수 설명, 반환 값, 예외 상황, 사용 예시를 포함하는 완전한 문서 주석을 생성한다. 팀 내 문서화 규칙이 있다면 추가 지시를 붙여 커스터마이징할 수 있다:
/doc @param과 @returns를 포함하고, 사용 예시도 추가해줘
/simplify — 코드 간소화
/simplify 명령은 복잡하거나 장황한 코드를 더 간결하고 읽기 쉬운 형태로 리팩터링한다. 기능은 유지하면서 불필요한 복잡성을 제거하는 데 초점을 맞춘다.
/simplify
중첩된 조건문을 얼리 리턴으로 변환하거나, 반복적인 코드를 유틸리티 함수로 추출하거나, 최신 문법으로 업데이트하는 등의 개선을 제안한다:
/simplify 이 중첩된 if-else를 더 깔끔하게 만들어줘
/optimize — 성능 최적화
/optimize 명령은 코드의 성능 병목을 찾고 더 효율적인 구현을 제안한다. 알고리즘 복잡도 개선, 불필요한 연산 제거, 메모리 사용 최적화 등을 다룬다.
/optimize
데이터베이스 쿼리, 루프 최적화, 캐싱 전략 등 구체적인 성능 개선 영역을 지정하면 더 정확한 결과를 얻을 수 있다:
/optimize 이 배열 검색을 O(n)에서 O(1)로 개선할 수 있는 방법을 제안해줘
컨텍스트 변수 심층 가이드
컨텍스트 변수는 # 기호로 시작하며, Copilot Chat에 특정 컨텍스트를 명시적으로 전달하는 메커니즘이다. 프롬프트만으로는 전달하기 어려운 정보를 정확하게 지정할 수 있어, 응답의 품질을 결정적으로 높여준다.
#file — 특정 파일 참조
#file은 프로젝트 내 특정 파일을 Copilot Chat의 컨텍스트로 전달한다. 파일 이름을 입력하면 자동완성으로 선택할 수 있다.
#file:src/utils/auth.ts 이 인증 모듈의 보안 취약점을 검토해줘
여러 파일을 동시에 참조할 수도 있다:
#file:src/api/users.ts #file:src/models/User.ts 이 두 파일 간의 타입 불일치를 확인해줘
#selection — 현재 선택 영역
#selection은 에디터에서 현재 드래그하여 선택한 코드 블록을 전달한다. 파일 전체가 아닌 특정 부분에 대해서만 질문하고 싶을 때 사용한다.
#selection 이 부분에서 메모리 누수가 발생할 수 있는 지점을 찾아줘
#editor — 현재 에디터 내용
#editor는 현재 활성화된 에디터 탭의 전체 내용을 전달한다. #selection이 부분적이라면, #editor는 파일 전체를 컨텍스트로 포함한다.
#editor 이 컴포넌트의 렌더링 성능을 개선할 방법을 제안해줘
#terminalLastCommand — 마지막 터미널 명령
#terminalLastCommand는 터미널에서 가장 최근에 실행한 명령과 그 출력 결과를 전달한다. 에러가 발생했을 때 별도로 복사-붙여넣기할 필요 없이, 이 변수 하나로 전체 맥락을 전달할 수 있다.
#terminalLastCommand 이 빌드 에러를 해결하려면 어떻게 해야 해?
#codebase — 코드베이스 전체
#codebase는 Copilot이 프로젝트의 코드베이스 전체를 검색하여 관련 컨텍스트를 수집하게 한다. 특정 파일을 모를 때, 또는 프로젝트 전반에 걸친 질문을 할 때 유용하다.
#codebase 사용자 인증이 어떤 흐름으로 처리되는지 설명해줘
컨텍스트 변수 조합
컨텍스트 변수의 진정한 힘은 조합에서 나온다. 슬래시 명령과 함께 사용하면 매우 정밀한 지시가 가능하다:
/fix #file:src/api/handler.ts #terminalLastCommand
이 명령은 “터미널에서 발생한 마지막 에러를 참고하여 handler.ts 파일의 버그를 수정해줘”라는 의미를 한 줄로 전달한다.
/tests #file:src/utils/validator.ts #file:src/utils/validator.test.ts
이 명령은 기존 테스트 파일의 패턴을 참고하여 추가 테스트를 생성하도록 지시한다.
에이전트 모드 활용법
에이전트 모드는 @ 기호로 호출하며, Copilot Chat에 특화된 능력을 부여하는 확장 기능이다. 단일 파일 수준을 넘어 프로젝트 전체, 터미널, VS Code 설정 등 더 넓은 범위에서 작동한다.
@workspace — 코드베이스 전체 인식
@workspace는 Copilot Chat이 현재 열린 워크스페이스(프로젝트) 전체를 인식하고 분석하게 한다. 프로젝트 구조, 파일 간 의존성, 아키텍처 패턴 등 전역적인 질문에 적합하다.
@workspace 이 프로젝트의 전체 아키텍처를 설명해줘
@workspace 사용되지 않는 export가 있는 모듈을 찾아줘
@workspace 새로운 REST API 엔드포인트를 추가하려면 어떤 파일들을 수정해야 해?
@workspace는 내부적으로 프로젝트의 파일 구조를 인덱싱하고, 관련 파일들을 지능적으로 선택하여 컨텍스트로 포함한다. 대규모 프로젝트에서도 관련 파일만 효율적으로 참조하기 때문에, 토큰 한도를 초과하는 문제를 최소화한다.
@terminal — 터미널 통합
@terminal은 셸 명령어, 빌드 도구, CLI 관련 질문에 특화되어 있다. 현재 터미널 세션의 컨텍스트를 이해하고, 적절한 명령어를 제안한다.
@terminal Docker 컨테이너를 빌드하고 실행하는 명령어를 알려줘
@terminal 이 프로젝트의 개발 서버를 실행하려면 어떤 명령어를 써야 해?
@terminal은 프로젝트의 package.json, Makefile, Dockerfile 등을 참고하여 프로젝트에 맞는 구체적인 명령어를 제안한다. 일반적인 “npm start”가 아닌, 해당 프로젝트의 실제 스크립트 이름을 사용한 명령어를 알려준다.
@vscode — VS Code 설정 지원
@vscode는 VS Code 자체의 설정, 확장 프로그램, 키보드 단축키 등에 대한 질문에 답한다.
@vscode 파일 저장 시 자동 포맷팅을 설정하려면 어떻게 해?
@vscode ESLint와 Prettier가 충돌하지 않게 설정하는 방법을 알려줘
이 에이전트는 VS Code의 settings.json 형식에 맞는 정확한 설정값을 제공하며, 필요한 확장 프로그램 설치 명령까지 포함하는 경우가 많다.
고급 프롬프트 기법
슬래시 명령과 컨텍스트 변수를 이해했다면, 이를 조합하여 더 정교한 작업을 수행하는 고급 기법을 익힐 차례다.
컨텍스트 샌드위치 기법
“컨텍스트 샌드위치”는 지시사항 사이에 컨텍스트를 끼워넣어 Copilot이 정확한 맥락 속에서 작업하도록 유도하는 기법이다.
이 함수는 사용자 결제를 처리하는 모듈의 일부야.
#file:src/payments/processor.ts
결제 실패 시 재시도 로직을 추가하되, 최대 3회까지만 시도하고 exponential backoff를 적용해줘.
첫 줄에서 전체 맥락을 설정하고, 가운데에서 구체적인 파일을 지정하고, 마지막 줄에서 정확한 작업을 지시한다. 이렇게 하면 Copilot이 코드의 목적과 요구사항을 모두 이해한 상태에서 응답을 생성한다.
다단계 프롬프트 기법
복잡한 작업은 한 번에 요청하기보다 여러 단계로 나누는 것이 효과적이다. Copilot Chat은 대화 히스토리를 유지하므로, 이전 답변을 참조하는 후속 질문을 이어갈 수 있다.
1단계: 현재 상태 분석
@workspace 현재 프로젝트의 에러 핸들링 패턴을 분석해줘. 어떤 방식을 사용하고 있어?
2단계: 개선안 제시
방금 분석한 패턴을 기반으로, 글로벌 에러 핸들러를 구현하는 방법을 제안해줘.
3단계: 구현
제안한 방법 중 두 번째 방식으로 구현해줘. #file:src/middleware/errorHandler.ts에 작성해줘.
코드 리뷰 프롬프트
Copilot Chat을 코드 리뷰어로 활용하는 것도 강력한 기법이다:
#file:src/api/users.ts 이 파일을 시니어 개발자 관점에서 리뷰해줘. 보안 취약점, 성능 문제, 코드 스타일 위반, 에러 핸들링 누락을 중심으로 검토하고, 각 항목에 심각도(높음/중간/낮음)를 표시해줘.
구체적인 리뷰 기준을 명시할수록 결과가 좋아진다. “이 코드 리뷰해줘”보다는 위처럼 리뷰 관점과 출력 형식을 지정하는 것이 훨씬 효과적이다.
인라인 Chat 활용
Copilot Chat은 사이드 패널뿐 아니라 에디터 내에서 직접 사용할 수 있는 인라인 모드도 지원한다. Ctrl+I (macOS에서는 Cmd+I)를 누르면 현재 커서 위치에서 인라인 Chat이 열린다.
인라인 Chat의 장점은 코드 흐름을 벗어나지 않고 즉석에서 수정할 수 있다는 점이다. 사이드 패널과 에디터 사이를 오갈 필요 없이, 코드를 작성하는 흐름 그대로 AI 지원을 받을 수 있다.
대표적인 사용 시나리오:
- 함수 위에서
Ctrl+I를 눌러 문서 주석 생성 요청 - 코드 블록을 선택하고
Ctrl+I를 눌러 리팩터링 요청 - 빈 줄에서
Ctrl+I를 눌러 새로운 코드 생성 요청
인라인 Chat에서도 슬래시 명령과 컨텍스트 변수를 동일하게 사용할 수 있다. 다만, 인라인 Chat은 짧고 집중된 작업에, 사이드 패널 Chat은 탐색적이고 복잡한 대화에 더 적합하다.
비교: Copilot Chat vs Cursor vs Claude Code
개발자 AI 도구 시장에는 여러 선택지가 있다. 각 도구의 특성을 이해하면 상황에 맞는 최적의 도구를 선택할 수 있다.
| 항목 | GitHub Copilot Chat | Cursor | Claude Code |
|---|---|---|---|
| 실행 환경 | VS Code 확장 프로그램 | 전용 에디터 (VS Code 포크) | 터미널 CLI |
| 코드베이스 인식 | @workspace로 프로젝트 전체 인식 | 자동 인덱싱으로 전체 프로젝트 인식 | 파일 시스템 직접 접근 |
| 인라인 편집 | Ctrl+I 인라인 Chat | Ctrl+K 인라인 편집, Tab 자동완성 | 에디터 통합 없음 (CLI 기반) |
| 멀티파일 편집 | 에이전트 모드에서 지원 | Composer로 멀티파일 동시 편집 | 기본적으로 멀티파일 지원 |
| 자율 실행 | 에이전트 모드 (제한적) | 에이전트 모드 | 완전 자율 에이전트 |
| 터미널 통합 | @terminal 에이전트 | 내장 터미널 지원 | 터미널 네이티브 |
| Git 통합 | GitHub 생태계 깊은 통합 | 기본 Git 지원 | Git 명령 직접 실행 |
| 가격 | 월 $10 (Individual) | 월 $20 (Pro) | 사용량 기반 과금 |
| 장점 | GitHub 생태계 연동, 안정성 | 편집 경험, 빠른 반복 속도 | 복잡한 멀티스텝 작업, 자율성 |
| 적합한 사용자 | GitHub 중심 워크플로 개발자 | 빠른 코드 편집이 중요한 개발자 | 대규모 리팩터링, 자동화 선호 개발자 |
핵심 차이를 요약하면, Copilot Chat은 기존 VS Code 환경에서 최소한의 설정으로 사용할 수 있고 GitHub와의 통합이 뛰어나다. Cursor는 편집 경험 자체가 AI에 최적화되어 있어 코드 작성 속도가 빠르다. Claude Code는 터미널 기반으로 가장 높은 자율성을 가지며 복잡한 코드베이스 전체에 걸친 작업에 강하다.
자주 묻는 질문 (FAQ)
Copilot Chat을 사용하려면 어떤 구독이 필요한가?
GitHub Copilot Individual ($10/월), Business ($19/사용자/월), Enterprise ($39/사용자/월) 플랜 중 하나에 가입하면 된다. Copilot Chat은 모든 유료 플랜에 포함되어 있다. GitHub 학생 인증을 받은 경우 무료로 사용할 수 있으며, 오픈소스 관리자에게도 무료 액세스가 제공된다.
슬래시 명령과 자연어 프롬프트 중 어떤 것이 더 좋은가?
슬래시 명령은 반복적이고 정형화된 작업에서 일관된 결과를 보장한다. 자연어 프롬프트는 복잡하고 맥락이 많은 요청에 적합하다. 가장 효과적인 방법은 둘을 조합하는 것이다. 예를 들어 /fix로 작업 유형을 지정하고, 자연어로 구체적인 조건을 추가하는 방식이다.
컨텍스트 변수를 여러 개 동시에 사용할 수 있는가?
가능하다. #file:a.ts #file:b.ts #selection처럼 여러 컨텍스트 변수를 하나의 프롬프트에 조합할 수 있다. 다만 전달하는 컨텍스트가 많아질수록 토큰 한도에 도달할 수 있으므로, 관련성 높은 컨텍스트만 선별적으로 포함하는 것이 좋다.
@workspace 쿼리가 느린 이유는 무엇인가?
@workspace는 프로젝트 전체를 검색하고 관련 파일을 선택하는 과정이 필요하기 때문에 일반 Chat보다 응답 시간이 길다. 프로젝트가 클수록 이 과정이 오래 걸릴 수 있다. 특정 파일을 알고 있다면 #file로 직접 지정하는 것이 더 빠르다.
Copilot Chat이 생성한 코드를 그대로 사용해도 되는가?
Copilot Chat의 제안은 항상 검토 후 사용해야 한다. AI가 생성한 코드는 구문적으로 올바르더라도 비즈니스 로직에 맞지 않거나, 보안 취약점을 포함하거나, 프로젝트 컨벤션에 어긋날 수 있다. 특히 인증, 결제, 데이터 삭제 등 민감한 영역의 코드는 반드시 수동 리뷰를 거쳐야 한다.
Chat 히스토리가 유지되는 범위는 어디까지인가?
Copilot Chat의 대화 히스토리는 해당 Chat 세션 내에서 유지된다. VS Code를 닫으면 히스토리가 사라지므로, 중요한 응답은 별도로 저장해두는 것이 좋다. 새로운 대화를 시작하면 이전 세션의 맥락은 포함되지 않는다.
에이전트 모드에서 파일 수정을 자동으로 적용할 수 있는가?
에이전트 모드에서 Copilot이 제안하는 파일 수정은 기본적으로 사용자 승인을 거친다. 각 변경사항에 대해 “Accept” 또는 “Discard”를 선택할 수 있으며, diff 뷰로 변경 내용을 확인한 후 결정할 수 있다. 이는 의도치 않은 코드 변경을 방지하기 위한 안전장치다.
Copilot Chat에서 커스텀 명령을 만들 수 있는가?
VS Code의 .github/copilot-instructions.md 파일을 통해 프로젝트 수준의 커스텀 지시사항을 설정할 수 있다. 이 파일에 코딩 스타일, 프레임워크 규칙, 선호하는 패턴 등을 작성하면 Copilot Chat이 해당 지시사항을 자동으로 참고한다. 또한 VS Code 설정에서 github.copilot.chat.codeGeneration.instructions를 통해 코드 생성 관련 글로벌 지시사항을 추가할 수도 있다.