블로그로 돌아가기
AI & Development Tools

[EP4] MoAI-ADK 핵심 기술 Deep Dive - alfred, Ralph Engine, 스킬 시스템

11.23
MoAI-ADKalfredRalph EngineAnti-HallucinationLSPAST-grepSPEC-First TDD스킬 시스템

MoAI-ADK의 세 가지 핵심 기술인 /moai:alfred 원클릭 자동화, Ralph Engine 품질 엔진, Anti-Hallucination 스킬 시스템을 아키텍처 관점에서 심층 분석한다.

[EP4] MoAI-ADK 핵심 기술 Deep Dive - alfred, Ralph Engine, 스킬 시스템

아키텍처 개요

MoAI-ADK는 세 가지 핵심 기술 계층으로 구성된다. 각 계층은 독립적으로 동작하면서도 유기적으로 연결되어 전체 개발 라이프사이클을 자동화한다.
Loading diagram...

1. /moai:alfred - 원클릭 개발 자동화

1.1 설계 철학

alfred 명령은 MoAI-ADK의 철학을 단일 명령으로 구현한다: "하나의 명령으로 요구사항부터 PR까지".
759줄의 명령 정의는 다음 원칙에 기반한다:
  1. Intelligent Routing: 요청 복잡도에 따른 최적 경로 선택
  2. Quality Gates: 각 Phase 전환 시 품질 검증
  3. Resumable State: 중단된 워크플로우 재개 지원
  4. Multi-LLM: 작업 특성에 따른 모델 선택

1.2 워크플로우 아키텍처

Loading diagram...

1.3 Intelligent Routing 구현

alfred는 요청을 분석하여 최적의 실행 경로를 결정한다:
Plain Text
Domain Detection:
├── Backend Keywords: API, 서버, 인증, 데이터베이스, REST, GraphQL
├── Frontend Keywords: UI, 컴포넌트, React, Vue, Next.js, CSS
├── Security Keywords: 보안, 취약점, OWASP, 인증, 권한
├── DevOps Keywords: CI/CD, Docker, Kubernetes, 배포
└── Database Keywords: SQL, 스키마, 쿼리, 인덱스
Routing Logic:
├── 단일 도메인 감지 → Expert Agent 직접 위임
└── 복수 도메인 감지 → Full SPEC 워크플로우 (Plan → Run → Sync)

1.4 Multi-LLM Mode

alfred는 세 가지 LLM 모드를 지원한다:
모드Phase 1 (Plan)Phase 2-3 (Run/Sync)사용 시나리오
opus-onlyClaude OpusClaude Opus고품질 요구, 단일 터미널
hybridClaude OpusGLM (worktree)비용 최적화, 병렬 작업
glm-onlyGLMGLM비용 최소화

1.5 상태 관리 및 재개

워크플로우 상태는 .moai/cache/alfred-{spec-id}.json에 저장된다:
JSON
{
"spec_id": "SPEC-AUTH-001",
"current_phase": 2,
"last_checkpoint": "2026-01-10T14:30:00Z",
"phase_results": {
"1": { "status": "completed", "spec_file": "specs/SPEC-AUTH-001.md" },
"2": { "status": "in_progress", "coverage": 0.72 }
},
"git_state": {
"branch": "feat/auth-001",
"commits": ["abc123", "def456"]
}
}
중단된 워크플로우는 다음 명령으로 재개한다:
Bash
/moai:alfred resume SPEC-AUTH-001

2. Ralph Engine - 자율 품질 보증 시스템

2.1 아키텍처 개요

Ralph Engine은 세 가지 기술을 통합한 품질 보증 시스템이다:
Loading diagram...

2.2 LSP Client (394줄)

LSP(Language Server Protocol) Client는 JSON-RPC 2.0 프로토콜을 구현한다:
Plain Text
LSP Client 기능:
├── 실시간 타입 오류 감지
├── 구문 오류 감지
├── 경고 수집
├── 다중 언어 서버 관리
└── 진단 결과 스트리밍
지원 언어 서버:
  • TypeScript: typescript-language-server
  • Python: pylsp, pyright
  • Go: gopls
  • Rust: rust-analyzer

2.3 AST-grep 통합

AST-grep은 정규식이 아닌 구조적 패턴 매칭을 수행한다:
Plain Text
AST-grep 기능:
├── 보안 취약점 탐지
│ ├── SQL Injection 패턴
│ ├── XSS 취약점
│ └── 하드코딩된 시크릿
├── 코드 스멜 식별
│ ├── 사용되지 않는 변수
│ ├── 복잡도 초과 함수
│ └── 중복 코드
└── 자동 리팩토링
├── API 마이그레이션
└── 패턴 변환

2.4 Loop Controller (~400줄)

Loop Controller는 자율적인 fix-verify-fix 사이클을 관리한다:
Plain Text
Loop Controller 동작:
├── Promise 기반 완료 조건
│ └── 모든 오류 해결 OR 최대 반복 도달
├── 설정 가능한 최대 반복 횟수 (기본: 3)
├── 상태 지속 및 재개 지원
└── 자율 수정 사이클
├── 오류 분석
├── 수정 시도
├── 재검증
└── 다음 반복 또는 완료

2.5 핵심 메서드: diagnose_file()

diagnose_file()은 LSP 진단과 AST-grep 매치를 통합된 DiagnosisResult로 반환한다:
Python
class DiagnosisResult:
file_path: str
lsp_diagnostics: List[Diagnostic]
ast_matches: List[AstMatch]
severity_summary: Dict[str, int]
auto_fixable: List[FixSuggestion]

3. Anti-Hallucination 전략: 스킬 시스템

3.1 설계 원칙

LLM의 환각(Hallucination)을 방지하기 위해 MoAI-ADK는 검증된 지식 기반 접근을 취한다:
Plain Text
Anti-Hallucination 원칙:
├── 검증된 패턴만 사용
│ └── 각 스킬은 실제 동작하는 코드 패턴 포함
├── 버전 명시
│ └── 라이브러리/프레임워크 버전 명시
├── 출처 추적
│ └── 모든 패턴에 출처 정보 포함
└── 자동 갱신
└── Context7 MCP를 통한 최신 문서 참조

3.2 스킬 분류 체계

90개 이상의 도메인 스킬이 4개 카테고리로 분류된다:
카테고리수량예시역할
Foundation4개moai-foundation-core, moai-foundation-claude핵심 규칙 강제
Language16개Python, TypeScript, Go, Rust, Java...언어별 베스트 프랙티스
Platform9개Auth0, Firebase, Supabase, Vercel...플랫폼별 API 패턴
Domain10+개Frontend, Backend, Database...도메인별 아키텍처

3.3 스킬 로딩 시스템 (580줄)

스킬 로딩 시스템은 다음 기능을 제공한다:
Loading diagram...
핵심 기능:
  1. LRU 캐시 + TTL: 성능 최적화를 위한 메모리 캐싱
  2. 의존성 관리: 관련 스킬 자동 로드 (예: React 스킬 로드 시 Frontend 기본 스킬 자동 포함)
  3. Effort 기반 필터링: 1(기본)부터 5(포괄적)까지 상세도 조절
  4. 자동 감지: 사용자 프롬프트에서 관련 스킬 키워드 탐지

3.4 스킬 구조 예시

스킬 파일은 YAML frontmatter와 마크다운 콘텐츠로 구성된다:
Frontmatter 구조:
YAML
name: moai-lang-typescript
version: 5.9
category: language
effort: 3
dependencies:
- moai-domain-frontend
triggers:
- typescript
- tsx
- type-safe
스킬 콘텐츠 예시 - TypeScript 5.9 Best Practices:
TypeScript
// ✅ Recommended: Type inference with const assertion
const config = {
apiUrl: 'https://api.example.com',
timeout: 5000,
} as const;
// ❌ Avoid: Explicit any
const data: any = fetchData();
Zod Validation 패턴:
TypeScript
import { z } from 'zod';
const UserSchema = z.object({
id: z.string().uuid(),
email: z.string().email(),
role: z.enum(['admin', 'user']),
});
type User = z.infer<typeof UserSchema>;

3.5 Context7 MCP 통합

스킬 시스템은 Context7 MCP와 연동하여 최신 문서를 참조한다:
Plain Text
Context7 통합:
├── resolve-library-id: 라이브러리 식별자 해석
└── get-library-docs: 최신 문서 가져오기
사용 시나리오:
├── 스킬에 없는 최신 API 참조
├── 버전 업데이트 확인
└── 실시간 문서 검증

4. 통합 아키텍처

세 계층이 어떻게 통합되어 동작하는지 살펴본다:
Loading diagram...

5. 성능 메트릭

MoAI-ADK 핵심 기술의 정량적 지표:
지표설명
/moai:alfred 코드759줄플래그십 명령 정의
Ralph Engine 코어308줄품질 보증 엔진
LSP Client394줄언어 서버 통신
Loop Controller~400줄자율 수정 사이클
Skill Loading System580줄스킬 관리
Claude Integration394줄헤드리스 자동화
도메인 스킬90+검증된 지식 기반
지원 언어16개프로그래밍 언어
테스트 커버리지 목표85%TRUST 5 기준
CLI 시작 시간 감소75%400ms → 100ms

다음 에피소드 예고

다음 에피소드 EP.5: 2026년 AI 코딩의 미래에서는 시리즈를 마무리하며 다음 내용을 다룬다:
  1. 종합 비교표: 4가지 도구 × 12개 항목 비교
  2. 시나리오별 권장: 상황에 맞는 최적 도구 선택 가이드
  3. v0.5.0 로드맵: MoAI-ADK의 미래 방향
  4. 결론: AI 코딩 도구 선택의 핵심 기준

참고 자료