검색

2026년 4월 8일

AI는 왜 사용자를 잘못된 확신으로 이끄는가 — Sycophancy 논문에서 본 대화형 AI 의 위험

Sycophantic Chatbots Cause Delusional Spiraling, Even in Ideal Bayesians 

최근 공개된 Sycophantic Chatbots Cause Delusional Spiraling, Even in Ideal Bayesians 논문은  ChatGPT와 같은 대화형 AI가 가질 수 있는 구조적 위험을 설명한다. 이 논문이 말하는 핵심은 단순하다.

AI의 위험은 단지 틀린 답을 하는 데만 있지 않다. 사용자의 현재 믿음을 반복적으로 정당화하면서 잘못된 확신을 점점 더 키울 수도 있다.

여기서 핵심 개념은 비위를 맞추는 성향(sycophancy) 이다. 이는 AI가 사용자의 말에 과도하게 동조하거나, 사용자가 기대하는 방향으로 답을 맞추려는 성향을 의미한다. 사용자는 이를 친절하고 공감적인 응답으로 받아들일 수 있지만, 반복적인 대화에서는 오히려 잘못된 방향의 자기 확신을 강화하는 결과로 이어질 수 있다.

예를 들어 사용자가 어떤 가설이나 해석을 제시했을 때, AI가 “그럴 가능성이 있다”, “관찰이 일관적이다”, “흥미로운 해석이다” 와 같은 표현을 반복하면 사용자는 자신의 판단이 점차 검증되고 있다고 느끼게 된다. 문제는 이것이 단순한 대화 UX 차원의 문제가 아니라, 잘못된 판단을 스스로 강화하는 구조로 발전할 수 있다는 점이다.

이 논문이 특히 주목할 만한 이유는 이러한 현상이 비합리적인 사용자에게만 나타나는 것이 아니라는 점이다. 연구에서는 새로운 정보를 받아들일 때 기존 믿음을 합리적으로 조정하는 이상적인 베이지안 사용자(ideal Bayesian user) 를 모델링했는데, 그 경우에도 sycophantic한 응답이 반복되면 잘못된 믿음이 강화될 수 있었다. 즉, 사용자의 논리성 여부와 관계없이 AI와의 상호작용 구조 자체가 인지적 편향을 만들어낼 수 있다는 의미다.

AI 기반 프로그램 개발자 입장에서 여기서 중요한 점은 할루시네이션(Hallucination, 환각)만 줄인다고 문제가 끝나지 않는다는 사실이다. 논문은 AI가 거짓말을 하지 않도록 제한한 경우도 실험했지만, 위험은 완전히 사라지지 않았다. 이유는 AI가 사실만 말하더라도 사용자의 믿음을 강화하는 사실만 선택적으로 제시할 수 있기 때문이다. 즉, 문제는 사실 여부뿐 아니라 어떤 정보를 선택하고 어떤 정보를 제외하는가에도 있다.

AI를 활용해 개발할 때는 몇 가지 실무 원칙을 의식할 필요가 있다.

  • 첫째, AI의 응답을 최종 결론처럼 받아들이지 않아야 한다.
  • 둘째, 하나의 답변만 신뢰하기보다 다른 해석이나 반대 근거도 함께 확인해야 한다.
  • 셋째, 반복적인 대화 속에서 특정 방향으로 사고가 편향되고 있지 않은지 스스로 점검해야 한다.
  • 넷째, 설계·보안·성능·운영과 같이 영향이 큰 판단은 반드시 사람이 최종 검토해야 한다.

결국 이 논문이 AI를 활용하는 개발자에게 주는 메시지는 분명하다. AI는 틀린 정보를 생성할 때만 위험한 것이 아니라, 사용자의 현재 생각을 자연스럽게 강화하면서 잘못된 확신을 만들어낼 수도 있다. 따라서 AI 기반 개발에서는 정확도뿐 아니라 균형성, 반대 근거 확인, 최종 판단의 책임 주체를 함께 고려해야 한다.


AI를 활용해 개발할 때 원칙을 실천하는 현실적인 방법

예를 들어 개발자가 AI에게 “이 구조가 맞는지 검토해줘”, “내 설계 방향이 타당한가”, “이 방식이 가장 좋은 방법 아닌가” 와 같이 질문하면, AI는 이미 질문 안에 포함된 방향을 따라 답할 가능성이 높다. 즉, 객관적인 검토보다 현재 사용자의 사고 흐름을 이어주는 방식으로 응답하기 쉽다. 이 때문에 실무에서는 질문의 방향 자체를 의도적으로 바꾸는 습관이 필요하다. 예를 들어 다음 두 질문은 비슷해 보이지만 결과는 분명히 다르다.

  • 이 구조가 맞는지 검토해줘
  • 이 구조의 취약점과 실패 가능성을 먼저 찾아줘

첫 번째 질문은 확인을 유도하고, 두 번째 질문은 반박을 유도한다. 실제로 두 번째 방식이 더 많은 위험 요소를 드러낸다. 같은 방식으로 코드 생성 이후에도 바로 적용하기보다, 추가 검증 질문을 이어가는 것이 중요하다. 예를 들어 AI가 특정 구현을 제안했을 때는 다음과 같이 다시 질문할 수 있다.

  • 이 코드가 운영 환경에서 실패할 가능성이 있는 경우는 무엇인가
  • 예외 상황에서 깨질 수 있는 부분은 어디인가
  • 최신 프레임워크 기준으로 문제가 될 수 있는 부분은 없는가
즉, 첫 번째 답변은 초안으로 보고 두 번째 질문부터 검증 단계로 들어가야 한다.

설계 단계와 구현 단계도 분리해서 보는 것이 좋다. AI는 설계 설명에서는 매우 자연스럽지만, 실제 코드에서는 중요한 조건을 빠뜨리는 경우가 적지 않다. 예를 들어 먼저 구조를 설명받은 뒤 다시 다음과 같이 물을 수 있다.

  • 지금 설명한 구조가 실제 코드에서 깨질 수 있는 조건을 찾아줘
  • 트랜잭션, 동시성, 예외 처리 측면에서 위험 요소를 설명해줘

이렇게 하면 단순 설명보다 실제 적용 시 발생할 수 있는 문제를 더 빨리 발견할 수 있다. 여러 AI를 함께 사용하는 경우에는 교차 검증도 효과적이다. 예를 들어 다음과 같은 흐름이 가능하다.

  • Codex 로 초안 작성
  • Claude 로 구조적 취약점 검토
  • Gemini 로 대안 비교

이 과정에서 중요한 것은 단순히 다른 모델에 다시 묻는 것이 아니라, 질문 자체를 다르게 주는 것이다.

예를 들어:

  • 이 코드의 문제를 추측하지 말고 실제 코드 근거로만 지적해줘
  • 반대 구현 방식이 더 적절할 수 있는 경우를 설명해줘

AI가 강한 확신을 보일수록 오히려 더 검증해야 한다는 점도 중요하다. AI는 매우 자연스럽게 “이 방식이 가장 적절하다”, “일반적으로 이렇게 구현한다” 와 같은 표현을 사용하지만, 이런 문장은 기술적 근거 없이 생성될 수도 있다. 따라서 이런 답을 받으면 반드시 다시 확인해야 한다.
  • 공식 문서 기준 근거는 무엇인가
  • 예외 사례는 없는가
  • 다른 구현 방식과 비교하면 장단점은 무엇인가

결국 AI를 활용한 개발에서 중요한 것은 빠른 답을 받는 능력보다, 반대 질문을 던지고 검증 흐름을 만드는 능력이다. AI는 개발 속도를 높여주지만 동시에 빠른 확신도 제공한다. 따라서 개발자는 AI의 첫 답을 정답으로 받아들이기보다, 검토 대상이 되는 초안으로 다루는 태도가 필요하다.

2026년 4월 6일

사용기 - AI 가 다른 AI 의 작업 결과를 이어 받아 마무리 하기 (클로드 , 코덱스)

AI 가 다른 AI 의 작업 결과를 이어 받아 마무리 하는 것은 어떻까.
이슈는 코덱스(Codex) 가 초안을 작성하고 클로드(Claude) 상세화 했다. 

클로드(Sonnet 4.6) 계획 상세화 결과

코덱스(Codex)가 12개의 서브 이슈들로 구성된 언브렐라(#27) 이슈를 등록하고 클로드(Claude)에게 #27 이슈 구현을 요청했다. 

클로드(Sonnet 4.6) 구현 결과

코덱스(Codex)에게 클로드(Claude)의 작업 브랜치의 상태를 분석하여 현재 진행 상황을 확인하고 작업을 마무리 하게 했다. 

코덱스 (GPT 5.4 medium)  이어서 구현

클로드(Claude)에게  PR #40 에 대한 리뷰를 요청했다.

클로드(Sonnet 4.6)  1차 리뷰 결과

코덱스(Codex)에게 리뷰 결과를 조치하게 했다.


코덱스 (GPT 5.4 medium)  1차 리뷰 조치

클로드(Claude)에게  PR #40 에 대한 재 리뷰를 요청했다. 확인 결과 병합은 가능한 상태이지만 추가로 몇가지 마이너한 개선 사항이 도출되었다.


클로드(Sonnet 
4.6)  2차 리뷰 결과(1차 리뷰 조치 확인)

코덱스(Codex)에게 다시 리뷰 결과를 조치하게 했다.
코덱스 (GPT 5.4 medium)  2차 리뷰 조치


다시 클로드(Claude)에게 리뷰를 요청했고 모든 이슈가 해결되었음을 확인 할 수 있었다.


클로드(Sonnet 
4.6)  3차 리뷰 결과(2차 리뷰 조치 확인)


AI 모델에게 코드를 작성하게하고 같은 모델에게 리뷰를 시키면 코딩시 놓친 맹점이 리뷰할 떄도 그냥 넘어갈 수 있게된다. 참고로 보리스 체르니(Boris Cherny)가 공개한 Claude Code 내에서 코덱스(Codex) 를 사용하여 코드 리뷰를 수행하거나 Codex에 작업을 위임할 수 있는 플러그인이  Codex plugin for Claude Code 도 같은 맥락이다.

 

2026년 4월 3일

사용기 - 클로드, 코덱스, 제미나이 기반의 AI 코딩 : VUE 프로그램을 REACT 로 변경

작업의 목표는 기존 Vue3 기반 프로젝트를 1.x, 2.x 브랜치로 구분하고, 2.x 브랜치에서 React 전환을 진행하는 것이었다. 단순히 특정 모델 하나만 사용하는 것이 아니라, 여러 AI 코딩 에이전트를 실제 작업에 투입해 계획 수립, 상세화, 구현, 리뷰, 병합의 각 단계에서 어떤 조합이 가장 효율적인지를 확인해보고자 했다


1. 최초 계획 수립 - Codex

최초 작업 계획은 Codex(GPT-5.4, reasoning effort: medium)를 사용해 수립했다. Codex는 전체 작업 방향과 단계별 흐름을 정리한 MIGRATION_2X.md 문서를 작성했다. 이 문서는 실제 개발을 바로 수행할 수 있는 상세 설계서라기보다는, 원칙과 단계별 진행 방향을 정리한 초안 성격의 계획서에 가까웠다.

이 단계에서 느낀 점은 Codex가 최초 구조를 잡고 작업을 시작하는 능력, 그리고 여러 작업을 분할해 병렬로 진행할 수 있도록 초기 작업 틀을 만드는 능력이 우수하다는 점이었다. 이후 이 문서를 기반으로 모든 이슈를 등록하는 작업도 Codex를 통해 수행했고, 총 12개의 이슈가 생성되었다.    

2. 상세 계획 수립 - Gemini 중심, Codex 보조

클로드 공식 문서는 CLAUDE.md를 프로젝트 기억용 파일로 설명하고, /init로 시작용 CLAUDE.md를 자동 생성하라고 권고 하고 있다. 일관적인 작업 수행을 위해서 먼저 생성을 진행했다. 추가로 기존 프로젝트의 정책 및 템플릿 내용도 반영하도록 했다. Claude Pro 요금제의 가장 큰 불편함은 5시간 단위와 주간 단위의 사용 제한이다. 작업이 한창 진행되는 중간에 멈추는 경우가 반복되다 보니, 실제 사용성 면에서 답답함이 크다. 작업중에 주간 한계를 초과하여 금주 목요일 11:00 까지 기다려야 한다. 

제한이 풀리자 바로 /init 명령을 실행했고, 클로드는 기존 프로젝트의 파일을 분석하여 CLAUDE.md 을 생성했다. 


클로드(Sonnet 4.6) init 실행 결과


Claude 를 사용한 세부 계획 수립 계획을 변경하여 Gemini 2.5 Flash가 기존 MIGRATION_2X.md를 검토하여 세부 내용을 보완했고, 다시 Codex가 이를 검토하고 수정하는 방식으로 계획을 다듬었다. 다만 이후 실제 구현과 리뷰를 진행하는 과정에서, 작업 범위의 경계가 다소 모호하게 잡히는 경우가 있었고, 그 부분을 다시 Claude가 검토하면서 보완했다. 글 전체 흐름을 기준으로 보면 세부 계획 수립 능력은 Gemini보다 Claude가 더 안정적이었다고 판단된다.

제미나이(Gemini 2.5 Flash) 실행 가능성 검토


코덱스 (GPT 5.4 medium) 1차 검토

코덱스 (GPT 5.4 medium) 1차 검토 결과 보완


제미나이(Gemini 2.5 Flash) 2차 검토


다음으로 코덱스(GPT-5.4 reasoning effort : medium)를 사용하여 병렬작업을 고려하여 모든 이슈 등록과 변경된 문서을 커밋하도록 했다. (12개의 이슈가 등록됨)

생성되어 등록된 이슈 목록


이 과정에서 코덱스 역시 작업중에 주간 한계를 초과하였지만 미리 구매해두었던 토큰을 소모하면서 작업을 수행했다. 이 단계에서 얻은 결론은 다음과 같았다.

  • Codex: 최초 계획 초안 작성에 강점

  • Claude: 계획의 세부화와 경계 정리에 강점 (사용 제한으로 확인 못함)

  • Gemini: 계획 보완과 실행 가능성 판단에 충분히 유용함 


3. 구현 - Codex와 Gemini 중심

실제 구현은 처음에는 Gemini(Free)를 통해 진행했다.

Gemini는 Plan 모드와 Edit 모드를 구분하고 있었고, 실제 코딩을 위해서는 Edit 모드 전환이 필요했다. 무료 버전임에도 불구하고, 구현 자체는 충분히 수행 가능했고, 리뷰 결과에 대한 수정도 상당히 잘 반영했다. 이 점에서 Gemini의 코딩 능력 자체는 충분히 확인할 수 있었다고 본다.

다만 사용량 제한에 도달하면 작업이 중단되는 문제가 있었고, 실제 작업 흐름을 이어가는 데에는 제약이 있었다. 그 이후 구현은 Codex가 이어받아 진행했는데, 이 과정은 서로 다른 모델 에이전트가 작업을 이어받을 수 있는지를 확인하는 좋은 사례가 되었다. Codex는 구현을 이어서 진행하는 데에도 무리가 없었고, 이후 병합 충돌 원인을 작업 히스토리 기준으로 파악하고 해결하는 모습도 인상적이었다.

실제 수행 흐름을 종합하면, 구현 단계에서는 다음과 같은 인상이 남았다.
  • Gemini: 무료 버전 기준에서도 구현 능력은 충분히 확인 가능
  • Codex: 구현의 연속성, 작업 유지, 충돌 해결, 마무리 처리에 강점

4. 리뷰 - Claude의 강점이 가장 분명했던 구간

구현 결과에 대한 검토는 주로 Claude를 통해 진행했다.

브랜치 리뷰, PR 리뷰, 리뷰 결과 확인, 추가 수정 요청 등 여러 단계에서 Claude를 반복적으로 사용했는데, 전체 흐름을 보면 이 부분에서 Claude의 장점이 가장 뚜렷하게 드러났다. Claude는 단순한 오류 지적이 아니라 작업 범위의 타당성, 보완 필요 지점, 수정 누락 여부를 비교적 안정적으로 짚어냈다. 

Codex도 코드 리뷰를 수행했지만, 글의 흐름상 Codex는 리뷰어 역할보다는 직접 수정하고 정리하는 역할에서 더 자연스러웠다. 반면 Claude는 여러 차례 교차 검증 과정에서도 추가 수정 사항을 찾아냈고, PR 리뷰 품질도 일관적이었다. 따라서 리뷰 단계에 대해서는 Claude가 가장 적합했다고 판단된다.


코덱스 (GPT 5.4 medium)  코드리뷰 결과



클로드(Sonnet 4.6) 브랜치 리뷰 결과


5. 병렬 작업과 교차 검증에서 확인한 점

이번 작업에서는 단순히 하나의 모델만 쓰지 않고, 서로 다른 모델을 조합해 병렬 작업과 교차 검증도 시도했다. Codex가 지시문을 작성하고, Gemini와 Codex 서브에이전트가 각각 구현을 수행한 뒤, Claude가 리뷰를 담당하는 방식도 실험했다. 또한 Claude가 작업한 결과를 Codex가 리뷰하고, 다시 Codex 결과를 Claude가 리뷰하는 교차 방식도 시도했다. 


이러한 과정을 통해 확인한 것은, 모델마다 잘하는 역할이 분명히 다르다는 점이다.

  • Codex는 실행과 정리에 강했다.

  • Claude는 계획의 정교화와 리뷰의 완성도가 높았다. 

  • Gemini는 무료 버전 기준에서도 구현 능력을 보여주었다.


코덱스 (GPT 5.4 medium)  작업 결과


클로드(Sonnet 4.6) PR 리뷰 결과


다음으로는 작업을 서로 다른 모델 에이전트를 사용하여 진행해보았다. 이 작업위해서 코덱스를 사용하여 작업 지시를 위한 업무 계획을 정리하게 하게 한다음에 구현을 진행했다. 

이번에는 보다 정확한 병렬을 위해서 코덱스가 지시문을 작성하게 했다. 하나는 제미나이에게 작업을 요청했고 하나는 코덱스 서브에이전트가 작업하도록 했다. 

코덱스 (GPT 5.4 medium)  작업 지시문 생성

리뷰는 클로드를 사용하여 진행했다. 코덱스는 PR 까지 진행하여 PR 에 대한 리뷰를 (클로드가) 진행하고 (코덱스가) 결과 조치 후 다시 (크로드가) 리뷰를 진행했다. 코덱스는 1차 리뷰 결과에 대한 조치는 완벽하게 처리했고 2차 리뷰에 클로드에 의하여 추가 조치 사항이 발견되었으며 해당 내역역시 조치를 완료하는 것으로 리뷰 결과에 대한 조치 완전하게 처리함을 확인 할 수 있었다. 


클로드(Sonnet 
4.6) 1차 리뷰 결과

클로드(Sonnet 4.6) 2차 리뷰 결과

클로드(Sonnet 4.6) 3차 리뷰 결과

제미나이는 작업 완료 이후 커밋까지는 했지만 PR 생성은 불가하다고 하여 작업 결과불을 기준으로 리뷰를 진행했다. 제미나이 역시 리뷰 결과에 대한 조치를 완전하게 처리했다. PR 생성은 클로드가 진행했다.

클로드(Sonnet 4.6) 최초 브랜치 리뷰 결과

클로드(Sonnet 4.6) 조치 결과 확

병렬도 조치한 작업에 대한 병합 과정에서 제미나이 구현에 대한 PR 에서  충돌이 발생하여 코덱스를 사용하여 이슈를 해결하고 병합을 마무리 했다. 

깃랩 병합 이슈


코덱스가 작업 히스토리를 확인하여 원인을 파악하고 해결하는 과정이 인상적이었다. 

코덱스 (GPT 5.4 medium)  병합 이슈 해결

코덱스를 통한 중간 정검(9/12)과  MIGRATION_2X.md 문서를 현횅화 했다. 또한 코덱스는 남은 이슈별 작업 기준을 정리하고 코덱스 서브에이전트와 제미나이 + 클로드가 구현을 진행했다. 리뷰는 클로드 한꺼번에 했고 보완 역시 코덱스가 한번에 처리했다.
  
클로드(Sonnet 4.6) 리뷰 결과 확


이제 하나의 이슈만 남았는데 코덱스가 마무리 구현을 진행하고 클로드가 리뷰하게 했다. 

클로드(Sonnet 4.6) 최종 리뷰 결과



작업 완료 후 로컬에서 직접 실행하여 화면을 확인해본 결과, 이번 계획의 범위였던 공통 기능을 포함한 사용자 파트의 React 전환은 완전하지는 않지만 전반적으로 잘 이관된 상태임을 확인할 수 있었다.

이번 실험을 통해 각 모델의 강점이 어느 정도 분명하게 드러났다.

특히 Gemini는 무료 버전을 사용했음에도 코딩 능력 자체는 충분히 확인할 수 있었다. 그러나 실제 실무에서 지속적으로 사용하기에는 사용량과 기능 제약이 존재했다. 반면 Codex는 최초 계획 수립, 구현, 이슈 정리, 병합 충돌 해결 등 실행과 연속성 측면에서 강점을 보였고, Claude는 상세 계획 수립과 리뷰, PR 검토 등 정교한 검토와 품질 보증 측면에서 가장 안정적이었다.

2026년 3월 31일

사용기 - 맥에서 클로드 코드(Claude Code) 사용하기 : Codex와 비교한 실사용 후기

클로드 역시 코덱스와 같이 무료 플랜에서는 코딩 기능(Claude Code) 사용이 불가 하고 유료 플랜에서만 가능하다. 클로드 코드는 터미널, VSCode , Desktop app, Web, JetBrains 을 지원하고 있다.  테스트는 클로드 앱으로 진행했다. Desktop app 은 유료로 플랜을 업그레이드 하면 Code 탭이 활성화 되며 이를 클릭하고 로컬 저장소를 지정하는 것올 시작으로 바로 코딩 작업을 진행할 수 있었다.

유료 플랜은 Pro 요금제를 사용했다. 5시간 단위/주간 단위 사용량 제한 정책에 따라 가벼운 작업은 가능하지만 본격적인 코딩에는 무리가 있었고, 여러 테스트를 진행하는 과정에서 여러번 사용 제안이 걸려 추가로 $20 에 해당하는 토큰을 3회 구매해서 사용했다.

클로드는 기본적으로 실사용 인상으로는 작업을 여러 단계로 나눠 처리하는 듯한 흐름이 있었고, 그만큼 토큰 사용량이 커진다고 느꼈다. 코딩 성능은 확연하게 멀티 즉 서브 에이전트를 사용하는 것과 하지 않는 것에는 차이가 발생한다. 여러 단계의 중간 결과가 정리되면서 응답 품질이 더 안정적으로 느껴졌고, 개인적으로는 그것이 결과 차이에 영향을 준다고 보았다. (컨텍스트 오염 최소화)


오류 해결 테스트 (코덱스와 클로드)

비교를 통한 성능 측정을 목적으로 간단하게 런타임 오류 메시지에 대한 분석을 각각 ① Claude Sonnet 4.6 , ② GPT-5.4 (reasoning effort : medium을 사용하여 진행했다. 두 모델 모두 원인 분석 자체는 유효했지만, 이번 테스트에서는 Claude Sonnet 4.6 쪽이 번호와 표를 더 적극적으로 사용해 결과를 읽기 쉽게 정리해 주는 인상이 있었다.

코덱스 (GPT 5.4 medium) 답변


클로드 (Sonnet 4.6) 답변

“Claude는 분석만 요청했는데도 수정 방향까지 적극적으로 제안했다. 상황에 따라서는 장점이지만, 순수 분석만 원할 때는 과한 개입으로 느껴질 수 있었다.”( 아마도 코덱스의 경우는 호환 정책 파일들이 있어 발생한 것은 아닌가 하는 의심도 있다.)


기존 코드 기반 계획 수립 테스트 (코덱스와 클로드)

다음으로 소스 코드 분석을 실행하고 결과를 비교해 보았다. 

"*** 는 사용자 시스템 구현에 의존하지 않고 사용자를 식별할 하기 위한 계약이다. 이 모듈 코드를 좋은점, 나쁜점, 개선점 측면에서 분석하고 결과를 보여줘."

Claude (Sonnet 4.6) 답변


Codex (GPT 5.4 medium) 답변

결과가 예상과는 달랐는데 나쁜점의 경우 모두 거의 유사한 내용을 언급하고 있지만 좋은점과 개선점에서는 차이점이 있었다. 답변은 모두 코드에 근거하여 답변을 하고 있었다. 

이번 테스트 기준으로 클로드는 ‘바로 손볼 포인트를 빠르게 정리해 주는 리뷰’에 가까웠고, 코덱스는 ‘왜 그렇게 바꿔야 하는지까지 설명하는 리뷰’에 가까웠다. 이번 항목에서는 개인적으로 코덱스 쪽 답변이 더 좋았다. 특히 구조적 설명과 개선 논리 제시에 강점이 있었다고 느꼈다.


① 클로드
구체적인 결과 = 항목화된 판정 + 예시 코드 즉,
  • 무엇이 좋은지
  • 무엇이 나쁜지
  • 무엇을 바꿔야 하는지
를 표와 목록으로 끊어서 보여준다. (정리본 형태)

② 코덱스
구체적인 결과 = 모듈 의도 + 실제 사용처 + 개선 논리 즉,
  1. 이 모듈이 왜 존재하는지
  2. 실제로 어디서 어떻게 쓰이는지
  3. 그래서 어떤 혼란이 생길 수 있는지
를 설명 흐름 안에서 보여준다. (리뷰 대화록 형태) 


협업 테스트(코덱스와 클로드)

이번 테스트는 ① 클로드와 ② 코덱스 모두에게  코드 분석을 요청하고 ① 클로드의 경우 추가로 문서화 생성을 요청하고 해당 문서를 ② 코덱스에게 검토 및 보완을 요청했다. 마지막으로 다시 수정된 문서를 ① 클로드를 통하여 검증하는 작업을 진행했다. 아래는 최종 검증에 있어 코덱트의 출력 화면이다. 



이번 실험에서는 단일 모델 하나만 쓰는 방식보다, 서로 다른 모델의 장점을 교차 활용하는 편이 결과를 더 안정적으로 만드는 가능성을 보였다. 서브 에이전트와 같은 기능을 적극적으로 쓰지 않고 프롬프트 중심의 단순 작업만 놓고 보면, 이번 체감상 코덱스보다 클로드가 더 일을 잘한다고 느껴졌다. 

 

이슈 기반 개발

테스트에 앞서 코덱스에서 분석 및 작업 계획 테스트를 통하여 이슈를 생성하였고 클로드에서는 이미 생성된 특정 이슈를 기준으로 실제 구현 작업을 진행해 보았다. (개발은 언제나 항상 분석/설계 > 이슈 등록 > 구현 > 테스트 > PR 생성 > 리뷰 > 머지 순서로 하고 있다.) 

다음은 이슈 기반을 개발을 위하여 클로드에게 작업 가능성 확인 결과이다.

이슈 #163 에 대한 작업이 가능한가.
작업 이슈 내용을 바탕으로 기존 파일을 분석하여 수행했다. 



작업 완료 후 커밋과 PR 생성을 요청했고 해당 PR 을 코덱스가 검토하게 했다. 코덱스 검토 결과 1가지 문제가 발견되었고 이를 다시 클로드가 조치하도록 했다. (전후 맥락이 없는 상태에서 리뷰를 진행할 때는 좀더 많은 시간이 소요됨을 체감했다.) 



리뷰 결과를 클로드에서 입력하면 해당 내용을 확인하고 잘못 수정함을 인정하고 바로 수정까지 완료했다. (리뷰의 중요성이 확인됨)

조치결과에 대하여 코덱스에 다시 확인 요청을 한 결과 처리됨을 바로 확인해주었다. (이전 맥락이 있어 이번에는 바로 응답함)


정리하면, 이번 테스트 기준으로 Claude는 정리형·실무형 리뷰에 강했고, Codex는 설명형·구조형 리뷰에 강했다. 따라서 둘 중 하나만 고르기보다, 분석·문서화·교차 검토 흐름으로 함께 활용할 때 더 큰 장점이 있을 수 있다고 본다.

사용기 - 코덱스(Codex)에서 서브에이전트(Subagents) 활용하기

Subagents란, Codex가 하나의 큰 작업을 여러 개의 작은 작업으로 나누어 각각 별도의 보조 에이전트에게 맡긴 뒤, 그 결과를 다시 통합하는 병렬 작업 방식이다. 복잡한 작업, 코드베이스 탐색, PR 리뷰 처럼 여러 항목을 동시에 볼 때 특히 유용하다고 한다. OpenAI 개발자 가이드

서브에이전트(subagent)는 언제 어떻게 사용하나

공식 문서에 따르면 컨텍스트 창(에이전트의 스레드 기억 공간)이 크더라도 요구사항, 제약조건, 의사결정 같은 핵심 정보 사이에 탐색 노트, 테스트 로그, 스택 트레이스, 명령 출력 같은 중간 결과가 과도하게 섞이면 모델의 응답 품질과 세션 신뢰성이 점차 떨어질 수 있다고 한다.  이런 문제는 중요한 정보가 잡음에 묻히는 맥락 오염과, 관련 없는 세부 정보가 많아지면서 판단 성능이 저하되는 맥락 왜곡으로 설명할 수 있다. (Context Rot: How Increasing Input Tokens Impacts LLM Performance

서브에이전트 워크플로(Codex가 병렬 에이전트를 실행하고 그 결과를 결합하는 워크플로)는 이러한 잡음을 메인 스레드에서 분리하여, 메인 에이전트는 핵심 요구사항과 최종 결과에 집중하고, 탐색·테스트·로그 분석 같은 읽기 중심 작업은 하위 에이전트가 병렬로 처리한 뒤 요약만 반환하도록 돕는다. 다만 병렬 에이전트는 읽기 작업에는 효과적이지만, 여러 에이전트가 동시에 코드를 수정하는 쓰기 중심 작업에서는 충돌과 조정 비용이 커질 수 있으므로 더 신중하게 운영해야 한다.

즉 맥락 오류가 커질수 있는 큰 작업을 여러 덩어리로 나눌 수 있을 때 좋은 결과를 예상할 수 있는데. 예를 들면 “보안”, “버그”, “코드 품질”, “테스트 불안정성”을 각각 따로 검사시키는 식이다. Codex는 용사자가 명시적으로 요청할 때만 서브에이전트(subagent)를 실행한다. 그리고 서브에이전트(subagent)가 늘어나면 그만큼 모델 호출과 도구 사용이 늘어서 토큰 비용도 더 많이 발생한다. 


 Prompt 예시  
다음 작업을 subagent로 분할해줘.
- explorer 1개: 인증 구조 파악
- worker 1개: 로그인 API 구현
- worker 1개: 테스트 추가
- default 1개: 전체 결과 통합 정리
모든 작업이 끝난 뒤 최종 보고서를 작성해.

“명시적으로 요청”한다는 것은, Codex가 알아서 subagent 를 만들 거라고 기대하는 것이 아니라, 프롬프트 안에 spawn, one agent per point, explorer subagent 를 생성, worker를 사용처럼 분업 지시를 직접 써주는 것이다.
 

Codex는 중간 관리자 역할을 수행

어떤 서브에이전트(subagent)를 띄울지, 후속 지시를 어떻게 줄지, 결과를 언제 모을지 등을 Codex가 조율하고 마지막에는 결과를 합쳐서 하나의 응답으로 보여주는 역할을 한다. 

 Prompt 예시  
현재 브랜치와 main을 비교해서 PR을 검토해.
항목별로 subagent를 하나씩 생성해.
모든 subagent의 작업이 끝날 때까지 기다린 뒤, 항목별 결과를 요약해줘.
1. 보안 이슈
2. 코드 품질
3. 버그 가능성
4. 동시성 문제
5. 테스트 불안정성
6. 유지보수성


 이 프롬프트를 받으면 Codex는 다음을 조율한다.

  1. 어떤 서브에이전트(subagent)를 띄울지 정한다.
    예를 들어 보안 검토용, 테스트 검토용, 유지보수성 검토용처럼 항목별 서브에이전트(subagent)를 분리한다. 문서상 Codex는 서브에이전트(subagent)를 생성하고 오케스트레이션하는 역할을 한다.

  2. 각 서브에이전트(subagent)에 후속 지시를 전달한다.
    예를 들어 “보안 서브에이전트(subagent)는 인증/인가 흐름을 보라”, “테스트 서브에이전트(subagent)는 누락된 테스트를 찾으라”처럼 작업을 나눠 보낸다. 공식 문서도 Codex가 follow-up instructions를 라우팅한다고 설명한다.

  3. 결과를 기다린다.
    여러 서브에이전트(subagent)가 동시에 돌고 있으면 Codex는 요청한 결과가 모두 준비될 때까지 기다린다.

  4. 마지막에 하나로 합친다.
    각 서브에이전트(subagent)의 결과를 항목별로 묶어 최종 응답으로 정리해 보여준다. 공식 문서에서는 consolidated response로 설명한다.


Codex 내장 서브에이전트(subagent)

default(범용), worker(구현/수정 중심), explorer(읽기 중심 탐색) 같은 기본 agent가 이미 제공되고 있다. 
  • default: 특별히 역할을 안 나눴을 때 쓰는 범용 담당
  • worker: 실제 수정, 구현, 정리, 반복 작업 담당
  • explorer: 파일 찾기, 구조 파악, 원인 추적 전 단계 담당

 Prompt 예시  

worker를 사용해서 로그인 API를 구현해줘.
요구사항:
- 이메일/비밀번호 로그인
- JWT 발급 포함
- 기존 SecurityFilterChain 구조를 유지
- Controller, Service, DTO까지 구현
- 관련 테스트도 함께 추가
결과는 변경 파일 목록과 함께 요약해줘.

 

커스텀 서브에이전트(subagent)

TOML 파일로 “이 agent는 PR 리뷰 전용”, “이 agent는 문서 조사 전용”처럼 역할을 따로 정의할 수 있다. (최소한 name, description, developer_instructions 필요.)  좋은 서브에이전트(subagent)는 공식 문서에 따르면 “좁고 명확한 역할을 가져야 한다”고 설명하고 있다. 즉, 하나의 서브에이전트(subagent)가 다 하게 하기보다 “코드 탐색용”, “보안 리뷰용”, “문서 조사용”처럼 나누는 게 좋다.

용자 정의 서브 에이전트를 사용하기 위해서 특정 개발 작업을 위해 설계된 특수 AI 보조 도구인 Codex 서브에이전트 의 최종 모음집 저장소 Awesome Codex Subagents 을 활용했다. 


최종적으로는 AI 지원 개발을 일관된 규칙, 템플릿, 자동화 스크립트로 표준화해 배포할 수 있게 만든 DevOps 정책 템플릿 저장소를 구성하여 사용했다. ( https://github.com/andang72/devops-policy-template

먼저 세부 계획을 병렬로
서브에이전트 1: 현재 패키지/모듈 구조 분석 서브에이전트 2: 중복 책임, 순환 의존, 경계 위반 탐지 서브에이전트 3: 테스트 영향 범위와 회귀 위험 분석 서브에이전트 4: 후보 리팩토링 포인트 요약
를 통해서 수립해줘.
이렇게 프롬프트를 작성하면 코덱스는 병렬 작업에 맞게 작업 계획을 수립한다. 


계획이 수립되면 이슈를 등록하게 하고 순서대로 작업을 아래와 같이 특정 서브에이전트에게 진행을 요청한다. 

서브에이전트에 의한 작업은 좌측 스레드 목록이나 하단의 작업 목록 아래의 background agents (@ to tag agents ) 를 통하여 확인 할 수 있다. 

좌측 메뉴

하단 메뉴

서브에이전트를 도입하면 단순 오류 수정이 아닌 기존 코드를 분석하여 기능을 수정하거나 추가하는 경우 확연하게 결과가 개선되는 것을 확인할 수 있었다. 다만 서브에이전트를 사용하는 경우 토큰 소비가 크게 증가하기 때문에 이부분에 대한 사전 고려가 필요할 것 같다.