GitHub.com의 Copilot 코딩 에이전트에 대한 정보
Copilot 코딩 에이전트는 GitHub에 통합된 자율적이고 비동기식의 소프트웨어 개발 에이전트입니다. 에이전트는 이슈 또는 Copilot 채팅에서 작업을 선택하고 끌어오기 요청을 만든 다음, 설명에 대한 응답으로 끌어오기 요청을 반복할 수 있습니다.
Copilot 코딩 에이전트는 버그 수정, 증분 새 기능 구현, 프로토타입 작성, 설명서 및 코드베이스 유지 관리와 같은 ���업을 포함하여 설명 및 구성에 따라 맞춤형 변경 내용을 생성할 수 있습니다. 초기 끌어오기 요청을 만든 후 에이전트는 피드백 및 리뷰에 따라 사용자와 함께 반복할 수 있습니다.
작업을 수행하는 동안 에이전트는 코드를 변경하고 자동화된 테스트를 실행하고 Linter를 실행할 수 있는 자체 임시 개발 환경에 액세���할 수 있습니다.
에이전트는 다양한 프로그래밍 언어에서 평가되었으며, 영어가 기본 지원 언어로 제공됩니다.
에이전트는 자연어 처리와 기계 학습의 조합을 사용하여 작업을 이해하고 코드베이스를 변경하여 작업을 완료합니다. 이 프로세스는 여러 단계로 나눌 수 있습니다.
프롬프트 처리
이슈, 끌어오기 요청 설명 또는 Copilot 채팅 메시지를 통해 Copilot에 제공된 작업은 다른 관련 있는 컨텍스트 정보와 결합하여 프롬프트를 형성합니다. 해당 프롬프트는 처리를 위해 대규모 언어 모델로 전송됩니다. 입력은 일반 자연어, 코드 조각 또는 이미지 형식을 사용할 수 있습니다.
언어 모델 분석
그런 다음 프롬프트는 대량의 데이터 본문으로 학습된 신경망인 대규모 언어 모델을 통과합니다. 언어 모델은 입력 프롬프트를 분석하여 작업에 대한 에이전트 이유를 돕고 필요한 도구를 활용합니다.
응답 생성
언어 모델은 프롬프트에 대한 분석을 기반으로 응답을 생성합니다. 이 응답은 자연어 제안 및 코드 제안의 양식을 취할 수 있습니다.
출력 형식
에이전트가 첫 번째 실행을 완료하면 끌어오기 요청 설명을 변경 내용으로 업데이트합니다. 에이전트는 액세스할 수 없는 리소스에 대한 추가 정보를 포함하고 해결 단계에 대한 제안을 제공할 수 있습니다.
끌어오기 요청 내에서 설명을 달거나 에이전트(@copilot
)를 명시적으로 언급하여 에이전트에 피드백을 제공할 수 있습니다. 그러면 에이전트가 추가 분석을 위해 해당 피드백을 언어 모델에 다시 제출합니다. 에이전트가 피드백에 따라 변경 내용을 완료하면 에이전트가 업데이트된 변경 내용으로 사용자의 설명에 응답합니다.
Copilot은 작업 해결을 위한 가장 관련성이 큰 솔루션을 제공하기 위한 것입니다. 그러나 항상 원하는 답변을 제공하지는 않을 수도 있습니다. 사용자는 Copilot에서 생성된 응답을 검토하고 검증하여 정확하고 적절한지 확인할 책임이 있습니다.
또한 제품 개발 프로세스의 일환으로, GitHub는 레드 팀(테스트)을 구성하여 에이전트의 안전성을 이해하고 개선합니다.
성능을 향상시키는 방법에 대한 자세한 내용은 아래의 Copilot 코딩 에이전트에 대한 성능 향상을 참조하세요.
Copilot 코딩 에이전트 사용 사례
다음을 포함하지만 이에 국한되지는 않는 다양한 시나리오에서 작업을 Copilot에 위임할 수 있습니다.
- 코드베이스 유지 관리: 보안 관련 수정, 종속성 업그레이드 및 대상 리팩터링 처리.
- 설명서: 새 설명서 업데이트 및 만들기.
- 기능 개발: 증분 기능 요청 구현.
- 테스트 적용 범위 개선: 품질 관리를 위한 추가 테스트 도구 모음 개발
- 새 프로젝트 프로토타입 생성: 새로운 개념 개발.
Copilot 코딩 에이전트에 대한 성능 향상
Copilot 코딩 에이전트는 다양한 작업을 지원할 수 있습니다. 성능을 개선하고 에이전트의 일부 제한 사항을 해결하기 위해 채택할 수 있는 다양한 방법이 있습니다.
제한 사항에 대한 자세한 내용은 아래의 Copilot 코딩 에이전트의 제한 사항을 참조하세요.
작업의 범위가 올바른지 확인
Copilot 코딩 에이전트는 끌어오기 요청을 생성할 때 프롬프트를 키 컨텍스트로 활용합니다. 에이전트에 할당하는 프롬프트가 명확하고 범위가 잘 지정될수록 더 나은 결과를 얻을 수 있습니다. 이상적인 이슈는 다음 사항을 포함합니다.
- 해결해야 할 문제 또는 필요한 작업에 대한 명확한 설명
- 좋은 솔루션의 모습에 대한 완전한 수용 조건(예: 단위 테스트가 있어야 하나요?).
- 변경해야 하는 파일에 대한 힌트 또는 포인터.
추가 컨텍스트를 사용하여 환경 사용자 지정
Copilot 코딩 에이전트는 제안된 변경 내용을 생성할 때 프롬프트, 설명 및 리포지토리의 코드를 컨텍스트로 활용합니다. Copilot의 성능을 개선하려면 에이전트가 프로젝트를 더 잘 이해하고 변경 내용을 빌드, 테스트 및 유효성 검사하는 방법을 더 잘 이해할 수 있도록 사용자 지정 Copilot 지침을 구현해 보세요. 자세한 내용은 Best practices for using Copilot to work on tasks의 "리포지토리에 사용자 지정 지침 추가"를 참조하세요.
Copilot 코딩 에이전트에 대한 기타 사용자 지정에 대한 정보는 다음을 참조하세요.
- Customizing the development environment for Copilot coding agent
- Customizing or disabling the firewall for Copilot coding agent
- MCP(모델 컨텍스트 프로토콜)를 사용하여 Copilot 코딩 에이전트 확장
Copilot 코딩 에이전트를 대체제가 아닌 도구로 사용
Copilot 코딩 에이전트는 코드 및 설명서를 생성하기 위한 강력한 도구가 될 수 있지만, 이것을 사람의 프로그래밍을 대체하는 것이 아니라 도구로 사용하는 것이 중요합니다. 항상 에이전트에서 생성된 콘텐츠를 검토하고 테스트하여 요구 사항을 충족하고 병합 전에 오류 또는 보안 문제가 없음을 확인해야 합니다.
보안 코딩 및 코드 검토 관행 사용
Copilot 코딩 에이전트가 구문상 유요한 코드를 생성할 수 있지만, 항상 안전하지는 않을 수 있습니다. 하드 코드된 암호나 SQL 삽입 취약점을 피하고 코드 검토 모범 사례를 따르는 등 항상 보안 코딩 모범 사례를 따라 에이전트의 제한 사항을 해결해야 합니다. 적합성을 보장하기 위한 예방 조치를 포함하여 독립적으로 시작되지 않은 자료를 사용하는 모든 코드와 마찬가지로 항상 동일한 예방 조치를 취해야 합니다. 여기에는 엄격한 테스트, IP 스캔, 보안 취약점 확인 등이 포함됩니다.
피드백 제공
GitHub.com의 Copilot 코딩 에이전트에 문제가 있거나 제한 사항이 있는 경우 각 에이전트 응답 아래의 엄지 손가락 아래 아이콘을 클릭하여 피드백을 제공하는 것이 좋습니다. 이를 통해 개발자가 도구를 개선하고 우려 사항이나 한계를 해결하는 데 도움이 될 수 있습니다. 또한 커뮤니티 토론 포럼에서 ���드백을 제공할 수 있습니다.
최신 소식을 받아보세요.
Copilot 코딩 에이전트는 새로운 기술이며 시간이 지남에 따라 발전할 가능성이 높습니다. 새로운 보안 위험이나 모범 사례에 대한 최신 정보를 파악해야 합니다.
Copilot 코딩 에이전트에 대한 보안 조치
기본적으로 Copilot 코딩 에이전트는 데이터 및 코드베이스의 보안을 보장하기 위해 몇 가지 완화책을 통해 빌드되었습니다. 완화책이 존재하지만, 에이전트의 제한 사항와 이것이 코드에 미치는 영향을 이해하면서 보안 모범 사례를 계속 구현해야 합니다.
권한 있는 에스컬레이션 방지
Copilot 코딩 에이전트는 리포지토리 쓰기 권한이 있는 사용자의 상호 작용(예: 에이전트 할당 또는 설명 삽입)에만 응답합니다.
Copilot 코딩 에이전트에서 발생한 끌어오기 요청에 대한 응답으로 트리거되는 GitHub Actions 워크플로를 실행하려면 리포지토리 쓰기 권한이 있는 사용자의 승인이 필요합니다.
에이전트는 GitHub.com에 표시되지 않는 숨겨진 문자를 필터링합니다. 그렇지 않으면 사용자가 설명이나 이슈 본문 내용에서 유해한 지침을 숨길 수 있습니다. 이것은 탈옥과 같은 위험으로부터 보호합니다.
Copilot의 사용 권한 제한
Copilot은 끌어오기 요청을 만드는 리포지토리에만 액세스할 수 있으며 다른 리포지토리에는 액세스할 수 없습니다.
해당 권한은 제한되므로 코드를 푸시하고 다른 리소스를 읽을 수 있습니다. 기본 제공 보호는 Copilot이 이름이 copilot/
으로 시작하는 분기로만 푸시할 수 있음을 의미합니다. 즉, Copilot은 기본 분기(예: main
)로 푸시할 수 없습니다.
Copilot 코딩 에이전트는 런타임 중에 작업 조직 또는 리포지토리 비밀 또는 변수에 액세스할 수 없습니다. 특별히 copilot
환경에 추가된 비밀 및 변수만 에이전트에 전달됩니다.
데이터 유출 방지
기본적으로, Copilot 코딩 에이전트에는 방화벽이 활성화되어 실수로 또는 악의적인 사용자 입력으로 인해 코드 또는 기타 중요한 데이터의 반출을 방지합니다.
자세한 내용은 Customizing or disabling the firewall for Copilot coding agent을(를) 참조하세요.
Copilot 코딩 에이전트의 제한 사항
코드베이스 및 입력 데이터와 같은 요인에 따라 Copilot 코딩 에이전트를 사용할 때 성능 수준이 달라질 수 있습니다. 다음 정보는 Copilot 코딩 에이전트에 적용되는 시스템 제한 사항 및 성능에 대한 주요 개념을 이해하는 데 도움이 되도록 고안되었습니다.
제한된 범위
Copilot 코딩 에이전트에서 사용되는 언어 모델은 대규모 코드 본문에 대해 학습되었지만 범위가 제한되어 있어 특정 코드 구조나 모호한 프로그래밍 언어를 처리하지 못할 수도 있습니다. 각 언어의 경우 해당 언어에 대한 학습 데이터의 양과 다양성에 따라 제공되는 제안의 품질이 달라질 수 있습니다.
잠재적 편향성
대규모 언어 모델에서 수집된 Copilot 코딩 에이전트의 학습 데이터 및 컨텍스트에 사용되는 언어 모델에는 도구에서 영속될 수 있는 편견과 오류가 포함될 수 있습니다. 또한 Copilot 코딩 에이전트는 특정 프로그래밍 언어 또는 코딩 스타일에 편향되어 있어 차선책 또는 불완전한 제안으로 이어질 수 있습니다.
보안 위험
Copilot 코딩 에이전트는 리포지토리 내 이슈 또는 설명에 기반하여 코드 및 자연어를 생성하며, 여기서 신중하게 사용하지 않을 경우 중요한 정보 또는 취약성을 노출���킬 수 있습니다. 병합하기 전에 에이전트에서 생성한 모든 출력을 철저히 검토해야 합니다.
부정확한 코드
GitHub Copilot에서 공개적으로 사용 가능한 코드와 일치하는 제안을 할 수 있도록 하는 기능은 현재 Copilot 코딩 에이전트에는 지원되지 않습니다. 자세한 내용은 GitHub Copilot 제안과 일치하는 공용 코드 찾기을(를) 참조하세요.
Copilot 코딩 에이전트는 유효해 보이지만 실제로는 의미론적 또는 구문론적으로 올바르지 않거나 개발자의 의도를 정확하게 반영하지 못할 수 있는 코드를 생성할 수 있습니다.
부정확한 코드의 위험을 줄이려면 특히 중요하거나 민감한 애플리케이션을 다룰 때 생성된 코드를 신중하게 검토하고 테스트해야 합니다. 또한 생성된 코드가 모범 사례 및 디자인 패턴을 준수하고 코드베이스의 전체 아키텍처 및 스타일에 맞는지 확인해야 합니다.
법률 및 규정 고려 사항
사용자는 모든 산업 또는 시나리오에서 사용하기에 적합하지 않을 수 있는 AI 서비스 및 솔루션을 사용할 때 잠재적인 특정 법률 및 규정 의무를 평가해야 합니다. 또한 AI 서비스 또는 솔루션은 해당 서비스 약관 및 관련 행동 강령에서 금지된 방식으로 설계되지 않았으며 사용할 수 없습니다.