노트 레이어
memex가 모든 노트를 past / state / rule로 분류하는 방식, 각 레이어의 의미와 Claude의 권한.
memex는 모든 노트를 세 가지 mutability 레이어 중 하나로 분류합니다. 레이어는 Claude가 노트를 어떻게 읽고 쓸 수 있는지를 결정하며, CLI에서 노트가 표시되는 곳마다 색이 있는 [past] / [state] / [rule] 배지가 함께 나옵니다.
세 가지 레이어
| 레이어 | 의미 | Claude의 권한 |
|---|---|---|
past | 일어난 일의 기록, 회고, 미팅, 결정 reasoning, 디버깅 세션, 대화 | Append-only. update_note는 error: 'PAST_IMMUTABLE'로 거부. 정정하려면 원본으로 위키링크하는 [Amendment] 새 노트를 저장. |
state | 현재 상태나 계획, 프로젝트 진행, 로드맵, 사람의 현재 직책, 진행 중인 작업 | 자유 수정. 가변 문서로 취급. |
rule | Claude 행동 가이드, 코딩 스타일, 검색 정책, 개인 선호 | Claude는 read-only. 사용자만 수정. Claude는 직접 수정하지 않고 대화에 제안만 띄움. MCP instructions에 자동 주입도 됨. |
분류 방식
Claude가 save_note로 노트를 저장할 때 반드시 layer 파라미터를 제공해야 합니다. 분류 규칙은 도구 설명에 포함돼 있어서 Claude가 자동으로 적절히 선택합니다:
- 과거형 / 일어난 일 →
past - 현재형 / 미래 의도 → 세상에 대한 사실이면
state, 사용자가 명시적으로 가이드 요청한 경우만rule - 모호함 →
past(append-only는 조용히 덮어써질 일이 없어서 안전)
CLI에서는:
memex add --title "..." --content "..." --layer past
memex add를 --layer 없이 실행하면 대화형 프롬프트로 layer를 묻습니다.
첫 실행 마이그레이션
기존 설치를 업그레이드하면 memex가 일회성 폴더 기반 백필을 수행합니다:
| 폴더 | 레이어 |
|---|---|
projects, dev, herald | state |
coding | rule |
그 외 모든 폴더 (decisions, conversations, interviews, memory 등 포함) | past |
멱등하므로 다시 실행해도 변경이 없습니다. 마이그레이션 후:
memex layer
로 분포를 확인하고, 잘못된 buckets에 들어간 노트는 memex layer <id> <layer>로 정정합니다.
왜 필요한가
second brain은 update 의미론이 매우 다른 세 가지 콘텐츠가 섞입니다:
- "지난 분기 Alice와의 1on1", 고정된 기록. 수정은 곧 역사 조작.
- "Memex 로드맵", 살아있는 문서. 계획이 바뀌면 수정돼야 함.
- "내 코드 스타일 가이드", Claude를 위한 안내. 사용자가 소유, Claude가 따름.
레이어 도입 전에는 memex가 셋을 동일하게 다뤘습니다, Claude가 과거 기록을 조용히 update하고, 회고와 로드맵이 검색에서 섞이고, 자신의 스타일 가이드를 몰래 다시 쓰는 일이 가능했습니다. 레이어 모델은 mutability 차이를 구조로 만들어서 잘못된 동작이 단순히 권장되지 않는 것이 아니라 아예 불가능하게 만듭니다.
이 패턴은 Eugene Yan이 제안한 ~/vault(사실)와 ~/.claude(취향) 분리와 같은 방향입니다, 바뀔 수 있는 것과 바뀌면 안 되는 것의 분리.
v1 범위
v1은 의도적으로 최소 표면입니다. 실제 사용 데이터를 본 뒤 결정할 항목들:
- 전용 저장 도구 (
save_decision,save_meeting등) - 레이어별 discriminated union 스키마
- 자동 재분류 제안
1주일 살아보고 데이터를 보고 v2를 결정합니다.