소설을 컴파일하다
AI에게 원고를 맡기기 전에, 나는 파이프라인부터 만들었다
2026년 8월 31일
소설을 컴파일하다
AI에게 원고를 맡기기 전에, 나는 파이프라인부터 만들었다
지난 에세이에서 나는 AI와 함께 DSL 컴파일러를 만든 이야기를 썼다. 그 글의 결론은 대략 이랬다. AI는 전문성의 80%를 압축해주지만, 마지막 판단은 끝내 인간에게 남는다.
그리고 지금, 나는 소설을 연재하고 있다. 《30개월》이라는, 어떤 재난 이후의 시간을 오직 기록물로만 따라가는 이야기다. 방송 트랜스크립트, 공고문, 게시판 저장본, 손으로 쓴 장부, 그리고 아주 가끔의 인터뷰. 서술자는 없다. 설명해주는 사람도 없다.
이 소설을 쓰면서 나는 이상한 실험을 하나 하고 있다. 원고를 쓰기 전에 컴파일러부터 만들었다. 진짜 컴파일러다. 중간 표현이 있고, 검증기가 있고, 해시로 고정된 승인 락이 있고, 배포 전에 돌아가는 가드가 있다. 소설에 빌드 파이프라인을 단 것이다.
이 글은 그 실험이 어디서 실패했고, 어디서 예상 밖으로 성공했는지에 대한 기록이다.
서술자가 없는 소설의 문제
이 소설의 형식부터 설명해야 한다. 독자가 읽는 것은 이야기가 아니라 배열된 자료다. 예를 들어 연재 1회의 어느 자료는 선거 개표방송의 트랜스크립트인데, 후보의 발화가 중간에 끊기고, 마이크 부딪히는 소리가 나고, 6초의 공백이 있고, 화면이 다음 지역구로 넘어간다. 그게 전부다. 무슨 일이 일어났는지 아무도 말해주지 않는다.
이 형식의 효과는 전부 정보의 배치와 부재에서 나온다. 독자는 여섯 개 시설의 엉망인 장부를 나란히 읽다가 어느 순간 스스로 무언가를 계산하게 된다. 1회 마지막 자료에서 익명의 게시판 이용자가 그 계산을 대신 수행하는 순간 — “묶으니까 나옴. 이게 더 무서움.” — 독자는 자기가 방금 한 일을 자료 속에서 목격한다.
이런 소설은 문장력만으로는 쓸 수 없다. 지켜야 할 제약이 수십 개씩 쌓이기 때문이다. 이 공고문을 쓴 사람은 그 시점에 무엇을 모르는가. 이 인물의 남은 등장 횟수는 몇 번인가. 이 장부의 숫자는 세 회차 뒤에 공개될 숫자와 모순되지 않는가. 그리고 연재는 되돌릴 수 없다. 한번 공개된 숫자는 세계의 물리 법칙이 된다.
사람의 기억력으로는 30회 분량의 이런 제약을 지킬 수 없다. AI의 기억력으로는 더 못 지킨다. 그래서 기억 대신 데이터로 만들었다.
소설에 빌드 파이프라인을 달다
구조는 이렇다. 세계관 정본 문서들이 있고, 회차마다 브리프와 계획이 있고, 자료 하나하나가 중간 표현으로 컴파일된다. 그리고 AI에게는 그 전부가 아니라 허용 목록으로 걸러진 패킷 하나만 전달된다. 이 자료가 관측할 수 있는 사실, 이 자료를 쓴 사람의 지식 상한, 이 장면에 등장할 수 있는 인물과 그의 행동 규칙. 그게 전부다.
핵심 아이디어는 하나다. “이건 쓰지 마”라고 말하지 않고, 아예 모르게 한다. 언어 모델에게 “X를 밝히지 마”라고 지시하면 X가 모델의 주의 안에 들어간다. 비밀을 지키게 하는 가장 확실한 방법은 비밀을 주지 않는 것이다. 작가만 아는 사실들은 구조적으로 AI에게 도달할 수 없다.
이 설계가 밥값을 한 순간이 있었다. 어느 단역은 이름 없이 딱 한 번 등장하고 영영 사라져야 하는 인물인데, 배포 전 스캔이 그의 이름이 패킷의 메타데이터 라벨에 실려 나가는 것을 잡아냈다. 사람이었으면 놓쳤을 것이다. 그 인물의 익명성은 이 소설에서 문장 하나만큼 중요하다.
정본 문서 쪽에도 규칙이 하나 있는데, 이건 AI와 무관하게 그냥 좋은 창작론이라고 생각한다. 인물 설정에 성격 형용사를 쓰지 않는 것. “성실하다”, “냉소적이다” 같은 말 대신, 같은 장소에서 무엇을 먼저 보는지, 모를 때 무엇을 하는지, 감정이 커지면 어떤 행동으로 새는지를 적는다. 형용사는 문장을 만들지 못하지만 행동 규칙은 장면을 만든다.
규칙을 전부 지킨, 지루한 초안
첫 초안이 나왔을 때의 이야기를 해야겠다. 모든 검증을 통과한 초안이었다. 정본 위반 0건, 배열 규칙 통과, 지식 상한 준수. 그리고 재미가 없었다.
원인을 추적해보니 문장의 문제가 아니라 배관의 문제였다. 장면마다 감정의 압력을 계산해두고는 그 값을 AI에게 전달하지 않고 있었다. 인물을 “언급하라”고만 요구하고 “말하게 하라”고 요구하지 않아서, 어느 인물은 화면 구석의 크레딧 한 줄로 처리되어 있었다. 그리고 제약 문구가 “이 사실들만 써라”로 읽히는 바람에, AI는 사실 목록을 대사로 번역한 요약문을 만들고 있었다. 배경 소음도, 침묵도, 말버릇도 없이.
문구를 바꿨다. “이 사실들만 써라”를 “이 사실 밖의 주장을 하지 마라”로. 사실의 화이트리스트가 아니라 주장의 경계로. 그러자 세계의 질감이 돌아왔다. 크레딧 한 줄이던 카메라 기자는, 생방송 전 음성이 잠깐 새어 나가는 사고 속에서 “오늘 길어질 것 같은데 중계차에 컵라면 남은 거 있으면 좀 챙겨 놔 달라”고 부탁하는 목소리가 됐다.
문장을 한 줄도 고치지 않았는데 문장이 좋아졌다. 이게 이 실험에서 내가 배운 가장 중요한 것이다. AI 협업 창작에서 산문의 품질은 상당 부분 프롬프트가 아니라 정보 설계의 문제다.
기계가 잡는 것, 사람이 잡는 것
그렇다고 파이프라인이 소설을 쓰는 건 아니다. 분명히 해둘 것이 있다.
그 지루한 초안도 모든 게이트에서 초록불이었다. 검증기는 정본 위반을 잡지, 생기 없음을 잡지 못한다. 어떤 자료가 너무 길거나, 어떤 침묵이 상투적이거나, 어떤 회차가 통째로 밋밋한 것 — 그건 읽어야만 안다. 그리고 결정들이 있다. 유일한 인터뷰를 누구의 목소리로 할지, 닫힌 건물을 다른 용도로 다시 쓸지, 회차를 기관의 발표로 닫을지 한 사람의 사적인 기록으로 닫을지. 파이프라인은 이런 질문에 답이 없다. 답하면 안 된다.
역할 분담은 결국 이렇게 정리됐다. 기계는 위반을 잡고, 사람은 선택을 한다. AI는 자유로운 작가가 아니라 제약된 실행자다. 그리고 이상하게 들리겠지만, 제약된 실행자로서의 AI가 자유로운 작가로서의 AI보다 훨씬 좋은 문장을 썼다. 제약이 창작을 조이는 게 아니라 조준한다는 것을, 나는 이 실험에서 처음 몸으로 이해했다.
이게 기본이 될까
아닐 것이다. 솔직하게 적어둔다.
이 방법론의 준비 대 집필 비용은 대략 4:1이다. 인물의 내면을 따라가는 보통의 소설이었다면 이 무게가 작품을 질식시켰을 것이다. 이 실험이 성립하는 건 이 소설이 하필 기록과 통제된 정보에 관한 이야기이기 때문이다. 관료제의 산술로 이루어진 세계를 쓰는 도구가 관료제의 산술을 닮게 된 것은 우연이 아니다.
다만 전체 장치가 아니라 원리 몇 개는 어떤 창작에든 이식할 수 있다고 생각한다.
- 모델이 말하면 안 되는 것은, 말하지 말라고 하지 말고 모르게 하라.
- 기계가 검사할 수 있는 제약은 기계에게 넘기고, 사람의 판단은 읽어야만 알 수 있는 것에 아껴라.
- 연속성은 기억이 아니라 데이터로 관리하라. 연재는 되돌릴 수 없다.
- 초록불을 믿지 마라. 통독은 자동화되지 않는다.
지난 에세이에서 나는 AI가 압축해주는 80%와 끝내 인간에게 남는 20%에 대해 썼다. 소설에서도 그 비율은 크게 다르지 않았다. 다만 남는 20%의 내용이 달랐다. 컴파일러를 만들 때 그것은 어떤 추상이 옳은가에 대한 판단이었다. 소설에서 그것은 무엇을 쓰지 않을 것인가에 대한 판단이다.
이 소설에서 가장 중요한 문장들은 쓰이지 않은 문장들이다. 설명되지 않는 6초, 답글이 달리지 않는 질문, 끝내 첨부되지 않는 사진. AI는 문장을 만들 수 있게 됐고, 그래서 역설적으로 작가의 일은 더 선명해졌다. 어디에 침묵을 배치할 것인가.
넉 달 전에 나는 상태 기계를 컴파일했다. 지금은 침묵을 컴파일하고 있다.
연재는 여기서 읽을 수 있다.