RepoLens: 다중 렌즈 코드 감사 도구
요약
RepoLens는 코드 감사, 펜테스팅, 인프라 감사 등 다양한 전문 영역을 다루는 '다중 렌즈' 코드 분석 도구입니다. 이 도구는 AI 에이전트를 사용하여 Git 저장소나 라이브 서버를 대상으로 광범위한 감사를 수행하며, 발견 사항과 개선점을 보고서로 생성합니다. 다만, 이 도구는 격리된 보안 환경이 아니며 사용자의 책임 하에 사용해야 하며, 전체 감사 과정에서 상당한 API 비용이 발생할 수 있다는 점을 명시하고 있습니다.
핵심 포인트
- AI 에이전트를 활용하여 코드 및 인프라 전반의 전문적인 감사를 수행합니다.
- 코드 리뷰, 펜테스팅, 정적/동적 분석 등 다방면의 기능을 제공합니다.
- 사용자의 책임 하에 사용해야 하며, API 비용과 보안 위험을 명확히 고지하고 있습니다.
- 작동을 위해 bash, git, jq 등의 필수 시스템 도구 설치가 요구됩니다.
다중 렌즈(Multi-lens) 코드 감사 도구. 모든 git 저장소, 라이브 서버, Android APK 또는 제품 사양을 대상으로 34개 영역에 걸쳐 338개의 전문 렌즈를 실행하며, 실제 발견 사항, 백로그 작업 또는 폴리싱 후보 목록에 대해 원격 이슈를 생성합니다. 폴리싱 패스(polish pass)는 검토용으로 순위가 매겨진 제안 아티팩트도 작성합니다. 자동화된 코드 리뷰, 에이전트 기반 펜테스팅(pentesting), 도구 기반 정적/동적 분석(static/dynamic analysis), 인프라 감사(infrastructure auditing), Android 감사(auditing), 사양-백로그 계획(spec-to-backlog planning) 및 폴리싱까지 — 모두 깊은 전문성을 갖추고 수행합니다.
중요
RepoLens는 셸 접근 권한을 가진 AI 에이전트를 사용하여 사용자의 저장소를 실행하며, 전체 감사는 API 요금으로 수백 달러가 발생할 수 있습니다. 이는 격리된(sandboxed) 보안 도구가 아니며, 어떠한 보증도 제공하지 않으므로 전적으로 사용자 본인의 책임 하에 사용해야 합니다. 첫 실행 전에 경고 및 제한 사항을 반드시 읽어보십시오 — 특히 비용 및 보안 섹션을 주의 깊게 확인하십시오.
| 도구 | 필수 여부 | 목적 | 설치 방법 |
|---|---|---|---|
bash | 예 (4.0 이상) | 셸 런타임 — 연관 배열(associative arrays), read -ra, 기타 4.x 기능이 전반적으로 사용됨 | Linux 배포판에는 이미 4.0 이상이 포함되어 있습니다. macOS는 기본적으로 3.2가 포함되어 있습니다 (GPLv3 회피 목적) — brew install bash를 통해 업그레이드하십시오. RepoLens는 구형 bash 버전에서 시작 시도하고 업그레이드 힌트를 제공하며 중단됩니다. |
git | 예 | 저장소 유효성 검사, 클로닝 | OS 패키지 관리자 (apt install git, brew install git, nix-env -i git) |
jq | 예 | JSON 설정 파싱 | OS 패키지 관리자 (apt install jq, brew install jq, nix-env -i jq) |
timeout (coreutils) | 예 | SIGKILL 에스컬레이션 우아함(grace)을 가진 호출별 에이전트 타임아웃 감시 도구 (아래의 REPOLENS_AGENT_TIMEOUT* 및 REPOLENS_AGENT_KILL_GRACE 참조) | GNU coreutils에 포함되어 있습니다. Linux/NixOS에는 사전 설치되어 있습니다. macOS의 경우: brew install coreutils . |
|
gh , glab , tea , 또는 fj |
Yes (만약 --local이 아니라면) |
레이블 및 이슈 쿼리에 대한 원격 포지(remote forge) 작업 수행 | 감지를 위한 지원 포지(Supported forges), 설치 링크, 인증 명령은 [지원되는 포지]를 참조하세요 |
| Agent CLI | Yes (최소 하나) | 분석 에이전트 실행 | 설치 + 각 CLI별 인증은 아래 [지원되는 에이전트 CLI]를 참조하세요 |
docker + docker compose |
오직 --hosted일 때만 |
DAST 스캐닝 환경 | OS 패키지 관리자 |
[지원되는 포지(Supported forges)]는 GitHub (gh), GitLab (glab), Gitea (tea), 그리고 Codeberg/Forgejo (fj)입니다. RepoLens는 대상 프로젝트에서 git remote get-url origin을 읽어와 오리진 호스트를 사용하여 적절한 포지 백엔드를 선택합니다. 자동 감지를 재정의하려면 --forge <gh|glab|tea|fj>를 전달하세요. 원격 포지 CLI 없이 로컬 출력 파일을 작성하려면 --local을 사용하세요.
| 포지 (Forge) | 제공업체 (Provider) | CLI | 자동 감지 (Auto-detection) | 설치 / 인증 (Install / auth) |
|---|---|---|---|---|
| GitHub | gh | GitHub CLI | github.com 오리진 | cli.github.com에서 설치한 후, gh auth login을 실행하세요 |
| GitLab | glab | GitLab CLI | gitlab.com 또는 gitlab DNS 레이블 | GitLab CLI에서 설치한 후, glab auth login --hostname <호스트>를 실행하세요 |
| Gitea | tea | Gitea Tea CLI | gitea를 포함하는 호스트 이름 | gitea.com/gitea/tea에서 설치한 후, tea login add를 실행하세요 |
| Codeberg / Forgejo | fj | Forgejo CLI | codeberg.org 오리진 | forgejo-contrib/forgejo-cli에서 설치한 후, fj -H <호스트> auth login을 실행하세요 |
자동 감지 규칙에 일치하지 않는 자체 호스팅 인스턴스는 --forge <gh|glab|tea|fj>가 필요합니다. 자체 호스팅 Forgejo 대상의 경우에도 RepoLens가 안전한 fj -H <호스트> 바인딩을 전달할 수 있도록 HTTPS 또는 SSH origin 원격이 필요하며, 보안에 취약한 HTTP 오리진은 인증된 fj 명령어에 사용되지 않습니다.
GitLab은 오리진에서 전체 그룹/서브그룹/프로젝트 네임스페이스를 유지합니다. 예를 들어 https://code.example.com:8443/team/platform/service.git와 같은 사용자 지정 호스트의 경우, glab auth login --hostname code.example.com:8443으로 인증한 다음 --forge glab을 전달하세요.
HTTPS 포트는 유지되며; SSH 포트는 전송 전용(transport-only)이며 API는 호스트 이름(hostname)을 사용합니다. 보안되지 않은 HTTP 오리진은 거부됩니다. GitLab 네임스페이스 경로는 그룹으로 처리되며, 기존 Gitea/Forgejo의 URL base-path 처리는 변경되지 않습니다. 읽기 작업에는 명시적 호스트와 인코딩된 네임스페이스를 사용하는 페이지네이션(paginated) GitLab API가 사용되고; 레이블, 이슈 본문 및 댓글은 동일한 타겟 바인딩을 사용합니다.
--agent 값 | CLI 필요 여부 | 참고 사항 |
|---|---|---|
claude | claude | Anthropic Claude Code |
claude/<model> | claude | 특정 모델에 고정된 Claude Code |
codex | codex | OpenAI Codex CLI |
codex/<model> | codex | 특정 모델에 고정된 Codex |
spark / sparc | codex | spark 모델을 사용하는 Codex CLI |
cursor | cursor-agent | 구독 자동 라우팅(Auto routing)이 적용된 Cursor CLI |
cursor/<model> | cursor-agent | 특정 구독 모델에 고정된 Cursor CLI |
cursor-ide | none | Cursor Composer로의 순서화된 파일 시스템 핸드오프(Ordered filesystem handoff) |
opencode | opencode | 오픈 소스 에이전트 CLI (75개 이상의 제공업체) |
opencode/<model> | opencode | 특정 제공업체/모델을 사용하는 opencode |
antigravity | agy | Google Antigravity CLI |
antigravity/<model> | agy | 특정 모델에 고정된 Antigravity |
copilot | gh | GitHub Copilot CLI (via gh copilot) |
copilot/<model> | gh | 특정 모델에 고정된 Copilot CLI |
RepoLens를 실행하려면 최소한 하나의 에이전트 백엔드(agent backend)가 필요합니다. CLI 백엔드는 아래 설명과 같이 설치하고 인증해야 합니다. cursor-ide는 대신 열린 Cursor IDE/Composer 세션을 사용하며 에이전트 CLI가 필요하지 않습니다.
참고
claude, codex, cursor, opencode, antigravity, 또는 copilot 뒤에 /<model>을 추가하여 해당 실행을 특정 모델에 고정할 수 있습니다. 예를 들어, 저렴하고 빠른 검사를 위해 --agent claude/claude-haiku-4-5를 사용하거나, 설치된 CLI와 플랜이 허용하는 모든 모델(새로 출시된 모델 포함)을 선택하려면 --agent cursor/<model> / --agent antigravity/<model>을 사용할 수 있습니다. 모델 문자열은 CLI에 직접 전달됩니다. 단순히 --agent cursor만 사용하는 경우
Cursor의 Auto router를 사용합니다. spark / sparc 프리셋은 /<model> 접미사를 사용하지 않으므로, Codex 모델을 직접 선택하려면 codex/<model>을 사용하세요. 이러한 /<model> 형식은 유효한 --agent-override 대상이기도 합니다. 토큰 기반 요금제의 경우, 알 수 없는 모델의 비용 추정치는 이름에 포함된 키워드(flash / haiku / mini)는 저렴하게, (opus / ultra)는 프리미엄으로, 나머지는 표준으로 근사합니다. Cursor 변형 제품군은 대신 구독 요청/할당량 사용량을 보고하며 임의로 만들어낸 API 토큰 가격을 할당하지 않습니다.
팁
권장 사항: 복잡한 감사에는 claude를 사용하세요. 가장 높은 품질의 결과를 제공하지만, 가장 비싼 옵션이기도 합니다. 더 저렴한 대안으로는 MiniMax 모델로 opencode를 실행하는 것입니다. 비용은 Claude보다 훨씬 적지만, 오탐(false positives) 비율이 높아지는 트레이드오프가 있습니다. 전체 병렬 실행을 진행하기 전에 단일 렌즈 또는 도메인(--focus / --domain)으로 보정하세요. 한 번의 실행에서 둘 다 얻으려면 저렴한 기본 --agent를 유지하고 추론량이 많은 도메인(예: security, architecture)만 --agent-override와 함께 claude로 라우팅하세요.
설치 — Linux, macOS, WSL:
curl -fsSL https://claude.ai/install.sh | bash
다른 플랫폼: brew install --cask claude-code (macOS), winget install Anthropic.ClaudeCode (Windows) 또는 PowerShell 및 레거시 npm 옵션에 대한 공식 설정 가이드를 참조하세요.
인증: claude를 실행하고 브라우저 프롬프트를 따르세요. Claude Pro, Max, Team, Enterprise, 또는 Console 계정이 필요합니다. 무료 Claude.ai 플랜에는 Claude Code가 포함되어 있지 않습니다. 대안: ANTHROPIC_API_KEY를 내보내거나 Amazon Bedrock / Google Vertex AI / Microsoft Foundry를 통해 라우팅하세요.
설치:
npm install -g @openai/codex
대안: brew install --cask codex (macOS) 또는 github.com/openai/codex/releases에서 미리 빌드된 바이너리를 사용하세요.
인증 — 다음 중 하나를 선택하세요:
codex login
— ChatGPT Plus / Pro / Business / Edu / Enterprise 구독을 사용하는 브라우저 플로우 (권장; Fast Mode 활성화)
printenv OPENAI_API_KEY | codex login --with-api-key
— 사용한 만큼 지불하는 API 결제 방식
- 또는 내 셸에서
OPENAI_API_KEY를 내보내기(export)
spark / sparc 에이전트는 동일한 codex 바이너리를 재사용하므로, 한 번 설치하면 세 가지 모두 커버됩니다.
설치 (Install) — Linux, macOS, WSL:
curl -fsSL https://cursor.com/install | bash
인증 (Authenticate): cursor-agent login을 실행하고 브라우저 플로우를 완료한 다음, cursor-agent status로 확인합니다.
Cursor CLI는 Cursor 구독을 통해 사용 가능한 모델을 사용하므로 별도의 모델 API 키가 필요하지 않습니다. RepoLens는 비대화형 텍스트 모드에서 명령 승인(command approvals)이 활성화된 백워드 호환(backward-compatible) cursor-agent 바이너리를 호출합니다. 이것은 아래의 IDE 핸드오프와는 별개의 무인 백엔드입니다.
Bare --agent cursor는 Cursor의 자동 모델 라우팅(Auto model routing)을 사용합니다. 플랜에서 노출되는 모든 모델을 고정하려면 cursor-agent models를 실행하거나 (CLI의 모델 선택기 사용), 그 식별자(identifier)를 --agent cursor/<model>로 전달하십시오.
두 형식 모두 자동으로 $0.00의 주변 토큰 비용과 예상 요청/할당량 소비량을 표시합니다. RepoLens는 고정된 Cursor 모델에 대해 일반 API 가격으로 대체하지 않습니다. 정확한 할당량 영향은 Cursor 플랜 및 선택된 모델에 따라 다르므로, 대규모 감사(audit)를 수행하기 전에 Cursor의 사용량 보기(usage view)를 확인하십시오. 제공업체에 구애받지 않는 --flat-rate 플래그는 명시적으로 일반 구독/무료 티어 보기를 원할 때 계속 사용할 수 있습니다.
./repolens.sh --project ~/my-app --agent cursor --local --domain security
기존 Cursor IDE 구독 세션에서 모델과 도구를 설치하거나 cursor-agent를 인증하지 않고 사용하려면 cursor-ide를 사용하십시오:
./repolens.sh --project ~/my-app --agent cursor-ide --local --focus injection
RepoLens는 반복 및 재개 상태 기계(iteration and resume state machine)로 남아 있습니다. 각 호출마다 REPOLENS_CTL 이벤트를 방출하고, 요청별 request.json과 prompt.md를 작성합니다.
. Cursor Composer는 해당 프롬프트를 읽고 response.md를 작성한 후, 원자적으로(atomically) complete.json을 게시합니다.
- 완료 마커에는 무작위 요청 ID와 응답 해시가 포함되어 있으므로, 오래된 마커나 부분적인 응답, 또는 다른 프롬프트에 대한 출력으로는 실행을 진행할 수 없습니다. Lens의 답변 역시 실질적인 방법론/발견(Method/Findings) 섹션과 검증된 프로젝트
path:line인용이 필요하며, 단순한DONE은 잘못된 녹색 신호가 되는 대신 거부됩니다.
현재 Cursor는 IDE Composer 채팅을 자동으로 구동하는 지원되는 API를 제공하지 않으므로, 이는 UI 자동화라기보다는 명시적인 핸드오프(handoff)입니다. --local 플래그가 필요하며 순차적으로 실행되고, --parallel은 경고와 함께 다운그레이드됩니다. 완료된 lens는 일반적인 .completed 상태를 유지하고, 중단되거나 시간 초과된 핸드오프는 --resume으로 재개할 수 있으며, 모든 요청/응답 아티팩트와 이벤트 스트림은 logs/<run-id>/ 아래에 보존됩니다.
Composer 워크플로우, 정확한 원자적 완료 명령어, 타임아웃 제어 및 복구 지침은 Cursor IDE handoff를 참조하십시오.
설치(Install):
curl -fsSL https://opencode.ai/install | bash
대안: npm install -g opencode-ai
(
npm 패키지는 opencode-ai이고, 바이너리는 opencode입니다),
brew install anomalyco/tap/opencode,
paru -S opencode-bin
(Arch), 또는 Windows / Docker 옵션은 opencode.ai/docs를 참조하십시오.
인증(Authenticate):
opencode auth login
대화형 목록에서 제공업체를 선택하십시오 — opencode는 75개 이상의 제공업체(Anthropic, OpenAI, Bedrock, Vertex, Azure, Groq, DeepSeek, xAI, OpenRouter, Together AI, MiniMax, 로컬 Ollama 등)를 지원합니다. 자격 증명은 ~/.local/share/opencode/auth.json에 저장됩니다.
설치(Install) — macOS, Linux:
curl -fsSL https://antigravity.google/cli/install.sh | bash
이 명령어는 agy 바이너리를 설치하며, RepoLens가 --agent antigravity를 전달받을 때 호출합니다. 다른 플랫폼 및 옵션은 antigravity.google를 참조하십시오.
인증(Authenticate): agy를 실행하고 브라우저 흐름을 위해 **Google로 로그인(Sign in with Google)**을 선택하십시오. 헤드리스 또는 SSH 세션에서는, agy
agy는 로컬 브라우저에서 완료하는 장치 코드 흐름으로 대체됩니다. 비대화형 API 키 인증의 경우, 공식 Antigravity CLI 문서를 따르십시오.
Antigravity는 매우 큰 컨텍스트 창(최대 1M 토큰)을 가지고 있어 대규모 코드베이스를 실행 간에 분할하지 않고 감사하는 데 적합합니다.
참고
Antigravity는 이전의 --agent gemini 지원 기능을 대체합니다. Google은 개별 사용자를 위한 독립형 Gemini CLI를 사용 중단했으므로, --agent gemini는 더 이상 허용되지 않습니다. 대신 --agent antigravity를 사용하십시오.
설치: GitHub CLI(gh) 자체만 설치하면 됩니다. gh copilot은 (v2.86+)에 내장된 gh 명령어이며, Copilot CLI가 이미 PATH에 없는 경우 첫 실행 시 자동으로 다운로드합니다. 대신 독립형 copilot 바이너리를 직접 설치하려면(예: 버전을 고정하려면), npm install -g @github/copilot을 실행하십시오.
인증: (아직 하지 않았다면) gh auth login을 실행하십시오. Copilot CLI는 기존의 gh GitHub 인증을 재사용합니다. gh copilot을 실행하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기