프로젝트 소개
claude-code-rlm는 메인 모델이 프롬프트를 처리하기 전 코드베이스에 대한 사전 조사를 수행하는 Claude Code용 훅입니다. 기본 모델(Opus 또는 Sonnet)이 첫 번째 도구 호출을 통해 스스로 방향을 잡는 대신, 이 훅은 더 빠르고 저렴한 Haiku 모델을 먼저 배치하여 리포지토리를 탐색하고 그 결과를 주입된 컨텍스트로 메인 모델에 전달합니다.
작동 방식
1. Claude Code는 UserPromptSubmit 훅을 통해 rlm-hook.mjs를 호출하며, prompt, cwd, transcript_path 등의 필드가 포함된 JSON을 stdin으로 전달합니다.
2. 사소한 입력은 즉시 건너뜁니다: 설정된 최소 길이보다 짧은 프롬프트, 단순 셸 명령어(ls, pwd, cat, echo, git status, npm, yarn), 단어 하나로 된 긍정 응답, /help, /clear, /compact와 같은 슬래시 명령어, 그리고 입력의 절반 이상이 코드 블록인 코드 중심의 붙여넣기가 이에 해당합니다.
3. 프롬프트와 작업 디렉토리의 SHA-256 해시를 기본 TTL 1시간인 파일 캐시와 대조하여 확인합니다.
4. 캐시 미스 발생 시, 설정된 Haiku 모델로 Claude CLI가 실행됩니다. 이 모델은 Read, Glob, Grep 및 git Bash로 권한이 제한되며, 설정 가능한 횟수의 도구 호출 내에서 코드베이스를 탐색하라는 시스템 프롬프트를 부여받습니다.
5. Haiku는 조사 내용을 임시 JSON 파일에 기록합니다. 훅은 이를 의도, 요약, 관련 파일, 기존 패턴, 최근 변경 사항, 제안된 접근 방식, 작업 및 경고를 포함하는 구조화된 rlm_preresearch 블록으로 포맷팅하여 stdout으로 출력하며, Claude Code는 이를 사용자 프롬프트 앞에 주입합니다.
6. 타임아웃, API 오류, JSON 파싱 오류를 포함한 모든 실패 시 출력 없이 종료되어, 훅이 대화를 차단하거나 손상시키지 않도록 합니다.
모드 및 설정
모든 설정은 환경 변수를 통해 이루어집니다. 기본값인 Agentic 모드는 도구 기반 탐색을 활성화하며 캐시 미스 시 약 20초가 소요됩니다. Fast 모드는 도구 호출 없이 간결한 분석을 수행하며 약 4초가 소요됩니다. 기타 설정으로는 모델 이름, 전체 타임아웃, 캐시 TTL, 최소 및 최대 입력 길이, 최대 도구 턴 수, 캐시 및 로그 경로, 메트릭 파일 등이 있습니다. 선택 사항인 SDK-Direct 모드는 서브프로세스 대신 API 키와 함께 Anthropic SDK를 사용합니다.
README에 설명된 추가 기능으로는 설정 가능한 코사인 유사도 임계값을 기준으로 임베딩을 비교하는 선택적 시맨틱 캐시, 동일한 의도나 파일을 다시 분석하는 것을 방지하기 위해 최근 RLM 블록을 되돌아보는 컨텍스트 재사용, 그리고 지연 시간 분포, 캐시 적중률, 모드별 성능 및 추정 Haiku 비용을 보여주는 번들 대시보드(로컬 포트 9876에서 제공)가 포함된 메트릭 JSONL 로그가 있습니다.
보고된 지연 시간 수치: 스킵 시 약 27ms, 캐시 적중 시 약 37ms, 캐시 미스 시 Agentic 모드에서 약 20초, Fast 모드에서 약 4초입니다.
요구 사항 및 설치: Node.js 18 이상 및 PATH에 설정된 Claude Code CLI가 필요합니다. 제공된 설치 스크립트는 훅을 Claude 훅 디렉토리에 복사하고 실행 가능하게 만듭니다. Claude Code 설정 파일에 명령어와 타임아웃이 포함된 훅 항목을 추가해야 합니다. 테스트 및 벤치마킹은 npm 스크립트를 통해 실행되며, 통합 테스트에는 실제 claude 바이너리가 필요합니다. 이 프로젝트는 MIT 라이선스로 배포됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.