# HỆ THỐNG AUTOPLAY AGENT - QUY CHUẨN KỸ THUẬT & HẠ TẦNG PHẦN CỨNG

## 1. THÔNG SỐ HỆ THỐNG HIỆN TẠI (SYSTEM SPECIFICATIONS)
- **CPU**: Dual Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
  - Tổng số nhân/luồng: **28 Cores / 56 Logical Processors**.
  - Thế mạnh: Cực mạnh về xử lý đa tác vụ song song, chạy đồng thời nhiều môi trường game (Multi-environment Rollout / SubprocVecEnv), giả lập nhiều cửa sổ Android (LDPlayer/Nox).
- **RAM**: **64 GB DDR4 ECC**
  - Thế mạnh: Thoải mái chạy Replay Buffer kích thước lớn cho Deep Reinforcement Learning (hàng triệu transitions) hoặc chạy đồng thời 8-16 client game giả lập.
- **GPU**: **NVIDIA GeForce GTX 1660 Super (6 GB GDDR6 VRAM)**
  - Kiến trúc: Turing (Compute Capability 7.5), CUDA Driver 13.0 / 581.29.
  - Thế mạnh: Đủ sức huấn luyện và suy luận mạng Deep RL (PPO, DQN, SAC), chạy mô hình Object Detection thời gian thực (YOLOv8n / YOLOv8s đạt ~60-120 FPS), hoặc load Vision-Language Model siêu nhẹ (SmolVLM, Moondream2, Qwen2-VL-2B INT4/INT8).
- **Môi trường**: Python 3.11.9, Windows 10/11, Git 2.41.0.

---

## 2. MA TRẬN KHẢ THI THEO CÁC HƯỚNG TIẾP CẬN (FEASIBILITY MATRIX)

| Phương Pháp | Mức Độ Khả Thi | Tận Dụng Phần Cứng Hiện Có | Thể Loại Game Phù Hợp |
| :--- | :--- | :--- | :--- |
| **1. Computer Vision + State Machine** (OpenCV, Template Matching, OCR, PyAutoGUI / Interception) | **100% (Cực kỳ dễ & ổn định)** | Tốn < 5% CPU, < 500MB RAM, hầu như không cần GPU. | Game gacha, Turn-based RPG, Webgame, Auto-farm, Auto-quest. |
| **2. Real-time Object Detection + Reflex Agent** (YOLOv8-nano/small + PID/Mouse Control) | **100% (Thời gian thực 60-100 FPS)** | GPU 1660S chạy YOLOv8n inference ~5-8ms/frame. CPU xử lý logic điều khiển. | Game bắn súng, game né chiêu, game hành động đơn giản (Offline/Không Anti-cheat). |
| **3. Deep Reinforcement Learning (DRL)** (Gymnasium, Stable-Baselines3, PPO/DQN) | **100% (Tối ưu xuất sắc cho dàn Dual Xeon)** | 56 luồng CPU chạy 16-32 môi trường giả lập song song thu thập mẫu; 1660S tối ưu huấn luyện mạng policy. | Retro games (NES, GBA, Atari), Flappy Bird, Super Mario, Snake, TrackMania, Mini-games. |
| **4. Hybrid Edge-Cloud VLM Agent** (Gemini API cấp cao + Local CV cấp thấp) | **100% (Chiến lược thông minh)** | CPU/GPU local xử lý chụp màn hình, nhận diện UI, gửi keyframe lên Gemini 2.0/1.5 Flash để lập kế hoạch. | Game chiến thuật phức tạp, RPG thế giới mở, Game giải đố (Puzzle). |
| **5. End-to-End Local VLA khổng lồ** (Llama-3-70B, GPT-4V local) | **Không khả thi** | VRAM 6GB không đủ chứa mô hình LLM/VLM > 7B tham số. | Không khuyến nghị chạy full offline với VLA lớn. |

---

## 3. CÁC NGUYÊN TẮC THIẾT KẾ HỆ THỐNG AGENT
1. **Tách biệt tầng Nhận thức (Perception) và tầng Hành động (Action)**:
   - *Perception*: Dùng OpenCV / YOLO / Windows Graphics Capture API (DirectX / dxcam) để capture màn hình với độ trễ thấp nhất (< 5ms).
   - *Decision*: Dùng Rule-based FSM, Reinforcement Learning hoặc VLM Reasoning tùy độ phức tạp của bài toán.
   - *Actuator*: Dùng Win32 API, `pydirectinput`, hoặc Virtual Driver (Interception / ViGEmClient) để tránh bị chặn input cấp ứng dụng.
2. **Khai thác tối đa 56 luồng Xeon**:
   - Khi train RL, luôn thiết lập `SubprocVecEnv` từ 16 đến 32 workers để tăng tốc độ lấy mẫu gấp hàng chục lần so với máy thông thường.

---

## 4. QUY CHUẨN: KHI NÀO CẦN VÀ KHÔNG CẦN KẾT NỐI LLM?

| Tiêu Chí Đánh Giá | Agent Thuần Local (OpenCV / DRL / YOLO) | Agent Kết Nối LLM/VLM Cấp Cao |
| :--- | :--- | :--- |
| **Cần LLM không?** | **HOÀN TOÀN KHÔNG CẦN** | **CHỈ CẦN KHI CẦN SUY LUẬN VĨ MÔ** |
| **Tốc độ phản xạ (Latency)** | **1ms - 15ms (60 - 200+ FPS)** | **500ms - 2000ms (Rất chậm, nghẽn mạng)** |
| **Chi phí vận hành** | **0 đồng (Chạy 100% offline trên máy)** | Tốn phí API theo token / ảnh nếu gọi liên tục |
| **Độ chính xác pixel/tọa độ** | Rất cao (Pixel-perfect matching) | Kém hơn, dễ ảo giác tọa độ bấm |
| **Thể loại game tối ưu** | - Game phản xạ, né chiêu, bắn súng, đua xe<br>- Game retro (Mario, Contra, Pokemon, Flappy Bird)<br>- Auto-farm, nhiệm vụ lặp lại, game cày cuốc gacha | - Game giải đố logic phức tạp (Puzzle)<br>- Game chiến thuật theo lượt (Civilization, Cờ vua, Card game)<br>- Text-based game hoặc RPG tương tác hội thoại NPC |
| **Mô hình kiến trúc khuyến nghị** | Chạy độc lập hoàn toàn trên 1660S + Dual Xeon | **Hierarchical Agent (Phân tầng)**:<br>- *Tầng cao*: LLM đưa ra mục tiêu sau mỗi 30s-60s<br>- *Tầng thấp*: Local AI thực thi thao tác chuột/phím 60 FPS |

---

## 5. BÀI TOÁN THỰC CHIẾN: AGENT CHO MMORPG AION 2

### 5.1. Đặc thù của AION 2 (NCSOFT / Unreal Engine)
- **Cơ chế chống can thiệp (Anti-Cheat / GameGuard / Purple Protection)**:
  - Tuyệt đối **KHÔNG** dùng can thiệp bộ nhớ (Memory reading/hooking/injection) vì sẽ bị hệ thống Anti-Cheat của NCSOFT quét và cấm tài khoản ngay lập tức.
  - Giải pháp bắt buộc: **Black-Box External Agent** (Agent bên ngoài hoàn toàn độc lập, chỉ chụp màn hình qua DirectX/Desktop Duplication và gửi phím/chuột qua driver phần cứng ảo).
- **Tải đồ họa & Tối ưu trên GTX 1660 Super**:
  - AION 2 sử dụng Unreal Engine đồ họa 3D đẹp mắt.
  - Cần cài đặt đồ họa game ở mức **Low/Medium (1080p, khóa 60 FPS)** để dành ~2GB VRAM và 20-30% sức mạnh GPU cho mô hình Computer Vision / YOLO.
  - Nếu chơi bản Mobile qua giả lập (Android Emulator / Purple): 56 luồng Xeon và 64GB RAM sẽ gánh giả lập cực kỳ mượt mà.

### 5.2. Kiến trúc Module của AION 2 Bot Agent
1. **Perception (Tầng Nhận thức)**:
   - *HP/MP Bar Monitor*: Cắt ROI (Region of Interest) thanh máu/mana, dùng Color Masking / Thresholding (độ trễ < 1ms, phát hiện tụt máu để tự bơm bình tức thì).
   - *Target & Monster Detection*: Dùng YOLOv8n (train trên ảnh quái AION 2) hoặc Tab-targeting kết hợp nhận diện thanh máu quái vật trên đầu.
   - *Minimap Navigator*: Đọc minimap để xác định tọa độ và tránh chạy lệch bãi farm.
2. **Decision (Tầng Ra quyết định - Behavior Tree / FSM)**:
   - `IDLE` $\rightarrow$ `SEARCH_TARGET` (xoay camera / bấm Tab) $\rightarrow$ `COMBAT_ROTATION` (chuỗi combo skill) $\rightarrow$ `LOOT` $\rightarrow$ `EMERGENCY_HEAL`.
3. **Actuator (Tầng Tác vụ bàn phím/chuột)**:
   - Dùng `pydirectinput` (ScanCode) hoặc giả lập tay cầm Xbox 360 qua `vgamepad` (ViGEmBus) để đi xuyên qua các lớp chặn hook bàn phím thông thường.

---

## 6. LÀM RÕ VAI TRÒ: MCP SERVER & VECTOR DATABASE TRONG BÀI TOÁN NÀY

### 6.1. Có cần MCP Server cho vòng lặp chơi game không?
- **TRẢ LỜI**: **KHÔNG đưa MCP Server vào vòng lặp chơi game thời gian thực (Game Loop 60 FPS)**.
  - MCP (Model Context Protocol) hoạt động qua IPC/JSON-RPC với độ trễ từ vài chục đến hàng trăm mili-giây, thiết kế cho LLM gọi công cụ bên ngoài.
  - Đưa MCP vào vòng lặp điều khiển 60 FPS (cần phản hồi trong 16ms) sẽ gây nghẽn (bottleneck) nghiêm trọng.
  - *Ứng dụng thực tế của MCP nếu có*: Chỉ dùng trong giai đoạn phát triển (Development/Debugging), cho phép Agent trong IDE Antigravity kiểm tra logs, cập nhật file config, hoặc trigger kịch bản test.

### 6.2. Có cần Vector Database cho Học Tăng Cường (Reinforcement Learning) không?
- **TRẢ LỜI**: **HOÀN TOÀN KHÔNG**.
  - **Bản chất của Vector Database**: Dùng để tìm kiếm ngữ nghĩa văn bản/hình ảnh qua cosine similarity (phục vụ RAG cho LLM).
  - **Bản chất của Học tăng cường (DRL)**: Dữ liệu kinh nghiệm `(State, Action, Reward, Next_State)` được lưu trong **Replay Buffer** (dạng Circular Buffer trong 64GB RAM) để lấy mẫu ngẫu nhiên (Uniform/Prioritized Experience Replay) cho GPU tính gradient descent. Vector DB không có tác dụng tăng tốc mà chỉ làm tăng độ trễ.
  - **Thực tế huấn luyện MMORPG Online**:
    - Trong MMORPG online, **không thể tua nhanh thời gian (No Fast-forward)** và **không thể reset môi trường tự do (`env.reset()`)** khi nhân vật chết.
    - Học tăng cường (RL) đòi hỏi hàng triệu lần thử-sai (chết nhân vật liên tục), điều này bất khả thi trong game online vì sẽ mất đồ, mất cấp và bị cấm tài khoản.
    - Do đó, **99% bot MMORPG đỉnh cao dùng Behavior Tree + Finite State Machine (FSM) + Computer Vision (OpenCV/YOLO)** thay vì RL thuần túy.

---

## 7. CƠ CHẾ QUẢN LÝ BỘ NHỚ & DỌN RÁC (MEMORY & GARBAGE COLLECTION)

### 7.1. Chụp liên tục 60 FPS có bị đầy ổ cứng hay tràn RAM không?
- **KHÔNG GHI ĐĨA (Zero Disk Write)**:
  - Khung hình chụp màn hình **hoàn toàn không được lưu thành file ảnh (.png/.jpg) trên ổ cứng**.
  - Toàn bộ dữ liệu chỉ tồn tại dưới dạng mảng byte tạm thời trên RAM / VRAM.
- **Cơ chế ghi đè bộ đệm cố định (Ring Buffer / Double Buffering)**:
  - Thư viện `dxcam` (DirectX Desktop Duplication) cấp phát một vùng nhớ đệm khung hình kích thước cố định trên VRAM/RAM (ví dụ 1080p BGR chiếm ~6.2 MB).
  - Khi có khung hình mới, GPU ghi đè trực tiếp lên vùng nhớ này thay vì cấp phát mới. Do đó dù chạy 24/7, dung lượng RAM chiếm dụng cho capture vẫn chỉ dao động cố định từ **50MB đến 150MB**.
- **Bộ thu gom rác của Python (Automatic Garbage Collection - GC)**:
  - Trong vòng lặp `while True:`, biến `frame` là biến cục bộ. Ở mỗi vòng lặp mới, biến `frame` cũ lập tức giảm reference count về 0, Python C-API giải phóng hoặc tái sử dụng vùng nhớ này tức thì.

### 7.2. Các quy tắc phòng chống rò rỉ bộ nhớ (Memory Leak Prevention)
1. **Tuyệt đối không lưu trữ frame vào mảng không giới hạn**: Không bao giờ viết `frames_history.append(frame)` mà không có `maxlen` giới hạn.
2. **Khởi tạo 1 lần (Singleton Pattern)**: Các đối tượng `ScreenCapture`, `dxcam.create()`, `mss.mss()` phải được khởi tạo ngoài vòng lặp chính, không tạo/hủy liên tục mỗi frame.
3. **Giải phóng tài nguyên (Resource Release)**: Luôn triển khai phương thức `release()` và khối `finally:` để hủy DirectX handle khi dừng agent.



