TL;DR

  • Grev는 TypeSafe의 Jev 모델을 활용해 입력 패턴을 일치시키는 대신 질문에 답하며 레코드를 처리하는 Unix 도구 모음임.
  • 모델은 텍스트를 생성하는 대신 보정된 확률로 타입이 지정된 질문에 답하고, 출력은 항상 입력 데이터이며 레이블과 점수는 명시적 열로만 표시됨.
  • grev, isv, tagv, rank, pickv, uniqv, cutv, seek, lookv, probev 등 검색·분류·정렬·추출 도구를 제공함.
  • 수천 줄 처리에 몇 초와 1센트 미만의 비용이 들며, 실행별 비용 한도와 일일·월간 지출 상한 등 안전장치를 제공함.
  • ~/.grevconfig에서 API 키와 기본 설정을 관리하며, 패키지·Go 설치·소스 빌드를 지원함.

예시

  • 의미를 기준으로 로그를 검색함.
  • grev --about으로 입력의 종류를 지정하고, 자연어 질문에 맞는 줄을 찾음.
  • journalctl 출력에서 프로세스 충돌을 찾거나 git log의 커밋 메시지에서 버그 수정 내용을 찾을 수 있음.
  • 커밋을 검사할 때 isv로 스테이징된 변경 사항에 비밀 정보나 자격 증명이 포함됐는지 확인하며, 종료 코드 0은 긍정을 의미함.
  • tagv로 티켓을 분류하고 레코드를 디렉터리별로 분배하며, rank로 긴급성이나 순서 수준에 따라 정렬함.
  • pickv로 질문에 가장 잘 답하는 한 줄이나 정규식 일치를 찾고, cutv로 설명에 맞는 CSV/TSV 열을 추출하며, uniqv로 의미가 같은 인접 레코드를 합침.
  • unwrap은 강제로 줄바꿈된 텍스트를 다시 연결하고, seek는 설명에 해당하는 항목을 디렉터리 트리에서 찾음.
  • lookv는 순서가 있는 입력에서 답이 바뀌는 지점을 이분 탐색하며, 600줄의 상태 확인 로그에서 실패를 보고하는 첫 항목을 세 번 요청해 찾는 예시를 제공함.
  • probev는 각 레코드의 확률을 열로 출력해 awk에서 활용할 수 있음.

도구 구성

  • grev — grep: 모델이 긍정으로 판단한 레코드를 출력함.
  • isv — test: 전체 입력에 대한 예·아니오 질문의 답을 종료 상태로 반환함.
  • oneof — case: 전체 입력에 맞는 레이블을 출력함.
  • tagv — awk: 모든 레코드를 분류하며, --split DIR로 레코드를 파일에 분배함.
  • rank — sort: 적합도 또는 순서가 지정된 수준에 따라 레코드를 정렬함.
  • pickv — grep -o: 질문에 가장 잘 답하는 한 줄 또는 정규식 일치를 출력함.
  • uniqv — uniq: 의미가 같은 인접 레코드를 합침.
  • unwrap — fmt: 강제로 줄바꿈된 줄을 다시 연결함.
  • seg — csplit: 스트림을 주제별 구간으로 나눔.
  • cutv — cut: 설명과 일치하는 CSV/TSV 열을 추출함.
  • seek — find: 설명에 해당하는 항목을 찾으며 디렉터리 트리를 탐색함.
  • lookv — look, git bisect: 몇 차례의 요청으로 순서가 있는 입력에서 답이 바뀌는 지점을 찾음.
  • probev — awk: 레코드별 확률 열을 출력함.
  • jev: 설정, API 키, 비용, 모델, 단발성 요청 및 원시 요청을 관리함.
  • 모든 도구에 --help와 매뉴얼 페이지가 제공됨.

공통 옵션

  • -p: 실시간 및 예상 비용과 진행 상황을 표시함.
  • -Q: 예상 비용을 표시하고 먼저 확인을 요청함.
  • -J N / -Jmax: 병렬 처리 수준을 설정함.
  • --max-cost: 실행별 예산을 설정함.

설치

  • Linux, macOS, FreeBSD, Windows용 deb, rpm, apk, Arch 패키지와 아카이브를 릴리스 페이지에서 제공함.
  • packaging/arch/PKGBUILD는 소스에서 빌드함.
  • Go 설치 명령은 go install github.com/aurorainfra/grev/cmd/...@latest임.
  • 소스에서는 make && sudo make install로 설치하며, 매뉴얼 페이지와 bash/zsh/fish 자동 완성도 함께 설치함.

설정

  • 설정은 git-config 형식의 단일 파일 ~/.grevconfig에 저장하며, 전체 참조 문서는 docs/CONFIG.md와 man grevconfig에서 확인 가능함.
  • jev key set으로 API 키를 설정하며 파일 권한은 0600임.
  • [defaults]에서 진행 상황 표시, 작업 수, 확인 기준 비용을 지정할 수 있음. 기본 확인 기준은 1달러이며 예시 설정은 0.25달러임.
  • [limits]에서 모든 도구에 적용되는 일일·월간 미국 달러 지출 한도를 설정할 수 있으며 예시 값은 각각 5달러와 50달러임.
  • [tool "grev"]처럼 도구별 기본값을 설정할 수 있으며, 예시에는 about 기본값과 threshold = 0.7이 포함됨.
  • 임계값은 도구별로 설정함. -t는 grev에서 긍정일 확률, tagv에서 선택 항목의 최소 신뢰도, seek에서 경로 점수를 의미함.
  • jev config set limits.daily 5로 설정을 관리하고, jev config list --show-origin으로 출처를 확인하며, jev spend로 지출을 확인함.
  • 우선순위는 명령줄 옵션, 환경 변수, 설정 파일 순임. CI에서는 TYPESAFE_API_KEY로 파일 없이 키를 제공할 수 있음.

비용과 안전

  • Jev 요금은 입력 토큰 100만 개당 0.042달러이며 출력은 무료임.
  • 4,000줄 소스 파일의 grep 작업 비용은 약 0.008달러임.
  • 설정된 confirmAbove 기준을 넘는 비용으로 예상되는 실행은 먼저 확인을 요청하며, 별도 설정이 없으면 기준은 1달러임. 터미널이 없으면 실행을 거부함.
  • --max-cost와 일일·월간 한도는 실행이 한도를 넘기 전에 중단함.
  • 출력 파이프를 닫으면, 예를 들어 | head를 사용하면 지출이 중단됨.

추가 자료

  • docs/DESIGN.md: 도구의 질문 구성 방식과 그 이유, 평가, 옵션 규칙, 비용 모델을 설명함.
  • docs/CONFIG.md: 설정을 자세히 설명함.
  • 매뉴얼 페이지: grev-tools(7), grevconfig(5) 및 도구별 매뉴얼을 제공함.

라이선스

  • Apache License, Version 2.0 또는 MIT License 중 선택해 라이선스를 적용함.
  • 별도 명시가 없는 한, Apache-2.0 라이선스에서 정의한 대로 작업에 포함하도록 제출한 기여물은 추가 조건 없이 위 두 라이선스로 이중 라이선스가 적용됨.