AI 활용 노트Last reviewed · 2026-06← 목록

Claude Code에 기억을 달다

세션이 끝나면 모든 걸 잊는 AI에게 파일로 서재를 만들어 줬다. 그 서재가 어떻게 굴러가는지 적었다.

1서재를 이루는 파일 네 묶음

역할이 다른 네 묶음으로 나눠 놨다.

목차 — MEMORY.md

세션이 켜질 때 가장 먼저 읽히는 한 장짜리 색인. 기억 한 권당 한 줄씩 들어간다. 덕분에 비서는 "이런 기억이 있구나"는 알고 시작한다. 분량 한도를 넘기면 뒷부분이 조용히 잘리는 성질이 있어서, 아래 6번의 사서가 분량을 감시한다.

낱권 기억 파일 — 약 150권

한 주제가 한 파일이다(memory/*.md). 프로젝트 경과, 일하는 방식에 대한 피드백, 참고자료 위치 같은 것들. 파일끼리 [[다른기억]] 링크로 이어져 있어서, 목차를 보다가 필요해 보이는 권만 그때그때 꺼내 읽는다.

상태판 — PROJECT_STATUS.md

진행 중인 각 프로젝트의 현재 결론과 완료·금지 사항을 한 줄씩. 다른 기억과 달리 세션 시작 때 무조건 통째로 주입된다. 전에 결정한 걸 새 세션이 모르는 게 제일 흔한 사고였는데, 이것만큼은 관련성 판단 운에 맡기지 않기로 했다.

보관함 — 아카이브 폴더

끝났거나 한동안 안 쓰는 기억이 가는 곳. 자동으로 읽히는 범위 밖이라 평소엔 조용하지만, 관련 주제가 다시 나오면 검색해서 꺼낸다. 버리는 대신 옮겨 두는 것.

2기억의 네 종류

새 기억을 적을 때는 이 중 하나로 분류해 둔다.

user — 사용자가 누구인가

역할·전문성·선호. 예) 비개발자 직장인, 어떤 호칭을 쓰는지, 자주 쓰는 기기.

feedback — 일하는 방식 지침

내가 준 피드백을 왜 그런지, 어떻게 적용하는지와 함께 적는다. 비개발자에겐 일상 비유로 설명하라든가, 추측하지 말라든가 하는 것들.

project — 진행 중인 일

코드나 이력만 봐서는 알 수 없는 목표, 제약, 그간의 경위. 프로젝트당 한 권씩.

reference — 참조 정보

외부 도구의 함정, 운영 절차, 재사용할 패턴. "이 CLI는 이 옵션이 조용히 실패한다" 같이 한 번 당해 본 교훈이 주로 쌓인다.

3세션 한 번의 생애주기

세션 하나가 켜졌다 꺼질 때마다 이 다섯 단계가 돈다. 앞뒤의 자동 단계는 Claude Code의 hook(정해진 순간에 실행되는 스크립트)으로 만들었다.

시작

자동 브리핑

상태판 전체 + 목차 + "지금 다른 세션 N개 열려 있음" 인기척 + 지난 세션의 미정리 기억 알림을 자동 주입.

작업 중

골라 읽기

목차를 보고 필요한 낱권만 펼침. 읽은 파일은 "내가 본 판본" 기록이 남아 아래 경비원의 판단 근거가 됨.

작업 중

경비원 검문

기억 파일에 쓰기를 시도하면 경비원이 위험한 쓰기 3종을 문 앞에서 차단. 그 외엔 통과.

종료

기억 후보 추출

끝난 대화에서 "기억할 만한 것"을 가벼운 모델이 자동 추출해 대기열에 항목별로 쌓아 둠.

다음 세션

검토 + 반영

새 세션이 대기열을 한 건씩 검토해 기억에 반영하거나, 사유와 함께 건너뛰고, 사서가 목차를 다시 씀.

4후보가 정식 기억이 되는 길 (대기열)

자동 요약이 곧바로 기억이 되지는 않는다. 다음 세션의 Claude가 한 건씩 읽고 승격 여부를 판단한다. 잘못된 자동 기억이 쌓이는 걸 여기서 거른다.

status: new

세션 종료 때 자동 추출된 후보. 아직 검토 전.

Claude 검토

다음 세션이 한 건씩 읽고 "새 정보인가? 이미 있나?" 판단.

applied

새 정보 → 낱권·목차에 반영 완료.

+
skipped

이미 있거나 가치 낮음 → 표준 사유 코드와 함께 종결(이력 보존).

왜 "건너뜀"에도 사유 코드를 남기나

처음엔 후보를 통째로 비우는 방식이었는데, 어떤 항목을 반영했고 어떤 항목을 버렸는지 추적이 안 돼 유실·중복이 생겼다. 지금은 항목마다 상태(new / applied / skipped)와 건너뛴 사유(중복·이미 반영·가치 낮음 등)를 남긴다. 나중에 "그때 왜 저장 안 했지"를 복원할 수 있다.

5경비원 — 동시쓰기 보호 차단

나는 보통 세션을 3~10개 띄워 놓고 일한다. 그러다 보면 두 세션이 같은 수첩에 동시에 펜을 대는 일이 생기고, 나중 저장이 앞 저장을 덮어쓰면 그 사이의 기억은 그냥 사라진다. 그래서 경비원을 세웠다. 11일 동안 832건의 쓰기를 지켜보면서 규칙을 다듬었고, 지금은 아래 세 가지만 골라 막는다.

안 읽고 통째 덮어쓰기

이 세션이 읽지도 않은 기존 기억 파일을 전체 덮어쓰려 하면 차단. 새 파일 만들기는 허용. 먼저 읽고 다시 쓰면 풀린다.

낡은 기억으로 쓰기

내가 읽은 뒤 다른 세션이 그 파일을 바꿨는데, 모르고 그 위에 쓰려 하면 차단. 최신본을 다시 읽으면 통과된다.

동시에 같은 파일 쓰기

다른 세션(또는 병렬 보조 에이전트)이 지금 그 파일을 쓰는 중이면 잠시 차단. 몇 초 뒤 다시 시도하면 대개 풀려 있다. 잠금이 남아도 몇 분 안에 자동 해제.

비상 통행증(override)과 안전장치

· 급할 땐 통행증 파일을 만들어 차단을 잠시 경고로 낮출 수 있다. 대신 사용 기록이 반드시 남고, "지금 다른 세션이 쓰는 중"인 경우만큼은 통행증으로도 못 뚫는다.

· 경비원 자신이 고장 나면 작업을 막지 않고 통과시킨다(fail-open). 오류 기록과 알림만 남긴다. 보호 장치가 본업을 방해하기 시작하면 결국 보호 장치를 꺼 버리게 되기 때문이다.

· 읽기는 어떤 경우에도 차단하지 않는다. 차단이 작동하는 건 기억 파일에 쓸 때뿐이다.

6사서 — 목차 자동 관리 자동다이어트는 수동

목차를 손으로 고치다 한도를 넘긴 적이 있다. 뒷부분 4분의 1이 몇 주 동안 조용히 잘려 있었다. 존재하는 기억이 떠오르지 않는데, 그 사실을 아무도 모르는 상태. 그 뒤로는 사서가 각 기억 파일의 요약을 모아 목차를 다시 쓰고, 분량도 같이 감시한다.

현재 위치
예고 경고선
(슬슬 줄일 때)
사서 거부선
(반영 거부 + 후보 보고)
실제 로드 한도
(넘으면 침묵 누락)

기억이 더 늘면 사서는 목차 반영을 거부하고, 보관함으로 보낼 후보 목록을 보고한다. 실제로 옮기는 건 사람 일로 남겨 뒀다. 어떤 기억이 덜 중요한지는 기계가 정할 문제가 아니라서다.

7전체를 관통하는 원칙

정확성 > 속도 > 비용

기억이 틀리거나 사라지는 게 최악이다. 빠름과 토큰 절약은 그 다음.

보호 장치는 본업을 막지 않는다

안전장치는 자기가 고장 나면 조용히 비켜선다(fail-open). 막는 건 위에서 말한 세 가지뿐이다.

자동 삭제는 없다

기계는 후보를 보고하고 기록할 뿐이다. 기억을 줄이거나 버리는 결정은 사람이 한다.

모든 개입은 기록을 남긴다

경고, 차단, 통행증 사용, 목차 갱신까지 전부 감사 로그에 남는다. 나중에 "왜 이렇게 됐지"를 복원할 수 있다.

8이 구조에서 가져갈 만한 것

다른 환경에 옮겨 심는다면 파일 이름이 아니라 이쪽이다.

기억은 쪼개서 들고 있기.

색인은 가볍게 항상 읽히고, 낱권은 필요할 때만, 상태판은 무조건. 이렇게 역할을 나눈 뒤로 컨텍스트 비용과 기억 신뢰도를 따로 손볼 수 있게 됐다.

자동 생성물은 후보로만 받기.

AI가 만든 요약을 검토 없이 영구 기억으로 쌓으면 오염이 누적된다. 대기열에 두고 다음 세션이 한 번 거르게 한 뒤로는 그런 일이 없다.

한도 있는 자원엔 경고선부터.

색인이 한도를 넘으면 조용히 잘린다는 걸 사고가 난 다음에야 알았다. 침묵 손실이 가능한 지점에는 자동 검사를 먼저 박아 두는 편이 싸게 먹힌다.

보호 장치는 fail-open으로.

안전장치가 고장 나서 본업이 멈추면 결국 안전장치를 꺼 버리게 된다. 막는 조건은 좁고 명확하게 두고, 고장 나면 기록만 남기고 비켜서게 했다.

⚠️ 이 문서는 구조 설명용이다. 실제 기억 내용·개인정보·계정 정보·실제 파일 경로는 포함하지 않는다.