프로젝트 소개

dejavu-gates는 AI 코딩 에이전트를 위한 교차 세션 메모리 계층입니다. 에이전트는 세션 사이의 기억이 없어 같은 실수를 반복하며, 마크다운 규칙으로는 이를 해결할 수 없습니다. 이 도구는 반복되는 도구 호출 실패(bash, read, edit, write, glob, grep)를 기계적으로 감지해 강제 게이트로 승격합니다. 다음 시도에는 알림을 주고, 같은 세션에서 재발하면 강하게 차단합니다. 하나의 엔진, 여러 호스트. OpenCode 플러그인으로, 그리고 Claude Code, Codex CLI, Gemini CLI, Cursor, Copilot CLI, Crush용 훅 핸들러 CLI로 실행됩니다. TypeScript로 작성되어 Bun으로 실행되며, 빌드 단계 없이 소스로 배포됩니다. 작동 방식: 실패한 도구 호출은 정규화된 시그니처(경로, 숫자, 해시 제거)를 받고, 패턴 키가 세션 전반에 걸쳐 집계되며, 서로 다른 2개 세션에서 3회 실패하면 게이트로 승격됩니다. 다음 시도는 호출이 중단된 채 [dejavu] 알림을 받습니다. 다시 실패하는 재시도는 강한 차단을 유발합니다. 진단 명령은 알림 전용으로 유지되어 호출이 실행되고, 알림은 세션당 한 번 실패 출력에 NOTE로 붙습니다. 설계 선택 사항: 먼저 알림하고 반복 시에만 차단(순수 차단은 패키지 관리자 전환 같은 우회를 유도함), 게이트 메시지는 단순 금지가 아니라 CORRECTION과 EVIDENCE를 포함, 핫 패스에 LLM 분류 없이 기계적 패턴 키만 사용, 두 가지 범위(저장소의 저장소별 게이트와 사용자 설정의 에이전트 수준 습관), 재발 없이 60일이 지나면 게이트 만료, 게이트가 실제로 반복을 줄이는지 확인하는 게이트 이후 재발 지표. 강제에는 부정적 피드백이 있습니다. 계속 재발하거나 명시적으로 계속 우회되는 게이트는 스스로 watching으로 강등되며 기계적으로 재승격되지 않습니다. 사람이 다시 강제할 수 있습니다. 게이트는 치유되기도 합니다. 강제된 게이트와 일치하는 호출이 3회 연속 성공하면 watching으로 은퇴하고, 여러 번 알림되었지만 재발이 없는 게이트는 taught로 은퇴합니다. 안전성과 견고성 세부 사항: 비진단 bash 명령만 차단 게이트가 될 수 있고, 파일 프로브는 watching으로 유지되며, 잔여 정체성이 없는 시그니처는 watch만 가능하고, 훅 CLI는 잘못된 페이로드나 내부 오류 시 빈 결정과 종료 코드 0을 반환하며 fail open합니다. 비밀 정보는 저장 전에 스크러빙되고, 터미널 제어 문자는 제거되며, 저장소는 초기화 시 조정 및 복구되고 손상된 파일은 격리됩니다. 동시성은 tmp+rename 쓰기와 Windows 오류 재시도를 사용하는 잠금 파일로 처리되며, 알림에서 차단으로의 에스컬레이션 체인은 게이트에 저장되어 여러 창과 하네스가 이를 공유합니다. 설치 방법: npx, 여러 하네스의 네이티브 플러그인 채널, GitHub Packages, 또는 각 하네스 설정에 훅 항목을 멱등적으로 병합하는 설치 스크립트가 있는 클론에서 가능합니다. 관측 가능성에는 doctor 스크립트, analyze 스크립트, /dejavu status 명령, 디버그 환경 변수가 포함됩니다.