로컬 코드 리뷰를 위한 에이전트 도구, Saguaro
요약
Saguaro는 로컬 코드 리뷰 기능을 제공하는 에이전트 도구입니다. Claude Code, Codex 등 기존 AI 코딩 에이전트와 통합되어 규칙을 강제 적용하고 실수를 수정합니다. 컨텍스트 수집 시 임포트 그래프를 구축하여 토큰 예산을 관리하며, 파일별로 AI 검사를 수행합니다.
핵심 포인트
- Claude Code, Codex 등 기존 에이전트에 통합 가능
- 규칙 위반 시 종료 코드 1 반환으로 자동화에 용이
- 임포트 그래프(import graph)를 구축하여 컨텍스트 관리
- PreToolUse 및 Stop 훅을 통해 개발 워크플로우에 규칙 주입
코딩 에이전트를 위한 로컬 코드 리뷰 기능을 제공합니다. Claude Code, Codex, Cursor 내부에서 규칙을 강제 적용할 수 있습니다. 컨텍스트가 활성화된 동안 에이전트가 스스로 실수를 수정해 줍니다. 무료이며 Apache 2.0 라이선스를 따릅니다.
npm install -g @mesadev/saguaro
또는 설치 없이 실행할 수도 있습니다:
npx @mesadev/saguaro review
brew install mesa-dot-dev/homebrew-tap/saguaro
curl -fsSL https://raw.githubusercontent.com/mesa-dot-dev/saguaro/main/install.sh | sh
Saguaro는 사용 가능한 기존 에이전트 CLI 구독(Claude Code, Codex, Gemini)을 사용하므로 API 키가 필요하지 않습니다. 만약 에이전트 CLI가 설치되어 있지 않다면 환경 변수에 ANTHROPIC_API_KEY, OPENAI_API_KEY, 또는 GOOGLE_API_KEY를 설정해야 합니다.
# 1. 프로젝트에서 Saguaro 초기화
sag init
# 2. 코드베이스에서 규칙 생성 (또는 기본 제공 규칙 사용)
...
sag init은 다음과 같은 설정을 자동으로 진행합니다:
.saguaro/config.yaml및.saguaro/rules/디렉토리를 생성합니다.- 세 가지 옵션을 제공합니다: 코드베이스에서 규칙 생성, 기본 제공 규칙 사용, 또는 처음부터 시작하기.
- Claude Code 통합을 자동으로 설정합니다 (MCP 서버, 훅(hooks), 슬래시 명령어).
- API 키가 제공된 경우
.env.local에 저장합니다.
파일별 규칙 매칭: 규칙은 .saguaro/rules/에서 YAML 프론트매터와 함께 마크다운 형식으로 로드됩니다. 변경된 파일은 minimatch를 사용하여 규칙의 글롭(glob)과 일치하는지 확인합니다. 글롭이 없는 규칙은 모든 변경된 파일에 적용됩니다.컨텍스트 수집: Saguaro는 '블라스트 반경(blast radius)'을 보여주는 임포트 그래프(import graph)(tree-sitter + SWC)를 구축합니다. 이는 변경 사항에 의존하는 파일과 변경 사항이 의존하는 파일을 의미하며, 컨텍스트가 토큰 예산 내에서 관리되어 리뷰 속도를 유지합니다.파일별 AI 리뷰: 변경된 파일들은 배치로 묶입니다 (설정 가능: files_per_batch). AI 에이전트는 각 배치를 diff와 함께 매칭된 규칙 및 컨텍스트와 비교하여 검사합니다. 만약 규칙 위반 사항이 발견되면 Saguaro가 이를 출력하고, 문제가 없다면 아무것도 출력하지 않습니다.
규칙 위반 시 종료 코드 1을 반환하고, 깨끗한 리뷰는 종료 코드 0을 반환합니다.
sag init은 세 가지 항목을 자동으로 설정합니다:
.claude/settings.json에 두 개의 훅(hooks)이 설치됩니다:
:
PreToolUse: Edit 및 Write 전에 실행됩니다.
툴 호출(tool calls). Claude가 코드를 작성하기 전에 팀의 컨벤션을 알 수 있도록 관련 규칙을 주입합니다.정지(Stop)— Claude가 턴을 완료할 때 실행됩니다. Saguaro는 커밋되지 않은 변경 사항을 기본 브랜치와 비교하여 검토합니다. 위반사항이 발생하면 Claude를 차단하고, 완성하기 전에 수정하도록 요청합니다.
sag hook install # 활성화 (sag init에 의해 수행됨)
sag hook uninstall # 비활성화
Saguaro는 .mcp.json을 통해 MCP 서버로 등록됩니다.
. Claude Code가 시작 시 이를 발견하고 Saguaro의 도구(검토, 규칙 생성, 규칙 생성)에 접근할 수 있게 됩니다.
| 명령어 | 기능 |
|---|---|
/saguaro-review | 코드를 수동으로 검토 실행 |
/saguaro-createrule | AI 지원을 받아 새 규칙 생성 |
/saguaro-generaterules | 코드베이스에서 규칙 자동 생성 |
Saguaro는 모든 코딩 에이전트와 작동합니다. CLI는 에이전트에 구애받지 않습니다(agent-agnostic).
| 에이전트 | 통합 |
|---|---|
| Codex CLI | sag review를 수동으로 또는 CI에서 실행 |
| Gemini CLI | 동일한 CLI 및 규칙 |
| Cursor | 위반사항에 대한 deeplink가 포함된 JSON 출력 (--output json, 설정에서 cursor_deeplink: true) |
| CI 파이프라인 | sag review --base origin/main — 위반 시 1로 종료 |
장시간 실행되는 에이전트 세션의 경우, 데몬(daemon)은 백그라운드에서 클래식한 선임 엔지니어 수준의 검토를 비동기적으로 수행합니다. 발견된 사항들은 자문적이며 다음 에이전트 턴에 표시됩니다 — 이는 규칙 검토 시스템과는 독립적입니다.
sag daemon start # 검토 데몬 시작
sag daemon stop # 중지
sag daemon status # 데몬 실행 여부 확인
데몬은 SQLite 기반의 작업 큐와 워커 풀을 가진 HTTP 서버를 실행합니다. 정지 후크(stop hook)는 인라인으로 검토를 수행하는 대신 diff를 데몬에 게시합니다. 워커들이 작업을 가져가고, AI 에이전트를 생성하며, 결과를 저장합니다. 후크 클라이언트는 완료 여부를 폴링(poll)합니다.
.saguaro/config.yaml에서 활성화하기
:
daemon:
enabled: true
규칙은 마크다운 파일과 YAML 프론매터(frontmatter) 형태로 .saguaro/rules/에 존재합니다. 각 규칙은 무엇을 검사할지, 어떤 파일에 적용되는지, 그리고 위반사항이 얼마나 심각한지를 정의합니다.
id: no-console-log
title: 프로덕션 코드에 console.log 사용 금지
...
위반 사례 (Violations)
### 준수 사례 (Compliant)
```logger.info("Processing order", { orderId });
필드 (Fields):
| Field | Required | Description |
|---|---|---|
id | Yes | 고유 식별자, kebab-case 형식 |
title | Yes | 사람이 읽을 수 있는 이름 |
severity | Yes | error (블록, 종료 1), warning (로그 기록), 또는 info |
globs | No | 일치시킬 파일 패턴. 기본값: 모든 파일. 제외하려면 ! 접두사 사용. |
마크다운 본문은 AI가 규칙을 평가하는 데 사용하는 지침입니다. 코드 예제와 함께 ### 위반 사례 (Violations) 및 ### 준수 사례 (Compliant) 섹션을 포함해야 합니다.
Saguaro는 모든 텍스트 파일을 검토하며, 규칙은 언어에 구애받지 않습니다. import graph는 TypeScript, JavaScript, Python, Go, Rust, Java, 그리고 Kotlin을 지원합니다.
효과적인 규칙 작성에 대한 자세한 내용은 Writing Rules를 참조하세요.
| Command | Description |
|---|---|
sag init | 저장소에 Saguaro 설정 (설정, 규칙, 훅, 통합) 구성 |
sag review | 규칙에 따라 코드 변경 사항 검토 |
sag rules generate | 코드베이스 분석을 통해 규칙 자동 생성 |
sag rules create [dir] | 디렉터리에 한정하여 AI 도움으로 새 규칙 생성 |
sag rules list | ID, 제목 및 심각도로 모든 규칙 목록 표시 |
sag rules explain <id> | 규칙의 전체 세부 정보 표시 |
sag rules validate | 모든 규칙 파일이 올바른 구조인지 확인 |
sag rules delete <id> | 규칙 삭제 |
sag rules locate | 규칙 디렉터리 경로 출력 |
sag index | 더 풍부한 검토 컨텍스트를 위해 import graph 구축 |
sag hook install | Claude Code에서 자동 검토 활성화 |
sag hook uninstall | 자동 검토 비활성화 |
sag daemon start | 백그라운드 검토 데몬 시작 |
sag daemon stop | 백그라운드 검토 데몬 중지 |
sag daemon status | 데몬 실행 여부 확인 |
sag model | AI 제공업체 및 모델을 대화형으로 전환 |
sag stats | 검토 기록 및 비용 분석 표시 |
-m, --mode 모드: rules, classic, 또는 full [기본값: "rules"]
-b, --base 비교할 기본 브랜치 [기본값: "main"]
--head 검토할 헤드 참조 [기본값: "HEAD"]
...
sag rules create [대상]
target 규칙이 적용될 디렉토리 (예: src/api)
--intent 이 규칙이 강제해야 할 내용
...
.saguaro/config.yaml
sag init을 통해 생성됨
:
# 리뷰용 AI 모델
model:
provider: anthropic # anthropic | openai | google
...
API 키는 환경 변수 (ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY) 또는 .env.local / .env 파일에서 로드됩니다.
#!/bin/bash
# .git/hooks/pre-push
sag review --base origin/main
CodeRabbit / Greptile 등과 어떻게 다른가요?
이러한 도구들은 PR에 댓글을 다는 AI 리뷰어입니다. Saguaro Local Review는 규칙 엔진(rules engine)입니다. 팀에게 중요한 것이 무엇인지 사용자가 정의하고, Saguaro는 개발 과정 중에 이를 강제합니다. 이미 코드가 PR에 들어온 후에가 아닙니다. 노이즈도 없고, 일반적인 제안도 없습니다. 위반된 것이 없으면 아무것도 듣지 못합니다.
비용은 얼마나 드나요?
사용자가 자신의 API 키를 사용합니다. 비용은 선택하는 모델, 코드베이스 크기, 규칙 개수, 그리고 리뷰 실행 빈도에 따라 달라집니다. sag stats가 사용 기록을 보여줍니다.
Claude Code 없이 사용할 수 있나요?
네. CLI는 독립적으로 작동합니다. 모든 터미널이나 CI 파이프라인에서 sag review를 실행하세요. Claude Code 통합(훅, MCP, 슬래시 명령어)은 선택 사항입니다.
제 데이터는 어디로 가나요?
어디에도 가지 않습니다. Saguaro는 로컬에서 실행됩니다. 코드는 설정한 AI 제공업체(Anthropic, OpenAI, Google)로 리뷰를 위해 전송됩니다. Saguaro의 서버에는 아무것도 닿지 않습니다.
지원되는 언어는 무엇인가요?
Saguaro는 모든 텍스트 파일을 검토합니다. 규칙은 언어에 구애받지 않습니다(language-agnostic). 임포트 그래프는 TypeScript, JavaScript, Python, Go, Rust, Java, Kotlin을 지원합니다.
CI에서 사용할 수 있나요?
네. sag review --base origin/main이 위반 사항을 발견하면 1로 종료됩니다. 구조화된 출력을 위해서는 --output json을 사용하세요.
어떤 AI 제공업체를 지원하나요?
Anthropic (Claude), OpenAI (GPT-4o, o3), 그리고 Google (Gemini).
백그라운드 데몬(Background daemon)이란 무엇인가요?
장시간 실행되는 에이전트 세션을 위한 선택적 비동기 리뷰 시스템입니다. 에이전트를 차단하지 않고 클래식한(선임 엔지니어 스타일) 리뷰를 병렬로 실행합니다. 백그라운드 데몬을 참조하세요.
Apache-2.0.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기