백그라운드 코딩 에이전트
- 10.1 코파일럿에서 자율 에이전트로
- 10.2 주요 백그라운드 에이전트
- 10.3 에이전트의 작동 방식
- 10.4 도전과 한계
- 10.5 에이전트 시대의 개발자
AI 코딩 도구의 다음 단계가 이미 시작됐어 — 백그라운드에서 자율적으로 작업하는 코딩 에이전트. 개발자가 프롬프트를 주고 기다리는 게 아니라, 에이전트가 알아서 계획을 세우고, 코드를 쓰고, 테스트하고, PR을 올리는 세상이지.
AI 코딩 도구의 진화 과정을 단계별로 보면:
1세대: 자동완성 (Autocomplete) GitHub Copilot 초기 버전이야. 커서 위치에서 다음 줄을 예측해서 제안하지. 개발자가 Tab을 누르면 수용, 무시하면 패스. 개발자가 완전한 주도권을 가지고 있었어.
2세대: 채팅 기반 보조 (Chat-based Assistance) Copilot Chat, ChatGPT, Claude가 여기야. "이 함수 만들어줘"라고 대화하면 코드를 생성해줘. 복붙은 개발자가 직접 해야 했지. 맥락 전달도 수동이었어.
3세대: 인라인 에이전트 (Inline Agent) Cursor의 Composer, Claude Code가 여기. 파일 시스템에 직접 접근해서 코드를 수정하지. 여러 파일을 동시에 변경 가능해. 하지만 개발자가 실시간으로 감독하면서 사용하는 방식이야.
4세대: 백그라운드 에이전트 (Background Agent) Devin, GitHub Copilot Workspace, Claude Code의 백그라운드 모드. 이슈를 할당하면 에이전트가 비동기적으로 작업해서 결과를 PR로 올려. 개발자는 다른 일을 하다가 결과를 리뷰하면 되지.
이 전환의 핵심은 동기에서 비동기로의 전환이야. 1~3세대는 개발자가 옆에 앉아서 지켜봐야 했지만, 4세대는 등을 돌려도 알아서 일하거든. 이게 생산성 패러다임을 바꾸지.
2024~2025년에 등장한 주요 코딩 에이전트들을 보면:
Devin (Cognition): 가장 먼저 "AI 소프트웨어 엔지니어"를 표방한 에이전트야. 자체 개발 환경을 가지고 있어서 코드 작성, 실행, 디버깅을 자율적으로 수행하지. 초기에는 과장된 마케팅으로 논란이 있었지만, 특정 유형의 작업(의존성 업데이트, 간단한 버그 수정 등)에서는 효과적이야.
GitHub Copilot 에이전트 모드: GitHub Issues에 에이전트를 할당하면 브랜치를 만들고 코드를 작성해서 PR을 올려. GitHub 생태계와의 통합이 강점이지. 이슈 설명이 곧 프롬프트가 되는 거야.
Claude Code 백그라운드 모드: Claude Code를 백그라운드에서 실행시키면 파일 시스템 접근, 터미널 명령 실행, Git 작업을 자율적으로 수행해. 터미널 기반이라 커스터마이징이 유연하지.
Cursor Background Agent: Cursor 에디터에서 백그라운드로 작업을 수행하는 에이전트야. 에디터와의 긴밀한 통합이 특징이지.
이 에이전트들은 아직 "시니어 개발자를 대체"하는 수준은 아니야. 하지만 "주니어 개발자에게 시킬 만한 일"은 꽤 잘 해내. 보일러플레이트 생성, 테스트 추가, 문서 업데이트, 의존성 업그레이드 같은 것.
백그라운드 에이전트가 내부적으로 어떻게 동작하는지 보면:
계획(Planning): 이슈나 요청을 분석해서 작업 계획을 세워. "이 버그를 고치려면 어떤 파일을 수정해야 하고, 어떤 순서로 작업해야 하는지"를 먼저 결정하지.
탐색(Exploration): 코드베이스를 읽으면서 관련 파일을 찾고, 기존 패턴을 파악해. grep, 파일 읽기, AST 분석 같은 도구를 사용하지.
구현(Implementation): 실제 코드를 작성하고 파일을 수정해. 여러 파일을 동시에 수정하기도 하고.
검증(Verification): 작성한 코드를 빌드하고, 테스트를 실행해서 동작을 확인해. 테스트가 실패하면 수정 후 재시도하지.
반복(Iteration): 검증에서 문제가 발견되면 다시 계획으로 돌아가서 접근 방식을 수정해. 이 루프를 여러 번 돌 수 있어.
이 과정이 핵심적으로 의존하는 건 도구 사용 능력이야. 코드만 생성하는 게 아니라, 터미널 명령을 실행하고, 파일을 읽고, 테스트를 돌리는 등 개발 환경과 상호작용하는 능력이 에이전트의 성패를 가르거든.
현재 백그라운드 에이전트의 주요 한계도 있어:
컨텍스트 한계: 대규모 코드베이스 전체를 이해하기 어려워. 수천 개 파일, 복잡한 의존성 그래프를 가진 프로젝트에서는 에이전트가 관련 코드를 찾지 못하거나, 잘못된 가정을 하는 경우가 많지.
무한 루프: 에이전트가 버그를 수정하다가 새 버그를 만들고, 그걸 수정하다가 또 새 버그를 만드는 루프에 빠지는 경우야. 시간과 비용이 낭비되지.
과잉 수정: 간단한 버그를 수정하라고 했는데 관련 없는 파일까지 대규모로 리팩터링하는 경우. 변경 범위를 통제하기 어려워.
비결정성: 같은 이슈를 주고 에이전트를 두 번 돌리면 완전히 다른 결과가 나올 수 있어. 어떤 때는 완벽하게 해결하고, 어떤 때는 엉뚱한 방향으로 가지.
비용: 복잡한 작업을 시키면 토큰 사용량이 급증해. 에이전트가 탐색-실행-재시도 루프를 많이 돌수록 비용도 올라가고.
보안 위험: 에이전트에게 터미널 실행 권한을 주면 악의적 코드 실행 가능성이 있어. 샌드박스 환경에서 실행하는 것이 중요하지.
가장 궁금한 질문에 답해야 해 — 에이전트가 코드를 다 짜주면 개발자는 뭘 하는가?
- 이슈를 잘 쓰는 사람 — 에이전트가 이해할 수 있게 이슈를 명확하고 구체적으로 작성하는 능력. 이건 2장의 프롬프트 엔지니어링이 확장된 거야
- 결과를 리뷰하는 사람 — 에이전트가 올린 PR을 검토하고, 품질을 판단하고, 승인하거나 수정을 요청하는 사람
- 아키텍처를 잡는 사람 — 에이전트는 개별 이슈는 풀지만, 전체 시스템의 방향을 잡지는 못해. 큰 그림을 그리는 건 인간의 몫이지
- 에이전트를 관리하는 사람 — 어떤 이슈를 에이전트에게 맡기고, 어떤 건 직접 할지 판단하는 메타 작업
개발자의 역할이 코드 작성자에서 코드 감독자로 전환되고 있어. 이건 불안한 변화일 수 있지만, 결국 더 가치 있는 일에 집중할 수 있게 해주는 거야.
정리
10장에서 기억할 거 세 가지:
- AI 코딩 도구는 자동완성에서 자율 에이전트로 진화하고 있어. 핵심 전환은 동기에서 비동기로, 감독 하의 작업에서 자율 작업으로야
- 현재 에이전트는 "주니어 개발자 수준의 작업"을 잘 해내. 보일러플레이트, 테스트 추가, 단순 버그 수정 같은 것. 시니어 수준의 판단은 아직 못 하지
- 개발자의 역할은 코드 작성자에서 코드 감독자로 전환되고 있어. 이슈를 잘 쓰고, PR을 잘 리뷰하고, 아키텍처를 잡는 능력이 핵심이 되는 거야