AI 개발자(Claude Code, Gemini CLI)를 활용한 자동화 개발 시스템입니다. GitHub Projects의 작업을 자동으로 감지하고, AI 개발자에게 작업을 할당하여 코드를 자동으로 생성하고 PR을 만드는 시스템입니다.
- 자동 작업 관리: GitHub Projects에서 작업을 자동으로 감지하고 관리
- AI 개발자 통합: Claude Code 및 Gemini CLI를 통한 자동 코드 생성
- PR 자동화: 작업 완료 후 자동으로 Pull Request 생성 및 리뷰 처리
- 병렬 처리: 여러 Worker를 통한 동시 작업 처리 (최대 5개)
- 피드백 처리: PR 리뷰 코멘트를 자동으로 반영
- 워크스페이스 관리: Git worktree를 활용한 독립적인 작업 환경
- 다중 레포지토리 지원: 여러 레포지토리의 작업을 동시에 처리
- 레포지토리 필터링: Whitelist/Blacklist 모드로 작업 대상 제어
graph TB
subgraph "AI DevTeam System"
PL[Planner<br/>작업 관리]
MG[Manager<br/>워커 관리]
WK[Worker<br/>작업 실행]
DV[Developer<br/>AI 개발자]
end
subgraph "External Services"
PB[GitHub Projects]
PR[GitHub PR]
GIT[Git Repository]
end
PL <--> PB
PL <--> PR
PL --> MG
MG --> WK
WK --> DV
WK <--> GIT
- Planner: GitHub Projects의 작업을 모니터링하고 상태를 관리
- Manager: Worker Pool을 관리하고 작업을 할당
- Worker: 실제 작업을 수행하고 AI 개발자와 통신
- Developer: Claude Code 또는 Gemini CLI를 통한 코드 생성
- Node.js 20+
- Git 2.15+ (worktree 기능 필요)
- GitHub CLI (
gh) - Docker & Docker Compose (선택사항)
- Claude Code CLI 또는 Gemini CLI
git clone https://github.com/your-org/ai-devteam-node.git
cd ai-devteam-node# pnpm 사용 (권장)
pnpm install
# npm 사용
npm install# macOS
brew install gh
# Linux (Ubuntu/Debian)
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update && sudo apt install gh
# Windows
winget install --id GitHub.cli
# 인증
gh auth login# npm을 통한 설치
npm install -g @anthropic-ai/claude-code
# 인증
claude login
# 또는 API 키 사용
export ANTHROPIC_API_KEY=your_api_key.env.example 파일을 복사하여 .env 파일을 생성하고 설정합니다:
cp .env.example .env# GitHub 설정
GITHUB_TOKEN="your_github_personal_access_token" # GitHub PAT (repo, project 권한 필요)
GITHUB_OWNER="your_github_username_or_org" # GitHub 사용자명 또는 조직명
GITHUB_PROJECT_NUMBER="your_project_number" # GitHub Project 번호
# 저장소 설정 (선택 1: 다중 레포지토리)
GITHUB_REPOS="owner1/repo1,owner2/repo2" # 작업할 저장소 목록
GITHUB_REPO_FILTER_MODE="whitelist" # whitelist 또는 blacklist
# 저장소 설정 (선택 2: 단일 레포지토리)
GITHUB_REPO="your_repository_name" # 단일 저장소명# AI 개발자 도구 설정
CLAUDE_CODE_PATH="claude" # Claude Code 실행 경로
CLAUDE_CODE_TIMEOUT="300000" # 타임아웃 (ms)
GEMINI_CLI_PATH="gemini" # Gemini CLI 실행 경로
GEMINI_CLI_TIMEOUT="300000" # 타임아웃 (ms)
# Worker Pool 설정
MIN_WORKERS="1" # 최소 Worker 수
MAX_WORKERS="5" # 최대 Worker 수
WORKER_TIMEOUT="600000" # Worker 타임아웃 (ms)
# 워크스페이스 설정
WORKSPACE_ROOT="./workspace" # 작업 디렉토리 경로
CLONE_DEPTH="1" # Git clone 깊이
# 애플리케이션 설정
NODE_ENV="development" # development 또는 production
LOG_LEVEL="info" # error, warn, info, debug
PORT="3000" # 애플리케이션 포트
MONITORING_INTERVAL_MS="30000" # 모니터링 주기 (ms)
# PR 코멘트 필터링
ALLOWED_PR_BOTS="sonarcloud[bot],deepsource[bot]" # 허용할 봇 목록
EXCLUDE_PR_AUTHOR="true" # PR 작성자 코멘트 제외- GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- "Generate new token" 클릭
- 필요한 권한 선택:
repo(전체) - 저장소 접근project(read:project, write:project) - GitHub Projects 접근workflow- GitHub Actions (선택사항)
- 토큰 생성 후
.env파일에 복사
pnpm dev
# 또는
npm run dev# 빌드
pnpm build
# 실행
pnpm startDocker Hub에서 사전 빌드된 이미지를 다운로드하여 사용할 수 있습니다:
# 표준 이미지 다운로드 (Node.js 환경만 포함)
docker pull wlgns5376/ai-devteam:latest
# All-languages 이미지 다운로드 (Python, Go, Java 등 모든 언어 환경 포함)
docker pull wlgns5376/ai-devteam:latest-all-languages-
표준 이미지 (Dockerfile 기반):
latest: 최신 버전vX.Y.Z: 특정 버전 (예:v1.0.2)vX.Y: 메이저.마이너 버전 (예:v1.0)vX: 메이저 버전 (예:v1)
-
All-languages 이미지 (Dockerfile.all-languages 기반):
latest-all-languages: 모든 언어 환경을 포함한 최신 버전vX.Y.Z-all-languages: 특정 버전 (예:v1.0.2-all-languages)vX.Y-all-languages: 메이저.마이너 버전 (예:v1.0-all-languages)vX-all-languages: 메이저 버전 (예:v1-all-languages)
-
표준 이미지를 사용하는 경우:
- Node.js/TypeScript 프로젝트만 처리하는 경우
- 이미지 크기를 최소화하고 싶은 경우
- 빠른 컨테이너 시작이 필요한 경우
-
All-languages 이미지를 사용하는 경우:
- 다양한 프로그래밍 언어로 작성된 프로젝트를 처리하는 경우
- Python, Go, Java, Rust 등의 프로젝트를 함께 관리하는 경우
- AI 개발자가 여러 언어로 코드를 생성해야 하는 경우
직접 이미지를 빌드하려면:
# 표준 이미지 빌드
docker build -t ai-devteam:v1.0.2 .
# All-languages 이미지 빌드
docker build -f Dockerfile.all-languages -t ai-devteam:v1.0.2-all-languages .- Docker 환경 변수 파일 생성:
cp .env.example .env.docker
# .env.docker 파일 편집하여 환경 변수 설정docker-compose.yml파일 생성:
version: '3.8'
services:
ai-devteam:
# Docker Hub 이미지 사용 (다음 중 선택)
image: wlgns5376/ai-devteam:latest # 표준 이미지
# image: wlgns5376/ai-devteam:latest-all-languages # 모든 언어 환경 포함
# image: wlgns5376/ai-devteam:v1.0.2 # 특정 버전
# image: ai-devteam:<tag> # 로컬 빌드 이미지 사용 시
container_name: ai-devteam
user: "1001:1001"
environment:
- GIT_USER_NAME=your_git_username
- GIT_USER_EMAIL=your_email@example.com
- GITHUB_TOKEN=${GITHUB_TOKEN}
- GIT_ACCEPT_HOST_KEY=true
volumes:
- ./.env.docker:/app/.env:ro
- ./workspace:/workspace
- ai_devteam_home:/home/appuser
restart: unless-stopped
healthcheck:
test: ["CMD", "node", "-e", "console.log('Health check: OK')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
volumes:
ai_devteam_home:
driver: local- Docker Compose 실행:
docker-compose up -d- 로그 확인:
docker-compose logs -f ai-devteam- Planner가 주기적으로 GitHub Projects에서 TODO 상태의 작업을 확인
- Manager에게 작업을 전달하고 사용 가능한 Worker 확인
- Worker가 작업 디렉토리와 Git worktree 생성
- Developer(AI)에게 작업 내용 전달
- AI가 코드 생성 및 PR 생성
- 작업 상태를 IN_REVIEW로 변경
- Planner가 IN_REVIEW 상태의 작업 모니터링
- PR이 승인되면 자동 병합
- 피드백이 있으면 Worker를 통해 AI에게 전달하여 수정
# 단위 테스트 실행
pnpm test
# 테스트 커버리지 확인
pnpm test:coverage
# 테스트 감시 모드
pnpm test:watchai-devteam-node/
├── src/
│ ├── app/ # 애플리케이션 핵심 로직
│ │ ├── TaskRequestHandler.ts
│ │ └── WorkerTaskExecutor.ts
│ ├── services/ # 서비스 계층
│ │ ├── planner/ # 작업 계획 관리
│ │ ├── worker/ # Worker 관리
│ │ ├── developer/ # AI 개발자 통합
│ │ ├── git/ # Git 작업 관리
│ │ ├── project-board/ # GitHub Projects 연동
│ │ └── pull-request/ # PR 관리
│ ├── types/ # TypeScript 타입 정의
│ └── index.ts # 진입점
├── docs/ # 문서
│ ├── PRD.md # 제품 요구사항 문서
│ └── prd-design-flow.md # 설계 흐름도
├── tests/ # 테스트 코드
├── .env.example # 환경 변수 예제
├── docker-compose.yml # Docker Compose 설정
└── Dockerfile # Docker 이미지 정의
# ESLint 검사
pnpm lint
# 자동 수정
pnpm lint:fix
# Prettier 포맷팅
pnpm format
# 타입 체크
pnpm typecheck# TypeScript 컴파일
pnpm build
# 빌드 파일 정리
pnpm cleanfeat:새로운 기능fix:버그 수정docs:문서 수정test:테스트 추가/수정refactor:코드 리팩토링chore:빌드, 설정 등
GitHub Personal Access Token에 다음 권한이 필요합니다:
repo- 저장소 접근project- GitHub Projects 접근workflow- GitHub Actions (선택사항)
Docker 환경에서 Claude Code를 사용하는 경우:
- 컨테이너에 접속:
docker exec -it ai-devteam /bin/bash - Claude 인증:
claude login - 볼륨 마운트를 통해 인증 정보 영속화
작업이 오래 걸리는 경우 WORKER_TIMEOUT 환경 변수를 늘려주세요:
WORKER_TIMEOUT="1800000" # 30분Git 버전이 2.15 이상인지 확인:
git --version
# worktree 목록 확인
cd workspace/repositories/[repo-name]
git worktree list# 로컬 환경
tail -f logs/ai-devteam.log
# Docker 환경
docker-compose logs -f ai-devteamISC License - 자세한 내용은 LICENSE.md 파일을 참조하세요.
프로젝트에 기여하고 싶으시다면 Pull Request를 보내주세요!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'feat: Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
이슈가 있거나 질문이 있으시면 GitHub Issues를 통해 문의해주세요.