프로젝트 소개
mgrep은 로컬 파일에 의미론적 자연어 검색을 제공하는 명령줄 도구로, grep을 대체하는 것이 아니라 보완하는 도구입니다. Apache-2.0 라이선스로 npm 패키지(@mixedbread/mgrep)로 배포되며 Mixedbread가 개발했습니다.
주요 기능:
- 코드, 텍스트, PDF, 이미지에 대한 자연어 검색. 오디오 및 비디오 지원은 곧 제공될 예정입니다.
- `mgrep watch`를 통한 백그라운드 인덱싱: 초기 동기화를 수행하고 .gitignore 및 선택적 .mgrepignore 파일을 존중하며 파일 변경 시 클라우드 기반 Mixedbread 저장소를 업데이트합니다.
- `--web`을 통한 웹 검색: 로컬 결과와 함께 `mixedbread/web` 저장소를 쿼리하며, `--answer`는 요약된 응답을 생성합니다.
- `--agentic`을 통한 에이전트 검색: 복잡한 질문을 하위 쿼리로 분할하고 여러 검색을 실행합니다.
- 기본적으로 결과 재순위화가 활성화되며 `--no-rerank` 또는 MGREP_RERANK=0으로 비활성화할 수 있습니다.
- 결과에는 상대 경로와 텍스트의 줄 범위, PDF의 페이지 번호 같은 컨텍스트 힌트가 포함됩니다.
인증 및 설정:
- `mgrep login`은 기기/브라우저 흐름을 사용하며, 헤드리스 또는 CI 환경에서는 MXBAI_API_KEY를 설정할 수 있습니다.
- 설치: `npm install -g @mixedbread/mgrep` (pnpm/bun도 언급됨).
코딩 에이전트 통합:
- Claude Code, OpenCode, Codex, Factory Droid용 설치 명령이 있습니다 (install-claude-code, install-opencode, install-codex, install-droid).
- README에 따르면 코딩 에이전트와 함께 설치하면 세션 중에 백그라운드 프로세스가 파일을 동기화하고 세션이 끝나면 중지됩니다.
- 기본 제한은 파일당 1MB, 디렉터리당 1,000개 파일이며 CLI 플래그, 환경 변수 또는 구성 파일로 조정할 수 있습니다.
구성:
- 로컬 `.mgreprc.yaml`/`.mgreprc.yml` 또는 전역 `~/.config/mgrep/config.yaml`.
- 우선순위: CLI 플래그, 환경 변수, 로컬 구성, 전역 구성, 기본값 순입니다.
- 환경 변수는 인증(MXBAI_API_KEY), 저장소 선택(MXBAI_STORE), 검색 동작(MGREP_MAX_COUNT, MGREP_CONTENT, MGREP_ANSWER, MGREP_WEB, MGREP_AGENTIC, MGREP_SYNC, MGREP_DRY_RUN, MGREP_RERANK) 및 동기화 제한(MGREP_MAX_FILE_SIZE, MGREP_MAX_FILE_COUNT)을 다룹니다.
- `--store <name>`은 작업 공간을 분리하며 저장소는 요청 시 생성됩니다.
명령 개요: `mgrep`/`mgrep search`, `mgrep watch`, `mgrep login`, `mgrep logout`, 그리고 네 가지 에이전트 설치 명령.
개발: pnpm으로 빌드된 TypeScript 프로젝트이며 `pnpm build`, `pnpm dev`, `pnpm format` (biome), `pnpm typecheck`를 사용하고 테스트는 bats를 사용합니다. README에는 테스트가 아직 완전히 연결되지 않았다고 명시되어 있습니다.
벤치마크 주장: README는 내부 50개 작업 QA 벤치마크에서 mgrep과 Claude Code를 사용할 때 grep 기반 워크플로보다 약 2배 적은 토큰을 사용하면서 유사하거나 더 나은 품질을 보였고, LLM이 판단한 승률이 더 높았다고 보고합니다. 이는 프로젝트 자체의 주장이며 여기서 독립적으로 검증되지 않았습니다.
문제 해결 노트는 반복적인 로그인 프롬프트, 시끄러운 watcher, 저장소 재생성 등을 다룹니다. 지원은 Mixedbread Slack 커뮤니티를 통해 제공됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.