동작 설명으로 코드를 찾는 에이전트용 시맨틱 검색 CLI 'jevgrep'
정확한 심볼명이나 파일 구조를 몰라도 자연어 의도로 리포지토리 내 코드 위치와 발췌문을 찾아주는 Jev 기반 오픈소스 CLI 도구 jevgrep(jg)과 코딩 에이전트 연동 스킬.
개발자 dzhng이 공개한 오픈소스 CLI 도구 jevgrep(명령어 jg)은 TypeSafe AI의 의사결정 모델 Jev를 검색 엔진으로 활용하여, 정확한 심볼명이나 디렉터리 경로를 몰라도 자연어 동작 설명만으로 코드베이스 내 관련 위치를 찾아주는 시맨틱 검색 도구입니다.

이미지 출처: X @Sumanth_077
기존 코딩 에이전트가 낯선 대형 리포지토리에 투입되었을 때 관련 코드를 찾기 위해 수많은 파일을 반복해서 열람하고 검색하며 불필요한 컨텍스트 토큰을 소모하던 비효율을 해결하기 위해 개발되었습니다.
벡터 DB 없이 동작하는 실시간 시맨틱 코드 탐색
jevgrep의 가장 큰 특징은 사전 임베딩 인덱스나 벡터 데이터베이스, 상주 데몬을 전혀 요구하지 않는다는 점입니다.
기존 시맨틱 코드 검색 도구들은 프로젝트 전체를 사전에 청킹하고 임베딩 벡터를 생성해 로컬 DB에 보관해야 했으며, 코드가 변경될 때마다 인덱스가 낡거나 동기화가 어긋나는 문제가 있었습니다. 반면 jevgrep은 라이브 리포지토리 트리를 즉시 탐색하며 실시간으로 관련성을 평가합니다.
- 온디맨드 구조 평가: 리포지토리의 폴더 구조, 파일 미리보기, 함수 및 클래스 선언부 코드 조각을 탐색 경로에 따라 평가합니다.
- 정확한 코드 발췌문 반환: 단순 파일 목록만 제시하는 것이 아니라, 해당 답변을 뒷받침하는 구체적인 파일 경로, 라인 번호 범위, 원본 코드 발췌문(verbatim source excerpts)을 표준 출력으로 즉시 반환합니다.
- 단일 패스 비자기회귀 판정: TypeSafe AI의 시스템 원(System One) 모델 Jev를 호출하여 코드 조각당 단일 패스로 판정을 수행하므로 빠른 속도로 검색 결과를 도출합니다.
사용자는 터미널에서 jg --all "where are expired CLI tokens rejected?" apps/web과 같이 자연어 질문을 던져 만료된 토큰을 검증하는 정확한 코드 위치와 라인 번호를 바로 확인할 수 있습니다.
코딩 에이전트 자동 감지와 SWE-bench 비용 28.6% 절감
jevgrep은 인간 개발자의 단독 사용뿐만 아니라 Claude Code, Codex, OpenCode 등 자율 코딩 에이전트와의 협업을 기본 설계로 채택했습니다.
CLI에 내장된 jg skill 명령어를 실행하면 실행 환경에 설치된 코딩 에이전트를 자동으로 감지하고, 에이전트가 어떤 상황에서 jg를 호출해야 하는지와 검색 결과를 해석하는 방법을 명시한 전용 스킬(Skill)을 등록합니다.
- 명확한 역할 분담:
jevgrep은 코드 탐색과 발췌문 추출에만 집중하며, 반환된 소스코드를 정독하고 주변 컨텍스트를 파악해 실제 코드를 수정하고 테스트를 실행하는 작업은 상위 코딩 에이전트가 전담합니다. - 탐색 비용 절감 실측: 10개 태스크로 구성된 소규모 SWE-bench 테스트 1회 실행 결과에 따르면, jevgrep 적용 시와 미적용 베이스라인 모두 8/10 해결률을 기록한 가운데 코딩 에이전트 API 호출 비용(Jev 추론 비용 제외)이 기존 7.62달러에서 5.44달러로 약 28.6% 절감되었습니다.
실행 환경, 프로바이더 설정 및 도입 시 주의사항
jevgrep은 현재 MIT 라이선스로 배포되는 오픈소스 프로젝트이며, Node.js 22 이상 환경(macOS, Linux 등)에서 동작합니다.
- 실행 환경 및 대상 프로젝트: Node.js 22 이상 환경에서 동작하며, TypeScript/JavaScript 프로젝트를 비롯한 코드베이스의 폴더 및 함수·선언부 구조를 실시간으로 탐색합니다.
- 추론 백엔드 설정:
jg auth명령을 통해 TypeSafe AI 직접 연결뿐만 아니라 OpenRouter, Vercel AI Gateway 등 다양한 추론 프로바이더 인증 정보를 유연하게 등록할 수 있습니다.
실무 도입 시에는 몇 가지 특성을 고려해야 합니다.
- 문자열 매칭과의 역할 분리: 찾고자 하는 함수명, 에러 메시지, 정확한 변수명을 이미 알고 있는 경우에는
ripgrep(rg)과 같은 고속 텍스트 검색 도구를 사용하는 것이 훨씬 빠르고 정확합니다. - 시맨틱 유사성과 실제 호출 경로 검증: 시맨틱 검색 결과는 의미상 연관되어 보이지만 실제 런타임 호출 그래프 상에서 동작하지 않는 별개의 모듈일 수 있습니다. 따라서 에이전트가 수정을 가하기 전에 원본 파일의 주변 컨텍스트와 호출 관계를 교차 검증해야 합니다.
- 코드 조각 전송 보안: 검색 과정에서 리포지토리의 소스코드 조각이 설정된 원격 Jev 추론 프로바이더로 전송되므로, 민감한 키나 설정 파일이 유출되지 않도록
.gitignore및--exclude옵션을 적절히 구성해야 합니다.
출처
- GitHub 저장소: dzhng/jevgrep
- X (@Sumanth_077): jevgrep 소개 및 데모