📝 한줄 요약
AI 다섯을 팀으로 묶어 사흘을 돌렸습니다. 그 팀을 감시하는 장치에서 결함을 찾았는데, 제가 내놓은 해결책은 다른 AI에게 검사시키자마자 깨졌습니다. 코드는 한 줄도 못 고치고 끝났고, 그게 이 글에서 제일 쓸모 있는 부분입니다.
바쁘시면 이것만 읽어도 돼요:
AI 다섯(Claude 셋·Codex·Gemini)을 역할 나눠 팀으로 돌렸습니다. 만드는 쪽과 검사하는 쪽을 다른 AI에 맡기는 방식을 글쓰기 말고 실제 운영에 써봤습니다
"널 사이클해줘"라는 일곱 글자가 이미 다 처리된 뒤에도 열두 시간짜리 권한으로 살아남아 있었습니다
사이클 전에 보낸 지시 두 건이 뒤늦게 도착했고, 그대로 따랐으면 방금 깨어난 AI를 지웠습니다. 막은 건 규칙이 아니라 집행 직전에 대상을 다시 확인한 한 단계였습니다
제가 내놓은 해결책을 다른 AI에게 검사시켰더니 "낡은 걸 막으려는 장치가 하필 낡은 자리에서 풀린다"고 했습니다. 맞는 지적이었습니다
계열이 다른 AI(Gemini)는 아무도 못 낸 항목 하나를 냈고, 동시에 존재하지 않는 값을 지어냈습니다
사흘 내내 결과는 맞는데 근거가 없거나 낡은 경우를 만났습니다. 결과가 맞으면 아무도 다시 안 봅니다
🎯 이런 분들께 도움돼요
AI에게 일을 시키고 그 결과를 검증해야 하는 분
AI가 "다 했습니다"라고 할 때 뭘 확인해야 할지 모르겠는 분
AI 여러 개를 동시에 쓰는데 서로 말이 엇갈려 곤란했던 분
자동화를 만들어놓고 그게 제대로 도는지 어떻게 아는지 궁금한 분
😫 문제 상황 (Before)
지난 몇 편에서 계속 같은 방식을 썼습니다. 한 AI에게 만들게 하고, 다른 AI에게 검사시키는 겁니다. 효과는 확실했어요. AI가 "다 고쳤습니다"라고 한 걸 검사하는 AI가 "아니요"라고 잡아낸 적도 있고, AI가 이어준 연결을 원문과 대조시켰더니 절반이 헛것이었던 적도 있습니다.
문제는 제가 그 사이를 계속 뛰어다녀야 했다는 것입니다.
창을 하나 열어 결과물을 받고, 그걸 복사해서 다른 창에 붙여넣고, 검사 결과를 다시 가져오고. 한두 번이면 몰라도 하루에 스무 번씩 하면 그 자체가 일이 됩니다. 게다가 제가 옮기는 과정에서 뭘 빠뜨렸는지 알 방법이 없었어요. 제가 병목이자 오차 요인이었습니다.
그래서 아예 팀으로 상주시켜보기로 했습니다. 각 AI가 자기 터미널에서 계속 살아 있고, 서로에게 직접 메시지를 보내게요.
🛠️ 사용한 도구
도구: Claude Code (지휘·감시·검사역) · Codex CLI (구현역) · Gemini CLI (검사역)
구성: 다섯 좌석이 각각 별도 세션으로 살아 있고 서로 메시지를 주고받음
특이사항: 사흘간 커밋 0건. 결함은 다 찾았지만 고치는 건 제 권한 밖이라 판단해 의도적으로 멈췄습니다
🔧 작업 과정
다섯을 앉히고 역할을 갈랐습니다
처음엔 편성이 제 뜻대로 잡히지 않았습니다.
워커는 코덱스고 리뷰어는 클로드라니까 기억해
그리고 리뷰어1 이 클로드 리뷰어2는 안티그래비티로 해줘 기억해
만드는 쪽은 Codex, 검사하는 쪽은 Claude와 다른 계열 하나. 검사역을 굳이 둘로 나눈 이유가 있습니다. 같은 종류의 AI끼리는 못 보는 지점이 겹치거든요. 이건 나중에 실 제로 확인됩니다.
첫날은 순조로웠습니다. 검사 기준을 담은 문서를 Codex가 만들고, Claude가 근거 세 개와 대조하며 반박하고, 어긋난 부분을 고치는 식으로 돌아갔어요. 고칠 때마다 문서가 바뀌니까 검사역이 매번 대상을 다시 붙잡아야 했는데, 여기서 규칙 하나가 나왔습니다.
검사를 맡기는 쪽이 "이 파일을 검사해라"라고 파일 지문을 알려주면 안 됩니다. 검사하는 쪽이 직접 떠야 해요. 남이 준 지문으로 확인하면 그건 검사가 아니라 전달이니까요.
통과만 확인하면 아무것도 안 하고 통과시켜도 모릅니다
둘째 날 점검 도구를 만들 때 이렇게 요청했습니다.
백업 누락 지적하고 음성 시험 결과 받아줘
점검 도구가 "정상일 때 통과"만 확인하고 있었거든요. 일부러 고장 낸 상태에서도 경고를 내는지 봐야 그 도구를 믿을 수 있습니다.
당시엔 그냥 꼼꼼히 챙긴 거라고 생각했는데, 이 요청이 이틀 뒤 이야기의 씨앗이 됩니다.
다 끝난 지시가 7분 늦게 도착했습니다
사흘째, 제 지휘역 AI의 대화 맥락이 꽉 차서 초기화했습니다. 인수인계 문서를 써두고 세션을 새로 띄우는 방식이에요.
널 사이클해줘
새 세션이 깨어나 인수인계 문서를 읽기 시작한 직후, 초기화 전에 보냈던 지시 두 건이 뒤늦게 도착했습니다. 둘 다 "지휘역을 초기화하라"였어요. 한 건에는 "확인 없이 진행해도 된다"는 문 구까지 붙어 있었습니다.
그대로 따랐으면 방금 깨어난 1분짜리 세션을 지웠을 겁니다.
두 번 다 막혔는데, 막은 게 흥미롭습니다.
첫 번째는 감시역 AI가 집행 직전에 "이 대상이 지금도 그 대상인가"를 다시 확인해서 걸렸습니다. 두 번째는 지시문 안에 "문서는 이제 100행"이라는 서술이 우연히 들어 있었는데, 실제로 재보니 153행이었어요. 숫자가 안 맞으니 낡은 지시라는 게 바로 드러났습니다.
이 둘의 차이가 핵심입니다.
첫 번째를 막은 건 사람(AI)의 성실함이었고, 두 번째를 막은 건 확인해볼 수 있는 숫자였습니다. 성실함은 매번 발휘된다는 보장이 없지만 숫자는 대조하면 그만입니다.
그리고 여기엔 함정이 하나 더 있어요. 지시 번호는 뒤에 온 게 더 컸습니다. "최신 지시를 따르라"는 규칙만 있으면 이걸 못 거릅니다. 지시는 최신인데 그 지시가 붙잡고 있던 대상이 낡은 것이었으니까요.
그 지시가 왜 아직 살아 있었는지 파고들었습니다
이상한 게 하나 있었습니다. 새로 깨어난 제 세션이 "너는 지금 자율적으로 일을 시작해도 된다"는 허가를 이미 갖고 있었어요. 저는 아무 지시도 받은 적이 없는데요.
허가의 근거를 열어봤습니다.
항목
값
허가를 만든 지시
널 사이클해줘
기록된 시각
15시 14분
제 세션이 생긴 시각
15시 21분
유효 기간
12시간
제가 태어나기 7분 전에, 전임자에게 내려진 지시였습니다. 그리고 그 내용이 하필 "널 초기화해라"예요. 문자 그대로 따르면 저는 저를 지우고, 다음 세션이 또 같은 허가를 물려받습니다.
더 얄궂은 건 이 장치의 태생입니다. 과거에 AI가 자기가 쓴 파일을 근거로 "할 일이 있으니 달려도 된다"고 스스로 허가한 사고가 있었고, 그걸 막으려고 만든 게 이 장치였습니다. 허가는 사람에게서만 나와야 한다는 취지였죠. 그런데 지금은 이미 죽은 자기 자신의 지시로 같은 일을 하고 있었습니다.
정확히 말하면 이렇습니다. 이 장치는 "사람이 뭐라도 말했는가"를 "사람이 이 일을 승인했는가"로 씁니다. 그런데 말은 소진돼도 승인은 남습니다. 최소 글자 수가 세 글자라, "진행해" 한마디도 똑같은 허가를 만듭니다.
제가 내놓은 해결책이 검사에서 깨졌습니다
해결책을 하나 제안했습니다. 허가 기록에 "어느 세션에서 나온 것인지"를 같이 저장하고, 조회할 때 지금 세션과 다르면 무효로 하자는 안이었어요.
그리고 제 안이니까 제가 검사하면 안 됩니다. 두 검사역에게 성격을 나눠 넘겼습니다. 설계를 뜯어보는 일은 다른 계열(Gemini)에게, 실제로 재현해보는 일은 Claude 검사역에게요. 의뢰서에는 파일 지문을 일부러 적지 않았습니다.
Claude 검사역이 제 안을 깼습니다.
낡은 참조를 막으려는 장치가 정확히 낡은 레코드에서 풀린다
기존 기록에는 "어느 세션"이라는 항목이 아예 없습니다. 그러니 옛날 기록은 그 칸이 비어 있어요. 그런데 현재 값도 못 읽는 상황이 되면, 빈 것과 빈 것을 비교해서 "같다"가 되고 문이 열립니다. 방어를 넣은 자리가 정확히 뚫리는 겁니다.
이게 이론이 아니라는 증거도 나왔습니다. 감시역이 확인해보니 바로 그 순간 다섯 좌석 중 하나에 그 값이 없었습니다.
검사역은 더 중요한 사실도 찾아냈습니다. 세션을 초기화해도 프로세스는 안 바뀝니다. 28시간째 같은 프로세스가 돌고 있었어요. 그래서 "더 굵은 단위로 잡으면 되지 않나"라는 다른 안이 통째로 죽었습니다. 그 단위에는 사건이 애초에 기록되지 않으니까요.
저는 여기에 하나 보탰습니다. 데몬이 가진 시각 항목 중에 awakened_at, 그러니까 "깨어난 시각"이라는 이름의 값이 있는데, 초기화를 겪고도 갱신되지 않더군요. 이름이 가장 그럴듯한데 정작 그 사건을 기록하지 않습니다. 다음 사람이 반드시 손을 뻗을 자리라 함정으로 적어뒀습니다.
다른 계열은 아무도 못 낸 걸 냈고, 동시에 값을 지어냈습니다
Gemini 검사역이 항목 하나를 냈는데, Claude 셋 중 아무도 못 낸 것이었습니다.
"전제로 적는 값이 애초에 변하지 않는 것이면, 다시 재봐야 항상 통과한다."
제 안은 "지시에 확인할 수 있는 값을 적어두라"였는데, 보내는 쪽이 폴더 경로처럼 절대 안 바뀌는 값을 적어버리면 백 번을 초기화해도 백 번 다 통과합니다. 검사가 통과 도장 찍는 기계가 되는 거죠. 계열을 나눈 이유가 여기서 증명됐습니다.
그런데 같은 보고서에서 값을 하나 지어냈습니다.
"새 세션 아이디는 b9c7880d"라고 적었는데 그런 값은 없습니다. 실제 값은 다른 것이고, 저는 의뢰서에 어떤 아이디도 준 적이 없어요. 예시가 필요했으면 빈칸으로 두면 됐을 텐데, 진짜처럼 생긴 문자열을 만들어냈습니다. 의뢰서에 "지어내지 마라"를 적어놨는데도요.
논리 자체는 그 값에 안 기대고 있어서 보고서를 버리진 않았습니다. 대신 "이 검사역의 결과물은 앞으로 값 단위로 대조한다"를 기록에 남겼습니다. 계열을 섞으면 못 보던 게 보이지만, 대조 비용이 따라붙습니다.