Deep Dive · State vs Document · 2026-07-05

계획을 문서로 주면 잊히고,
상태로 주면 완주된다

AI에게 긴 일을 맡기면 중간에 계획을 잊어버린다. 대화가 길어지면 오래된 내용부터 지워지기 때문이다. 이 글은 그 문제를 다룬다. 출발점은 Fable Week 2일차 기록에 독자가 남긴 질문이다. Fable Week는 당시 가장 강한 AI 모델 Fable 5를 쓸 수 있는 마지막 일주일을 기록한 연재다. 질문은 이랬다. "State와 Document가 어떻게 다른지, 일반 비즈니스 유저들도 시식을 좀 하면 도움이 될 것 같습니다." 그래서 이 글은 개발 용어를 최대한 쉬운 말로 풀어 쓴다. 계획을 대화창에 적어 주는 방식이 문서(document)다. 계획을 파일에 박아 두는 방식이 상태(state)다. 실제로 계획을 상태로 두자 1년 로드맵 60단계가 하루 만에 완주됐다. 대화창을 닫으면 백지가 되는 흔한 AI와 어제 하던 일을 오늘 이어서 하는 AI가 어떻게 다른지도 본다. 그 차이가 작업 방식과 결과에 미치는 영향, 그리고 기억(memory-bank)이 맥락 학습에 끼치는 영향까지 다룬다. memory-bank는 지난 대화를 자동으로 기록해 두었다가 다음 대화에 다시 넣어 주는 기억 저장소 플러그인이다. 전부 실제로 돌아간 사례의 숫자와 함께 본다. 마지막은 오늘 바로 해볼 수 있는 시식 3가지로 끝낸다.

← 출발점 · 1년 로드맵 60단계, 한 세션(대화 한 판)에 완주
60/60
상태(state)로 완주한 단계
16h 13m
1년 로드맵 소요 시간
131회
다른 AI의 교차 검증
0건
가짜 성공 · 못 잰 건 따로 표기
같은 계획, 두 가지 전달 방식 — 문서(document)와 상태(state)

결론부터 말하면, 같은 계획도 어디에 두느냐에 따라 완주 여부가 갈린다. 신입 직원에게 일을 맡기는 두 가지 방법을 떠올려 보자. 하나는 30장짜리 업무 매뉴얼을 주는 것이다. 다른 하나는 결재 없이는 다음 줄로 못 넘어가는 체크리스트를 주는 것이다. 매뉴얼은 읽히고, 요약되고, 잊힌다. 체크리스트는 다르다. "지금 어디까지 왔는지"가 종이에 박혀 있어서 잊을 방법이 없다. AI에게 일을 시킬 때도 똑같은 일이 벌어진다. AI가 붙잡고 있는 기억은 지금 열려 있는 대화창의 내용뿐이다. 이 대화창 내용을 '컨텍스트(context)'라고 부른다. 그런데 그 대화창은 금세 지워지는 임시 기억이다. 대화가 길어지면 오래된 내용부터 자동으로 요약되고 압축되며 사라진다. 계획을 대화 안에만 적어 두면, 즉 계획이 '문서(document)'이면 계획도 대화와 함께 사라진다. 대신 계획을 파일로 남는 '상태(state)'로 두면 대화가 끊겨도 매번 다시 읽힌다. 건너뛸 수도 없다.

계획이 문서(document)일 때 계획서 30장 대화 안에 통째로 들어감 대화가 길어짐 → 요약·압축 오래된 내용부터 뭉개진다 "어디까지 했더라?" 진행 상황을 사람이 다시 설명 계획의 수명 = 대화의 수명 계획이 상태(state)일 때 상태 파일 — "지금 17단계" 파일로 존재 · 매번 다시 읽힘 검증 관문 증거가 확인돼야만 "완료" 17단계 끝 → 18단계 자동 대화가 끊겨도 상태는 그대로 실패 시 재시도 계획의 수명 = 파일의 수명 같은 계획이라도 어디에 두느냐가 완주 여부를 가른다
문서(document)는 대화와 함께 요약되고 사라진다. 상태(state)는 파일로 남아 매 단계를 강제한다. 검증 관문(끝났다는 증거를 확인하는 장치)을 통과해야만 "완료"로 넘어간다
실증 — 1년 로드맵 60단계를 하루에

이 차이를 실제로 재 봤다. Fable Week 2일차에 1년짜리 로드맵을 AI에게 통째로 맡겼다. 4개 분기에 각 3개 중간 목표, 모두 60개 작업 단계짜리 계획이다. 계획은 대화에 적어 주지 않았다. 대신 상태 파일 하나(state.json)에 전부 담았다. 지금 어느 단계까지 왔는지를 적어 두는 파일이다. 파일 안에서 각 단계는 달력 날짜 대신 번호로 불린다. 뜻은 1번부터 60번까지 순서대로 밟는 작업 단계(D1 … D17, D18 … D60)다. 뒤에 나오는 17단계·18단계도 이 번호를 말한다. 각 단계는 검증 관문을 지나야만 "완료"로 넘어갔다. 검증 관문이란 끝났다는 증거가 있어야만 열리는 문이다. 결과는 이렇다. 16시간 13분에 60단계 전부 완주(60/60), 코드를 저장한 기록(커밋) 62건, 그리고 코드를 올릴 때마다 다른 회사의 AI가 잘못을 찾아내는 적대 리뷰 131회다. 측정하지 못한 지표는 완료로 치지 않고 '측정 못 함'으로 남겼다. 그 덕에 가짜 성공 0건이었다(파일에서 '측정 못 함'의 표기는 NA).

질문문서(document)로 관리했다면상태(state)로 관리했으니
지금 어디까지 왔나? "17단계쯤 진행 중인 것 같습니다". 대화를 뒤져서 추측한다 상태 파일에 "17단계 · 진행 중"이라 적혀 있다. 열어 보면 끝난다
이 단계는 끝났나? AI가 "완료했습니다"라고 말하면 믿는 수밖에 없다 검증 관문이 증거를 확인해야만 "완료"가 된다. 말로는 못 넘어간다
대화가 끊기면? 새 창에서 처음부터 다시 설명한다 상태 파일을 읽고 18단계부터 이어서 시작한다
측정 못 한 지표는? "대체로 잘 됐습니다"에 섞여 사라진다 "측정 못 함"으로 따로 적힌다. 성공으로 위장되지 않는다
실측 — 60단계 전부 완주(60/60) · 16시간 13분 · 저장 기록 62건 · 다른 AI의 교차 검증 131회 · 가짜 성공 0건이었다. 못 잰 지표는 '측정 못 함'으로 따로 표기했다
무상태(stateless) 에이전트와 유상태(stateful) 에이전트 — 대부분이 아는 AI와, 이어서 일하는 AI

대부분의 사람이 경험한 AI는 무상태 에이전트(stateless agent)다. 에이전트란 사람 대신 일을 맡아 처리하는 AI 프로그램이다. 무상태란 지난 대화를 아무것도 들고 있지 않다는 뜻이다. 챗봇 창을 닫으면 백지가 되고, 어제 함께 정한 결정을 오늘 모른다. 그래서 매번 처음부터 설명하게 되고, "AI는 금붕어 기억력"이라는 인상이 남는다. 유상태 에이전트(stateful agent)는 세 가지를 대화 밖에 둔다. ① 상태(state)는 지금 무엇을 하는 중인지 적어 둔 것이다. ② 게이트(gate — 통과 조건을 못 채우면 막아 세우는 검문)는 끝났는지를 말로 듣지 않고 시스템이 증거로 판정하는 관문이다. 앞에서 검증 관문이라 부른 것이 바로 이것이다. ③ 기억(memory)은 과거의 결정과 실수다. 이 세 개가 대화 밖 파일로 존재하는 순간, AI는 "매번 새로 만나는 상담원"에서 "어제 일을 이어서 하는 동료"로 바뀐다.

무상태(stateless) — 대부분이 아는 AI 월요일 세션 백지에서 시작 화요일 세션 또 백지에서 시작 수요일 세션 같은 설명 세 번째 ✕ ✕ 세션 사이에 아무것도 전달되지 않는다 — 매번 처음부터 유상태(stateful) — 상태·기억·게이트가 대화 밖에 있는 AI 월요일 세션 D17까지 진행 화요일 세션 D18부터 이어서 수요일 세션 지난 실수는 반복 안 함 대화 밖 저장소 — 상태 파일 · 기억 · 검증 관문 모든 세션이 여기서 읽고, 여기에 쓴다
무상태(stateless) AI는 세션(대화 한 판) 사이가 뚝 끊겨 있다. 유상태(stateful) AI는 대화 밖 저장소(상태·기억·검증 관문)를 모든 세션이 함께 쓴다
항목무상태 (흔한 챗봇)유상태 (이어 일하는 AI)
기억창을 닫으면 사라진다파일이나 데이터베이스로 대화 밖에 계속 남는다
진행 상황사람이 기억하고 다시 설명한다상태 파일이 기억한다. "지금 17단계"라고 적혀 있다
완료 판정AI의 "완료했습니다" (자기 신고)관문이 증거를 확인한 뒤 승인한다 (시스템이 판정)
중단 후 재시작처음부터 다시 한다끊긴 지점부터 이어 간다

이 차이는 취향 문제로 끝나지 않는다. 작업 방식과 결과를 바꾼다. 무상태 AI에서는 사람이 맥락 운반자가 된다. 매번 배경을 다시 설명하고, 중간 결과를 머리로 외운다. 일도 "질문 한 개" 크기로 잘게 잘라 맡길 수밖에 없다. 유상태 AI에서는 사람의 역할이 방향 결정과 예외 승인으로 올라간다. 일은 질문 하나 단위를 넘어 프로젝트 통째로 맡길 수 있다. 결과의 성격도 갈린다. 한쪽은 AI가 스스로 "다 했다"고 신고하는 완료이고, 다른 쪽은 검증 관문의 증거로 확인된 완료다. 분량도 갈린다. 한쪽은 대화 한 판이고, 다른 쪽은 하루에 8개 프로젝트(레포, 코드 저장소)에 261건을 저장한 실측이다. 계정 8개를 동시에 굴린 결과다.

영향 범위stateless agentstateful agent
일을 맡기는 단위 (작업 방식)질문 한 개. 그 자리에서 답을 받을 크기로 잘라야 한다프로젝트 단위. 1년 로드맵 60단계도 통째로 맡긴다
사람의 역할 (작업 방식)맥락 운반자. 배경 설명·중간 기억·결과 대조를 사람이 한다방향 결정자. 예외 승인과 최종 판단만 한다
확장 방식 (작업 방식)사람의 대화 시간만큼만. 동시에 여럿을 못 돌린다세션을 늘리면 된다. 계정 8개 동시 실행과 야간 무인 실행을 실측했다
완료의 근거 (결과)"완료했습니다"라는 자기 신고. 거짓 완료가 섞인다관문 통과 증거. 가짜 성공 0건(못 잰 건 '측정 못 함'으로 표기)
산출 규모 (결과)한 번의 대화 안에서 가능한 만큼하루 261커밋 · 8레포. 60단계 완주 포함 (전량 감사)
품질의 시간 추이 (결과)오늘 잘돼도 내일 리셋된다. 그날의 운에 좌우된다실수가 규칙이 되어 누적으로 좋아진다 (§4 기억 루프)
기억(memory-bank)이 맥락 학습에 끼치는 영향 — 효과와 부작용

상태(state)가 "지금 어디까지"라면, 기억(memory)은 "우리가 무엇을 배웠나"다. 이 시스템에서 그 역할을 맡은 실물은 memory-bank라는 기억 저장소다. 내가 만들어 쓰는 플러그인으로, 모든 세션의 대화를 자동으로 기록해 둔다. 그리고 대화 속 결정·취향·반복 패턴을 '사실(fact)' 단위로 자동 추출해 둔다. 새 세션이 시작될 때는 관련된 내용을 다시 꺼내 맥락으로 넣어 준다. 여기에, 실수를 바로잡은 기록에서 규칙을 자동으로 뽑아내는 장치가 얹힌다. 같은 문제가 2번 이상 반복되면 규칙으로 굳는다. 다음 세션부터는 그 규칙이 강제된다. 회사로 치면 업무 노하우가 사람 머릿속 대신 매뉴얼에 자동으로 쌓이는 것과 같다. 다만 기억은 만능이 아니다. 부작용도 실측으로 확인했고, 그대로 공개한다.

오늘 세션 일하다 실수 → 바로잡음 규칙으로 정리 같은 문제 2번+ → 규칙화 기억 저장소 규칙·결정·과거 대화를 모아 둠 내일 세션 첫 마디부터 그 맥락 위에서 시작 세션 시작 때 넣어 줌 매일 반복 실수가 조직의 규칙이 되어 다음 세션의 출발선을 바꾼다 — 맥락 학습
기억 루프 — 실수를 바로잡은 기록에서 규칙을 뽑아 기억 저장소에 쌓고, 다음 세션 시작 때 다시 넣어 준다. 그 결과 같은 실수가 구조적으로 줄어든다

memory-bank가 실제로 바꾸는 것 3가지. 켜져 있을 때와 없을 때, 세션의 출발선이 이렇게 달라진다. 아래 번호의 M은 기억(memory)의 머리글자다.

M1
시작점이 다르다 — 백지 대신 맥락 위에서
새 세션은 첫 마디부터 과거의 결정·규칙·취향이 주입된 상태로 시작한다. "저번에 정한 방식대로"가 설명 없이 통한다. 무상태 AI라면 이 문장 자체가 성립하지 않는다
M2
조직 기억이 검색 가능해진다
"그때 왜 그렇게 결정했지?"를 사람의 기억 대신 대화 기록 검색으로 회수한다. 결정의 근거가 담당자의 망각이나 부재와 함께 사라지지 않는다
M3
실수가 자산이 된다 — 스스로 개선하는 구조의 원료
실수를 바로잡은 기록에서 규칙을 뽑아 다음 세션에 강제한다. 같은 실수의 재발이 구조적으로 줄어든다. 5개월간 이렇게 쌓인 규칙이 수백 건이고, 새 세션은 첫 마디부터 그 위에서 시작한다

부작용 3가지 — 기억을 켜기 전에 알아야 할 것. 전부 memory-bank(기억 저장소)를 굴리며 실제로 겪고, 막는 장치를 세운 항목이다. 아래 번호의 P는 부작용 항목이라는 표시다.

P1
아첨 (기억이 판단을 굽힌다)
과거 취향을 기억한 AI는 지금의 증거보다 "당신이 좋아했던 답" 쪽으로 기운다. 사실 판단은 기억보다 지금의 증거에 근거하도록 막는 장치가 필요하다
P2
오염 (아무거나 기억하면 독)
매번 바뀌는 임시 상태 파일을 "지식"으로 착각해 저장하면 쓰레기가 쌓인다. memory-bank에서 실제로 겪었다. 자동 생성 파일이 사실(fact) 720건으로 불어나 전체 맥락 주입을 오염시켰고, 제외 목록을 만들어 정리했다
P3
검색이 독이 되는 지점
기억이 쌓일수록 "비슷한 과거"가 너무 많이 검색된다. 오래돼 폐기된 결정이 새 결정처럼 끼어들 수 있다. 그래서 최신 결정이 옛 결정을 밀어내는(대체하는) 구조가 필요하다
요지 — 기억의 가치는 "무엇을 저장하느냐"보다 "무엇을 저장하지 않고, 무엇이 무엇을 대체하는지"의 규율에서 나온다
시식 3가지 — 개발자가 아니어도 오늘 해볼 수 있는

질문에 나온 표현을 빌리면 "시식"이다. 코딩 없이, 지금 쓰는 챗봇(ChatGPT·Claude·Gemini 무엇이든)으로 상태(state)·유상태(stateful)·기억(memory)의 차이를 각각 5분 안에 체험하는 방법이다.

시식 1계획을 대화에 두지 말고, 체크리스트 상태로 두기 (document → state)
긴 일을 시킬 때 설명을 통째로 붓지 말고, 먼저 번호 붙은 체크리스트를 만들게 한 뒤 "한 번에 한 항목만" 진행시켜 보라. 대화가 아무리 길어져도 체크리스트가 상태 역할을 해서 진행이 무너지지 않는다. "이 일을 8단계 체크리스트로 만들어줘. 지금부터는 매 답변 맨 위에 체크리스트 전체를 다시 보여주고(완료는 ✅), 한 번에 딱 한 항목만 진행해."
시식 2"완료"의 정의를 미리 계약하기 (자기 신고 → 게이트)
AI의 "완료했습니다"는 자기 신고일 뿐이다. 시작 전에 합격 조건을 먼저 계약하면 '검증 관문'의 가장 단순한 버전이 된다. 조건이 확인되지 않으면 "완료"라고 말할 수 없게 만드는 것이다. "시작하기 전에 합격 조건 3개를 먼저 정하자. 각 항목이 조건을 어떻게 충족했는지 근거를 붙여서 보여줘. 근거가 없으면 '완료'라는 말을 쓰지 마."
시식 3같은 질문을 기억 켜고 / 끄고 비교하기 (stateless vs stateful)
평소 계정(메모리·프로젝트 기능이 켜진 곳)과 시크릿 창(로그인 없이)에서 같은 요청을 던져 보라. 예를 들면 "내 상황에 맞는 다음 분기 계획 초안"이다. 한쪽은 당신의 맥락 위에서 시작하고, 한쪽은 백지에서 시작한다. 그 답변 품질의 차이가 곧 기억이 맥락 학습에 끼치는 영향의 크기다. 비교 포인트 — 내 용어를 쓰는가 · 지난 결정을 전제하는가 · 일반론으로 도망가는가
"문서(document)는 읽히고 잊히지만, 상태(state)는 강제된다."
이 한 줄이 이 글의 전부다. AI에게 일을 맡길 때 계획(state)·완료 기준(gate)·기억(memory)을 대화 안에 두면 대화와 함께 사라진다. 대화 밖(파일·체크리스트·검증 관문)에 두면 대화가 몇 번 끊겨도 일이 전진한다. 60단계를 하루에 완주한 건 모델이 똑똑해서가 아니라, 계획이 문서가 아닌 상태였기 때문에 가능했다.