vet
무엇인가
Vet은 코드 변경과 코딩 에이전트 행동을 검증하는 독립 실행형 CLI다. 린터나 테스트 러너가 규칙 위반만 보는 자리와 달리, 에이전트 대화가 사용자 목표를 벗어나지 않았는지와 새 코드가 맞는지를 함께 판정한다. 터미널, 에이전트 스킬, CI 어디서든 같은 검사를 돌리는 것을 목표로 한다.
어떻게 동작하나
동작은 스냅샷 기반이다. 저장소와 diff를 스냅샷하고, 선택적으로 목표와 에이전트 대화를 붙인 뒤 LLM 검사를 실행하고, 결과를 필터링·중복 제거해 최종 이슈 목록으로 만든다. 출력 형식은 text, json, github 세 가지다. 종료 코드는 0이 이슈 없음, 10이 이슈 발견, 1이 예기치 않은 런타임 오류, 2가 사용법·설정 오류다.
무엇과 다른가
규칙 기반 린터·정적 분석기와 달리 판정 근거가 LLM 검사이고, 에이전트 대화와 사용자 목표까지 입력에 포함한다. 호스팅 코드 리뷰 서비스와 달리 계정·요금·데이터 수집이 없고 요청이 사용자의 추론 제공자에게 직접 간다. API 키 없이 `--agentic`으로 Anthropic·OpenAI 구독을 쓰거나, `--agent-harness`에 claude·codex·opencode를 지정해 기존 에이전트 하네스를 검사 주체로 재사용한다.
어떻게 쓰나
CLI는 pip, pipx, uv로 설치한다. 저장소에서 vet을 실행하면 현재 변경을 검사하고, 베이스 ref/커밋과 비교하는 모드도 있다. 에이전트 스킬로 설치하면 프로젝트 수준에서는 `.agents/skills/vet/`, `.opencode/skills/vet/`, `.claude/skills/vet/`, `.codex/skills/vet/`에, 사용자 수준에서는 `~/.agents/`, `~/.opencode/`, `~/.claude/`, `~/.codex/`에 들어가 에이전트가 코드 변경 후 스스로 실행한다. GitHub Actions에서는 재사용 워크플로가 Python 설정, vet 설치, merge base 계산, PR 리뷰 게시를 처리한다. 모델 정의는 `$XDG_CONFIG_HOME/vet/models.json` 또는 저장소 루트 `.vet/models.json`에 두고, 이슈 코드별 가이드는 `guides.toml`의 prefix·suffix·replace로 조정하며, TOML 프로필로 CI 기본값을 고정한다.
전제와 한계
실행하려면 LLM 제공자 API 키나 Anthropic·OpenAI 구독이 필요하다. 모델 해석 우선순위는 사용자 설정, 내장 모델(Anthropic·OpenAI·Gemini), `--update-models`로 받아 `~/.cache/vet/remote_models.json`에 캐시한 레지스트리 순이다. `--history-loader`는 지정한 셸 명령을 현재 사용자 권한으로 실행해 대화 기록을 읽으므로 명령과 공유 설정 프리셋을 미리 확인해야 한다. 라이선스는 AGPL-3.0-only다.