feat: recreate Server Agent for premium VM management
Session-based agent with OpenAI Function Calling (9 tools). Follows ddos-agent pattern: execute tools inside loop, feed results back to AI. Includes D1 migration, session routing in openai-service, and doc updates. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
103
CLAUDE.md
103
CLAUDE.md
@@ -203,10 +203,11 @@ Telegram Webhook → Security Validation → Command/Message Router
|
||||
**Agent System (세션 기반 전문가 AI):**
|
||||
| 파일 | 역할 | 상태 관리 |
|
||||
|------|------|----------|
|
||||
| `agents/server-agent.ts` | 서버 추천 상담 (30년 경력 아키텍트) | KV (1시간) |
|
||||
| `agents/troubleshoot-agent.ts` | 트러블슈팅 상담 | KV (1시간) |
|
||||
| `agents/server-agent.ts` | 서버 관리 전문가 (프리미엄 호스팅) | D1 (1시간) |
|
||||
| `agents/troubleshoot-agent.ts` | 트러블슈팅 상담 | D1 (1시간) |
|
||||
| `agents/domain-agent.ts` | 도메인 추천 상담 (10년 경력 컨설턴트) | D1 (1시간) |
|
||||
| `agents/deposit-agent.ts` | 예치금 입금 신고 상담 (금융 상담사) | D1 (30분) |
|
||||
| `agents/ddos-agent.ts` | DDoS 방어 보안 전문가 | D1 (1시간) |
|
||||
|
||||
**Logging & Monitoring:**
|
||||
| 파일 | 역할 |
|
||||
@@ -245,6 +246,9 @@ Telegram Webhook → Security Validation → Command/Message Router
|
||||
| `server_specs` | 서버 스펙 | name, cpu, ram, disk, price |
|
||||
| `domain_sessions` | 도메인 상담 세션 | user_id, status, collected_info, messages |
|
||||
| `deposit_sessions` | 예치금 상담 세션 | user_id, status, collected_info, messages |
|
||||
| `server_sessions` | 서버 관리 세션 | user_id, status, collected_info, messages |
|
||||
| `ddos_sessions` | DDoS 방어 세션 | user_id, status, collected_info, messages |
|
||||
| `troubleshoot_sessions` | 트러블슈팅 세션 | user_id, status, collected_info, messages |
|
||||
|
||||
**AI Fallback:** OpenAI 미설정 시 Workers AI (Llama 3.1 8B) 자동 전환
|
||||
|
||||
@@ -408,73 +412,68 @@ domain-register.ts:
|
||||
|
||||
### 4.3 Server System
|
||||
|
||||
**서비스 정책:**
|
||||
- 프리미엄 VPS만 취급 (DDoS 방어 1Tbps+ 포함)
|
||||
- 저가형 VM, VPN, 프록시 → 별도 서비스 준비 중
|
||||
- 추천(recommend) 기능 없음 (성능 문제로 제거)
|
||||
|
||||
**manage_server 도구 파라미터:**
|
||||
```typescript
|
||||
{
|
||||
action: 'recommend' | 'order' | 'start' | 'stop' | 'delete' | 'list',
|
||||
tech_stack?: string[], // recommend용
|
||||
expected_users?: number, // recommend용
|
||||
use_case?: string, // recommend용
|
||||
traffic_pattern?: 'steady' | 'spiky' | 'growing',
|
||||
region_preference?: string[],
|
||||
budget_limit?: number,
|
||||
lang?: 'ko' | 'ja' | 'zh' | 'en', // 자동 감지
|
||||
server_id?: string, // order/start/stop/delete용
|
||||
region_code?: string, // order용
|
||||
label?: string // order용
|
||||
action: 'order' | 'list' | 'info' | 'delete' | 'images' | 'start' | 'stop' | 'reboot' | 'rename',
|
||||
order_id?: number, // info/start/stop/reboot/delete/rename용
|
||||
pricing_id?: number, // order용
|
||||
label?: string, // order용
|
||||
new_label?: string, // rename용
|
||||
image?: string // order용 (OS 이미지)
|
||||
}
|
||||
```
|
||||
|
||||
**action별 상태:**
|
||||
| action | 설명 | 상태 |
|
||||
|--------|------|------|
|
||||
| `recommend` | 서버 추천 | ✅ 구현 완료 |
|
||||
| `order` | 서버 신청 | 🚧 준비 중 |
|
||||
| `start` | 서버 시작 | 🚧 준비 중 |
|
||||
| `stop` | 서버 중지 | 🚧 준비 중 |
|
||||
| `delete` | 서버 해지 | 🚧 준비 중 |
|
||||
| `list` | 내 서버 목록 | 🚧 준비 중 |
|
||||
| `order` | 서버 주문 | ✅ 구현 완료 |
|
||||
| `list` | 내 서버 목록 | ✅ 구현 완료 |
|
||||
| `info` | 서버 상세 정보 | ✅ 구현 완료 |
|
||||
| `start` | 서버 시작 | ✅ 구현 완료 |
|
||||
| `stop` | 서버 중지 | ✅ 구현 완료 |
|
||||
| `reboot` | 서버 재시작 | ✅ 구현 완료 |
|
||||
| `delete` | 서버 해지 (환불 포함) | ✅ 구현 완료 |
|
||||
| `rename` | 서버 이름 변경 | ✅ 구현 완료 |
|
||||
| `images` | OS 이미지 목록 | ✅ 구현 완료 |
|
||||
|
||||
**Server Expert AI Flow (상담 기반 추천):**
|
||||
**Server Agent Flow (세션 기반 관리):**
|
||||
```
|
||||
사용자: "서버 추천해줘"
|
||||
사용자: "서버 목록 보여줘" / "1번 서버 시작"
|
||||
↓
|
||||
메인 AI → manage_server(action="start_consultation")
|
||||
① 메인 AI → manage_server(action="list") 호출
|
||||
↓
|
||||
KV 세션 생성 (server_session:{userId}, TTL 1h)
|
||||
② server-tool.ts: action → 자연어 변환 ("내 서버 목록 보여줘")
|
||||
↓
|
||||
Server Expert AI (gpt-4o-mini + Function Calling)
|
||||
- 페르소나: 30년 경력 클라우드 아키텍트
|
||||
- 용도/규모 파악 (최대 2번 질문)
|
||||
- [선택] search_trends (Brave Search)
|
||||
- [선택] lookup_framework_docs (Context7)
|
||||
③ Server Agent (프리미엄 호스팅 전문가 페르소나)
|
||||
- 세션 생성/조회 (D1, TTL 1시간)
|
||||
- OpenAI Function Calling (9개 도구)
|
||||
- 도구 실행 → executeServerAction()
|
||||
↓
|
||||
action="question" → 추가 정보 수집 (세션 유지)
|
||||
action="recommend" → 자동 스펙 추론 → Cloud Orchestrator API 호출 → 세션 삭제
|
||||
↓
|
||||
서버 추천 결과 반환
|
||||
④ 응답 반환 + 세션 저장
|
||||
|
||||
[세션 라우팅]
|
||||
기존 세션이 있는 경우 → openai-service.ts에서 직접 Server Agent로 라우팅
|
||||
세션 없는 경우 → 메인 AI가 manage_server 도구 호출 → Server Agent 위임
|
||||
```
|
||||
|
||||
**자동 추론 (30년 경험 기반):**
|
||||
| 용도 | 추론된 tech_stack | 추론된 expected_users |
|
||||
|------|-------------------|---------------------|
|
||||
| 블로그 / WordPress | `['wordpress']` | 100명 |
|
||||
| 쇼핑몰 / 이커머스 | `['ecommerce']` | 500명 |
|
||||
| 커뮤니티 / 게시판 | `['php', 'mysql']` | - |
|
||||
| API / 백엔드 | `['nodejs', 'express']` | - |
|
||||
| 기본값 | `['web']` | 100명 |
|
||||
|
||||
**추천 결과 포맷:**
|
||||
```
|
||||
🖥️ 서버 추천 결과
|
||||
|
||||
1️⃣ Standard 8GB (Anvil)
|
||||
• 스펙: 4vCPU / 8GB / 160GB SSD
|
||||
• 리전: Tokyo 3 (JP)
|
||||
• 가격: ₩69,719/월 (대역폭 5TB)
|
||||
• 예상 트래픽: 1.7TB (포함 범위 내)
|
||||
• 점수: 95점 / 최대 7,500명
|
||||
```
|
||||
**Server Agent Function Calling (9개 도구):**
|
||||
| 함수 | 설명 | 필수 인자 |
|
||||
|------|------|----------|
|
||||
| `list_servers` | 서버 목록 | - |
|
||||
| `get_server_info` | 서버 상세 | order_id |
|
||||
| `order_server` | 서버 주문 | pricing_id, label |
|
||||
| `start_server` | 서버 시작 | order_id |
|
||||
| `stop_server` | 서버 중지 | order_id |
|
||||
| `reboot_server` | 서버 재시작 | order_id |
|
||||
| `delete_server` | 서버 삭제 | order_id |
|
||||
| `rename_server` | 이름 변경 | order_id, new_label |
|
||||
| `list_images` | OS 이미지 목록 | - |
|
||||
|
||||
**서버 주문 상태 전이:**
|
||||
| 상태 | 설정 주체 | UI 표시 |
|
||||
|
||||
Reference in New Issue
Block a user