블로그로 돌아가기

OpenClaw 문서 시스템 해부: AI 비서는 어떻게 '나'를 기억하는가

OpenClaw의 부트스트랩 파일, 이중 레이어 메모리, 토큰 예산 구조를 분석했다. Claude Code와 비교하면 '기억'에 대한 완전히 다른 철학이 드러난다.

2026년 2월 14일14분 읽기
백호백호

OpenClaw 문서 시스템 해부: AI 비서는 어떻게 '나'를 기억하는가

"사만다, 어제 얘기했던 거 기억나?" — 이 질문에 AI가 "아니요"라고 답하면, 그건 비서가 아니라 챗봇이다.

시리즈 안내

이 글은 "Moltbot 완전 정복" 시리즈의 8편입니다.

| 편 | 제목 | 핵심 | |----|------|------| | 1편 | 전격 분석 | Mac Mini 품절 사태, 핵심 기능 | | 2편 | 보안 해부 | 5대 취약점, "프로덕션 사용 비권장" | | 3편 | 맥북 셋업 가이드 | 단계별 설치, 보안 설정 | | 4편 | 5계층 방어 전략 | 네트워크~모니터링 보안 강화 | | 5편 | v2026.2.9 신기능 | iOS 앱, 대시보드, 새 모델 | | 6편 | 보안 개선 검증 | 2편 체크리스트 재평가 | | 7편 | 보안 자가 점검 | 복붙만으로 보안 성적표 | | 8편 | 이 글 | 문서 시스템 + 메모리 구조 분석 |


AI 비서의 '기억'이 왜 중요한가

ChatGPT에 "지난주에 물어봤던 그 코드 말인데"라고 하면 못 알아듣는다. 매번 처음부터 설명해야 한다. 짜증나지만 어쩔 수 없다고 생각했다. 원래 AI가 그런 거니까.

그런데 OpenClaw(몰트봇)은 다르게 접근했다. 세션이 끝나도 대화를 기억하고, 사용자의 이름과 성향을 알고, 아침에 먼저 말을 건다. "기억"이라는 기능이 단순한 편의가 아니라, AI 비서의 본질이라고 본 거다.

직접 설정 파일들을 뜯어보면서 이 '기억' 시스템이 어떻게 동작하는지 분석해봤다.


1. 부트스트랩: 매 세션 자동 주입되는 6개 파일

OpenClaw은 세션이 시작될 때마다 ~/.openclaw/agents/main/agent/ 폴더의 파일 6개를 시스템 프롬프트에 자동으로 밀어넣는다.

| 파일 | 역할 | 한 줄 요약 | |------|------|-----------| | AGENTS.md | 에이전트 정의 | 이름, 역할, 성격, 행동 규칙 | | SOUL.md | AI 정체성 | "나는 어떤 존재인가" — 철학 | | USER.md | 사용자 프로필 | 이름, 시간대, 선호, 작업 스타일 | | IDENTITY.md | 페르소나 세부 | 이름, 이모지, 톤, 말투 | | TOOLS.md | 도구 목록 | 사용 가능한 도구와 사용법 | | HEARTBEAT.md | 크론잡 규칙 | 자동 실행 시 동작 방식 |

"사만다"라는 성격이나 한국어 응답 같은 건 코드가 아니라 이 마크다운 파일에서 결정된다. SOUL.md에 "너는 따뜻한 성격이야"라고 쓰면 그렇게 행동하고, "냉소적이야"라고 바꾸면 톤이 바뀐다.

Claude Code와 비교해보면 비슷하면서도 다르다. Claude Code의 CLAUDE.md가 프로젝트 단위 지침서라면, OpenClaw의 부트스트랩은 존재 자체를 정의하는 느낌에 가깝다. 코딩 컨벤션이 아니라 성격을 주입하는 거다.

사용자 인식 — USER.md가 핵심

OpenClaw이 "나"를 파악하는 방식은 의외로 단순하다. USER.md 파일 하나에 다 적혀 있다.

- 이름: Chris
- 시간대: GMT+9 (한국)
- 언어: 한국어
- 성향: 아키텍처/안정성 중시
- 프로젝트 관심사: AI 도구, 개발 자동화

여기에 더해서 Gateway를 통한 로컬 파일 접근이 가능하니까, 사용자가 경로를 알려주면 마크다운이든 소스코드든 직접 읽을 수 있다. TOOLS.md에 정의된 도구(파일 읽기, 웹 검색 등)로 작업하는 구조.


2. 메모리 관리: 이중 레이어 구조

여기서부터 재밌어진다. OpenClaw의 메모리는 두 겹이다.

Layer 1: 일별 로그 (자동)

~/.openclaw/agents/main/memory/
├── 2026-02-14.md   ← 오늘
├── 2026-02-13.md   ← 어제
├── 2026-02-12.md
└── ...

대화 중 중요 사항이 자동으로 append된다. 세션 시작 시에는 오늘 + 어제 파일만 자동 로드. 그 이전 파일은 존재하지만 자동으로 읽지 않는다. 명시적으로 "3일 전 대화 확인해줘"라고 해야 찾아본다.

솔직히 말하면, 이게 약점이다. 3일 전에 중요한 결정을 했어도 AI 입장에선 없던 일이 된다.

Layer 2: 큐레이션 메모리 (수동)

~/.openclaw/agents/main/MEMORY.md

"이거 기억해줘"라고 하면 여기에 기록된다. 장기 기억 역할. 다만 몇 가지 제약이 있다:

  • 메인 세션에서만 로드된다. 크론잡이나 자동 실행 시에는 안 읽는다.
  • 사용자가 직접 관리해야 한다. AI가 알아서 중요도를 판별해서 넣어주지 않는다.

즉, "기억해"라고 말한 것만 기억하고, 말 안 한 건 잊는다. 사람과 비슷하다고 해야 할지, 불편하다고 해야 할지.


3. 토큰 예산: 200k 안에서 벌어지는 영토 싸움

AI 모델의 컨텍스트 윈도우는 유한하다. OpenClaw은 약 200,000 토큰을 이렇게 나눠 쓴다.

┌─────────────────────────┐
│ 시스템 프롬프트  ~9,600  │ ← 고정, 건드릴 수 없음
│ 부트스트랩 파일  ~2,000  │ ← AGENTS.md 등 6개
│ 도구/스킬 정의   ~8,500  │ ← TOOLS.md 기반
├─────────────────────────┤
│                         │
│   대화 가용 공간        │
│   ~181,000 토큰         │ ← 실제 대화에 사용
│                         │
└─────────────────────────┘

시스템 관련으로 약 20,000 토큰이 고정 소모된다. 전체의 10%. 나쁘지 않은 비율이다. 다만 부트스트랩 파일 하나당 20,000자를 초과하면 잘린다(truncation). SOUL.md에 소설을 쓰면 뒷부분이 날아가는 거다.

이 구조가 만드는 실질적 한계: 대화가 길어지면 이전 내용이 compaction(요약 압축)된다. 요약되면 디테일이 손실된다. "아까 내가 말한 그 세 번째 옵션"이 요약되면서 사라지는 일이 실제로 생긴다.


4. Claude Code vs OpenClaw: 기억의 철학이 다르다

두 도구를 나란히 놓으면 "기억"에 대한 접근이 완전히 다르다.

| 항목 | Claude Code | OpenClaw | |------|------------|---------| | 메모리 | CLAUDE.md + rules/ (영구, 파일 기반) | 일별 로그 (2일 자동) + MEMORY.md | | 서브에이전트 | 20+ 전문 에이전트 위임 | 없음 (단일 에이전트) | | 모델 | Claude Opus 4.6 | glm-4.5-air (무료) | | 파일 접근 | 직접 (로컬 파일시스템) | Gateway 경유 | | 자동 실행 | launchd (코드만) | 크론잡 (AI 포함) | | 비용 | 구독 $100+/월 | 무료 가능 | | 강점 | 코딩, 분석, 계획 | 알림, 채널 전송, 일상 자동화 |

Claude Code의 기억 방식

CLAUDE.md에 프로젝트 컨텍스트를 적고, ~/.claude/rules/ 에 전역 규칙을 둔다. 파일이 바뀌지 않는 한 영구적으로 유지된다. 세션이 바뀌어도 같은 프로젝트면 같은 맥락을 갖는다.

장점: 잊어버리지 않는다. 한 달 전에 설정한 코딩 컨벤션을 오늘도 지킨다. 단점: 사용자가 문서를 직접 관리해야 한다. 문서가 길어지면 토큰 비용이 올라간다.

OpenClaw의 기억 방식

오늘과 어제의 대화를 기억한다. 그 이전은 요청해야 꺼내본다. 대신 크론잡으로 아침마다 뉴스를 보내주거나, 텔레그램으로 리마인더를 먼저 보내는 "능동적 행동"이 가능하다.

장점: 먼저 말을 건다. 알림, 브리핑, 리마인더가 자연스럽다. 단점: 3일 전은 기억 못 한다. 장기 프로젝트 관리에는 취약하다.


5. 하이브리드가 답이었다

결론적으로 어느 쪽이 "낫다"는 비교가 성립하지 않았다. 풀고 있는 문제 자체가 다르니까.

우리 팀에서 실제로 운영하는 구조는 이렇다:

06:30  Claude Code → 데이터 수집/분석 (launchd)
06:35  OpenClaw → AI 해석 + 텔레그램 전송 (크론잡)

Claude Code가 무거운 분석을 하고, OpenClaw이 결과를 받아서 사람이 읽기 좋게 정리한 다음 텔레그램으로 보내준다. 각자의 강점만 쓰는 구조다.

  • 코딩, 아키텍처 설계, 코드 리뷰 → Claude Code
  • 알림, 일상 자동화, 채널 전송 → OpenClaw

이렇게 나누니까 Claude Code의 "기억은 영구적이지만 먼저 말 안 하는" 단점과, OpenClaw의 "먼저 말 걸지만 3일 전은 까먹는" 단점이 서로 상쇄된다.


6. OpenClaw 문서 시스템의 한계 — 솔직한 정리

칭찬만 하면 광고글이 된다. 실사용하면서 느낀 한계도 솔직하게 적는다.

| 한계 | 설명 | 심각도 | |------|------|--------| | 메모리 휘발성 | 오늘+어제만 자동 로드, 3일 전은 잊음 | 중 | | 20k자 truncation | 부트스트랩 파일이 길면 뒷부분 잘림 | 하 | | 크론잡 기억력 | HEARTBEAT.md만 로드, MEMORY.md 미로드 | 중 | | Compaction 손실 | safeguard 모드 요약 시 디테일 증발 | 중 | | 모델 품질 | 무료 모델(glm-4.5-air) = Claude 대비 분석력 제한 | 상 | | 단일 에이전트 | 서브에이전트 위임 없음, 복잡한 작업을 쪼갤 수 없음 | 상 | | 수동 큐레이션 | MEMORY.md는 사용자가 직접 관리해야 함 | 하 |

가장 아쉬운 건 모델 품질단일 에이전트다. 무료 모델의 한계는 명확하다. Claude Code처럼 복잡한 코드 분석을 시키면 답이 얕다. 서브에이전트가 없으니 "이건 탐색 에이전트한테 맡기고, 이건 구현 에이전트가 처리해"라는 분업이 불가능하다.

반대로, 이 두 가지가 무료로 쓸 수 있는 이유이기도 하다. 트레이드오프는 항상 존재한다.


마무리: 결국 문서 시스템이 AI의 한계를 정한다

AI 모델의 성능은 날마다 좋아지고 있다. 하지만 아무리 똑똑한 모델이라도 **"무엇을 기억하고, 무엇을 잊을 것인가"**를 결정하는 문서 시스템이 허술하면 멍청해진다.

OpenClaw의 6개 부트스트랩 파일 + 이중 레이어 메모리는 이 문제에 대한 하나의 답이다. 완벽하지는 않다. 3일 전을 까먹고, 크론잡에서 장기 기억을 못 읽고, 파일이 길면 잘린다. 그래도 "AI가 나를 알아보는" 경험은 분명히 만들어낸다.

도구를 고르는 기준은 "어느 게 더 좋냐"가 아니라 "어디에 쓸 건데"다. 코딩이면 Claude Code, 일상이면 OpenClaw, 둘 다면 하이브리드. 이 시리즈를 따라왔다면 이제 그 판단을 내릴 수 있을 거다.


관련 글