[Open Source] #180 - Streamystats: Hệ thống quản trị và phân tích tri thức Jellyfin với kiến trúc Bun/Hono, Vector Database (pgvector) và AI Agents thông minh
Trong hệ sinh thái máy chủ truyền thông (Media Server), việc thống kê lượt xem chỉ là bề nổi của tảng băng. Streamystats ra đời như một nền tảng phân tích tri thức (Intelligence Platform) chuyên sâu dành cho Jellyfin, không chỉ cung cấp các biểu đồ thống kê rực rỡ mà còn tích hợp sức mạnh của trí tuệ nhân tạo để hiểu sâu về hành vi người dùng, bảo mật truy cập và đưa ra các gợi ý nội dung ở đẳng cấp Netflix.
Dưới góc độ kỹ thuật, Streamystats là một Case Study mẫu mực về việc ứng dụng Runtime Bun, kiến trúc Multi-service và kỹ thuật Vector Search trên cơ sở dữ liệu PostgreSQL truyền thống.
Github: https://github.com/v8u7/streamystats
🛠️ 1. Nền tảng công nghệ: Hiệu năng cực hạn với Bun Stack
Dự án chọn lọc những công nghệ hàng đầu để xử lý khối lượng dữ liệu khổng lồ từ các thư viện phim:
- Runtime Engine (Bun v1.3+): Tận dụng tốc độ thực thi JavaScript/TypeScript cực nhanh của Bun, giúp giảm thiểu đáng kể thời gian khởi động và mức tiêu thụ tài nguyên cho các worker xử lý nền.
- Backend Orchestrator (Hono): Sử dụng framework Hono cho
job-servernhờ đặc tính siêu nhẹ và hiệu năng tiệm cận mã nguồn C++, lý tưởng cho các tác vụ đồng bộ hóa API nặng nề. - Frontend (Next.js 15 & Tailwind): Xây dựng giao diện Dashboard mượt mà theo kiến trúc App Router, mang lại trải nghiệm người dùng hiện đại và tối ưu SEO.
- Vectorized Storage (PostgreSQL & pgvector): Đây là "trái tim" của hệ thống. Bằng cách sử dụng extension pgvector, Streamystats có khả năng lưu trữ các vector đặc trưng (Embeddings) của phim và sở thích người dùng ngay trong DB quan hệ.
- Job Management (pg-boss): Tận dụng PostgreSQL để làm hàng đợi công việc (Job Queue) bền bỉ, đảm bảo các tác vụ dài hơi như sync hàng nghìn tập phim luôn được thực thi tin cậy.
🏗️ 2. Trụ cột kiến trúc: AI-Native và Multi-service Monorepo
Kiến trúc của Streamystats được thiết kế để mở rộng và tích hợp AI sâu sắc:
- Monorepo Strategy: Dự án được tổ chức chặt chẽ thành các ứng dụng con (
nextjs-app,job-server) và gói thư viện dùng chung (packages/database), đảm bảo tính nhất quán tuyệt đối của Schema dữ liệu xuyên suốt hệ thống. - AI Agent Framework: Khác với các hệ thống chatbot suông, Streamystats xây dựng một bộ máy AI Agent hoàn chỉnh với kỹ thuật Function Calling. AI có thể trực tiếp thực hiện các "Tools" như:
search_library,get_user_stats,generate_recommendationsđể trả lời dựa trên dữ liệu thực tế thay vì suy đoán. - Semantic Intelligence Layer: Thông qua việc tạo Embeddings cho Metadata của phim, hệ thống xây dựng một bản đồ tri thức (Knowledge Graph), cho phép tìm kiếm và gợi ý phim dựa trên "ý nghĩa nội dung" thay vì chỉ dựa vào từ khóa hoặc thể loại đơn thuần.
🔄 3. Workflow: Vòng đời từ Activity Log đến Tri thức AI (Sequence Diagram)
Sơ đồ mô tả quy trình hệ thống xử lý một phiên xem phim và đưa ra các cảnh báo/gợi ý thông minh:

⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn
- Vectorized Recommendation Engine: Streamystats tính toán vector sở thích của người dùng dựa trên lịch sử xem gần đây và thực hiện truy vấn không gian vector để tìm ra những bộ phim "vừa túi tiền" nhất về mặt nội dung, mang lại tỷ lệ khớp cao hơn hẳn các thuật toán lọc cộng tác (Collaborative Filtering) truyền thống.
- Impossible Travel Algorithm: Một kỹ thuật bảo mật cao cấp dành cho quản trị viên. Hệ thống sử dụng dữ liệu GeoIP để tính toán: Nếu người dùng vừa đăng nhập ở Hà Nội, 10 phút sau đăng nhập ở London, hệ thống sẽ tự động đánh dấu đây là một vụ xâm nhập tài khoản tiềm ẩn.
- Real-time Progress Streaming: Sử dụng Server-Sent Events (SSE) để truyền tải trực tiếp tiến độ của các Job "nặng" (như nạp dữ liệu ban đầu hoặc tạo Embeddings hàng loạt) lên giao diện, giúp quản trị viên luôn nắm bắt được trạng thái hệ thống.
- Complex Library Filtering: Tầng Database được thiết kế với logic lọc phức tạp, cho phép người dùng loại trừ các thư viện nhạy cảm hoặc người dùng ảo khỏi các báo cáo thống kê chỉ bằng một cấu hình duy nhất.
⚖️ 5. So sánh chiến lược
| Tiêu chí | Streamystats | Tautulli (Plex) | Jellystat |
|---|---|---|---|
| Công nghệ lõi | Bun & Hono (Hiện đại) | Python | Node.js (Express) |
| Hỗ trợ AI | Có (AI Agents & Tools) | Không | Không |
| Tìm kiếm ngữ nghĩa | Có (Vector DB) | Không | Không |
| Phát hiện đột nhập | Có (Impossible Travel) | Không | Không |
| Triển khai | Docker / AIO Binary | App/Docker | Docker |
✅ Kết luận: Tại sao Streamystats là đỉnh cao của Media Analytics?
Streamystats chứng minh rằng một ứng dụng thống kê không chỉ để nhìn, mà là để tương tác. Việc tích hợp Vector Database và AI Agents đã biến nó từ một dashboard tĩnh thành một trợ lý ảo am hiểu thư viện phim của bạn. Đây là hình mẫu lý tưởng cho các nhà phát triển muốn xây dựng ứng dụng AI thực thụ trên nền tảng dữ liệu cá nhân.
Đối với các kỹ sư Backend, nghiên cứu Streamystats mang lại giá trị về:
- Cách triển khai Vector Search với pgvector trong thực tế.
- Kỹ thuật xây dựng AI Agents dựa trên Function Calling.
- Tư duy thiết kế hệ thống Multi-service hiệu năng cao với Bun.
All rights reserved