에이전트가 짠 코드를 리뷰하지 마세요. 심문하세요.
Don't Review Agent Code. Interrogate It.
핵심 요약
에이전트가 생성한 방대한 코드를 일일이 읽는 대신, 질문을 통해 의도를 파악하고 과도한 설계를 걸러내는 효율적인 리뷰 전략을 공유합니다.
- 코드 리뷰 방식 — 코드 자체를 읽기보다 에이전트를 증인으로 삼아 질문을 던지는 방식 활용
- 과도한 설계 방지 — 에이전트가 제안한 불필요한 테이블이나 의존성을 구체적인 질문으로 검증
- 맥락 주입 — 에이전트가 모르는 프로젝트의 범위와 향후 계획을 알려주어 리뷰의 질 향상
- 자동화된 워크플로우 — 여러 에이전트를 활용한 단계별 검증 및 수동 테스트 결합
이제 에이전트가 짠 코드를 일일이 검토하는 짓은 관뒀다. 너희들도 다들 안 하잖아. 우리끼리 비밀로 하자고.
에이전트는 하루에 10만 줄을 짜거나 PR 30개를 날려버릴 수 있다. 그걸 다 읽을 시간이 어디 있냐. 어차피 내가 PR을 볼 때쯤이면 뻔한 버그는 다 잡혀 있다. 에이전트가 코드를 짜면서 지가 알아서 몇 번씩 검토를 끝내거든. 아주 뿌듯해 죽으려고 하더라.
그래서 보통은 새 에이전트를 띄워서 "이 PR 검토해"라고 시킨 다음, 대충 훑어보고 머지하는 게 국룰이다.
나도 한동안은 그렇게 했다. 심지어 어떤 기능을 만들 때는 Claude랑 Codex를 시켜서 서로 PR을 교차 검토하게 만들었는데, 그때는 그게 엄청 책임감 있는 짓인 줄 알았다. 근데 PR 30개를 머지하고 나서 에이전트가 나한테 수동 테스트하라고 기능을 넘겨줬는데, 결과물은 완전히 과잉 설계(over-engineered) 그 자체였다. 내가 시키지도 않은 검증 단계랑 깐깐한 유효성 검사로 도배가 되어 있었는데, 그 PR들은 전부 교차 검토를 통과한 것들이었다.
에이전트 두 놈이 서로의 삽질을 정중하게 승인해주고 있었던 거다. 나는 아주 효율적인 'LGTM(Looks Good To Me) 머신'을 만들어낸 셈이지.
새로 띄운 검토용 에이전트의 문제점
이놈은 아무것도 모르는 상태에서 시작한다. 이 PR이 왜 존재하는지, 원래 어떤 기능을 구현하려고 했는지 모르니까 코드가 범위를 벗어나도 알아채질 못한다. 다음 달에 뭘 만들지도 모르니 지금 짜는 추상화가 나중에 쓸모가 있을지 판단할 리가 없다.
제일 빡치는 건 과잉 설계를 처리하는 방식이다. 범용 재시도 프레임워크나 뜬금없는 캐싱 레이어를 들이밀면, 이놈은 그냥 "누가 다 이유가 있어서 넣었겠지"라고 생각한다. 이름 좀 바꾸라거나 테스트 코드 하나 더 넣으라는 소리나 하지, 이게 진짜 필요한 건지 묻는 법이 없다.
결국 겉보기엔 꼼꼼하고 자잘한 코멘트가 가득한 리뷰가 나오지만, 정작 쓸데없는 코드는 하나도 안 건드리고 그대로 통과된다.
내가 요즘 하는 방식
이 짓을 한 1년 정도 해봤는데, 요즘은 과잉 설계된 코드를 이렇게 잡아낸다. 여전히 diff는 거의 안 읽는다. 대신 검토용 에이전트를 증인처럼 다룬다. 에이전트가 코드를 읽게 하고, 나는 질문만 던지는 거다.
1. PR이 뭘 하는지 물어봐라
새 에이전트를 띄우고 이렇게 프롬프트를 날려라.
이 PR을 읽고 정확히 뭐가 바뀌었는지 보고해. 다음 항목들을 리스트로 정리해:
- 데이터베이스 스키마 변경 (새 테이블, 컬럼, 인덱스, 마이그레이션)
- 스케줄 작업 / 크론 / 백그라운드 워커 변경
- 추가되거나 수정된 모든 기능 요약
- 새로운 외부 서비스, API, 또는 서드파티 라이브러리
- 새로운 환경 변수나 설정 플래그
- 새로운 퍼블릭 엔드포인트나 인터페이스
- 삭제되거나 폐기된 것들
아직 코드 평가하지 마. 그냥 뭐가 바뀌었는지만 말해.
마지막 줄은 일부러 넣은 거다. 의견 듣기 전에 팩트부터 알아야 하니까. 그냥 두면 이놈은 신나서 "전반적으로 깔끔하고 구조가 잘 잡힌 PR입니다" 같은 소리나 늘어놓을 게 뻔하거든.
2. 애매한 부분을 찾아라
보고서는 보통 길고 상세해 보인다. 천천히 읽다 보면 이런 문장들이 눈에 띌 거다 (예시지만, 보면 바로 알 거다):
"동기화 안정성을 높이기 위해
sync_state테이블을 추가함.""주기적인 유지보수를 위해 백그라운드 작업을 도입함."
"유연한 설정을 위해
FEATURE_X_MODE를 추가함."
