밤루프 해부: 자는 동안 AI가 코드를 고치는 구조
자기 전에 한 줄로 켜는 밤루프의 내부 — 결함을 찾고, 고치고, 다른 AI가 공격해 검증하고, 아침에 권고 보고서로 끝나는 네 단계. 수정 4건 중 2건이 같은 결함을 두 번 고친 밤의 기록까지.
한눈에 요약 자기 전에 한 줄로 켜는 밤루프는 발굴, 수정, 공격 검증, 아침 보고 네 단계로 돈다. 밤새 AI는 무엇도 스스로 반영하지 못하고, 반영 결정은 아침에 사람이 한다. 수정 4건 중 2건이 같은 결함을 두 번 고친 헛돈이었던 밤의 기록까지 담았다.
자기 전에 "자는 동안 돌려놔" 한 줄을 남겼다. 아침에 눈을 뜨면 보고서가 와 있다 — 밤새 결함 후보 27건을 찾아 4건을 고쳤으니 반영 여부를 정하라는 내용. 이 장치를 나는 밤루프라고 부른다. AI에게 이틀을 맡긴 기록을 쓴 지난 글에서 예고한 대로, 이번엔 그 내부를 네 단계로 뜯는다.
용어 둘만 먼저. PR은 "이렇게 고치겠다"는 변경 제안서다 — 제안일 뿐이라 누군가 승인해야 실제 코드에 반영된다. 그 승인이 머지다. 이 글을 관통하는 규칙 하나만 기억하면 된다. 밤새 머지는 0건이다.
1단계 발굴 — 고칠 것을 어떻게 찾나?
감사 담당 AI 여럿이 저장소를 나눠 뒤진다. 한쪽은 계산이나 판단이 틀린 곳을, 다른 쪽은 문제를 조용히 삼키는 곳 — 오류가 나도 아무 신호 없이 넘어가는 코드 — 을 판다. 아무 의심이나 올릴 순 없다. 후보마다 어느 파일 몇째 줄인지, 돌려보면 어떻게 잘못되는지 증거를 붙여야 하고 추측은 탈락한다. 그렇게 그 밤엔 후보 27건이 모였다.
2단계 수정 — 예산 안에서만 고친다
27건을 다 고치진 않는다. 밤마다 수정 상한이 있고, 심각한 순서로 그만큼만 착수한다. 한 건만 허락한 밤도, 이 밤처럼 네 건까지 열어준 밤도 있다. 상한을 올리면 밤의 처리량은 늘지만 아침에 그걸 다 검토하는 건 나다 — 상한은 AI의 능력이 아니라 내 아침 검토 체력에 맞춘 숫자다. 착수한 건마다 수정 담당 AI가 원인부터 진단해 최소한만 고치고, 고친 코드가 제대로 도는지 검사를 돌려 확인한다. 밀린 나머지는 목록째 아침으로 넘어간다.
3단계 공격 검증 — 고친 AI를 믿지 않는다
수정이 끝나면 별도의 AI가 그 수정을 공격한다. 정말 고쳐졌나, 고치다가 다른 곳을 망가뜨리지 않았나, 시킨 범위 밖을 건드리지 않았나. 하나라도 걸리면 반려되고, 수정 담당은 지적을 들고 다시 고친다. 이 공방을 세 번까지 반복해도 통과하지 못하면 그 건은 포기 — "못 고쳤음"으로 보고에 올라간다. 통과한 것만 PR로 제출되는데, 제출까지다. 반영은 여기서도 없다.
4단계 아침 보고 — 결정은 사람이 한다
아침 보고서는 결론부터 시작한다. 제안별로 반영할지 버릴지 권고와 그 근거, 포기한 건의 사유, 착수 못 한 발굴 목록. 나는 읽고 승인 버튼을 누르거나 안 누른다. 밤루프에서 사람 몫은 그게 전부고, 그래야 자는 동안 마음이 편하다.
그 밤의 헛돈 — 같은 결함을 두 번 고쳤다
수정 4건이 전부 공격 검증을 통과해 PR까지 갔으니 완벽한 밤처럼 보였다. 아침 보고가 밝힌 진실은 달랐다 — 실제 결함은 2개, 같은 결함을 두 번씩 고친 중복이 2쌍이었다. 발굴 단계의 중복 걸러내기가 결함의 제목으로만 이뤄진 탓에, 같은 결함이라도 이름이 다르게 붙으면 다른 결함으로 통과한 거다. 밤 예산의 절반이 이미 고친 걸 또 고치는 데 들어갔고, 같은 파일을 고친 두 제안은 하나를 반영하면 다른 하나가 충돌한다.
그래도 여기서 얻은 결론은 "역시 못 믿겠다"가 아니다. 중복을 잡아낸 것도 아침 보고였고, 권고대로 쌍마다 하나만 반영하고 하나를 버리는 데 든 비용은 클릭 몇 번이었다. 이 사건은 다음 밤 전 개선 1순위가 됐고, 이제 같은 파일을 고치는 결함들은 묶여서 제안 하나로 나온다.
왜 이 구조인가
되돌리기 어려운 일은 밤에 일어나지 않는다 — 네 단계 전체가 이 한 줄을 지키기 위해 있다. 반영도 삭제도 발행도 금지라, AI가 밤에 만드는 모든 것은 아침에 사람이 뒤집을 수 있는 제안 상태로만 존재한다. 그래서 실패가 싸진다. 밤루프를 계속 돌리는 이유는 이게 완벽해서가 아니라, 실패해도 싼 구조 위에서 돌기 때문이다.
이 밤루프가 이틀 동안 실제로 어떻게 굴러갔는지, 전체 기록은 지난 글에 있다:
