1편에서 셋업했고, 2편에서 크레딧 구조를 파악했습니다. 이제 실제로 Copilot을 어떻게 쓰는지 — 채팅 3가지 모드, GitHub 이슈를 PR로 자동 완성하는 Coding Agent, 그리고 내 프로젝트에 맞게 AI를 튜닝하는 방법까지 다 씁니다. 그대로 따라하면 됩니다.
핵심 요약
→ Chat 모드 3가지: Ask(질문) / Edit(파일 수정) / Agent(자율 실행) — 드롭다운 하나로 전환
→ Ask: 코드 건드리지 않고 설명, 제안만 → 크레딧 소비 가장 적음
→ Edit: 선택한 파일들 직접 수정 → 멀티파일 리팩토링에 최적
→ Agent: 계획 → 파일 수정 → 터미널 명령 → 에러 확인 → 반복 → 자율 실행
→ Coding Agent (Cloud Agent): GitHub 이슈 할당 → 백그라운드에서 PR 자동 생성
→ copilot-instructions.md: .github/ 폴더에 두면 모든 채팅에 적용되는 프로젝트 규칙
→ 슬래시 명령어: /explain, /fix, /tests, /docs — 긴 프롬프트 없이 바로 실행
→ @ 컨텍스트: #file, #codebase, #selection — 원하는 범위 정확히 지정
→ Agent 모드는 모든 유료 플랜에서 사용 가능 (Free는 제한)
→ Coding Agent는 샌드박스 VM에서 실행 — 실수로 main 브랜치 건드릴 걱정 없음
실전 1 — Chat 패널 열고 모드 전환하는 법
Chat 패널 여는 방법
방법 A: Ctrl+Alt+I (Windows/Linux) / Ctrl+Cmd+I (Mac)
방법 B: VS Code 좌측 사이드바 → 말풍선 아이콘(Copilot Chat) 클릭
방법 C: 상태바 Copilot 아이콘 클릭 → "Open Chat"
모드 드롭다운 위치
Chat 패널 하단 입력창 왼쪽에 드롭다운 있음
기본값: Ask
클릭하면: Ask / Edit / Agent 선택 가능
실전 2 — Ask 모드: 코드 건드리지 않고 답 받기
언제 써야 하나
✅ Ask 모드가 맞는 경우:
- "이 코드가 뭐 하는 건지 설명해줘"
- "이 에러 왜 나는 거야"
- "이 함수 개선할 방법 있어?"
- 코드를 직접 수정하기 전에 방향 잡고 싶을 때
❌ Ask 모드로 하면 안 되는 경우:
- "이 파일 전체 리팩토링해줘" → Edit 쓰기
- "테스트 파일 만들고 실행해봐" → Agent 쓰기
슬래시 명령어로 빠르게 실행
채팅창에 / 치면 사용 가능한 명령어 목록 나옵니다:
명령어 동작 크레딧
| /explain | 선택 코드 설명 | 낮음 |
| /fix | 버그 찾아서 수정 제안 | 낮음 |
| /tests | 단위 테스트 생성 | 중간 |
| /docs | 문서 주석 생성 | 낮음 |
| /new | 새 프로젝트 파일 스캐폴딩 | 중간 |
실전 예시 1: 코드 설명
# 이런 코드가 있다고 할 때
def process_data(items):
return {k: v for d in items for k, v in d.items()
if not k.startswith('_')}
코드 드래그 선택 → Chat 창에 입력:
/explain
Copilot 응답:
이 함수는 딕셔너리 리스트를 받아서 하나의 딕셔너리로 병합합니다.
- items: 딕셔너리들의 리스트
- 각 딕셔너리의 키-값 쌍을 순회하며 새 딕셔너리에 추가
- '_'로 시작하는 키는 제외 (프라이빗 필드 필터링)
- 중복 키가 있으면 마지막 값이 유지됩니다
실전 예시 2: 에러 설명
터미널에서 에러 났을 때, 에러 메시지 복붙 후:
TypeError: 'NoneType' object is not subscriptable
File "app.py", line 47, in get_user
return user['id']
이 에러 왜 나는 거야? 어디 고쳐야 해?
Copilot 응답:
user 변수가 None인 상태에서 ['id']로 접근하려 해서 생긴 에러입니다.
get_user() 함수가 아무것도 반환하지 않거나 None을 반환하고 있습니다.
수정 방법:
def get_user(user_id):
user = db.find(user_id)
if user is None:
return None # 또는 raise ValueError(f"User {user_id} not found")
return user['id']
# 컨텍스트로 파일/범위 지정
질문할 때 어떤 코드를 기준으로 얘기하는지 정확히 알려줄 수 있습니다:
#file:utils.py 에서 parse_date 함수가 UTC 기준인지 로컬 시간 기준인지 확인해줘
#codebase 전체에서 deprecated된 API 쓰는 곳 있어?
(코드 선택 후) #selection 이 부분 성능 병목이 될 수 있어?
실전 3 — Edit 모드: 파일 직접 수정
언제 써야 하나
✅ Edit 모드가 맞는 경우:
- 특정 파일(들) 수정이 목표일 때
- 멀티파일 리팩토링
- "이 파일에서 모든 var를 const/let으로 바꿔줘"
- Ask에서 방향 잡고 → Edit으로 실제 적용할 때
Edit 모드 실전 흐름
Step 1. 드롭다운 → Edit 선택
Step 2. 수정할 파일을 Working Set에 추가
채팅창 위의 "Add files..." 클릭
또는 파일 탐색기에서 파일 우클릭 → "Add to Copilot Edit"
또는 입력창에 #file:파일명 입력
Step 3. 원하는 작업 입력
예시 1: 단순 변환
var 키워드를 전부 const 또는 let으로 바꿔줘.
재할당되는 변수는 let, 아니면 const.
예시 2: 기능 추가
user.js에 이메일 유효성 검사 함수 추가해줘.
RFC 5322 표준 따르고, 테스트 케이스도 같이 작성해줘.
예시 3: 멀티파일 리팩토링
api/users.js와 api/products.js에서
중복된 에러 핸들링 코드를 utils/errorHandler.js로 추출해줘.
Step 4. 변경사항 검토 후 수락/거절
파일별로 diff 표시됨 (초록=추가, 빨강=삭제)
→ "Accept" 클릭: 변경 적용
→ "Discard" 클릭: 변경 취소
→ 부분 수락: 원하는 청크만 Accept/Discard
실전 4 — Agent 모드: AI가 스스로 계획하고 실행
언제 써야 하나
✅ Agent 모드가 맞는 경우:
- "로그인 기능 전체 만들어줘" (어떤 파일 건드릴지 AI가 판단)
- 코드 짜고 → 테스트 돌리고 → 에러 고치는 사이클
- 어떤 파일을 수정해야 할지 내가 모를 때
- 터미널 명령까지 자동으로 실행해야 할 때
❌ Agent 모드 안 써도 되는 경우:
- 파일 1~2개만 수정하면 됨 → Edit 더 빠름
- 간단한 질문 → Ask 충분
(Agent는 크레딧 소비가 제일 많음)
Agent 모드 실전: Express API 만들기
Step 1. 빈 폴더를 VS Code로 열기
mkdir my-api && cd my-api
code .
Step 2. Chat → Agent 모드 선택
Step 3. 프롬프트 입력:
Node.js Express로 간단한 TODO API 만들어줘.
요구사항:
- GET /todos - 전체 목록 조회
- POST /todos - 새 항목 추가
- DELETE /todos/:id - 항목 삭제
- 데이터는 메모리 배열로 저장 (DB 없이)
- 포트 3000
파일 구조, package.json, 실행 방법도 같이 만들어줘.
Agent가 하는 일 (자동으로):
1. 계획 수립
"package.json, index.js, routes/todos.js 생성하겠습니다"
2. 파일 생성
✓ package.json 생성
✓ index.js 생성
✓ routes/todos.js 생성
3. 터미널 명령 실행 (승인 필요)
"npm install 실행할까요?" → Run 클릭
4. 실행 확인
"npm start 실행해서 동작 확인할까요?" → Run 클릭
5. 에러 발생 시 자동 수정
에러 메시지 읽고 → 원인 파악 → 수정 → 재실행
중간에 방향 수정하기
Agent가 실행 중에도 프롬프트 추가 입력 가능:
(Agent 실행 중)
나: 잠깐, 에러 응답 형식을 { error: "메시지" } 형태로 통일해줘
→ Agent가 현재 작업에 반영해서 계속 진행
터미널 명령 승인/거절
Agent가 터미널 명령 실행할 때마다 확인창 나옵니다:
Copilot wants to run:
npm install express
[Run] [Don't run]
위험한 명령(rm, DROP TABLE 등)은 반드시 확인하고 클릭하세요.
실전 5 — Coding Agent: GitHub 이슈 → PR 자동 생성
VS Code 안 Agent 모드와 다릅니다. GitHub.com 위에서 클라우드 VM이 백그라운드로 실행하고 PR을 만들어줍니다. 내 컴퓨터와 무관하게 돌아갑니다.
언제 쓰나
✅ Coding Agent 최적:
- "#123 이슈 처리해줘" 하고 다른 일 하고 싶을 때
- 중저난이도 작업 (버그 수정, 테스트 추가, 문서화)
- 팀 프로젝트에서 이슈 백로그 소화할 때
❌ Coding Agent 부적합:
- 아키텍처 설계 같은 복잡한 판단
- 외부 서비스 연동 (샌드박스라 제한적)
- 실시간 인터랙션 필요한 작업
방법 A: GitHub 이슈에서 직접 할당
Step 1. github.com → 레포지토리 → Issues 탭
Step 2. 이슈 만들기 (또는 기존 이슈 열기)
제목: "로그인 실패 시 에러 메시지가 너무 모호함"
내용:
현재: "오류가 발생했습니다"
원하는 것: 이메일/비밀번호 오류를 구분해서 표시
파일 위치: src/auth/login.js
Step 3. 이슈 우측 "Assignees" 클릭
→ "Copilot" 검색 → 선택
Step 4. Copilot이 👀 이모지 반응 추가 = 작업 시작 신호
Step 5. 잠시 후 Pull Requests 탭 → 새 PR 자동 생성됨
Draft PR에 변경사항 커밋됨
방법 B: Chat에서 바로 요청
VS Code Chat 창에서:
@github 이 레포에서 TODO 주석 달린 곳 전부 찾아서
각각 이슈 만들고 구현해서 PR 열어줘
또는:
@github Open a pull request to add input validation
to the registration form in src/components/Register.jsx
PR 생성 후 할 일
Step 1. Pull Requests 탭 → Copilot이 만든 PR 클릭
Step 2. "Files changed" 탭에서 코드 리뷰
→ 문제 있으면 PR 댓글에 피드백 남기기:
"@copilot 여기에 null 체크 추가해줘"
→ Copilot이 추가 커밋으로 수정
Step 3. 만족하면 → "Merge pull request" 클릭
보안 보장 구조
Copilot이 만든 PR:
→ copilot/* 브랜치에만 작성 가능 (main 직접 수정 불가)
→ CI/CD는 사람이 Approve 후에만 실행
→ 기존 branch protection rules 그대로 적용
→ 작업 내용 전체 로그 공개 (투명성)
실전 6 — copilot-instructions.md: 내 프로젝트에 맞게 AI 튜닝
한번 설정해두면 그 레포에서 모든 Chat/Agent에 자동 적용됩니다. 매번 "TypeScript 써줘", "ESLint 규칙 지켜줘" 반복 안 해도 됩니다.
파일 만들기
# 프로젝트 루트에서
mkdir -p .github
touch .github/copilot-instructions.md
기본 구조 예시 (React + TypeScript 프로젝트)
# 프로젝트 Copilot 가이드
## 기술 스택
- React 19, TypeScript 5.5 (strict mode)
- Vite, TanStack Query, Tailwind CSS
- Vitest + React Testing Library
## 코딩 규칙
### TypeScript
- 모든 함수에 반환 타입 명시
- `any` 타입 사용 금지, `unknown` 사용
- interface보다 type 우선 사용
### React
- 함수형 컴포넌트만 사용 (클래스 컴포넌트 금지)
- Props는 별도 type으로 정의
- 상태는 useState, 전역은 Zustand 사용
### 네이밍
- 컴포넌트: PascalCase (UserProfile)
- 함수/변수: camelCase (getUserData)
- 상수: UPPER_SNAKE_CASE (MAX_RETRY_COUNT)
- 파일: kebab-case (user-profile.tsx)
## 에러 처리
- async 함수에는 반드시 try/catch 적용
- 에러 메시지는 한국어로 작성
- console.log 대신 logger 유틸 사용
## 테스트
- 새 컴포넌트 만들 때 테스트 파일 함께 생성
- 파일명: *.test.tsx
- describe/it 구조 사용
설정 확인 방법
VS Code Chat 창에서 아무 질문이나 보내기
→ 응답 하단 "References" 펼치기
→ "copilot-instructions.md" 파일이 보이면 적용된 것
경로별 다른 규칙 적용 (.instructions.md)
API 폴더와 UI 폴더에 다른 규칙이 필요하다면:
# API 전용 규칙
touch .github/api.instructions.md
---
applyTo: "src/api/**/*"
---
# API 개발 규칙
- RESTful 네이밍 규칙 준수
- 모든 엔드포인트에 입력값 유효성 검사
- HTTP 상태 코드 정확히 사용 (200/201/400/401/404/500)
- async/await + try/catch 필수
- 응답 형식: { data: ..., error: null } 또는 { data: null, error: "메시지" }
# 테스트 파일 전용 규칙
touch .github/tests.instructions.md
---
applyTo: "**/*.test.ts,**/*.spec.ts"
---
# 테스트 작성 규칙
- Arrange/Act/Assert 패턴 사용
- 테스트 설명은 한국어로 작성
- mock은 최소화, 실제 로직 테스트 우선
- 각 it() 블록은 하나의 동작만 검증
좋은 instructions.md 작성 팁
✅ 좋은 규칙 (구체적):
"모든 API 함수는 try/catch로 감싸고
catch 블록에서 logger.error(error) 호출할 것"
❌ 나쁜 규칙 (추상적):
"좋은 에러 처리를 사용할 것"
✅ 예시 포함:
"날짜는 ISO 8601 형식으로 저장:
예: 2026-06-01T12:00:00Z"
❌ 예시 없음:
"날짜 형식을 통일할 것"
실전 7 — 자주 쓰는 실전 프롬프트 모음
바로 복붙해서 쓸 수 있는 프롬프트들입니다.
코드 리뷰 요청
(파일 선택 후 Ask 모드)
이 코드 리뷰해줘. 다음 관점에서 봐줘:
1. 버그 가능성
2. 성능 문제
3. 가독성 개선 여지
4. 테스트 빠진 케이스
테스트 코드 생성
(함수 선택 후)
/tests
추가로 이런 케이스들도 포함해줘:
- 빈 입력값
- null/undefined
- 경계값 (최대/최소)
- 에러 케이스
레거시 코드 현대화
(파일 Working Set에 추가, Edit 모드)
이 파일을 현대적인 JavaScript로 업데이트해줘:
- var → const/let
- 콜백 → async/await
- 프로토타입 패턴 → 클래스 또는 함수형
- 변경 시 기존 동작 유지
버그 수정 (에러 로그 포함)
(관련 파일 Working Set에 추가, Agent 모드)
아래 에러가 발생합니다. 원인 찾아서 수정해줘.
에러:
[에러 메시지 전체 붙여넣기]
재현 방법:
1. /api/users 엔드포인트 호출
2. email 필드 없이 요청 전송
새 기능 추가
(Agent 모드)
기존 users API에 페이지네이션 추가해줘.
요구사항:
- GET /users?page=1&limit=10
- 응답: { data: [...], total: 100, page: 1, totalPages: 10 }
- 기존 GET /users 엔드포인트와 하위 호환 유지
- 테스트도 업데이트해줘
마무리
기능 쓰는 상황 크레딧 소비
| 인라인 Tab | 그냥 코드 치다가 | 무료 |
| Ask | 설명, 방향 파악 | 낮음 |
| Edit | 파일 수정, 리팩토링 | 중간 |
| Agent | 복잡한 전체 작업 | 높음 |
| Coding Agent | 이슈→PR 자동화 | 높음 |
| copilot-instructions | 한번 세팅 | 없음 |
처음엔 Ask → Edit 순서로 익히고, Agent는 어느 정도 감 잡힌 다음에 쓰는 게 좋습니다. Ask로 방향 잡고 Edit으로 실행하는 패턴이 크레딧 대비 효율이 제일 좋습니다.
4편에서는 비용 폭탄 실제 사례를 해부하고 — Pro $10으로 최대한 오래 버티는 전략, 모델 라우팅, $0 초과 지출 완전 차단 방법을 씁니다.
관련 글
- GitHub Copilot 완전가이드 2편 — AI Credits 과금 구조 완전 해부
- GitHub Copilot 완전가이드 3편 — Chat/Agent/Coding Agent 실전
'Copilot' 카테고리의 다른 글
| GitHub Copilot AI Credits 전환 완전 가이드 — 오늘부터 요금 체계 바뀐다 (0) | 2026.06.01 |
|---|---|
| GitHub Copilot 5편: vs Claude Code vs Kiro 완전 비교 — AI Credits 전환 이후 어떤 툴이 맞나 (0) | 2026.06.01 |
| GitHub Copilot 완전가이드 4편 — $39가 $902 되는 이유와 비용 폭탄 완전 방지법 (0) | 2026.06.01 |
| GitHub Copilot 완전가이드 2편 — AI Credits 완전 해부: 플랜별 크레딧, 모델 요금표, 초과 지출 막는 법 (0) | 2026.06.01 |
| GitHub Copilot 완전 가이드 1편 — 계정 생성부터 VS Code 설치, 첫 자동완성까지 30분 셋업 (0) | 2026.06.01 |