title: "ChatDev 논문 정리: LLM 멀티에이전트는 소프트웨어를 어떻게 개발하는가"
description: "ChatDev: Communicative Agents for Software Development 논문의 핵심 아이디어, 실험 결과, Figure 해설을 정리한 문서"
tags:
- LLM
- Multi-Agent
- Software Engineering
- ChatDev
ChatDev 논문 정리
논문명: ChatDev: Communicative Agents for Software Development
버전: arXiv:2307.07924v5 (2024-06-05)
한 줄 요약
ChatDev는 소프트웨어 개발을 “한 번에 코드 생성” 문제로 다루지 않고, 역할이 나뉜 LLM 에이전트들이 설계 → 코딩 → 테스트를 대화로 연결하며 점진적으로 완성하는 협업 문제로 재구성한 프레임워크다.
이 논문의 핵심은 “더 큰 모델이 코드를 더 잘 쓴다”가 아니라, 언어를 협업 인터페이스로 삼아 여러 에이전트가 역할 분담과 피드백 루프를 통해 개발 품질을 높인다는 점이다.
논문 한눈에 보기
| 항목 | 내용 |
|---|---|
| 문제의식 | 기존 소프트웨어 개발 연구는 설계·코딩·테스트를 각각 따로 다뤄서 흐름이 단절되기 쉽다. |
| 제안 | 다양한 역할의 LLM 에이전트를 두고, 대화 기반 협업으로 여러 단계를 연결하는 ChatDev 프레임워크를 제안한다. |
| 핵심 메커니즘 | Chat Chain(무엇을 어떤 순서로 대화할지) + Communicative Dehallucination(답하기 전에 더 구체적인 정보를 묻는 환각 완화 패턴) |
| 주요 역할 | CEO, CTO, Programmer, Reviewer, Tester |
| 개발 단계 | Design → Coding(코드 작성/보완) → Testing(코드 리뷰/시스템 테스트) |
| 핵심 성과 | ChatDev는 특히 실행 가능성(Executability)에서 큰 폭으로 개선된다. |
| 한계 | 프로토타입 수준에는 유의미하지만, 복잡한 실서비스 개발에는 아직 한계가 크다. |
1. 문제의식: 왜 ChatDev가 필요한가
논문이 겨냥하는 문제는 명확하다. 소프트웨어 개발은 원래 여러 전문가가 협력하는 일인데, 기존 LLM 기반 접근은 설계/코딩/테스트 같은 단계를 따로 떼어 최적화하는 경우가 많았다. 그 결과:
- 단계별 기술이 서로 이어지지 않고,
- 각 단계가 서로 다른 가정과 입력 형식에 의존하며,
- 전체 개발 흐름이 파편화되기 쉽다.
논문은 이 문제를 “언어(language)”를 공통 인터페이스로 삼아 해결하려고 한다. 즉, 여러 역할의 에이전트가 자연어와 프로그래밍 언어를 오가며 협업하면, 개발 단계 전체를 하나의 연속적인 프로세스로 묶을 수 있다는 주장이다.
2. 핵심 아이디어
2.1 Chat Chain: 개발 단계를 대화 흐름으로 쪼개기
ChatDev는 소프트웨어 개발을 다음처럼 쪼갠다.
- Design
- Coding
- Code Writing
- Code Complete
- Testing
- Code Review
- System Testing
각 서브태스크마다 두 에이전트가 붙는다.
- Instructor: 방향을 제시하는 역할
- Assistant: 지시를 받아 해결안을 만드는 역할
중요한 점은, 이들이 한 번만 답하고 끝나는 것이 아니라 여러 턴의 대화를 통해 합의된 결과를 만든다는 점이다. 그리고 이전 단계의 결과가 다음 단계로 넘어가면서 개발이 이어진다.
2.2 Communicative Dehallucination: 답변 전에 더 구체적으로 묻기
논문이 특히 강조하는 장치다. 일반적인 패턴은 다음과 같다.
- 지시 → 답변
그런데 ChatDev는 코드 품질을 올리기 위해 중간에 한 단계를 더 넣는다.
- 지시 → 되묻기(구체화 요청) → 추가 지시 → 정교한 답변
즉, Assistant가 바로 대답하지 않고 “외부 의존성 이름이 정확히 무엇인지”, “어떤 클래스/모듈을 써야 하는지” 같은 세부사항을 먼저 물어본다. 논문은 이 패턴이 코드 누락, 실행 불가, 요구사항 불일치 같은 코딩 환각(coding hallucination)을 줄이는 데 도움이 된다고 본다.
2.3 역할 프롬프팅과 메모리 설계
논문은 단순히 역할 이름만 붙인 것이 아니라, 각 에이전트에 대해 시스템 프롬프트 수준에서 역할·목표·제약·종료 조건을 부여한다. 또 메모리를 두 층으로 나눈다.
- Short-term memory: 현재 단계 안에서의 대화 기록
- Long-term memory: 이전 단계에서 추출된 핵심 결과만 다음 단계로 전달
이 설계의 포인트는, 전체 대화 기록을 모두 들고 다니지 않고 “중간 결과만 이어 붙이는 방식”으로 컨텍스트 길이 문제를 줄였다는 점이다.
3. Figure로 이해하는 논문
아래 이미지는 논문 원본 PDF에서 figure 영역만 따로 crop해서 정리했다.
Figure 1. ChatDev의 전체 컨셉 (논문 p.1)

해설
이 그림은 ChatDev를 하나의 “소프트웨어 개발 사무실”처럼 시각화한 개념도다. 설계(Designing), 코딩(Coding), 테스트(Testing) 구역이 나뉘어 있고, 각 역할의 에이전트가 서로 다른 업무를 맡아 협업한다.
읽는 포인트
- 이 그림은 실험 결과를 보여주는 도표라기보다, 논문의 문제 정의와 세계관을 보여준다.
- 즉, ChatDev의 본질은 “한 모델이 다 하는 코딩”이 아니라 역할 기반 협업 시스템이라는 점을 먼저 강조한다.
Figure 2. Chat Chain 워크플로 (논문 p.3)

해설
이 그림은 ChatDev의 실제 워크플로를 가장 잘 보여준다.
Design → Coding → Testing의 큰 단계 아래에 세부 서브태스크가 있고, 각 서브태스크에서 Instructor와 Assistant가 상호작용한다. 그 결과물이 {task} → {ideas} → {code} → {code} ... 식으로 다음 단계로 넘어간다.
읽는 포인트
- 개발 과정이 단순 직렬 파이프라인이 아니라, 각 단계 내부에서 여러 턴의 대화를 거친다는 점이 중요하다.
- 논문은 복잡한 다자 토론 구조보다 두 에이전트의 짝(pair) 구조가 합의 형성에 더 단순하고 효율적이라고 본다.
- 이 Figure 하나만 이해해도 논문의 구조는 거의 다 이해한 셈이다.
Figure 3. 어떤 언어와 주제로 대화했는가 (논문 p.7)

해설
이 그림은 전체 대화를 세 가지 축으로 나눠 보여준다.
- 무슨 주제로 이야기했는가
- Target User 21.44%
- Data Management 20.55%
- UI & UX 19.23%
- 그 밖에 Customization, Performance, Integration 등
- 자연어 vs 프로그래밍 언어 비중
- Natural-Language 57.20%
- Programming-Language 42.80%
- 코딩 이후 단계에서 어디에 시간이 많이 쓰였는가
- System Testing 61.09%
- Code Review 18.53%
- Coding 10.19%
- Code Complete 10.19%
읽는 포인트
- 논문이 강조하는 메시지는 명확하다. 자연어는 설계에 유리하고, 프로그래밍 언어는 디버깅과 최적화에 유리하다.
- 특히 설계 단계에서는 “누가 쓸 것인지”, “데이터를 어떻게 다룰지”, “UI/UX를 어떻게 구성할지”가 대화의 중심이다.
- 반대로 구현 이후에는 테스트와 리뷰가 비중을 크게 차지한다. 즉, ChatDev는 생성보다 수정과 정련(refinement)에 더 많은 대화를 투자한다.
Figure 4. 리뷰 단계에서 문제 유형이 어떻게 바뀌는가 (논문 p.8)

해설
이 Figure는 Reviewer와 Programmer가 여러 턴의 코드 리뷰를 수행하면서, 문제 유형이 어떻게 이동하는지를 보여주는 Sankey 다이어그램이다.
논문에 따르면 리뷰 단계에서 가장 많이 등장하는 문제는 “Method Not Implemented”이며, 그 비중은 34.85%다.
읽는 포인트
- 리뷰에서 자주 잡히는 문제는 대체로 구현 누락, 모듈 import 누락, 코드 조각 미완성, 레이아웃 미구성 같은 종류다.
- 여러 차례 수정이 반복되면서 일부 문제는 다른 문제로 바뀌고, 최종적으로는 “No Further Suggestions” 상태로 수렴한다.
- 이 그림은 ChatDev가 단순히 코드를 생성하는 것이 아니라, 정적 리뷰 루프를 통해 결함을 줄여 간다는 점을 보여준다.
Figure 5. 테스트 단계에서 에러가 성공으로 수렴하는 흐름 (논문 p.9)

해설
이 Figure는 Tester와 Programmer가 컴파일/실행 피드백을 바탕으로 여러 턴의 테스트를 반복할 때, 에러가 어떻게 바뀌는지 보여준다.
논문이 보고한 가장 빈번한 에러는 ModuleNotFoundError(45.76%)이고, 그다음은 NameError와 ImportError(각각 15.25%)다.
읽는 포인트
- 테스트 단계의 핵심은, 많은 에러가 반복적으로 수정되면서 Success 상태로 수렴한다는 점이다.
- 자주 터지는 에러가 import 관련이라는 사실은, LLM이 전체 구조는 그럴듯하게 만들더라도 작은 의존성 디테일을 자주 놓친다는 점을 보여준다.
- 논문은 바로 이 지점에서 communicative dehallucination이 효과를 낸다고 주장한다.
4. 실험 설정
4.1 비교 대상
논문은 ChatDev를 다음 두 방법과 비교한다.
| 비교 대상 | 설명 |
|---|---|
| GPT-Engineer | 단일 에이전트 기반 접근 |
| MetaGPT | 역할 분담이 있는 멀티에이전트 프레임워크 |
4.2 데이터셋
논문은 SRDD(Software Requirement Description Dataset)를 구축해 사용한다.
총 1,200개의 소프트웨어 요구 프롬프트가 있으며, Education / Work / Life / Game / Creation의 5개 영역, 40개 하위 카테고리로 구성된다.
4.3 평가 지표
논문은 기능 단위 pass@k 대신, 전체 소프트웨어 수준의 품질을 평가하기 위해 다음 네 지표를 쓴다.
| 지표 | 의미 |
|---|---|
| Completeness | placeholder 없이 코드가 완결된 비율 |
| Executability | 컴파일/실행이 가능한 비율 |
| Consistency | 요구사항과 생성 코드의 의미적 일치도 |
| Quality | Completeness × Executability × Consistency |
해석 포인트
Quality가 곱셈 기반이라서, 세 지표 중 하나라도 크게 낮으면 전체 점수가 빠르게 떨어진다. 그래서 Executability 개선이 전체 Quality 상승에 매우 크게 작용한다.
5. 핵심 결과
5.1 메인 결과(Table 1)
| Method | Completeness | Executability | Consistency | Quality |
|---|---|---|---|---|
| GPT-Engineer | 0.5022 | 0.3583 | 0.7887 | 0.1419 |
| MetaGPT | 0.4834 | 0.4145 | 0.7601 | 0.1523 |
| ChatDev | 0.5600 | 0.8800 | 0.8021 | 0.3953 |
포인트
- ChatDev의 가장 인상적인 장점은 Executability 0.8800이다.
- MetaGPT 대비 Quality는 0.1523 → 0.3953으로 크게 상승했다.
즉, 논문이 정의한 종합 품질 기준에서 약 2.6배 수준의 개선이다. - GPT-Engineer와 비교해도 ChatDev는 단순히 “코드 양”이 아니라 실제로 돌아갈 가능성을 훨씬 더 높였다.
5.2 사람/GPT-4 선호도(Table 2)
논문은 사람 평가와 GPT-4 평가를 통해 pairwise 비교도 수행했다.
| 비교 | 평가자 | Baseline 선호 | ChatDev 선호 | Draw |
|---|---|---|---|---|
| GPT-Engineer vs ChatDev | GPT-4 | 22.50% | 77.08% | 0.42% |
| GPT-Engineer vs ChatDev | Human | 9.18% | 90.16% | 0.66% |
| MetaGPT vs ChatDev | GPT-4 | 37.50% | 57.08% | 5.42% |
| MetaGPT vs ChatDev | Human | 7.92% | 88.00% | 4.08% |
포인트
- 사람 평가에서 ChatDev가 매우 강하게 선호된다.
- 특히 MetaGPT와 비교해도 사람 기준으로 88%가 ChatDev를 더 낫다고 봤다는 점이 인상적이다.
5.3 비용과 트레이드오프(Table 3)
| Method | Duration(s) | #Tokens | #Files | #Lines |
|---|---|---|---|---|
| GPT-Engineer | 15.6 | 7,182.53 | 3.95 | 70.20 |
| MetaGPT | 154.0 | 29,278.65 | 4.42 | 153.30 |
| ChatDev | 148.21 | 22,949.45 | 4.39 | 144.35 |
포인트
- ChatDev는 단일 에이전트보다 느리고, 토큰도 더 많이 쓴다.
- 다만 MetaGPT보다는 토큰 사용량이 적고, 생성되는 파일 수·코드 라인 수는 비슷한 수준이다.
- 즉, ChatDev는 비용을 더 써서 품질을 얻는 접근으로 보는 것이 적절하다.
6. Ablation Study에서 꼭 봐야 할 점
| Variant | Completeness | Executability | Consistency | Quality |
|---|---|---|---|---|
| ChatDev | 0.5600 | 0.8800 | 0.8021 | 0.3953 |
| ≤Coding | 0.4100 | 0.7700 | 0.7958 | 0.2512 |
| ≤Complete | 0.6250 | 0.7400 | 0.7978 | 0.3690 |
| ≤Review | 0.5750 | 0.8100 | 0.7980 | 0.3717 |
| No CDH | 0.4700 | 0.8400 | 0.7983 | 0.3094 |
| No Roles | 0.5400 | 0.5800 | 0.7385 | 0.2212 |
해석
- Code Complete 단계를 넣으면 Completeness가 올라간다.
- Testing 단계는 Executability를 끌어올리는 데 핵심이다.
- Communicative Dehallucination(CDH)를 빼면 전반 성능이 떨어진다.
- 가장 큰 하락은 역할 제거(No Roles)에서 나타난다.
즉, 이 논문은 단순히 여러 에이전트를 쓰는 것보다 “어떤 역할을 부여하느냐”가 매우 중요하다는 점을 보여준다.
7. 이 논문에서 꼭 잡아야 할 핵심 포인트
포인트 1. ChatDev의 진짜 공헌은 “모델”보다 “프로세스”
논문의 중심은 특정 모델 성능 자랑이 아니다.
설계-구현-테스트를 역할 기반 대화로 묶는 프로세스 설계가 핵심이다.
포인트 2. 가장 큰 개선은 “실행 가능성”
코드를 길게 쓰는 것보다 중요한 것은 실제로 실행되느냐다.
ChatDev는 이 지점에서 큰 차이를 보여준다.
포인트 3. 자연어 대화가 설계를 돕고, 프로그래밍 언어 대화가 디버깅을 돕는다
이 논문은 자연어를 단순 요구사항 입력으로만 쓰지 않는다.
자연어는 설계 정교화에, 프로그래밍 언어는 수정·리뷰·테스트에 각각 강점이 있다고 본다.
포인트 4. 멀티에이전트의 힘은 “생성”보다 “수정 루프”에서 나온다
Figure 3~5를 보면 ChatDev는 초안 생성보다 리뷰와 테스트를 통해 점진적으로 수렴하는 구조에 더 가깝다.
포인트 5. 여전히 프로덕션 시스템보다는 프로토타입에 가깝다
논문 스스로도 인정하듯, 현재 수준은 복잡한 실서비스보다 프로토타이핑에 더 적합하다.
8. 한계와 비판적으로 읽을 부분
- 요구사항이 구체적이어야 한다
요구사항이 모호하면 결과도 단순하고 빈약해진다. - 평가가 아직 제한적이다
논문은 completeness, executability, consistency를 썼지만, 실제 소프트웨어 품질에는 보안성, 유지보수성, UX, 안정성도 중요하다. - 비용이 크다
여러 에이전트가 여러 턴을 주고받기 때문에 시간과 토큰 비용이 커진다. - 실제 현업 적용에는 추가 장치가 필요하다
외부 도구 통합, 테스트 자동화, 의존성 관리, 장기 메모리, 버전 관리 연동 같은 요소가 더 필요하다.
9. 좋은 문장
오프닝 요약
기존의 LLM 코딩 연구가 “잘 짜인 코드 한 번 뽑기”에 가까웠다면, ChatDev는 소프트웨어 개발을 여러 역할의 에이전트가 설계·구현·리뷰·테스트를 오가며 협업하는 과정으로 바꾼다. 이 논문의 흥미로운 지점은 더 큰 모델보다 더 좋은 협업 프로토콜이 성능 개선의 핵심이라는 점이다.
마무리 요약
ChatDev는 아직 복잡한 프로덕션 소프트웨어를 자동으로 만들어 주는 수준은 아니지만, LLM을 “한 명의 코더”가 아니라 “대화하는 개발팀”으로 다루면 성능이 얼마나 달라질 수 있는지를 꽤 설득력 있게 보여준다.
10. 결론
ChatDev를 한 문장으로 정리하면 다음과 같다.
소프트웨어 개발은 단일 응답 생성 문제가 아니라, 역할·대화·피드백 루프가 결합된 협업 문제다.
이 논문이 주는 가장 큰 시사점은, 앞으로의 LLM 기반 개발 시스템에서 중요한 것은 모델 하나의 능력만이 아니라 에이전트 간 커뮤니케이션 구조, 역할 설계, 그리고 수정 루프를 어떻게 짜느냐라는 점이다.
'AI 생성 글 정리 > agent' 카테고리의 다른 글
| A-RAG: 계층형 검색 인터페이스로 확장되는 Agentic RAG (0) | 2026.04.07 |
|---|---|
| Online SFT for LLM Reasoning - 보상 없이도 되는 Self-Tuning 정리 (0) | 2026.04.06 |
| LongRAG 논문 정리 (0) | 2026.04.06 |
| Flow Matching for Generative Modeling — 핵심 정리 (0) | 2026.04.06 |
| Meta-Harness 논문 핵심 정리 (0) | 2026.04.03 |