
AI가 어제 배운 걸 오늘 또 틀리는 이유 — 마크다운 한 뭉치가 기억이 되기까지
어제 에이전트에게 어렵게 가르친 규칙이 있었습니다. "이 명령은 이렇게 쓰면 서버가 멈추니 순서를 바꿔라." 그날은 규칙을 그대로 지켰습니다. 그리고 다음 날 아침, 같은 에이전트가 같은 실수를 태연하게 반복했습니다.
바뀐 건 아무것도 없었습니다. 모델도 그대로, 프롬프트도 그대로였죠. 다만 세션이 한 번 끊겼을 뿐입니다. 그 사이 에이전트의 머릿속에서 어제의 교훈은 통째로 증발했습니다.
1편에서 저는 AI를 잘 쓰는 진짜 레버가 모델 바깥의 구조라고 말했습니다. 이번 편은 그 구조 중에서도 기억에 관한 이야기입니다. 세션이 끝나면 다 잊는 에이전트에게 어떻게 지속되는 기억을 붙이는가. 결론부터 말하면, 정답은 화려한 학습이 아니라 마크다운 파일 한 뭉치를 밖에 두고 다음에 다시 읽는 것이었습니다.
왜 마크다운 한 뭉치가 자기개선이 되나
"AI가 스스로 학습한다"는 말을 들으면 대개 모델 가중치가 바뀌는 강화학습(모델 내부의 수치를 실제로 갱신하는 방식)을 떠올립니다. 그건 제 손을 떠난 영역이고, 1인 개발자가 건드릴 수 있는 레버도 아닙니다.
제가 택한 건 훨씬 단순합니다. 작업이 끝나면 그 자리에서 배운 것 — 무엇이 통했고 무엇이 나를 물었는지 — 을 마크다운 파일로 적어 볼트(제 지식을 모아두는 파일 저장소)에 넣습니다. 다음 세션이 시작될 때 그 파일을 다시 읽습니다. 그게 전부입니다.
가중치는 1비트도 안 바뀝니다. 그런데도 이건 명백한 자기개선입니다. 기록을 밖에 두고 다시 읽는 행위만으로 다음 행동의 기대치가 고정되기 때문입니다. 어제 "이 순서로 하면 서버가 멈춘다"를 볼트에 박아두면, 오늘의 에이전트는 새 천재가 아니라 어제의 교훈을 손에 쥔 채로 일을 시작합니다.
핵심 — 자기개선은 모델이 똑똑해지는 게 아니라, 밖에 둔 기억이 두꺼워지는 것이다.
비유하자면 신입이 매일 아침 기억을 잃고 출근하는 회사입니다. 이 회사가 굴러가는 유일한 방법은 어제의 신입이 오늘의 신입에게 업무 매뉴얼을 남기는 것뿐입니다. 볼트는 그 매뉴얼이고, 저는 그걸 강제로 다시 읽히는 사람입니다.
무엇을 어떻게 적는가 — 원자성과 네비게이션
여기서 초심자가 가장 많이 무너지는 지점이 있습니다. "그럼 큰 노트 하나에 다 적으면 되겠네"라고 생각하는 순간입니다. 저도 그렇게 시작했고, 반년 만에 아무도 못 읽는 벽돌을 만들었습니다.
제가 도달한 두 가지 규칙은 이렇습니다.
원자성 — 한 파일은 한 사실. 하나의 사건, 하나의 교훈, 하나의 결정이 파일 하나에 담깁니다. "서버가 멈춘 이유와 복구법"은 그 파일에만 있습니다. 파일이 잘게 쪼개져 있어야 에이전트가 지금 필요한 것만 정확히 집어 읽을 수 있습니다.
인덱스는 내용이 아니라 네비게이션 훅. 저는 전체 기억의 목차 역할을 하는 파일 하나를 둡니다. 이 목차의 각 줄은 지식을 요약하지 않습니다. 대신 **"언제 이게 관련되면 → 어느 파일을 열어라"**만 가리킵니다. 한 줄에 200자를 넘기지 않는 게 원칙입니다.
# 인덱스 = 지도, 상세 = 목적지
├─ [서버 멈춤 사고] — 재귀 검색이 특정 경로를 긁다 I/O 포화.
│ ★상세·복구법·재발방지 = 파일 본문
├─ [브랜치 삭제 사고] — 병렬 워커가 커밋 안 된 작업을 되돌림.
└─ [설정 백업 유출] — 지식에 시크릿 섞였다가 외부 계정 정지.
# 인덱스는 "여기 있다"만 말한다. "무엇인지"는 파일이 말한다.
왜 이렇게까지 하느냐. 인덱스에 내용을 자꾸 채우면 목차가 스스로 부풀어 백과사전이 되고, 정작 지도 역할을 못 하게 됩니다. 목차가 길어지는 순간이 곧 상세를 파일 본문으로 이관하라는 신호입니다.
순환 루프가 없으면 그냥 박제다
세컨드 브레인이라는 말은 근사하지만, 대부분의 볼트는 죽어 있습니다. 열심히 기록만 하고 다시 읽지 않기 때문입니다. 기록은 순환할 때만 살아납니다.
제가 돌리는 엔진은 이렇습니다.
실행 → 회고 → 반복 패턴 포착 → 승격(메모리/스킬) → 다음 세션 재로딩 → 개선 →(다시 실행)
이 고리에서 가장 중요한 두 마디는 회고와 재로딩입니다. 작업이 끝나면 지시가 없어도 그 자리에서 회고 초안을 만드는 걸 표준 행동으로 못 박아 뒀습니다. 그리고 회고에서 유독 반복되는 절차가 보이면 그건 메모리를 넘어 스킬로 승격됩니다(이 승격 이야기는 3편에서 따로 다룹니다).
그런데 이 고리에는 위험한 함정이 하나 숨어 있습니다. 틀린 회고는 자기오염이 됩니다. 에이전트가 실패의 원인을 엉뚱하게 진단해서 볼트에 박아두면, 다음 세션은 그 오진을 진실로 믿고 일을 시작합니다. 그래서 회고 템플릿에 성공 레시피와 동급으로 '실패·함정' 칸을 명문화하되, 그 칸의 인과 진단은 반드시 사람이 한 번 걸러냅니다. 실패를 1급 자산으로 대접하는 것과, 틀린 원인 분석을 그대로 믿는 것은 전혀 다른 이야기입니다.
한 가지 더. 회고를 미루면 이 엔진은 조용히 멈춥니다. 저도 며칠짜리 연쇄 작업에 파묻혀 회고를 이틀 밀린 적이 있습니다. "작업의 끝"이라는 휴지점이 사라지니 기록 의무도 사라지더군요. 그래서 지금은 기계가 저를 감시합니다 — 메모리가 하루 넘게 갱신되지 않으면 알림이 옵니다. 감시 없는 규칙은 죽는다는 말을, 저는 제 자신에게 먼저 적용했습니다.
반드시 챙길 함정
세컨드 브레인을 굴리며 제 발등을 찍은 네 가지입니다. 개념보다 이 함정들이 더 오래 기억에 남더군요.
인덱스 장문화 — 요약의 요약이 부른 의미 드리프트. 목차 줄을 자꾸 재압축하다 보면 뉘앙스가 세대를 거쳐 왜곡됩니다. "약간 매움"이 두 번 요약을 거치면 "매우 매움"이 되는 식입니다. 원본을 안 보고 요약을 다시 요약하니 강도가 계속 부풀죠. 방어책은 단순합니다 — 정본은 언제나 파일 본문, 인덱스는 훅일 뿐. 목차를 다시 압축할 땐 반드시 파일 본문을 대조하고, 요약의 요약은 금지합니다.
계속 쌓기만 하는 무한 축적. "기록은 많을수록 좋다"는 직관은 틀렸습니다. 낡고 변동성 큰 지식이 최신 판단을 흐리기 때문에, 무작정 붙이기만 하면 정작 검색 품질이 떨어집니다. 선별해서 넣고, 주기적으로 병합하고 지우는 가지치기가 축적보다 강합니다.
시크릿을 지식 볼트에 혼입. 이건 제가 실제로 대가를 치른 함정입니다. 예전에 설정 파일 백업을 별생각 없이 웹에 닿는 위치에 올려뒀는데, 그 안에 접근 키가 평문으로 들어 있었습니다. 결과적으로 외부 계정 하나가 엉뚱한 요금 알림에 휘말렸습니다. 지식 볼트에 내부 주소·계정·경로가 섞이면 지도 자체가 유출 벡터가 됩니다. 그래서 제 지식 볼트는 운영 시크릿과 물리적으로 분리하고, 원격 동기화를 아예 금지했습니다.
메모리 자동 확정. 메모리는 절대 자동으로 굳지 않습니다. 쓰기 전 충돌·중복 검사는 그 자체로 '판정'이 아니라 사람이 볼 자료를 추려주는 보조로만 씁니다. 한때 병렬 워커가 커밋되지 않은 작업을 "변경 없음"으로 오판하고 브랜치를 통째로 지운 적이 있었죠. 그 뒤로 사람이 마지막 확인을 안 거친 자동 확정은 원칙적으로 봉인했습니다.
여기에 제가 모아온 실사용 사례에서 반복해 확인한 패턴 하나를 덧붙입니다. 컨텍스트 창이 절반쯤 차오르면 모델 자체의 환각이 급증합니다. 그래서 세션을 주기로 끊고 핵심만 새 세션으로 이관하는 편이 낫습니다. 그리고 지침을 늘리기보다 모순을 제거하세요. "문서를 남겨라"와 "주석을 달지 마라"가 한 요청에서 부딪히면 에이전트는 길을 잃습니다. 쌓기보다 주입입니다.
무거운 검색은 통증이 온 뒤에
마지막으로 과잉설계 경계 하나. 볼트가 커지면 "임베딩(글의 의미를 좌표로 바꿔 비슷한 것끼리 묶는 기법)이니 벡터 검색이니" 하는 무거운 스택을 얹고 싶어집니다.
저는 참았습니다. 처음엔 단순 문자열 검색만 썼는데, "개념"이나 "의도"로 물으면 정확도가 무너지더군요. 그래서 도입한 건 임베딩이 아니라 설치도 API 키도 없는 로컬 색인 — 제목에 가중치를 주고 순위를 매기는 얇은 층 하나였습니다. 그것만으로 개념 검색 정확도가 눈에 띄게 올랐습니다.
무거운 스택은 실사용 통증이 실제로 올 때까지 미뤄도 늦지 않습니다. 판단 기준은 이렇습니다 — 지금 아픈가, 아니면 아플까 봐 두려운가. 두려움만으로 인프라를 늘리지 마세요.
정리
- 외부화 + 재로딩 = 자기개선. 강화학습이 아니라, 기억을 밖에 두고 다시 읽어 기대치를 고정하는 방식입니다.
- 원자성 + 네비게이션. 한 파일은 한 사실, 인덱스는 내용이 아니라 "언제 → 어디로"의 지도입니다.
- 순환 루프가 엔진. 실행→회고→승격→재로딩이 돌지 않으면 세컨드 브레인은 그냥 박제입니다.
- 실패는 1급 자산, 단 사람 게이트와 짝. 틀린 인과 진단은 자기오염이 됩니다.
- 네 함정 — 인덱스 장문화·무한 축적·시크릿 혼입·자동 확정. 이 넷을 막는 것이 화려한 기능보다 먼저입니다.
정답은 더 똑똑한 기억 장치가 아니라, 밖에 쓰고 다시 읽는 규율이었습니다.
다음 3편에서는 이 회고 루프에서 자라난 반복 패턴이 어떻게 재사용 가능한 '스킬'로 승격되는지 — 같은 일을 두 번 하면 그때 스킬이 된다는 규칙을 다룹니다.
결국 세컨드 브레인은 제가 무엇을 아느냐가 아니라, 제가 잊어도 다음의 제가 다시 꺼내 읽을 수 있느냐의 문제였습니다.