
【AI 에이전트 비교 실험】 #2 Codex CLI에 태스크 관리 앱을 만들게 하면 어떻게 될까
요약
Codex CLI를 활용해 태스크 관리 앱을 구현하는 비교 실험 결과를 분석합니다. Codex CLI는 사양에 대한 충실도와 백엔드 구현의 견실함이 뛰어나지만, 도구 조작 실수로 인한 자기 평가 오류와 상대적으로 느린 개발 속도가 한계로 나타났습니다.
핵심 포인트
- 사양서에 대한 높은 충실도와 백엔드 테스트 전원 통과
- FastAPI, SQLite, Vue CDN 기반의 견실한 코드 구현
- 도구 조작 실수(인코딩, 디렉토리 오류)로 인한 자기 평가 오진단 발생
- 상호작용 횟수가 적고 일괄 구현을 선호하는 경향
AI 에이전트에게 동일한 태스크 관리 앱을 구현하게 하여, 구현력·테스트 결과·자기 평가·리뷰 능력을 비교하는 실험을 진행했습니다.
이 기사에서는 그중 Codex CLI의 결과를 정리합니다. 결론부터 말하자면, Codex CLI는 '사양에 대한 충실도'와 '실측 기반의 리뷰'가 강한 반면, 자기 평가에서는 도구 조작 실수로 인한 오진단이 눈에 띄었습니다.
1. TL;DR
| 항목 | 결과 |
|---|---|
| 실험A 개발 시간 | 11분 |
| ... | |
| 실험A에서는 공통 테스트 24개를 최종적으로 모두 통과했습니다. 특히 백엔드 공통 테스트 18개는 셀렉터(Selector)나 테스트 측의 수정 없이 한 번에 통과하여, 사양서에 대한 충실도가 높은 결과를 보여주었습니다. |
반면 종합 스코어는 6개의 에이전트 중 6위입니다. 이는 구현이 망가졌기 때문이라기보다, 개발 시간 스코어가 오르지 않은 점과 UI 및 테스트 망라성 등의 정성 평가에서 상위권에 도달하지 못한 것이 주된 원인입니다.
또한, 자기 평가에서는 "README가 글자가 깨져 있다", "pytest가 실행에 실패했다"와 같은 잘못된 진단을 내렸습니다. 이는 단순한 과소평가가 아니라, PowerShell의 인코딩 지정 누락과 pytest 실행 디렉토리 오류로 인한 도구 조작 실수 유래의 오진단이었습니다.
2. 에이전트 개요
이번 대상은 Codex CLI입니다. CLI 상에서 지시를 내려, FastAPI + SQLite + Vue CDN 구성의 태스크 관리 앱을 구현하게 했습니다.
이용 모델명은 이번에 전달된 자료 내에 명시되어 있지 않습니다. 따라서 이 기사에서는 모델 고유의 성능으로서가 아니라, 어디까지나 이 실험 환경에서의 "Codex CLI"의 동작으로서 다룹니다.
비교 대상은 6개의 에이전트입니다.
| 에이전트 | 실험A 공통 테스트 | 실험A 개발 시간 | 실험A 상호작용 |
|---|---|---|---|
| Claude Code | 24/24 | 4분 | 18회 |
| ... | |||
| Codex CLI는 상호작용 횟수가 적은 타입이었습니다. 실험A에서는 3회, 실험B에서는 0회로 완료되었습니다. 대화를 거듭하며 다듬기보다는, 첫 지시부터 일괄적으로 구현을 진행하는 경향이 보입니다. |
3. 실험A 결과: 상세 사양을 전달했을 경우
실험A에서는 상세한 사양서를 전달하여 태스크 관리 앱을 만들게 했습니다.
| 항목 | 결과 |
|---|---|
| 개발 시간 | 11분 |
| ... |
코드의 특징
가장 눈에 띄는 점은 사양서에 대한 충실함입니다.
데이터 모델, API 경로(Path), 필드명 대응이 상당히 정확하며, 백엔드 공통 테스트 18개는 셀렉터 등의 수정 없이 모두 통과했습니다. 자료상으로는 이 조건에서 한 번에 전원 통과한 것은 Codex CLI뿐입니다.
구현상의 판단도 견실했습니다.
PUT을 exclude_unset에 의한 부분 업데이트로 구현 -
contextlib.closing으로 SQLite 연결을 명시적으로 close -
title이 공백뿐인 경우를 차단하는 유효성 검사(Validation)를 추가
- 삭제 확인은 브라우저 표준인
confirm()을 이용

실험A(상세 사양)의 구현 화면. 심플한 리스트형으로, 사양 읽기에 충실한 구현.
화려한 구성은 아니지만, 사양 읽기와 백엔드의 견실함에 치중한 구현입니다.
좋았던 점
좋았던 점은 구현이 테스트에 강했다는 것입니다.
공통 테스트는 최종적으로 24/24로 모두 통과했습니다. 실험 중에는 204 No Content 주변의 FastAPI/Starlette 기동 에러나, Playwright 테스트 원본 측의 결함도 발견되었으나, 조사 결과 Codex CLI 구현 자체의 결함이 아니라 환경 요인 또는 테스트 측의 문제로 처리되었습니다.
UI도 당초의 정적 리뷰보다는 좋은 평가를 받았습니다. 기한이 만료된 태스크 카드가 노란색 배경과 주황색 테두리로 표시되고, "기한 만료"가 빨간색 글자로 표시되는 등, 실제 화면에서 보면 시각적인 강조를 확인할 수 있었기 때문입니다.
아쉬운 점
반면, UI는 전체적으로 심플한 리스트형입니다. Antigravity 계열처럼 프론트엔드 행수가 1,000행을 넘는 화려한 구성과는 대조적이며, 외관의 풍부함 면에서는 상위권이 아닙니다.
또한, 종합 평가에서는 개발 시간 스코어가 오르지 않았습니다. 실험A의 개발 시간은 11분으로, 최속인 Claude Code와 Antigravity CLI의 4분에 비해 느립니다. 종합 스코어 68.6점으로 6개 에이전트 중 6위가 된 배경에는 이 시간 스코어의 차이가 크게 영향을 미쳤습니다.
4. 실험 B 결과: 최소 사양 + 플래닝 (Planning)의 경우
실험 B에서는 더 작은 사양부터 자유롭게 설계하도록 했습니다.
| 항목 | 결과 |
|---|---|
| 개발 시간 | 8분 |
| ... |
실험 A와 비교하면 상당히 간소한 구현이 되었습니다. 백엔드는 148줄로, 모든 에이전트 중에서도 가장 짧은 축에 속합니다. 데이터 모델도 completed: bool을 중심으로 한 심플한 설계였으며, 필터는 active / completed의 2진(binary) 값이었습니다.
plan.md에서는 드래그 앤 드롭 정렬, 사용자 인증, 다중 프로젝트 관리를 우선순위 낮음으로 명시하여 제외하고, 개인용 CRUD와 완료 관리에 집중했습니다. 이러한 판단 자체는 일관적입니다.

실험 B(최소 사양 + 플래닝)의 구현 화면. active/completed의 2진 필터만으로 기능을 최소한으로 압축한 구성.
하지만 단순함의 이면에 중대한 버그가 남았습니다.
PUT 부분 업데이트의 중대한 버그
실험 B의 구현에서는 TaskUpdate(TaskBase)의 상속으로 인해 title이 암묵적으로 필수(required)가 되어 있었습니다. 그 때문에 다음과 같은 부분 업데이트(partial update)가 422 에러로 거부됩니다.
{"priority": "high"}
공통 테스트에서는 이 문제로 인해 13 passed, 1 failed, 2 skipped 결과가 나왔습니다.
이 버그는 실험 E의 상호 코드 리뷰(mutual code review)에서도 지적되었으며, 실험 B의 공통 테스트에서 실기 검증을 통해 확정되었습니다. 실험 A에서는 부분 업데이트를 잘 처리했기 때문에, 동일한 Codex CLI라도 사양 조건과 설계의 자유도에 따라 결과가 달라진 사례라고 할 수 있습니다.
또 하나, 인간의 동작 확인 과정에서는 "신규 생성 시 완료된 초기 상태를 지정하는 UI가 있음에도 동작하지 않는다"는 문제도 발견되었습니다. 이는 공통 테스트나 자체 테스트에서는 검출되지 않았습니다.
5. 자기 평가 격차 (Self-evaluation Gap)
Codex CLI의 자기 평가 격차는 6개 에이전트 중에서도 눈에 띄었습니다.
| 실험 | 평균 차이 |
|---|---|
| 실험 A | -1.20 |
| 실험 B | -0.80 |
여기서 평균 차이는 ai_self - human입니다. 즉, Codex CLI는 인간의 평가보다 스스로를 더 낮게 평가했다는 의미입니다.
하지만 이를 단순히 "겸손하고 조심스러운 자기 평가"라고 해석하면 틀립니다.
자료상 Codex CLI가 낮게 평가한 주요 이유는 다음 두 가지입니다.
- PowerShell에서
Get-Content를 사용할 때-Encoding UTF8을 붙이지 않아, UTF-8 파일을 글자가 깨진(mojibake) 상태로 오인함 - pytest를 잘못된 디렉토리에서 실행하여, 실행 실패 또는
ModuleNotFoundError로 오인함
그 결과, 실험 A에서는 UI 완성도, 문서, 테스트 커버리지(test coverage)를 실제보다 낮게 평가했습니다. 실험 B에서도 README나 plan이 글자가 깨진 것으로 판단했으나, 인간이 Get-Content -Encoding UTF8로 확인했을 때는 글자 깨짐 현상이 존재하지 않았습니다.
즉, 이는 "자기 평가가 엄격하다"기보다는 검증 절차의 실수가 그대로 자기 평가에 반영된 케이스입니다. AI 에이전트의 자기 평가를 읽을 때는 평가 코멘트뿐만 아니라, 그 평가에 이르게 된 검증 절차도 확인할 필요가 있습니다.
6. 리뷰어로서의 실력
실험 E에서는 Codex CLI에게 다른 에이전트의 코드 리뷰를 맡겼습니다.
여기서 Codex CLI는 상당히 실증적이었습니다. 전체 5개의 타겟(target)에 대해 실제로 pytest를 실행하고, 합격 수를 실측한 뒤 리뷰를 진행했습니다. 정적인 코드 독해뿐만 아니라, 직접 실행하여 확인하는 자세가 일관되었습니다.
특히 중요했던 것은 target-3의 중대한 버그입니다.
Codex CLI는 PUT 부분 업데이트가 기능하지 않는 문제를 실제로 API를 호출하여 발견했습니다. {"priority":"high"}와 같이 title을 포함하지 않는 업데이트가 422 에러가 되는 문제로, 다른 리뷰어들이 놓쳤던 부분입니다.
실험 B의 리뷰에서도 모든 타겟에 대해 PUT 부분 업데이트 시의 null 처리라는 횡단적인 설계 결함(design blind spot)을 지적했습니다. 이는 6개 에이전트 모두에게 공통되는 구조적인 문제로 기록되었습니다.
한편, 실험 D의 타인 테스트 수정(other-person test correction)에서는 주의할 점도 있습니다. UI 테스트의 셀렉터(selector) 수정은 원활하여 5개 타겟(target) 모두에서 합격을 얻었으나, target-6에서는 DELETE의 기대값을 204에서 200으로, priority 정렬 순서의 기대값을 desc에서 asc로 변경했습니다. 이는 "기대하는 HTTP 상태 코드 및 관점은 변경하지 않는다"라는 제약 조건에 위배되는 과잉 수정입니다.
리뷰(review)에서는 실측을 중시할 수 있지만, 테스트 수정에서는 합격률을 높이는 방향으로 너무 치우치는 경우가 있습니다. 이 부분은 Codex CLI를 사용하는 측에서 감독해야 할 포인트입니다.
7. 종합 평가
Codex CLI는 사양이 명확한 상태에서는 상당히 견실합니다.
실험 A에서는 공통 테스트 24/24를 달성했으며, 특히 백엔드(backend)는 사양에 대한 충실도가 높은 결과를 보였습니다. 상호작용 횟수도 적어, 세세하게 대화하지 않아도 일정 수준의 완성도까지 진행할 수 있습니다.
다만, 종합 1위는 아닙니다. 개발 속도는 최속 그룹에 미치지 못하며, UI의 완성도 또한 절제되어 있습니다. 실험 B에서는 설계를 자유롭게 맡긴 결과, 간소하고 짧은 구현이 된 반면, PUT 부분 업데이트(partial update)에서 중대한 버그를 남겼습니다.
또한, 자기 평가(self-evaluation)는 주의해서 읽을 필요가 있습니다. 이번의 낮은 평가는 품질을 올바르게 파악한 결과가 아니라, PowerShell의 문자 인코딩(character encoding) 지정 누락이나 pytest 실행 디렉토리 오류로 인한 오진이 주된 원인이었습니다.
종합하면, Codex CLI는 "사양대로 견실하게 만든다", "실행하며 리뷰한다"는 상황에서 강점이 있으며, "UI의 풍부함", "모호한 사양으로부터의 설계", "자기 진단의 신뢰성"에는 보조가 필요한 에이전트였습니다.
8. 이런 분들께 추천합니다
Codex CLI는 다음과 같은 용도에 적합합니다.
- API 사양이나 데이터 모델이 명확한 CRUD 앱을 만들고 싶다
- CLI 상에서 적은 상호작용으로 단번에 구현을 진행하고 싶다
- 코드 리뷰 시, 정적 판독뿐만 아니라 pytest나 API 실행을 포함하여 확인시키고 싶다
- UI의 화려함보다 사양 준수와 실용성을 우선시하고 싶다
반대로, 다음과 같은 경우에는 인간 측의 체크를 강화하는 것이 좋아 보입니다.
- 사양이 모호하여 설계 판단을 크게 맡겨야 한다
- 프론트엔드(frontend)의 시각적인 완성도를 중시한다
- 테스트 수정 시 "구현에 맞춰 기대값을 변경하고 있지는 않은지"를 엄격하게 보고 싶다
- AI 자신의 자기 평가를 그대로 품질 평가로 사용하고 싶다
이번 실험에서 Codex CLI는 "구현력이 낮다"기보다, "평가 프로세스에서 오진이 섞이기 쉬운" 에이전트로 보였습니다. 결과물 그 자체와 자기 평가·테스트 수정·리뷰 코멘트를 분리해서 보는 것이 중요합니다.
9. 관련 기사
본 기사는 6개의 AI 코딩 에이전트 비교 실험 시리즈 중 하나입니다 (Zenn 제2회).
시리즈 전체 기사 목록은 GitHub 리포지토리(repository)를 참조해 주세요.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기