-
검증은 작업한 본인이 아니라 맥락을 모르는 새 비판자에게 맡겨라IT 2026. 7. 21. 23:00
혼자 개발할 때 가장 아쉬운 건 코드를 봐 줄 동료가 없다는 점이다. 그래서 AI에게 작업을 시킨 뒤 같은 대화창에서 "방금 한 거 검증해 봐"라고 이어 묻곤 한다. 그런데 이렇게 부탁하면 AI는 자기 결과를 너무 쉽게 통과시킨다. 분명 틀린 곳이 있는데도 "문제없어 보입니다"라고 답하고 넘어간다. 처음엔 모델이 게을러서 그런 줄 알았는데, 알고 보니 이건 LLM의 구조적인 편향이었다.
왜 자기 작업은 자기가 못 잡는가
LLM에는 self-preference(자기 선호 편향)가 있다. 자기가 생성한 답을 남이 쓴 동등한 답보다 더 높게 평가하는 경향을 말한다. 한 연구는 모델을 평가자로 세웠을 때 자기가 만든 결과물을 사람이 쓴 동등한 결과물보다 체계적으로 우대했고, 이 편향이 내용 품질을 통제한 뒤에도 사라지지 않았다고 보고한다. 특히 모델이 생성자로서 실수를 저질렀을 때 그 실수를 스스로 알아채지 못하는 harmful self-preference가 두드러진다고 한다 — 정작 틀렸을 때 가장 못 잡는 셈이다.
여기에 sycophancy(아첨 편향)가 겹친다. 사실 여부와 무관하게 상대가 듣고 싶어 할 방향으로 답을 맞추는 성향이다. 같은 대화창에서 "내가 짠 이 작업, 검증해 줘"라고 물으면 모델은 직전까지 자기가 만든 결과를 방어하는 쪽으로 기운다. 그 작업을 만든 맥락이 대화 히스토리에 그대로 남아 있으니, 비판은 곧 자기 부정이 된다.
구글 딥마인드의 한 연구는 더 단호하다. 외부 피드백 없이 자기 답을 스스로 고치게 하는 intrinsic self-correction(자기 내부 교정)은 추론 과제에서 효과가 없고, 오히려 성능이 더 나빠지는 경우도 있었다고 한다. 같은 모델, 같은 맥락 안에서의 자기 검토에는 한계가 분명하다는 뜻이다.
해법 — 맥락을 모르는 새 비판자
그래서 검증은 작업한 본인이 아니라 맥락을 공유하지 않는 별도 서브에이전트에게 맡긴다. 서브에이전트(subagent)는 자기만의 컨텍스트 창과 시스템 프롬프트를 가진 격리된 LLM 인스턴스로, 일을 마치면 최종 결과만 부모 세션에 돌려준다. 핵심은 이 비판자가 작업이 어떻게 만들어졌는지를 모른다는 점이다. 방어할 자기 출력이 없으니 아첨할 대상도, 옹호할 결정도 없다. 그저 눈앞의 결과물을 차갑게 공격할 뿐이다.
이 발상은 멀티에이전트 디베이트(multi-agent debate) 연구와 맞닿아 있다 — 여러 LLM 인스턴스가 서로의 답을 라운드마다 비판하게 하면 사실성과 추론 정확도가 올라가고 환각이 줄어든다는 결과다. 혼자 자기 답을 곱씹는 것보다, 서로 다른 인스턴스가 부딪칠 때 오류가 더 잘 드러난다.
비판 하네스 패턴
이걸 실전 워크플로우로 묶으면 하나의 하네스(harness)가 된다. 하네스는 LLM이 메인 actor로 일하고, 그 둘레를 가드와 재시도 장치가 감싸는 통제 구조를 말한다. 비판자들이 알아서 돌아다니는 자율 에이전트가 아니라, 메인 세션이 운전대를 쥐고 비판을 받아 처리하는 구조라는 점이 핵심이다.
다이어그램 설명. 이 그림은 검증을 자기 자신이 아니라 외부 비판자에게 넘기는 한 바퀴를 보여준다. 메인 세션이 작업 결과를 만들면, 대화 히스토리를 공유하지 않는 비판자 서브에이전트 여러 개가 병렬로 그 결과를 공격한다. 돌아온 비판을 모아 타당성을 따지는데, 타당하면 메인 세션이 직접 재검증해 수용하고, 부당하면 근거를 남기고 기각한다. 한 바퀴로 끝내지 않고 같은 과정을 두 번 도는 이유는, 첫 비판을 반영한 결과에 또 새로운 허점이 생기기 때문이다. 비판하는 쪽이 작업 맥락을 모른다는 점이 이 구조의 전부다 — 방어할 자기 출력이 없으니 같은 세션 안에서의 자기 검토보다 훨씬 날카롭게 잡아낸다.
메인 세션에 주는 지시는 이렇게 한 문단으로 충분하다.
# 비판 하네스 — 메인 세션에 주는 지시 서로 다른 관점(정확성·보안·엣지케이스·가독성)에서 기존 작업을 비판적으로 검토하는 서브에이전트 4개를 병렬로 띄운다. # 작업 맥락은 넘기지 않고 결과물만 전달 각 서브에이전트는 "이 작업을 공격하라"는 임무만 받는다. 돌아온 비판 중 타당한 것만 골라 # 부당한 트집은 메인에서 기각 메인 세션에서 직접 재검증한 뒤 수용한다. 이 과정을 2회 반복한다. # 1회로는 새로 생긴 허점을 못 잡는다코드 설명. 이 프롬프트의 의도는 비판자들에게 "옹호하지 말고 공격하라"는 단일 임무만 쥐여 주는 데 있다. 관점을 정확성·보안·엣지케이스·가독성으로 갈라 두면 한 비판자가 놓친 결함을 다른 비판자가 메우게 된다. 중요한 건 타당성 판단을 비판자가 아니라 메인 세션이 한다는 점이다 — 비판자는 무조건 트집을 잡고, 그중 진짜 결함만 메인이 가려 재검증하므로 부당한 지적에 휘둘리지 않는다. 2회 반복을 굳이 명시하는 까닭은, 1차 비판을 고친 결과에 또 다른 빈틈이 생기기 때문이다.
혼자 개발하는 사람에게 이게 왜 중요한가
팀이 있으면 코드 리뷰가 이 역할을 한다. 다른 사람이 내 맥락을 모르는 채로 결과물만 보고 따지니, 자기 변호 편향이 끼어들 자리가 없다. 혼자 AI로 개발할 때는 그 리뷰어 자리가 비어 있다. 맥락을 모르는 비판자 서브에이전트는 바로 그 빈자리를 메우는 가장 값싼 동료 리뷰다. 같은 모델을 쓰더라도, 작업 맥락을 끊고 "이걸 공격하라"고만 시키면 결과가 달라진다. 검증을 작업한 본인에게 다시 맡기지 않는 것 — 이 한 가지 습관이 혼자 만드는 결과물의 신뢰도를 크게 끌어올린다.
참고한 공개 자료:
- Large Language Models Cannot Self-Correct Reasoning Yet — https://arxiv.org/abs/2310.01798
- Do LLM Evaluators Prefer Themselves for a Reason? — https://arxiv.org/html/2504.03846
- Breaking the Mirror: Activation-Based Mitigation of Self-Preference in LLM Evaluators — https://arxiv.org/pdf/2509.03647
- Sycophancy in Large Language Models: Causes and Mitigations — https://arxiv.org/html/2411.15287v1
- Improving Factuality and Reasoning in Language Models through Multiagent Debate — https://arxiv.org/abs/2305.14325
- Claude Code — Subagents 공식 문서 — https://code.claude.com/docs/en/sub-agents
- How and when to use subagents in Claude Code — https://claude.com/blog/subagents-in-claude-code
이 글은 생성형 AI의 도움을 받아 작성되었습니다. 원본 자료를 기반으로 AI가 초안을 생성하고, 작성자가 검토·편집하였습니다.
'IT' 카테고리의 다른 글
'관리만 하던 시니어'의 종말 — 다시 실무로 내려온 그의 팀원은 에이전트다 (0) 2026.07.23 사용자가 AI라면, 가위 손잡이부터 다시 깎는다 (0) 2026.07.23 AI를 깔아도 AI-native가 아닌 이유 — 회사를 'AI가 읽고 쓸 수 있는' 형태로 다시 세우기 (1) 2026.07.22 AI의 ROI 역설 — 더 빨리 만드는 게 매출의 병목은 아니었다 (0) 2026.07.22 전기 모터가 공장에 들어왔을 때 — AI는 도구가 아니라 일하는 방식을 바꿀 때 효과가 난다 (0) 2026.07.22 AI가 다 만들면 나는 뭘 하나 — 좋은 검증 레이어를 만드는 사람 (0) 2026.07.21 'A급 코드'를 원했던 진짜 이유 — 우리는 코드가 아니라 머릿속 공간을 지키고 있었다 (0) 2026.07.21 AI 결과물을 믿게 만드는 검증 3종 — 이진·정량·정성, 그리고 운영 중 검증 (0) 2026.07.20 AI 시대의 일하는 법 — 생산은 AI에게 넘기고 사람은 검증에 집중한다 (0) 2026.07.20 의도부채(Intent debt) — 혼자 에이전트와 일할 때 사라지는 것 (0) 2026.07.20