본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

gw

0

gw는 Gradle 출력을 필터링하여 AI 코딩 에이전트가 이해하기 쉬운 형태로 제공하는 명령줄 도구입니다.

AI 코딩출력 필터

소개

gw는 Gradle 출력을 필터링하여 AI 코딩 에이전트가 이해하기 쉬운 형태로 제공하는 명령줄 도구입니다. AndVl1이 GitHub에서 공개한 MIT 라이선스 프로젝트로, ./gradlew를 감싸 데몬 배너와 같은 잡음을 제거하고 오류·경고·빌드 상태만 전달하도록 설계되었습니다. Claude Code, Gemini CLI, Cursor 등 다양한 AI 코딩 에이전트와 연동되는 것이 주목적입니다.

상세정보

출력 필터링과 신호 전달

Kotlin `e:`, Java `error:`, Lint 오류, FAILURE 블록, 테스트 실패와 그 30줄짜리 들여쓴 스택트레이스, BUILD SUCCESSFUL/FAILED 메시지를 stdout으로 그대로 흘려보냅니다. 그 외 daemon lifecycle, 의존성 다운로드, `> Task :foo`(UP-TO-DATE/FROM-CACHE/SKIPPED/NO-SOURCE 포함), `> Configure project`, Deprecated Gradle features 배너는 제거되며, 들여쓴 연속 줄도 leak 방지를 위해 함께 잘라냅니다. `w:` Kotlin/Java/Lint 경고는 기본적으로 개수만 집계해 요약에 표시하고, –warnings 플래그를 주면 함께 스트리밍합니다. PASSED/SKIPPED 테스트도 개수만 집계합니다.

하트비트와 최종 요약

빌드가 진행되는 동안 약 3초마다 stderr로 `▸ :app:compileKotlin (45s) [12 tasks]` 형태의 하트비트를 출력합니다. 활성 태스크, 경과 시간, 누적 태스크 진행률, 단일 태스크가 GW_HEARTBEAT_SLOW_SECS(기본 60초)를 넘으면 `— slow` 마커가 표시됩니다. 종료 시 stderr에는 태스크/테스트/에러·경고/디프레케이션 집계와 함께 풀 로그 경로가 한 블록으로 출력되며, 전체 로그는 ./build-logs/gw-.log에 항상 보존돼 필요할 때 내려가서 볼 수 있습니다.

AI 코딩 에이전트 연동

`gw init`은 멱등 동작으로 에이전트의 설정 파일에 훅을 패치합니다. 기본 대상은 Claude Code(PreToolUse 훅 + .claude/rules/gw.md 룰 파일)이며, –gemini-cli, –cursor, –opencode, –agent codex, –kilocode, –cline, –windsurf, –antigravity, –copilot 옵션으로 다른 에이전트로 확장하거나 여러 에이전트를 한 번에 지정할 수 있습니다. Cursor처럼 인밴드 rewrite가 없는 에이전트는 훅이 호출을 거절하고 `gw ` 접두를 붙여 재시도하도록 userMessage로 안내하며, 그 외 훅 기반 에이전트는 호출을 투명하게 자동 재작성합니다. 룰 기반 에이전트에는 ` `/` ` 마커 블록만 설치돼 업데이트나 제거 시 주변 내용이 보존됩니다. –local 옵션은 .claude/settings.local.json 같은 프로젝트 로컬 파일에 패치합니다. 명령 한 줄로 끝까지 확인할 수 있는 진단과 업그레이드 명령도 제공됩니다.

  • `gw doctor` — 전역·로컬 양쪽에 걸친 모든 지원 에이전트의 훅 설치 상태를 읽기 전용으로 점검(✓ 설치, ⚠ 레거시, ✗ 파일은 있지만 훅 없음, − 파일 없음).
  • `gw upgrade` — 이미 연결된 (에이전트, 스코프) 조합에만 설치 흐름을 재적용해 디스크 레이아웃을 최신으로 마이그레이션.

호출 재작성 규칙

훅은 선행하는 sudo/env/nice/time과 VAR=value 환경 접두를 제거한 뒤, `gradlew` 토큰을 단어 경계로 매칭하는 명령일 때만 `gw `를 앞에 붙입니다. ./mygradle처럼 부분적으로만 겹치는 이름은 건드리지 않고, 이미 `gw `로 시작하는 명령은 다시 쓰지 않습니다.

gw는 어떻게 설치하나요?

Windows에서는 winget으로 winget install --id AndVl1.gw --exact, PowerShell에서는 공식 install.ps1을 irm | iex로 내려받습니다. macOS/Linux는 curl 원라인 스크립트, Homebrew(brew tap AndVl1/tap && brew install gw), cargo install, 사전 빌드 tar.gz 중 하나를 선택할 수 있습니다.

설치 후 무엇을 실행해야 하나요?

사용할 AI 코딩 에이전트의 훅을 연결하기 위해 gw init(기본은 Claude Code)을 실행합니다. 다른 에이전트는 gw init --gemini-cli, gw init --cursor, gw init --opencode, gw init --agent codex --local처럼 지정하거나 gw init --all --local로 한 번에 설치할 수 있습니다.

훅이 실제로 적용됐는지 어떻게 확인하나요?

gw doctor를 실행하면 전역·로컬 양쪽의 모든 지원 에이전트 상태(설치/레거시/훅 누락/파일 없음)가 표시됩니다. 종료 코드는 원본 명령과 동일하게 유지됩니다.

업데이트나 레이아웃 변경은 어떻게 따라가나요?

이미 연결된 (에이전트, 스코프) 조합에만 새 설치 흐름을 다시 적용하는 gw upgrade를 사용합니다. 한 번도 설치하지 않은 대상은 건드리지 않습니다. 제거할 때는 gw uninstall(전역 Claude Code)이나 gw uninstall --gemini-cli --cursor, gw uninstall --all --local로 정리합니다.

어떤 출력이 제거되고 어떤 출력이 전달되나요?

데몬 lifecycle, 의존성 다운로드, `> Task :foo`, `> Configure project`, Deprecated Gradle features, 경고, 통과/스킵된 테스트는 기본적으로 제거되거나 개수만 집계됩니다. Kotlin/Java/Lint 컴파일 오류, FAILURE 블록, 테스트 실패와 그 스택트레이스, BUILD SUCCESSFUL/FAILED는 그대로 전달됩니다.

시스템 요구사항

Gradle 프로젝트(gradlew 스크립트가 존재하는 환경)에서 동작합니다. winget 설치 경로는 Windows 운영체제(x64 아키텍처)를 기준으로 합니다. 소스에서 직접 빌드하려면 Rust(cargo)가 필요합니다.