프로젝트 소개
lore는 머신에 기록된 모든 Claude Code 내용을 위한 로컬 명령줄 도구이자 웹 익스플로러입니다. Claude Code는 세션 트랜스크립트, 메모리 및 프롬프트 기록을 프로젝트별로 샤딩된 데이터 디렉토리에 보관하며, 기본 보존 정책에 따라 트랜스크립트는 약 30일 후에 삭제됩니다. lore는 해당 원시 데이터의 가산 미러(additive mirror)를 유지하고 이를 인덱싱하여 자체 세션 기록에 대한 쿼리 인터페이스를 제공합니다.
설치 및 플랫폼: 이 프로젝트는 Bun만 필요하며, rsync나 툴체인 의존성이 없습니다. 지속적 통합(CI)을 통해 테스트 슈트를 실행하고 macOS, Linux, Windows에 바이너리를 설치합니다. 익스플로러를 포함한 모든 명령어가 세 플랫폼에서 작동합니다. 예외적으로 launchd 사용자 에이전트를 통해 익스플로러를 백그라운드에서 실행하는 lore 서버 감독관(supervisor)은 macOS 전용이며, 그 외 플랫폼 사용자는 lore serve를 이용하도록 안내합니다. 설치 스크립트는 고정 바이너리를 빌드하며, 더티 워킹 트리(dirty working tree) 상태에서는 빌드를 거부합니다. 모든 호출 시 버전과 커밋 정보가 stderr에 보고됩니다. harness-corpus 스크립트는 Claude Code 업데이트 후 데몬의 형상을 테스트 픽스처로 스냅샷 찍습니다.
데이터 모델 및 인덱싱: 'well'은 Claude 프로젝트 경로 아래의 단일 디렉토리 저장소로, 절대 경로에서 비알파벳숫자 문자를 평탄화하여 명명하므로 명명 방식에 손실이 있습니다. 각 세션은 채팅 로그가 아닌 JSONL 이벤트 로그이며, 주로 도구 트래픽, 사고(thinking) 엔벨로프, 하네스 이벤트와 더불어 형제 서브에이전트 트랜스크립트 및 워크플로우 스크립트로 구성됩니다. index 명령어는 well을 스캔하고 JSONL을 파싱하여 수정 시간과 크기에 따라 증분 방식으로 spawns 및 workflows 레인을 가진 SQLite FTS5 인덱스를 구축합니다. 인덱스는 파생된 재구축 가능 아티팩트로, 마이그레이션 대신 버전 범프를 수행하며 최신 버전의 lore가 작성한 데이터베이스는 열기를 거부합니다.
명령어: archive는 상위 삭제를 전파하지 않고 Claude 데이터 디렉토리를 lore 아카이브로 미러링합니다. wells는 디슬러그(de-slugged)된 실제 경로와 플래그가 포함된 저장소 목록을 표시합니다. sessions와 session은 well의 연대순 궤적을 탐색하거나 레인별로 세션을 덤프합니다. search는 레인 전체에서 FTS5 쿼리를 수행하며 프롬프트 기록 스파인(spine)을 포함할 수 있습니다. spawns는 서브에이전트 모델별로 요청 대비 검증된 모델을 보고하며 드리프트 플래그와 부팅 비용을 표시합니다. workflows는 오케스트레이션 실행 내용을 요약합니다. polls는 매 턴마다 백그라운드 작업 출력 파일을 다시 읽는 세션을 표시하고 가격을 책정합니다. tools는 도구, 스킬 및 명령어 호출 횟수를 집계합니다. usage는 well, 세션, 모델, 일, 주 또는 월 단위로 청구된 토큰 클래스와 사고(thinking) 비용을 표시하며 날짜별 리스트 가격 환산값을 제공합니다. trace는 하나의 세션을 트랜잭션, 단계, 도구 호출 및 주석으로 렌더링합니다. agents는 라이브 로스터를 인덱스와 결합합니다. stats는 코퍼스 총계, 레인 및 경고를 보고합니다. 모든 명령어는 도움말 출력을 지원하며, 많은 명령어가 부분 문자열 일치 및 정확한 전체 값 일치 플래그가 포함된 well 필터를 허용합니다.
익스플로러: lore serve는 인덱스를 서버 렌더링 HTML 페이지로 렌더링하여 최근 세션 및 well, 토큰 사용량, 개별 well 및 세션, 검색 결과, 커밋 메시지에 작성된 세션 트레일러를 보여줍니다. 모든 페이지는 JSON 응답도 가능하며, 읽기 명령어는 OpenAPI 스펙과 함께 커맨드 경로 아래에 마운트됩니다. api 명령어는 커맨드와 동일한 핸들러를 노출합니다. 기본 포트는 4949이며, 호스트 옵션을 통해 Tailscale 주소를 포함한 바인딩 제어가 가능합니다.
판단 레이어: 결정론적이고 모델이 없는 CLI 상단에는 선택적인 위키 워크플로우가 있습니다. wiki init은 내장 템플릿으로 마크다운 git 저장소를 생성하고, skills add는 명령어별 스킬을 설치하여 Claude Code 세션이 CLI를 발견할 수 있게 합니다. 원시 자료를 위키로 섭취하고, 위키 페이지를 git 커밋 문서로 승격시키며, 오래된 표준(stale canon)을 린팅하는 프로토콜은 대화형 Claude 세션이 CLI를 구동하여 수행합니다. 이는 명령어로 제공되는 대신 설계 노트에 문서화되어 있으므로 도구 자체에는 API 키가 필요하지 않습니다. docs 명령어는 워킹 트리가 아닌 git 오브젝트에서 읽어와 저장소에 커밋된 마크다운을 인덱싱합니다.
데이터 처리: Claude 데이터 디렉토리를 읽고, docs의 경우 코드 루트 아래의 git 오브젝트 저장소를 읽습니다. 쓰기 작업은 lore 홈 디렉토리, 선택적 위키 저장소, 그리고 macOS 감독관의 경우에만 하나의 launchd plist에 수행됩니다. docs 인덱싱을 위해 요청된 명시적인 git fetch와 익스플로러가 리스닝하는 포트 외에는 네트워크 활동이 없습니다. 업로드되는 데이터는 없으며 모델 호출, 텔레메트리 또는 계정도 존재하지 않습니다. 설정은 Claude 디렉토리, lore 홈, 코드 디렉토리, 위키 디렉토리, docs 제외 및 지원 리스트와 같은 검증된 환경 변수를 통해 이루어집니다.
별도의 의존성 없는 Python 스크립트가 트랜스크립트 JSONL을 직접 읽어 거부된 도구 호출을 사유별 및 이후 세션 동작별로 분류하여 보고하며, 이를 검토하는 방법이 담긴 런북을 제공합니다.
상태: MIT 라이선스 하에 있는 초기 개인용 도구로, 현 상태 그대로 로컬 전용으로 공개되었으며 제품화 계획은 없습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.