구 블로그 61편, 에이전트 부대로 하루 만에 이관하기
2023년 12월부터 2024년 12월까지 손으로 쓴 글 61편과 프로젝트 4건이 있었다. 블로그를 Next.js에서 Astro로 갈아엎으면서 저작 자체를 AI에게 넘겼고, 이 옛 글들도 새 규격(frontmatter·slug·태그·시리즈)에 맞춰 옮겨야 했다. 원칙은 하나였다 — 순수 기계적 이전, 내용은 건드리지 않고 포맷만 바꾼다.
문제는 양이었다. 61편을 손으로 다듬자면 하루로는 어림없다. 지크는 “60개 넘는 문서, 너가 직접 하기는 위험하니까 소넷 부대”라 정리했고, 이 결정이 이 글의 출발점이다. 메인 세션(Opus)이 지침·검수·병합을 맡고, 실제 변환은 소넷 서브에이전트 부대가 글 단위로 병렬 처리하는 구조를 짰다.
설계: 골든 레퍼런스 → 파일럿 → 공유 브리프
부대를 풀기 전에 기준부터 세웠다. 방식은 4단계로 이어진다.
- 골든 레퍼런스: 메인 세션이 글 1편을 수작업으로 완성해, 부대 전체가 참조할 기준물로 삼았다.
- 파일럿 배치: 소수 배치를 먼저 돌려 빌드게이트(커스텀 린트 10종)와 스팟체크로 산출물을 검증했다.
- 공유 브리프: 배치마다 프롬프트를 새로 쓰는 대신, 규칙을 누적한 브리프 파일 하나를 전 배치가 공유하도록 해 프롬프트를 경량화했다.
- 배치 확장: 검증된 브리프를 들고 나머지를 카테고리 단위로 밀었다.
배치 확장
카테고리별로 5개 배치로 나눠 밀었다.
| 배치 | 구성 | 편수 |
|---|---|---|
| 1 | Nest.js | 8 |
| 2 | JavaScript · Spring | 13 |
| 3 | Phaser | 7 |
| 4 | WebSocket · 홈서버 | 22 |
| 5 | 기타 · 프로젝트 | 15 |
에이전트당 평균 토큰 소모는 5만, 편당 처리는 13분이었다. 공유 브리프가 자리잡은 뒤부터는 배치 규모를 키워도 지침을 다시 설명할 필요가 없었다.
사고와 브리프에 쌓인 방어선
부대를 풀자마자 첫 사고가 났다. 일부 에이전트가 레퍼런스 URL을 “검증”하겠다며 WebFetch로 접속을 시도했고, 작업을 중단시켰다. 지크는 이렇게 잘라 말했다.
“레퍼런스 링크를 왜 접속하려고해 그냥 추가하면되지; 어차피 이거 옛날에 작성한 블로그 기록을 현재 블로그 리포에 맞게 이전하는 작업일 뿐이야.”
이후 모든 브리프에 “네트워크 접속 전면 금지”를 명문화했다. 같은 방식으로 실패가 하나 나올 때마다 브리프에 규칙이 영구로 쌓였다.
- 빈 섹션: 헤딩 아래 내용 없이 바로 하위 헤딩으로 넘어간 사례 적발 →
h2바로 밑엔 리드 문장 1줄이 필수라는 룰 추가. - 수동 번호 헤딩:
## 1. …식으로 번호를 손으로 매긴 사례 4건 적발 → 채번은 렌더가 자동으로 부여하므로 수동 번호 금지 룰 추가. - 산출물 불일치: 배치 간 표기가 어긋난 곳은 grep 대조로 걸러냈다.
결정론 게이트의 사각지대
린트 10종이 방어선의 실체였지만, 설계한 만큼만 막았다. /projects/... 복수형 라우트만 검사하던 린트는 /project/... 단수형으로 잘못 걸린 깨진 링크를 그대로 통과시켰다. 사람이 실제로 그 링크를 눌러보기 전까지는 빌드가 초록불이라는 이유만으로 멀쩡한 줄 알았다. 결정론 게이트도 사각지대는 실패로만 드러난다는 뜻이다.
자가채점: 순수 기계적 이전
순수 기계적 텍스트 이전 — 내용 무수정, 규격(frontmatter·slug·태그·시리즈)만 변환.
80%. 최종 빌드는 “콘텐츠 린트 통과(글 63 · 시리즈 5 · 프로젝트 5)“로 159페이지를 통과시켜, 규격 변환 자체는 원칙대로 끝났다. 다만 매끄럽지만은 않았다. 초반 WebFetch 이탈은 “이전”이 “재검증”으로 스코프가 새는 조짐이었고, 단수형 라우트 사각지대는 규격 위반이 자동 게이트를 그냥 통과할 수도 있었다는 뜻이다. 두 사고 모두 사람 개입과 사후 실증으로 잡혔다 — 원칙은 지켜졌지만, 게이트 하나만으론 부족했다.
즉, 대량 변환의 품질은 프롬프트 한 줄이 아니라 실패를 규칙으로 바꾸는 루프가 만든다. 결정론 게이트는 부대 산출물의 실질 방어선이지만 사각지대는 설계 시점엔 안 보인다. 그리고 “기계적 이전”이라는 작업 성격 규정 자체가 에이전트의 행동 범위를 잘랐다 — 불필요한 네트워크 접속 같은 과잉 성실을 막은 것도 결국 그 규정 덕분이었다.