SSH로 두 기기 간 코딩 에이전트 메모리를 동기화하는 오픈소스 도구 'deja-vu' 공개
- 개발자 vshulcz가 Claude Code, Codex, opencode가 남기는 세션 트랜스크립트를 인덱싱해 이전 디버깅 기록을 재사용하는 오픈소스 도구 deja-vu를 공개함
- 3.3GB 분량의 로컬 세션 기록을 인덱싱하는데 약 10초가 걸리고 이후 검색(warm search)은 7~9ms로 끝남
- CLI 검색, 에이전트가 직접 호출하는 MCP 도구, 새 세션 시작 시 관련 컨텍스트를 자동 주입하는 SessionStart 훅 세 가지 방식으로 메모리를 불러올 수 있음
- 핵심 기능인
deja sync ssh <host>는 기존 SSH 설정을 그대로 이용해 노트북과 맥미니 등 여러 기기 사이에 새 메모리를 주고받고, 인덱싱 및 내보내기 단계에서 시크릿 데이터를 자동 삭제함 - 유사 프로젝트 ctx.rs와 비교되는데, ctx는 원문 그대로 저장하고 공개 전 수동 리뷰를 권고하는 반면 deja-vu는 인덱싱 시점에 시크릿을 [redacted:aws-key] 형태로 치환하고 클라우드 대신 로컬 P2P 동기화를 택함
Hacker News opinions
내 메모리가 완전 자동으로 vetting 없이 노트북에 주입되는 거면, 그게 오히려 보안 분리를 깨는 완벽한 통로 아니야?
맞는 기억과 틀린 기억을 어떻게 걸러내? 잘못된 메모리를 스스로 교정하는 기능도 있는 거야?
ctx.rs랑 비슷한 것 같은데, 차별점을 먼저 내세우는 게 나을 듯. SSH가 그 차별점인가?
맞아, ctx가 제일 가까운 사촌 프로젝트임. ctx는 시크릿을 그대로 저장하고 공개 전에 리뷰하라고 경고하는데, deja는 인덱싱 단계에서 [redacted:aws-key] 같은 태그로 시크릿을 바로 지워버림. ctx는 클라우드 베타로 가는 중이고 deja는 SSH 기반 로컬 P2P 동기화로 완전히 다른 방향을 택함.
ctx 설명 보면 결정, 제약, 의도, 버그 조사, 파일 경로, 커맨드까지 다 저장한다는데, 그냥 에이전트한테 HISTORY.md 파일 만들어서 변경할 때마다 요약해서 로그하라고 시키는 것과 뭐가 다른 거야? 나는 지금 그렇게 하고 있는데.
호스팅 서비스에 안 의존하고 로컬에 남는 게 좋음. LLM 앱 만들면서 느낀 건데, 메모리는 사람이 손으로 검사하고 수정하기 쉬울 때 훨씬 가치가 커짐. 나중에 시맨틱 서치도 지원할 계획이야, 아니면 계속 텍스트 기반으로 결정론적으로 갈 거야?
에이전트 메모리라는 게 결국 디스크에 다 저장하고 벡터DB에 인덱싱한 다음, 새 프롬프트랑 유사도 검색해서 결과를 시스템/유저 프롬프트에 끼워넣는 거 아니야? 그거 말고 뭐가 더 있어?
구현마다 랭킹하고 잊어버리고 대체하는 방식이 다르긴 한데, 본질은 딱 그거임.
나도 이런 거 직접 만들어봤음. bge-en-base CPU 임베딩 모델 쓰고, read/write/update/search 되는 엔드포인트 하나 두고, S3처럼 버킷-키-값 구조로 마크다운이랑 벡터 인덱스 저장하는데 실제 퍼시스턴스는 그냥 SQLite임. 장기 기억은 KB에, 단기 기억은 MEMORY.md에 나눠서 쓰는데 주기적으로 정리(consolidation)하는 단계가 꼭 필요하더라.
나는 로컬에 저장된 메모리조차 에이전트가 제대로 못 읽게 만드는데, 원격 동기화는 꿈도 못 꾸겠다.
140개 넘는 이런 시스템을 직접 리뷰해서 비교 정리한 사이트 만들었음, deja-vu도 목록에 있음.