CodeRabbitCodeRabbitKorea User Group
블로그 목록으로
AI 코딩의 짧은 역사: Copilot에서 차세대 에이전트까지
AI 코딩코딩 에이전트코드레빗GitHub CopilotAI 개발 도구소프트웨어 엔지니어링LLM

AI 코딩의 짧은 역사: Copilot에서 차세대 에이전트까지

CodeRabbit Korea User Group·
원문 보기 →

해당 블로그는 David Kravets 원저자의 글 'A Very Brief History of AI Coding, From Copilot to Next-Gen Agents'를 번역한 것입니다. 더 나은 이해를 위해서 약간의 의역이 반영되었습니다.

AI 코딩 에이전트의 역사는 누구도 진지하게 "에이전트"라고 부르지 않던 시절부터 시작됩니다. 2017년, Attention Is All You Need 논문이 Transformer 아키텍처를 발표했고, 이것이 오늘날의 대규모 언어 모델(LLM)을 가능하게 만든 기반이 되었습니다.

2020년에는 CodeBERT가 자연어와 프로그래밍 언어를 하나의 사전 훈련된 시스템에서 함께 학습할 수 있음을 보여주며, 코드 검색이나 문서 생성 같은 작업의 가능성을 열었습니다.

이것들은 현대적 의미의 에이전트가 아니었습니다. 파일을 열거나, 테스트를 실행하거나, 개발 환경 안에서 행동하지 못했습니다. 하지만 이후의 모든 것을 가능하게 만든 전제를 확립했습니다. 코드는 언어로 모델링할 수 있고, 언어 모델은 소프트웨어가 작성·설명·변환되는 방식의 유용한 표현을 학습할 수 있다는 것.

2021년까지 이 연구 흐름은 실용적이고 테스트 가능한 코드 생성으로 발전했습니다. Codex 논문은 공개된 코드로 파인튜닝한 GPT 모델을 HumanEval로 평가했습니다. GitHub은 2021년 6월 29일에 Copilot을 발표했고, Codex 논문은 7월 7일에 뒤따르며 Copilot이 별도의 프로덕션 버전 Codex로 구동된다고 명시했습니다. 이 디테일이 중요한 이유는 LLM이 연구 산출물에서 메인스트림 개발자 제품으로 넘어가는 다리를 놓은 순간이기 때문입니다.

Copilot이 AI 코딩을 '네이티브'하게 만들다

Copilot이 AI 코딩을 네이티브하게 만든 순간

Copilot이 등장했을 때, 단순히 "코드를 작성하는 것"보다 역사적으로 더 중요한 일을 해냈습니다. AI가 프로그래밍 행위 자체에 자연스럽게 녹아드는 느낌을 만든 것입니다. GitHub은 Copilot을 주변 코드의 컨텍스트를 파악해 전체 줄이나 함수를 에디터 안에서 바로 제안하는 AI 페어 프로그래머라고 설명했습니다.

지금은 평범하게 들리지만, 2021년에는 진정한 인터페이스 혁신이었습니다. 코드 생성이 연구 데모에서 벗어나 편집 화면 위에서 살기 시작했고, 추상적인 벤치마크 점수보다 레이턴시, 관련성, 개발자 신뢰가 더 중요해졌습니다.

Copilot이 단순한 자동완성 도구 이상인 이유가 바로 여기에 있습니다. 핵심은 모델의 품질만이 아니라, 소프트웨어를 작성하는 워크플로 안에 모델을 직접 배치한 제품 결정이었습니다.

이후 GitHub의 연구에 따르면 Copilot 사용자들은 작업을 더 빠르게 완료하고 정신적 노력을 절약했다고 보고했습니다. 즉, Copilot은 모델이 코드를 출력할 수 있다는 것만 보여준 게 아니라, AI 어시스턴스가 소프트웨어 개발 프로세스 자체를 바꿀 수 있음을 증명했습니다.

자동완성 이후, 의도의 시대가 왔다

자동완성에서 의도 기반 코딩으로의 전환

다음 중요한 신호는 2022년, 에디터가 아닌 곳에서 왔습니다. DeepMind의 AlphaCode는 어려운 프로그래밍 문제에는 우아한 한 번의 생성을 넘어서는 무언가가 필요하다는 것을 보여줬습니다. AlphaCode는 많은 후보 프로그램을 생성하고, 공격적으로 필터링하며, 표면적 유창함이 아닌 프로그램의 동작에 의존했습니다. 경쟁 프로그래밍에서 중간 수준의 참가자와 비슷한 성적을 거뒀습니다.

역사적으로 AlphaCode가 중요한 이유는, 이후 코딩 에이전트들이 끊임없이 의존하게 될 원칙을 미리 보여줬기 때문입니다. 어려운 소프트웨어 과제는 언어 문제가 아니라 탐색 문제인 경우가 많다는 것.

같은 해 말, ChatGPT가 모델과의 대화형 상호작용을 대중화했고, InstructGPT는 이미 그것이 왜 중요한지 보여줬습니다. 텍스트를 단순히 이어가는 모델보다, 사용자의 의도를 따르도록 튜닝된 모델이 훨씬 유용하다는 사실.

2023년 3월, GitHub Copilot X가 이 변화를 소프트웨어 개발에 직접 가져왔습니다. 채팅, PR 지원, 문서 도움말, GPT-4 통합을 갖추면서, 개발자와 기계 사이의 관계가 바뀌었습니다. 더 이상 올바른 자동완성이 나타나기를 기다릴 필요가 없었습니다.

원하는 것을 설명하고, 리팩토링을 요청하고, 테스트를 작성해 달라고 하고, 낯선 코드를 설명해 달라고 할 수 있게 된 것입니다.

대화만으로는 부족했다, 어시스턴트는 레포를 봐야 했다

레포지토리 컨텍스트 인식

AI 코딩이 대화형이 되자마자 새로운 병목이 나타났습니다. 바로 컨텍스트. 채팅은 프로젝트에 대해 얼마나 잘 검색할 수 있느냐에 달려 있었습니다. GitHub의 레포지토리 인덱싱 문서가 이 전환을 명확하게 보여줍니다.

인덱싱이 백그라운드에서 실행되고, 인덱스가 생성되면 Copilot Chat이 GitHub과 VS Code에서 레포지토리에 대한 질문에 답할 수 있게 되었습니다. 이것이 AI 코딩이 "똑똑한 낯선 사람"처럼 행동하는 것을 멈추고, 적어도 코드베이스를 읽어본 "동료"처럼 행동하기 시작한 순간입니다.

동시에, 오픈소스 코드 모델들이 프로그래머의 실제 편집 방식에 더 직접적으로 적응하기 시작했습니다. SantaCoder는 fill-in-the-middle(중간 채우기) 생성을 강조했고, StarCoder는 더 넓은 언어 지원과 더 긴 컨텍스트로 오픈 모델의 한계를 밀어붙였습니다. Code Llama는 인필링과 더 큰 입력 윈도우를 강조했습니다.

이런 디테일이 중요한 이유는 실제 개발자는 빈 페이지에서 왼쪽에서 오른쪽으로 쓰는 경우가 거의 없기 때문입니다. 삽입하고, 패치하고, 리팩토링하고, 스텁을 만들고, 기존 시스템 안에서 수리합니다. 훈련 목표가 소프트웨어 작업의 실제 역학에 맞춰지기 시작한 것입니다.

에이전트란 행동할 수 있는 모델이다

에이전트의 행동 능력

여기서부터 "에이전트"의 현대적 의미가 결정화됩니다. 코딩 모델이 코딩 에이전트가 되려면 그럴듯한 코드를 생성하는 것 이상을 해야 합니다. 파일을 검사하고, 도구를 호출하고, 명령을 실행하고, 실패를 관찰하고, 계속 진행해야 합니다.

ReAct 논문은 추론(reasoning)과 행동(action)을 교차하는 깔끔한 개념적 템플릿을 제시했고, OpenAI의 function calling은 도구 사용을 제품과 API 패턴으로 실용화했습니다. 이 둘은 함께 분야를 수동적 생성에서 환경과의 폐쇄 루프 상호작용으로 전환시켰습니다.

이 아이디어는 빠르게 구체화되었습니다. SWE-agent 논문의 저자들은 언어 모델 에이전트에게 레포지토리를 탐색하고, 파일을 편집하고, 프로그램을 실행하기 위한 자체적인 "에이전트-컴퓨터 인터페이스"가 필요하다고 주장했습니다.

Devin은 샌드박스 컴퓨팅 환경 안에 셸, 에디터, 브라우저를 패키징했습니다. OpenHands는 같은 테제를 로컬, 터미널, 또는 CI/CD 워크플로에서 실행할 수 있는 더 개방적이고 조합 가능한 스택으로 구현했습니다. 모든 경우에서 핵심 돌파구는 더 나은 코드 생성이 아니었습니다. 행동을 취하고, 결과를 검사하고, 다시 시도하는 능력이었습니다.

벤치마크가 함수 대신 실제 작업을 요구하기 시작했다

벤치마크의 진화

벤치마크는 이 역사를 축소판으로 보여줍니다. 2021년, HumanEval은 모델이 docstring에서 올바른 함수를 합성할 수 있는지 측정했습니다. 2023년까지 SWE-bench 논문의 저자들은 시스템이 실제 레포지토리의 실제 GitHub 이슈를 해결할 수 있는지 물었습니다. 이 전환은 엄청난 것입니다.

분야는 모델이 능숙해 보이는 코드를 생성할 수 있는지 묻는 것을 멈추고, 시스템이 실제 제약 조건 하에서 소프트웨어 작업을 완료할 수 있는지 묻기 시작했습니다.

그리고 기준은 다시 올라갔습니다. SWE-bench Verified는 더 신뢰할 수 있는 평가를 위해 사람이 검증한 하위 집합을 도입했습니다. LiveCodeBench는 오염 없는 평가에 집중하며 자기 수리, 코드 실행, 테스트 출력 예측까지 대상을 명시적으로 넓혔습니다. Terminal-Bench는 어렵고 현실적인 커맨드라인 작업의 성능을 측정하며 현실에 더 가까이 다가갔습니다.

평가는 그럴듯해 보이는 코드에 보상하는 것을 멈추고, 실제 작업을 완료할 수 있는 시스템에 보상하기 시작했습니다.

백그라운드 에이전트 시대

백그라운드 에이전트 시대

2025년까지 카테고리는 다시 한번 모습을 바꿨습니다. 2026년 초 기준으로, GitHub은 두 가지 상호보완적인 에이전트 경험을 제공합니다. VS Code에서는 구축하고 싶은 것을 설명하면 에이전트가 프로젝트 전반에 걸쳐 변경을 계획, 구현, 검증합니다. GitHub 자체에서는 Copilot 코딩 에이전트가 PR 워크플로의 일부로 백그라운드에서 작업합니다. 작업을 할당하면 변경하고, PR을 열고, 리뷰를 요청합니다.

어시스턴트는 더 이상 커서에서 기다릴 필요가 없었습니다. 에이전트가 작업을 맡아서 결과물을 가지고 돌아올 수 있게 된 것입니다.

다른 플랫폼들도 같은 패턴으로 수렴했습니다. OpenAI의 Codex 제품은 2025년에 더 긴 작업을 위한 소프트웨어 엔지니어링 에이전트로 재출시되었고, Google의 Jules는 GitHub과 통합되어 자율적으로 작업하며 보안 클라우드 VM 안에서 실행 가능한 코드와 테스트 결과가 포함된 PR을 열 수 있는 실험적 코딩 에이전트로 명시적으로 소개되었습니다. 클라우드 샌드박스가 백그라운드 코딩 에이전트의 자연스러운 서식지가 되었습니다.

터미널과 에디터가 컨트롤 플레인이 되다

터미널과 에디터가 컨트롤 플레인으로

로컬 인터페이스도 병행하여 진화했습니다. Anthropic의 Claude Code는 코드베이스를 읽고, 파일을 편집하고, 명령을 실행하고, 개발 도구와 통합하는 에이전틱 코딩 도구로 설명됩니다. GitHub Actions 워크플로를 통해 이슈와 PR의 @claude 멘션에 응답할 수 있으며, 작업별 특화된 서브에이전트도 지원합니다.

Codex CLI는 OpenAI의 코딩 에이전트를 터미널로 가져왔고, GitHub Copilot CLI는 더 높은 자율성 모드를 갖춘 터미널 네이티브 에이전트로 발전했으며, Google의 Gemini CLI는 Gemini Code Assist 에이전트 모드를 구동합니다. 터미널은 단순한 셸이 아니게 되었습니다. 에이전트를 위한 운영체제가 되었습니다.

AI 네이티브 에디터들은 같은 논리를 더 밀어붙였습니다. Cursor는 스스로를 AI 에디터이자 코딩 에이전트로 설명합니다. Cursor Agent는 복잡한 작업을 완료하고, 터미널 명령을 실행하고, 코드를 편집할 수 있으며, Cloud Agent는 원격으로 실행되고, Automations는 일정이나 이벤트에 따라 에이전트 작업을 트리거할 수 있습니다.

Windsurf의 Cascade는 기획, 코드 편집, 메모리, 워크플로를 결합합니다. 에디터는 더 이상 단순히 인간이 코드를 작성하는 곳이 아닙니다. 인간이 에이전트를 감독하고, 방향을 조정하고, 협업하는 조정 레이어가 되었습니다.

인스트럭션과 통합이 인프라가 되다

인스트럭션과 통합 인프라

에이전트가 행동할 수 있게 되자, 조직들은 새로운 문제를 발견했습니다. 에이전트가 우리 팀처럼 행동하게 하려면 어떻게 해야 하는가? 이것이 인스트럭션 파일과 상호운용성 프로토콜이 핵심이 된 이유입니다.

Anthropic은 2024년 말에 AI 애플리케이션이 외부 도구와 데이터 소스에 연결하기 위한 오픈 표준인 MCP(Model Context Protocol)를 발표했습니다. 동시에, AGENTS.md 같은 레포지토리 인스트럭션 파일은 코딩 에이전트에게 설정 단계, 테스트 명령, 아키텍처 가이드, 리뷰 기대치를 찾을 수 있는 예측 가능한 장소를 제공했습니다.

OpenAI의 문서에 따르면 Codex는 작업을 시작하기 전에 AGENTS.md 파일을 읽습니다. Anthropic의 CLAUDE.md 파일과 자동 메모리는 Claude에게 지속적인 프로젝트 컨텍스트를 제공합니다. GitHub은 레포지토리와 조직 수준의 커스텀 인스트럭션을 지원하고, Cursor는 지속적인 Rules를 노출합니다.

프롬프트 엔지니어링이 인프라에 가까운 무언가가 된 것입니다.

이것이 역사적으로 중요한 이유는 또 다른 개념적 전환을 표시하기 때문입니다. 초기 Copilot 시대에 프롬프트는 대부분 일시적이었습니다 — 주석, 함수 이름, 커서 위치. 에이전트 시대에는 지속적인 인스트럭션이 일시적인 요청만큼이나 중요합니다.

팀은 이제 설정 명령, 테스트 규칙, 코드 스타일, 에스컬레이션 경로, 리뷰 기준을 레포지토리와 함께 이동하는 파일에 인코딩합니다. 이것은 "다음 줄을 예측해라"와는 매우 다른 세계입니다. 새로운 팀원에게 운영 매뉴얼을 건네주는 것에 훨씬 가깝습니다.

이 역사가 실제로 보여주는 것

이 역사를 가장 깔끔하게 설명하는 방법은 자동완성이 더 똑똑해졌다는 것이 아니라, 소프트웨어 엔지니어링이 기계가 운용할 수 있는 레이어들로 체계적으로 분해되었다는 것입니다. 먼저 코드 모델이 왔습니다. 그다음 인라인 생성. 그다음 대화. 그다음 코드베이스 인식. 그다음 도구 사용. 그다음 백그라운드 실행. 그다음 지속적 메모리. 그다음 리뷰와 검증 레이어. 각각의 돌파구는 이전 것이 만든 병목을 해결했습니다.

우리는 기계에게 코드를 예측하는 것을 가르치는 것에서 시작했습니다. 현재 시점에서 우리는 목표를 받아 시스템을 탐색하고 작동하는 변경 사항을 만들어내는 기계를 중심으로 소프트웨어 엔지니어링을 재구성하는 단계에 있습니다.


AI 코드 리뷰가 어떻게 이 흐름에 부합하는지 직접 확인해 보고 싶다면, CodeRabbit에서 무료로 시작해 보세요.