최소한의 구문 분석:
- 타입 접두사: `W` (세계), `B` (경험/전기), `O` (의견), `S` (관찰/요약; 주로 생성)
- 엔티티: `@Peter`, `@warelay` 등 (슬러그가 `bank/entities/*.md`로 매핑)
- 의견 신뢰도: `O(c=0.0..1.0)` 선택 가능
저자가 이에 대해 생각하지 않기를 원할 경우: reflect 작업은 로그의 나머지에서 이러한 목록을 추론할 수 있지만, 명시적인 `## Retain` 섹션을 두는 것이 가장 쉬운 "품질 레버"입니다.
### 회상: 파생 인덱스에 대한 쿼리
회상은 다음을 지원해야 합니다:
- **Lexical**: "정확한 용어/이름/명령 찾기" (FTS5)
- **Entity**: "X에 대해 말해줘" (엔티티 페이지 + 엔티티 연관된 사실들)
- **Temporal**: "11월 27일 근처에 무슨 일이 있었나" / "지난 주이후"
- **Opinion**: "Peter는 무엇을 선호하나요?" (신뢰도 + 증거와 함께)
반환 형식은 에이전트 친화적이어야 하며 출처를 인용해야 합니다:
- `kind` (`world|experience|opinion|observation`)
- `timestamp` (출처 날짜, 또는 나타난 시간 범위)
- `entities` (`["Peter","warelay"]`)
- `content` (서사적 사실)
- `source` (`memory/2025-11-27.md#L12` 등)
### 반영: 안정적인 페이지 생성 + 믿음 업데이트
Reflection은 예약 작업 (일일 또는 하트비트 `울트라싱크`)으로:
- 최근 사실에서 `bank/entities/*.md` 업데이트 (엔티티 요약)
- 강화/모순에 기초한 `bank/opinions.md` 신뢰도 업데이트
- 선택적으로 `memory.md` 편집 제안 ("핵심 중" 내구성 있는 사실)
의견 진화 (간단하고 설명 가능):
- 각 의견은 다음을 가집니다:
- 진술문
- 신뢰도 `c ∈ [0,1]`
- 마지막 업데이트
- 증거 링크 (지원하는 + 모순되는 사실 ID)
- 새로운 사실이 도착하면:
- 엔티티 중복 + 유사도로 후보 의견 찾기 (먼저 FTS, 나중에 임베딩)
- 작은 변화로 신뢰도 업데이트; 큰 변화는 강한 모순 + 반복된 증거 필요
## CLI 통합: 독립형 vs 깊은 통합
추천: **OpenClaw에 깊은 통합**, 그러나 분리 가능한 핵심 라이브러리를 유지.
### OpenClaw에 통합하는 이유?
- OpenClaw는 이미 알고 있습니다:
- 워크스페이스 경로 (`agents.defaults.workspace`)
- 세션 모델 + 하트비트
- 로깅 + 문제 해결 패턴
- 에이전트 자체가 도구를 호출하기 원할 것입니다:
- `openclaw memory recall "…" --k 25 --since 30d`
- `openclaw memory reflect --since 7d`
### 라이브러리를 여전히 나누는 이유?
- 게이트웨이/런타임 없이 메모리 논리를 테스트 가능하게 유지
- 다른 컨텍스트 (로컬 스크립트, 미래 데스크탑 앱 등)에서 재사용
형태:
메모리 도구는 작은 CLI + 라이브러리 레이어로 의도되지만, 이는 탐색적일 뿐입니다.
## “S-Collide” / SuCo: 사용할 때 (연구)
“S-Collide”가 **SuCo (Subspace Collision)**를 의미한다면: 이는 학습/구조화된 서브스페이스에서 충돌을 사용하여 강력한 회상/대기 시간 절충을 목표로 하는 ANN 회수 접근법입니다 (논문: arXiv 2411.14754, 2024).
`~/.openclaw/workspace`에 대한 실용적인 접근:
- **SuCo로 시작하지 마세요.**
- SQLite FTS + (선택적) 간단한 임베딩으로 시작; 대부분의 UX 승리 즉시 얻을 수 있습니다.
- SuCo/HNSW/ScaNN 등급 솔루션은 오직 다음일 때 고려:
- 코퍼스가 큼 (수텐/수십만 청크)
- 임베딩 검색이 너무 느려짐
- 회상 품질이 중요한 텍스트 검색에 의해 병목이됨
오프라인 친화적 대안 (복잡도 증가 순):
- SQLite FTS5 + 메타데이터 필터 (제로 ML)
- 임베딩 + 브루트 포스 (청크 수가 낮다면 놀랍도록 잘 작동)
- HNSW 인덱스 (일반적, 견고함; 라이브러리 바인딩 필요)
- SuCo (연구 등급; 내장할 수 있는 확고한 구현이 있다면 매력적)
열린 질문:
- 귀하의 머신(노트북 + 데스크탑)에서 "개인 비서 메모리"에 대한 **최상의** 오프라인 임베딩 모델이 무엇인가?
- 이미 Ollama가 있다면: 로컬 모델로 임베드; 그렇지 않으면 도구 체인에 소형 임베딩 모델을 포함하세요.
## 가장 작은 유용한 파일럿
최소한으로, 여전히 유용한 버전을 원한다면:
- `bank/` 엔티티 페이지와 일일 로그에 `## Retain` 섹션을 추가.
- SQLite FTS를 사용하여 인용 (경로 + 줄 번호)과 함께 회상.
- 회상 품질이나 스케일이 요구될 경우에만 임베딩 추가.
## 참고문헌
- Letta / MemGPT 개념: “핵심 메모리 블록” + “아카이브 메모리” + 도구 기반의 자기 편집 메모리.
- Hindsight 기술 보고서: “유지 / 회상 / 반영”, 네트워크 4개 메모리, 서사적 사실 추출, 의견 신뢰도 진화.
- SuCo: arXiv 2411.14754 (2024): “서브스페이스 충돌” 근사 최근접 이웃 검색.