워크스페이스 메모리 v2 (오프라인): 연구 노트
대상: Clawd 스타일 워크스페이스 (agents.defaults.workspace, 기본 ~/.openclaw/workspace)에서 “메모리”가 일별 Markdown 파일(memory/YYYY-MM-DD.md)과 소수의 안정적 파일(예: memory.md, SOUL.md)로 저장되는 환경.
이 문서는 Markdown을 정규적이고 검토 가능한 진실의 원천으로 유지하면서, 구조화된 검색(검색, 엔티티 요약, 신뢰도 업데이트)을 파생 인덱스를 통해 추가하는 오프라인 우선 메모리 아키텍처를 제안합니다.
왜 변경하는가?
현재 설정(일별 파일)은 다음에 탁월합니다:
- “추가 전용” 저널링
- 사람이 편집
- git 기반 내구성 + 감사 가능성
- 낮은 마찰의 캡처 (“그냥 적어두기”)
다음에는 약합니다:
- 높은 재현율 검색 (“X에 대해 뭐라고 결정했지?”, “지난번 Y를 시도한 건?”)
- 엔티티 중심 답변 (“Alice / The Castle / warelay에 대해 알려줘”) 많은 파일을 다시 읽지 않고
- 의견/선호도 안정성 (변경 시 증거)
- 시간 제약 (“2025년 11월에 사실이었던 건?”)과 충돌 해결
설계 목표
- 오프라인: 네트워크 없이 동작; 노트북/Castle에서 실행 가능; 클라우드 의존성 없음.
- 설명 가능: 검색된 항목이 귀속 가능(파일 + 위치)하고 추론과 분리 가능해야 함.
- 낮은 의식: 일별 로깅은 Markdown 유지, 무거운 스키마 작업 없음.
- 점진적: v1은 FTS만으로도 유용; 시맨틱/벡터와 그래프는 선택적 업그레이드.
- 에이전트 친화적: “토큰 예산 내 검색”을 쉽게 (작은 사실 번들 반환).
제안 아키텍처 (Markdown 진실의 원천 + 파생 인덱스)
정규 저장소 (git 친화적)
~/.openclaw/workspace를 정규 사람이 읽을 수 있는 메모리로 유지.
파생 저장소 (기계 검색)
워크스페이스 아래에 파생 인덱스 추가:
~/.openclaw/workspace/.memory/index.sqlite
기반:
- 사실 + 엔티티 링크 + 의견 메타데이터를 위한 SQLite 스키마
- 어휘 검색을 위한 SQLite FTS5 (빠름, 작음, 오프라인)
- 시맨틱 검색을 위한 선택적 임베딩 테이블 (여전히 오프라인)
인덱스는 항상 Markdown에서 재구축 가능.
보존 / 검색 / 성찰 (운영 루프)
보존: 일별 로그를 “사실”로 정규화
검색: 파생 인덱스에 대한 쿼리
검색이 지원해야 하는 것:
- 어휘: “정확한 용어 / 이름 / 명령 찾기” (FTS5)
- 엔티티: “X에 대해 알려줘” (엔티티 페이지 + 엔티티 연결 사실)
- 시간적: “11월 27일경에 무슨 일이?” / “지난주 이후”
- 의견: “Peter가 뭘 선호하지?” (신뢰도 + 증거 포함)
성찰: 안정적 페이지 생성 + 신념 업데이트
성찰은 예약된 작업(일별 또는 하트비트 ultrathink)으로:
- 최근 사실에서
bank/entities/*.md업데이트 (엔티티 요약) - 강화/모순에 기반한
bank/opinions.md신뢰도 업데이트 - 선택적으로
memory.md에 대한 편집 제안 (“코어” 내구성 사실)
CLI 통합
권장: OpenClaw에 심층 통합, 분리 가능한 코어 라이브러리 유지.
가장 작은 유용한 파일럿
최소한의 유용한 버전:
bank/엔티티 페이지와 일별 로그에## Retain섹션 추가.- 인용(경로 + 줄 번호)이 포함된 검색에 SQLite FTS 사용.
- 검색 품질이나 규모가 요구할 때만 임베딩 추가.
참고 문헌
- Letta / MemGPT 개념: “코어 메모리 블록” + “아카이벌 메모리” + 도구 기반 자기 편집 메모리.
- Hindsight 기술 보고서: “보존 / 검색 / 성찰”, 4네트워크 메모리, 서사적 사실 추출, 의견 신뢰도 진화.
- SuCo: arXiv 2411.14754 (2024): “Subspace Collision” 근사 최근접 이웃 검색.