이 문서에서는 GitHub Copilot 현대화 에이전트와 통신하고, 기본 설정을 가르치고, 실수를 수정하고, 작업을 검토하고, 여러 세션에서 업그레이드를 관리하는 방법을 설명합니다.
GitHub Copilot 현대화는 질문을 하고, 전략을 제안하고, 피드백에 적응하고, 시간이 지남에 따라 기본 설정에서 학습하는 대화형 협력자입니다. 최상의 결과를 얻으려면 에이전트 컨텍스트를 제공합니다. 목표, 제약 조건 및 기본 설정에 대해 더 많이 알수록 성능이 향상됩니다.
❌ Vague — the agent has to guess
"Upgrade my project"
✅ Specific — the agent knows exactly what you need
"Upgrade the WebAPI project to .NET 10. We need to keep backward
compatibility with our existing REST clients, and we can't change the
public API surface."
팁 (조언)
모든 컨텍스트를 미리 제공할 필요는 없습니다. 에이전트는 추가 정보가 필요할 때 후속 질문을 합니다.
대화 시작
- VS Code, Visual Studio 또는 Copilot CLI에서 Copilot Chat 엽니다.
- 에이전트 선택기에서 GitHub Copilot의 .NET 현대화 에이전트를 선택하거나, 환경에 맞는 올바른 에이전트를 입력합니다: VS Code 및 Copilot CLI에서는
@modernize-dotnet를 사용하고, Visual Studio에서는@Modernize를 사용합니다. - 자연어로 수행하려는 작업을 설명합니다.
무슨 말을 해야 할지
자연어는 작동합니다. 다음 예제를 사용해 보세요.
| 원하는 항목 | 무슨 말을 해야 할지 |
|---|---|
| 전체 솔루션 업그레이드 | |
| 특정 기술 업그레이드 | "EF6에서 EF Core로 업그레이드하는 데 도움이 됩니다." |
| 사용 가능한 항목 보기 | "사용할 수 있는 시나리오는 무엇인가요?" |
| 먼저 하나의 프로젝트 업그레이드 | "먼저 API 프로젝트를 업그레이드한 다음 공유 라이브러리를 업그레이드합니다." |
| 현재 상태 이해 | "내 업그레이드의 현재 상태는 무엇인가요?" |
다음에 수행되는 내용
대화를 시작하면 에이전트는 작업 영역에서 기존 업그레이드 작업을 확인합니다.
- 기존 작업이 없는 경우 에이전트는 일반적으로 솔루션 평가부터 시작하여 새로 시작합니다.
- 진행 중인 기존 작업이 있는 경우 에이전트는 중단한 위치를 선택하고 "완료된 8개 작업 중 3개"와 같은 현재 상태를 표시합니다.
흐름 모드 선택
에이전트는 입력에 대해 에이전트가 일시 중지되는 양을 제어하는 두 가지 흐름 모드를 지원합니다.
자동 모드
자동 모드에서 에이전트는 각 경계에서 승인을 위해 일시 중지하지 않고 단계(평가, 계획, 실행)를 진행합니다. 에이전트는 여전히 중요한 장애물에 부딪히거나, 사용자만 내릴 수 있는 결정을 필요로 할 때 멈춥니다.
숙련된 사용자, 간단한 업그레이드 및 소규모 솔루션에 가장 적합합니다.
안내 모드
단계별 모드에서 에이전트는 검토를 위해 각 단계 경계에서 일시 중지됩니다.
- 평가 후 계획을 만들기 전에.
- 계획 후 작업을 실행하기 전에
- 복잡한 작업을 세분화하기 전에.
- 여러 유효한 접근 방식이 있는 주요 의사 결정 지점.
처음 사용하는 사용자, 복잡한 솔루션 및 프로세스를 알아보려는 경우에 가장 적합합니다.
세션 중간에 모드 전환
언제든지 모드 간을 자유롭게 전환합니다.
| 다음으로 전환하려면 | 무슨 말을 해야 할지 |
|---|---|
| 안내 모드 | "일시 중지" 또는 "안내 모드로 전환" |
| 자동 모드 | "계속" 또는 "계속" |
팁 (조언)
첫 번째 업그레이드에 대한 안내 모드로 시작합니다. 안내 모드는 에이전트가 어떻게 생각하고 어떤 결정을 내리는지 배우는 가장 좋은 방법입니다. 편안해지면 자동 모드로 전환합니다.
에이전트에게 교육
에이전트가 사용자에게서 학습합니다. 에이전트는 수정 사항, 기본 설정 및 지침을 업그레이드 상태 폴더에 저장합니다 scenario-instructions.md . 이러한 기본 설정은 세션 간에 유지됩니다.
올바른 실수
에이전트가 동의하지 않는 결정을 내릴 때 에이전트에 다음을 알립니다.
You: "Actually, don't use Newtonsoft.Json — we're standardizing on System.Text.Json."
Agent: "Got it. I'll use System.Text.Json for all serialization going forward.
I've saved this as a preference."
에이전트가 scenario-instructions.md을(를) 업데이트하고, 이후 세션에서도 다시는 동일한 선택을 하지 않습니다.
환경 설정
에이전트에게 사전에 당신이 선호하는 작업 방식을 적극적으로 알려주세요.
You: "Always use bottom-up strategy for this solution — upgrade leaf projects first."
Agent: "Noted. I'll use a bottom-up upgrade strategy, starting with projects that
have no internal dependencies and working up to the top-level projects."
작업별 지침 제공
경우에 따라 기본 설정이 특정 작업에만 적용됩니다.
You: "For this task, skip the test validation — the tests are broken for a known
reason and we'll fix them separately."
Agent: "Understood. I'll skip test validation for this task only."
에이전트가 저장하는 내용
파일은 scenario-instructions.md 명확한 섹션들로 구성되어 있습니다.
| 섹션 | 포함된 내용 | 예시 |
|---|---|---|
| 사용자 기본 설정(기술) | 패키지 선택, 프레임워크 결정, 코딩 패턴 | "Newtonsoft가 아닌 System.Text.Json 사용" |
| 사용자 기본 설정(실행 스타일) | 에이전트 작동 방식 | "항상 상향식 전략 사용" |
| 주요 의사 결정 로그 | 중요한 결정 및 그 근거 | "Dapper 대신 EF Core를 선택했습니다..." |
| 작업당 사용자 지정 지침 | 작업별 설정 재정의 | "작업 3.1에 대한 테스트 건너뛰기" |
팁 (조언)
또한 scenario-instructions.md을(를) 직접 편집하십시오. 이것은 .github/upgrades/{scenarioId}/의 Markdown 파일입니다. 에이전트는 모든 상호 작용이 시작될 때 파일을 읽습니다.
세션 중간 수정
에이전트는 방해를 잘 처리하며 자신의 위치나 수행 중인 작업을 잃지 않습니다.
일시 중지 및 검토
You: "Wait, stop — let me review that change first."
Agent: "Here's what I was about to do: [describes planned changes].
Would you like me to proceed, or adjust the approach?"
Redirect
You: "Actually, let's do Project B before Project A — it has fewer dependencies."
Agent: "Good call. I'll reorder the tasks and start with Project B."
취소
You: "That last change broke the build. Can we revert it?"
Agent: "I'll revert the last commit (abc1234: 'Migrate auth middleware').
Reverting now."
표준 Git 명령으로 커밋을 직접 되돌리세요. 에이전트는 각 커밋이 변경된 내용을 정확하게 알 수 있도록 명확하고 설명적인 커밋 메시지를 작성합니다.
중간 흐름에서 질문하기
질문을 하는 것은 워크플로를 탈선하지 않습니다.
You: "Why did you choose to migrate the data layer before the API controllers?"
Agent: "The API controllers depend on the data layer interfaces. By migrating
the data layer first, we avoid temporary compilation errors in the
controllers and can validate each layer independently."
에이전트의 작업 검토
에이전트는 작업을 검토하는 여러 가지 방법을 제공합니다.
소스 제어
에이전트는 별도 브랜치에서 작업할 것을 제안하며 작업 중에 변경 내용을 커밋합니다. 표준 Git 명령을 사용하여 에이전트의 변경 내용을 검토합니다.
git log --oneline -10
git diff main..<agent-branch>
워크플로 파일
에이전트는 완전한 가시성을 제공하는 여러 파일을 .github/upgrades/{scenarioId}/에 유지 관리합니다.
| 파일 | 표시되는 내용 |
|---|---|
tasks.md |
모든 작업, 상태 표시기(✅ 완료, 진행 중, 🔄 ⬜ 보류 중) 및 진행률 표시줄의 시각적 진행률 개요 |
execution-log.md |
에이전트가 수행한 모든 작업, 시기 및 발생한 작업에 대한 전체 시간순 감사 내역 |
assessment.md |
종속성, 호환성이 손상되는 변경 및 업그레이드 복잡성을 포함한 솔루션의 초기 분석 |
scenario-instructions.md |
기본 설정 및 에이전트의 학습된 결정 |
tasks/{taskId}/progress-details.md |
작업별 세부 정보: 발생한 빌드 오류, 해결 방법, 테스트 결과 및 결정 |
중단된 작업 다시 시작
채팅을 닫거나 IDE를 종료합니다. 에이전트는 이 상황을 원활하게 처리합니다.
에이전트는 모든 상태를 .github/upgrades/ 리포지토리 내에 저장합니다. 새 대화를 시작하면 에이전트가 현재 상태를 확인하고 즉시 다음을 알 수 있습니다.
- 어떤 시나리오가 활성 상태입니까?
- 완료, 진행 중 또는 보류 중인 작업
- 존재하는 아티팩트(평가, 계획, 작업 파일)
- 작업이 부실하게 표시되는지 여부(이전 세션의 상태에서 중단 🔄 됨).
만료된 작업 탐지
이전 세션에서 작업이 진행 중인 경우 에이전트는 작업이 부실할 수 있음을 인식하고 계속, 다시 시작 또는 건너뛸 수 있는 옵션을 제공합니다.
팁 (조언)
상태는 리포지토리 내에 있으므로 .github/upgrades/ 코드와 함께 이동합니다. 원격 저장소로 분기를 푸시하고 다른 컴퓨터에서 가져오면 에이전트가 작업을 계속 이어갑니다.
여러 세션에서 작업
20개 프로젝트 솔루션, 복잡한 프레임워크 업그레이드 또는 다단계 현대화와 같은 대규모 업그레이드는 종종 며칠 또는 몇 주 동안 여러 세션에 걸쳐 있습니다. 에이전트는 다중 세션 작업을 자연스럽게 처리합니다.
-
영구 상태: 모든 것이
.github/upgrades/안에 있습니다. 손실할 메모리 내 상태가 없습니다. - 세션 독립성: 각 채팅 세션은 독립적입니다. 에이전트는 매번 상태 파일에서 컨텍스트를 다시 구성합니다.
- Cross-IDE 지원: VS Code에서 시작, Visual Studio 또는 Copilot CLI에서 계속합니다. 상태 폴더는 공유 계약입니다.
다중 세션 작업을 위한 팁
- 상태 폴더를 커밋합니다.
.github/upgrades/을(를) 브랜치에 푸시하여 폴더를 백업하고 팀에 표시되도록 만드세요. - 세션 간에 검토합니다.
tasks.md와execution-log.md를 읽어 마지막 세션에서 있었던 일을 되새기세요. - 학습할 때 기본 설정을 업데이트합니다. 테스트 중 에이전트의 접근 방식을 변경해야 하는 항목을 발견하면 다음 세션 시작 시 에이전트에 알릴 수 있습니다.
도움말 요청
에이전트가 무엇을 할 수 있는지 또는 어디에 서 있는지 확실하지 않습니까? 물어:
| 알고 싶은 내용 | 무슨 말을 해야 할지 |
|---|---|
| 사용 가능한 업그레이드 시나리오 | "당신은 무엇을 할 수 있습니까?" 또는 "사용할 수 있는 시나리오는 무엇인가요?" |
| 현재 진행률 | "현재 상태는 무엇인가요?" 또는 "진행 상황 표시" |
| 업그레이드 계획 | "계획 설명" 또는 "작업 안내" |
| 평가 세부 정보 | "평가 결과를 보여줘" 또는 "평가 결과는 어떠한가요?" |
| 사용 가능한 기술 | "당신은 어떤 기술을 가지고 있습니까?" 또는 "기술 나열" |
| 특정 결정 | "Y보다 X를 선택한 이유는 무엇인가요?" |
| 위험 또는 우려 사항 | "이 업그레이드의 위험은 무엇인가요?" |
효과적인 커뮤니케이션
상호 작용의 품질은 결과의 품질에 직접적인 영향을 줍니다.
범위에 대해 구체적으로 설명
"Data.Access 및 Data.Models 프로젝트만 .NET 10" 업그레이드하면 에이전트에 명확한 포커스가 제공됩니다. "모든 업그레이드" 가 작동하지만 에이전트는 주문 및 우선 순위에 대해 자체적으로 더 많은 결정을 내립니다.
컨텍스트 공유
에이전트는 비즈니스 제약 조건을 공유하지 않는 한 사용자의 비즈니스 제약 조건을 알지 못합니다.
- "Azure App Service 11월에 .NET 8개 지원을 중단했기 때문에 업그레이드 중입니다."
- "트래픽이 많은 프로덕션 서비스이며 API 응답에서 동작이 전혀 변경되지 않습니다."
제약 조건 표현
에이전트에게 수행해서는 안 되는 작업 및 수행해야 하는 작업을 모두 알려줍니다.
- "공용 API 표면을 변경하지 마세요. 외부 소비자가 있습니다."
- "아직 Newtonsoft.Json을 업그레이드할 수 없습니다. 공유 계약을 소유한 팀은 업그레이드되지 않았습니다."
- "별도로 다시 작성되는 레거시 보고 모듈을 건드리지 마세요."
피드백 제공
긍정적인 피드백은 수정만큼 도움이 되며 에이전트가 올바른 궤도에 있는지 확인합니다.
- "업그레이드가 멋지게 보입니다. 다른 리포지토리 프로젝트에 대해 동일한 접근 방식을 수행합니다."
- "작동하지만 이 코드베이스의 속성 주입보다 생성자 주입을 선호합니다."
빠른 참조
| 상황 | 무슨 말을 해야 할지 |
|---|---|
| 새 업그레이드 시작 | |
| 이전 작업 다시 시작 | "계속" 또는 "상태는 무엇인가요?" |
| 안내 모드로 전환 | "일시 중지" 또는 "안내 모드로 전환" |
| 자동 모드로 전환 | "계속" 또는 "묻지 않고 계속" |
| 결정 수정 | "실제로 Y 대신 X 사용" |
| 선호 설정 | "이 솔루션에서는 항상 X를 하세요." |
| 변경 내용 검토 | "변경한 내용 표시" 또는 Git 로그 확인 |
| 변경 취소 | "마지막 변경 내용 되돌리기" |
| 이유를 묻습니다. | "왜 그 방법을 선택했나요?" |
| 작업 건너뛰기 | "지금은 이 작업을 건너뛰세요." |
| 도움받기 | "당신은 무엇을 할 수 있습니까?" |
관련 콘텐츠
.NET