Enterprise Assistant / v1.0
— Mở đầu
Tài liệu nội bộ · 2026

Một khung chat, năm trợ lý chuyên trách. Một bot Telegram đảm nhận việc của Excel + Asana + Calendly + Notion AI
cho doanh nghiệp 50 – 200 người — tự vận hành trên server công ty.

Phiên bảnv1.0 (MVP)
Trạng thái8/8 phase · ~70 commit · đang chạy thật
Người ngheBan lãnh đạo + phụ trách kỹ thuật
Thời lượng20 – 30 phút + demo + hỏi đáp
01 — Bài toán

Bốn quy trình hằng ngày, bốn công cụ rời rạc.

01 / Báo cáo

Excel gửi qua email

Quản lý hỏi “doanh thu vùng miền tháng 3 thế nào” phải chờ nhân viên mở file, viết công thức, vẽ biểu đồ — lặp đi lặp lại mỗi tuần.

02 / Công việc & hạn chót

Rải rác nhóm chat, giấy ghi chú

Không tự nhắc, không tổng hợp được. Cấp trên không biết ai đang nợ việc gì, hạn chót nào sắp trễ.

03 / Lịch họp

Trùng lịch thường xuyên

Vì không kiểm tra trước. Mỗi lần đặt họp là vài lần xếp lại — chưa kể không tra được chính sách giờ làm, ngày nghỉ.

04 / Kiến thức nội bộ

Cẩm nang chôn trong file PDF

Quy trình, chính sách nhân sự nằm trên ổ đĩa chia sẻ. Nhân viên mới phải hỏi lại từ đầu — kiến thức không tích lũy.

Hệ quả
Thời gian tác nghiệp lãng phí — và quan trọng hơn, dữ liệu vận hành phân tán, không thể khai thác để phân tích điểm nghẽn hay tối ưu quy trình.
02 — Cho ai

Doanh nghiệp vừa — và năm vai trò chạm tới bot mỗi ngày.

Hợp với doanh nghiệp nào
  • 50 – 200 người. Đủ lớn để mọi thứ làm tay trở nên tốn kém, nhưng chưa đáng (và chưa đủ ngân sách) trang bị trọn bộ Asana + Tableau + Calendly + Notion AI cho mọi nhân viên.
  • Muốn dữ liệu nằm trong nhà. Toàn bộ dữ liệu vận hành ở server công ty — tự vận hành, không đẩy lên cloud bên thứ ba (trừ lời gọi LLM, có thể chuyển sang on-prem).
  • Đã dùng Telegram (hoặc sẵn sàng dùng) làm kênh chính — nhân viên không phải cài thêm app, không phải học giao diện mới.
  • Chuẩn hóa quy trình dần dần. Triển khai từng phòng ban, từng quy trình một — không “big-bang” cả công ty cùng lúc.
Năm vai trò → trợ lý phục vụ
01
Lãnh đạo / C-levelHỏi báo cáo nhanh, giao việc xuống, nắm điểm nghẽn → Phân tích Excel, Quản lý công việc, thống kê trên Bảng quản trị.
02
Trưởng phòng / quản lýTheo dõi hạn chót cả nhóm, đặt & điều phối họp → Quản lý công việc, Lên lịch họp.
03
Nhân viên tác nghiệpPhân tích số liệu, tra cứu quy trình & chính sách → Phân tích Excel, Tra cứu tài liệu.
04
Nhân viên mớiLàm quen hệ thống, hỏi cẩm nang / quy trình → Trợ lý chung, Tra cứu tài liệu.
05
IT / vận hành (admin)Cấu hình agent · công cụ · lịch tự động, soát nhật ký → Bảng điều khiển quản trị.
03 — Giải pháp

Một bot Telegram = năm trợ lý chuyên trách.

Nhân viên chỉ cần nhắn tin. Hệ thống tự điều hướng tới đúng chuyên gia, chạy vòng lặp gọi công cụ, trả kết quả — file Excel, ảnh biểu đồ PNG, công việc được tạo, lịch họp đã đặt.

USER telegram Backend Python · DB · công cụ HTTP HMAC callback AI Server multi-tenant LLM router
01
Tự vận hành trên server công tyToàn bộ hệ thống chạy bằng Docker Compose trên hạ tầng công ty. Dữ liệu KHÔNG ra cloud — trừ lời gọi LLM (có thể chuyển sang on-prem trong vài giờ).
02
Tách 2 serviceAI Server (thực thi agent) độc lập với Backend (nghiệp vụ). Backend chỉ là thin client gọi qua API HTTP.
03
Ưu tiên mở rộng kiểu pluginAdmin tạo agent mới bằng cách soạn system prompt + chọn công cụ từ pool chung. Không cần code khi công cụ đã có sẵn.
04
Dữ liệu có cấu trúcMọi công việc / cuộc họp / log giờ làm lưu vào DB doanh nghiệp ở dạng có cấu trúc — sẵn sàng để phân tích và sau này finetune model riêng.
04 — Năm chuyên gia

Mỗi quy trình một chuyên gia, soạn từ pool chung.

01

Phân tích Excel

Phân tích · Biểu đồ · Xuất file
Tải lên .xlsx → hỏi tự nhiên → LLM sinh SQL chạy trên SQLite chỉ-đọc → bảng + biểu đồ PNG.
≈ NotebookLM + phân tích dữ liệu của ChatGPT
02

Quản lý công việc

Giao việc · Nhắc · Trạng thái
Tạo/sửa/đóng việc qua chat. Tự nhắc trước 24h, đúng hạn, sau 24h. Giao lại, tổng hợp ngày, leo thang.
≈ Asana bản cơ bản
03

Lên lịch họp

Đặt lịch · Phát hiện xung đột · Gửi mời
Phát hiện trùng lịch trước khi đặt. Gợi ý 3 khung giờ thay thế. Gửi email mời người tham dự.
≈ Calendly bản cơ bản
04

Tra cứu tài liệu

Tra cứu · Trích dẫn · Phân quyền
Tìm kiếm lai trên cẩm nang / chính sách dạng PDF + DOCX. Bắt buộc trích dẫn, không bịa.
≈ NotebookLM bản cơ bản
05

Trợ lý chung

Chào · Làm quen · Chuyển tiếp
Chào hỏi, giới thiệu năng lực hệ thống, chuyển tiếp tới đúng chuyên gia. Không bao giờ giả vờ làm thay.
Điều hướng / dự phòng
Phối hợp giữa các agent
Tạo công việc theo dõi các hạng mục hành động từ buổi họp tổng kết” → agent Quản lý công việc gọi get_meeting_minutes → bóc tách → tạo loạt công việc. Phối hợp giữa các agent là năng lực có sẵn, không phải việc tương lai.
04.1 — Phân tích Excel

SQL trên SQLite chỉ-đọc, không phải LLM tự bịa số.

  • 1 file = 1 DB SQLite riêng. Chế độ chỉ-đọc, chặn lệnh đổi cấu trúc, truy vấn quá 30s thì cắt, giới hạn 10K dòng.
  • LLM sinh câu SELECT, bộ thực thi chạy SQL. Số liệu trả về là số thực từ dữ liệu — không có chuyện model bịa con số.
  • 5 kiểu biểu đồ. cột / cột ngang / đường / tròn / cột chồng — vẽ bằng matplotlib trong container cô lập.
  • Xuất .xlsx. Có dữ liệu thực + biểu đồ, gửi qua Telegram dưới dạng đường dẫn có ký số.
  • Phiên nhiều file. Tải lên 2+ file → JOIN/UNION qua query_multi_datasets.
  • Tiền xử lý Excel thông minh. Tự nhận dòng tiêu đề, nhiều sheet, dòng rác trước khi lập chỉ mục.
  • 8 Dataset Profile mặc định. phân bổ nguồn lực, đường ống bán hàng, tài chính dự án… khớp cấu trúc để gợi ý câu hỏi phù hợp.
Phiên chat · Excel
Người dùng → [tải lên] sales_q1_2026.xlsx
Bot: đã đọc 1.247 dòng · cột Vùng/Sản phẩm/Doanh thu/Ngày · profile = đường ống bán hàng
Người dùng → tổng doanh thu theo vùng, vẽ biểu đồ cột
→ sinh SQL: SELECT region, SUM(revenue) ...
→ create_chart(type=bar, data=...)
Bot ↳ bảng + chart.png (đính kèm)
Người dùng → top 3 sản phẩm bán chạy quý 1
→ hỏi tiếp không cần tải lại file, dữ liệu vẫn đang mở
Bot ↳ Áo khoác · Túi · Giày
04.2 — Quản lý công việc

Giao việc, nhắc, theo dõi trạng thái — không rời Telegram.

  • Tạo / sửa / lọc / đóng đầy đủ. Tiêu đề, người nhận, hạn chót, mức ưu tiên, mô tả. Lọc theo người, trạng thái, khoảng hạn chót.
  • Vòng đời trạng thái. cần làm → đang làm → xong | hủy. Cập nhật qua chat hoặc nút bấm ngay trong tin nhắn.
  • Tự nhắc bằng lịch tự động. Trước hạn 24h, đúng lúc quá hạn, sau 24h thì leo thang lên người giao.
  • Nhắn riêng khi được giao việc. Nút “Đã nhận / Từ chối” ngay trong tin nhắn → ghi nhận hoặc giao lại.
  • Xác nhận trước khi tạo. Bot hiện nút “Xác nhận / Hủy” trước khi tạo việc — gọi lại agent kèm phản hồi xác nhận.
  • Tổng hợp ngày / tuần. Bật tùy chọn theo từng người — “hôm nay bạn có N việc, M việc quá hạn”.
Phiên chat · Công việc
Quản lý → giao An: chuẩn bị slide demo, hạn thứ 6, ưu tiên cao
Bot ↳ Việc #142 “Chuẩn bị slide demo”
Người nhận @An · Hạn 19-04 (T.6) · Ưu tiên cao
[Báo cho An?] ▸ Gửi / Bỏ qua
Quản lý → ▸ Gửi
Bot → An (nhắn riêng): 📌 Việc mới · [Đã nhận] [Từ chối]
An → ▸ Đã nhận
[2026-04-18 16:00 · lịch tự động, trước hạn 24h]
Bot → An: ⏰ Nhắc việc #142 hạn ngày mai. Trạng thái: Đang làm.
An → việc 142 xong
Bot ↳ ✅ #142 → Xong. Đã báo @Quản lý.
04.3 — Lên lịch họp

Phát hiện xung đột trước khi đặt — gợi 3 khung giờ thay thế.

  • Hiểu thời gian nói tự nhiên. “Ngày mai 2 giờ chiều”, “thứ 6 tuần sau lúc 10h kéo dài 1 tiếng” — bóc tách + tạo trực tiếp.
  • Phát hiện trùng lịch. Kiểm tra trong DB nội bộ. Nếu trùng → gợi 3 khung giờ thay thế dựa trên thời gian rảnh.
  • Gửi email mời tới người tham dự bằng mẫu tiếng Việt, kèm link Đồng ý / Từ chối (bấm vào = đồng ý, theo dõi cơ bản).
  • Dời lịch. “Dời cuộc họp #88 sang 3 giờ chiều” → cập nhật + gửi lại email ghi chú “đã dời”.
  • Hủy + báo người tham dự, cảnh báo nếu hủy sát giờ (< 30 phút).
  • Xử lý múi giờ. Mặc định Asia/Ho_Chi_Minh. Khác múi giờ → hiển thị 2 múi giờ trong email mời.
  • Mục tiêu độ tin cậy. Độ chính xác phát hiện xung đột ≥ 98% (kiểm thử 100 kịch bản dựng sẵn), gửi email thành công ≥ 99%.
Phiên chat · Họp
Người dùng → đặt cuộc họp với nhóm backend ngày mai 10h, dài 1 tiếng, “Lập kế hoạch sprint”
→ check_calendar_conflict(team=backend, slot=10:00–11:00)
Bot ↳ ⚠ Anh XYZ đã có lịch 10:00–11:00.
Em gợi ý 3 khung giờ:
(a) 11:00 – 12:00
(b) 14:00 – 15:00
(c) 16:00 – 17:00
Người dùng → lấy 14h
→ create_meeting + invite_attendees(send_email=true)
Bot ↳ ✅ Lập kế hoạch sprint · 14:00 – 15:00 · 4 người tham dự · email mời đã gửi
04.4 — Tra cứu tài liệu

Bắt buộc trích dẫn. Không tìm thấy thì nói rõ.

  • Tải lên nhiều định dạng. PDF, DOCX, MD, TXT. Tự cắt đoạn + lập chỉ mục bằng pgvector. Lập lại chỉ mục khi tải bản mới.
  • Tìm kiếm lai. Theo ngữ nghĩa (vector) + theo từ khóa (toàn văn), gộp bằng RRF — bắt được nhiều kết quả hơn so với chỉ vector.
  • Tổng hợp nhiều tài liệu. Câu hỏi cắt ngang nhiều nguồn → lấy top-K đoạn từ nhiều tài liệu → tổng hợp bằng LLM.
  • Bắt buộc trích dẫn. 100% câu trả lời có ≥ 1 trích dẫn hoặc nói thẳng “không tìm thấy”. Nút xem trích dẫn đầy đủ ngay trong tin nhắn.
  • Phân quyền theo tài liệu. Mỗi tài liệu có phạm vi xem [toàn công ty, vai-trò-{nhân sự, quản lý}, riêng-tư-{danh sách người]}. Lọc trước khi truy xuất — 0 rò rỉ với người không có quyền.
  • Ngưỡng độ tin cậy. Điểm khớp < 0,3 → bot nói “không tìm thấy” thay vì đoán.
  • Ngôn ngữ. Tiếng Việt + tiếng Anh, dùng embedding đa ngôn ngữ.
Phiên chat · Tra cứu tài liệu
Người dùng → chính sách nghỉ phép có lương là bao nhiêu ngày?
→ rag_search(query, top_k=5)
Bot ↳ Theo chính sách hiện hành:
• < 1 năm: 12 ngày/năm
• 1–5 năm: 15 ngày/năm
• > 5 năm: 18 ngày/năm
Thêm: 1 ngày sinh nhật + 3 ngày cưới.
📎 leave_policy_v3.docx · handbook.pdf
[Xem trích dẫn đầy đủ]
— Khi không có nguồn —
Bot ↳ ❌ Không tìm thấy thông tin về “làm việc từ xa” trong kho tài liệu hiện có.
04.5 — Trợ lý chung + Quản trị

Lớp làm quen + điều phối, và một bảng điều khiển kiểm soát.

Trợ lý chung

Chào hỏi · Giới thiệu năng lực · Chuyển tiếp

Khi người dùng mới gõ /start, agent này trả về danh sách năng lực hệ thống, điều hướng yêu cầu tới đúng chuyên gia. Nguyên tắc: không có công cụ chuyên môn — chỉ chuyển tiếp, không bao giờ giả vờ làm thay.

Người dùng → /start
Bot ↳ Chào anh! Em là EA. Em có thể giúp anh:
· Phân tích Excel + vẽ biểu đồ
· Giao việc + nhắc hạn chót
· Đặt lịch họp + gửi mời
· Tra cứu chính sách nội bộ
Bảng quản trị · :3000

Đăng nhập JWT · 6 thẻ thống kê trực tiếp · Dòng thời gian sự kiện

Trang quản trị dành cho phụ trách IT / vận hành. Mọi thao tác đều có nhật ký có cấu trúc; sự kiện hội thoại chỉ-thêm, có thể phát lại để gỡ lỗi hoặc soát xét.

5
AGENT
15+
CÔNG CỤ
N
LỊCH TỰ ĐỘNG
~
HỘI THOẠI
~
CÔNG VIỆC
~
TIN NHẮN

Xem danh sách: agent · lịch tự động (kèm trình xem lần chạy) · công cụ tùy biến (kèm chi tiết). Trang giới thiệu công khai tại / cho người dùng cuối tự tìm hiểu.

Demo trực tiếp · ~5–7 phút

Đến lúc thấy hệ thống chạy thật.

Slide tĩnh chỉ kể được câu chuyện. Năm kịch bản tiếp theo cho thấy bot đang chạy thật hôm nay.

01 · Excel + biểu đồ 02 · Giao việc + nhắc 03 · Tra tài liệu + trích dẫn 04 · Họp + phát hiện xung đột 05 · Bảng quản trị
05 — Kiến trúc

Hai service độc lập, hợp đồng API đã khóa.

Telegram Webhook giới hạn nhịp theo người dùng Backend Python · FastAPI Hội thoại · Tin nhắn Công việc · Cuộc họp · Bí mật Bộ chạy công cụ tùy biến AI Server độc lập · đa tenant Tầng API (không giữ trạng thái) Hàng đợi việc · ARQ + Redis Cụm worker · co giãn N AgentRunner + cache LRU Công cụ tích hợp · LLM · RAG gọi ngược công cụ ủy thác gọi qua HTTP gọi ngược ký HMAC gọi công cụ (ủy thác) PostgreSQL + pgvector dữ liệu nghiệp vụ · embedding PG (AI) sự kiện · việc Redis hàng đợi · cache OpenRouter — cổng LLM thay thế được
AI Server
Vòng lặp gọi công cụ, router lai, quản lý cấu hình agent (có phiên bản), gọi LLM, RAG, nhật ký sự kiện. Không LangGraph / LangChain — bám mẫu của Claude Code, OpenAI Agents SDK.
Backend
Xử lý Telegram, dữ liệu nghiệp vụ (Công việc, Cuộc họp, Tài liệu…), chạy công cụ tùy biến (giữ bí mật), bộ lập lịch tự động, bảng quản trị.
Lý do tách
Một AI Server, nhiều backend. Hôm nay là bot Telegram → mai có thể là web app, hệ thống CRM tích hợp, plugin nội bộ. Backend mới chỉ cần là thin client gọi API.
API không giữ trạng thái
Trạng thái dựng từ nhật ký sự kiện — không giữ cấu trúc dữ liệu trong bộ nhớ. Worker co giãn ngang qua hàng đợi. Idempotent qua idempotency_key.
05.1 — Thực thi agent

Router lai → vòng lặp AgentRunner → trạng thái dựng từ nhật ký sự kiện.

Tin nhắn vào Router lai 1. Phân loại theo ngữ nghĩa 2. Dự phòng bằng LLM (độ tin thấp) agent agent AgentRunner · vòng lặp gọi công cụ LLM (quyết định) Bộ chạy công cụ gọi kết quả · lặp đến khi: trả lời xong · chuyển tiếp · cần xác nhận · hết vòng Nhật ký sự kiện hội thoại (chỉ-thêm)
01 · ROUTER

Ưu tiên ngữ nghĩa, dự phòng bằng LLM

So khớp cosine với từ khóa định tuyến của mỗi agent. Độ tin > 0,85 → vào thẳng (0 lời gọi LLM). Hội thoại nhiều lượt: bỏ qua router, tiếp tục agent đang hoạt động.

02 · VÒNG LẶP

Gọi công cụ kiểu OpenAI

LLM quyết định công cụ nào → bộ chạy thực thi → kết quả đưa lại LLM → lặp đến khi LLM trả lời bằng văn bản hoặc gặp công cụ đặc biệt (chuyển tiếp / xác nhận). Chốt chặn: max_iterations chống lặp vô hạn.

03 · TRẠNG THÁI

Dựng từ nhật ký sự kiện

Trạng thái dựng từ nhật ký: build_state_from_events(). Chụp ảnh trạng thái mỗi 20 sự kiện để dựng lại nhanh. Phục hồi sau sự cố: phát lại từ ảnh chụp gần nhất.

04 · KHÔNG FRAMEWORK

Python thuần, có lý do

Bám mẫu của Claude Code, OpenAI Agents SDK, DeepSheet — đã được ngành kiểm chứng. LangGraph/LangChain dễ rời rạc, khó gỡ lỗi. Phần code tự viết cho toàn vòng lặp < 800 dòng.

05.2 — Khung công cụ

Năm loại công cụ. Không cần code khi đã có pool.

Loại Ai cấu hình Mô tả Ví dụ
FUNCTION Lập trình viên (code) Hàm Python tích hợp sẵn. Chạy trong tiến trình worker, hoặc tách riêng qua ProcessPoolExecutor nếu nặng CPU. create_chart, query_data, smart_excel_preprocessor
API_CALL Admin (giao diện) Gọi HTTP — admin cấu hình URL, header, mẫu body trong bảng quản trị. Bí mật tham chiếu qua chỗ thay {{SECRET.X}}, có chặn SSRF. check_inventory(sku) → REST của ERP
DB_QUERY Admin (giao diện) Mẫu SQL có tham số. Engine bất đồng bộ, gắn tham số an toàn, ép chỉ-đọc, kiểm tra chống injection. get_user_tasks(user_id) → SELECT…
COMPOSITE Admin (giao diện) Chuỗi công cụ chạy tuần tự, output bước trước = input bước sau. Cho phép admin tự dựng workflow phức tạp mà không code. lấy doanh số → phân tích → email báo cáo
MCP Admin (giao diện) Kết nối MCP server chuẩn Anthropic — Jira, Slack, GitHub, Confluence, MCP nội bộ. Tự khám phá công cụ từ server, có allowlist chọn công cụ nào được bật. jira.logwork(ticket, hours)
Bốn loại dưới do admin tự cấu hình qua giao diện — không phải đụng tới code. Đây là nền tảng cho tính linh hoạt mở rộng ở slide tiếp theo.
05.3 — Tính linh hoạt mở rộng

Nối thêm hệ thống của công ty? Cấu hình trên giao diện — hầu hết không cần code.

Đã tích hợp / đang chạy thật

Telegramwebhook · nhắn riêng / nhóm
Excel / CSV nội bộFUNCTION · SQLite chỉ-đọc
Cẩm nang / chính sách PDF·DOCXRAG · pgvector
Lịch tự động (nhắc · tổng hợp)ARQ cron · Backend
Email mời họpSMTP · mẫu tiếng Việt

Thêm được trong vài giờ — qua Admin UI

CRM / ERP có REST APIAPI_CALL · Salesforce, SAP, Misa, FAST…
DB nghiệp vụ khácDB_QUERY · SQL chỉ-đọc, có tham số
Workflow nhiều bước tự dựngCOMPOSITE · nối chuỗi công cụ
Jira · Slack · GitHub · ConfluenceMCP · hoàn thiện executor ~2–3 ngày
Kênh mới: web app · plugin nội bộbackend mới = thin client gọi API
“Có nối được CRM/ERP của công ty không?” — Có. Bất kỳ hệ thống nào có REST API đều thêm được qua Admin UI dưới dạng công cụ tùy biến; bí mật tham chiếu qua {{SECRET.X}}, có chặn SSRF. Nếu hệ thống có sẵn MCP server, chỉ cần bật MCP executor. Tạo agent mới = soạn system prompt + chọn công cụ từ pool chung.
05.4 — Mô hình bảo mật

Bí mật không bao giờ chạm tới sandbox.

Tiến trình agent DB user RIÊNG · không SELECT bảng Secret cấu hình công cụ chỉ có chỗ thay {{SECRET.X}} mẫu chưa điền bí mật secret_resolver DB user có quyền cao điền bí mật ngay-trước-khi-chạy v2 → tách thành Secret Proxy riêng yêu cầu đã điền bí mật HTTP ra ngoài / MCP server chặn SSRF · giới hạn thời gian · tiến trình cô lập chỉ trả kết quả — không bao giờ trả bí mật tấn công prompt injection → chặn

Bí mật được mã hóa khi lưu

Mã hóa AES-256-GCM trên cột Secret.encrypted_value. Khóa mã hóa chỉ nằm trong biến môi trường của module secret_resolver — không nằm trong container ứng dụng.

Code agent không bao giờ thấy bí mật gốc

Agent dùng DB user riêng không có quyền SELECT trên bảng Secret. Chỗ thay {{SECRET.X}} chỉ được điền ngay-trước-khi-chạy. Tương đương mô hình “bí mật không bao giờ chạm tới sandbox” của Anthropic Managed Agents.

Ranh giới thực thi công cụ

asyncio.wait_for(timeout=30s) cho mọi lời gọi công cụ. Việc nặng CPU (pandas, openpyxl) → chạy trong ProcessPoolExecutor riêng — cô lập khỏi vòng lặp sự kiện bất đồng bộ, sự cố không kéo theo agent.

Rào chắn cho MCP

Chỉ admin được cấu hình MCP, allowlist công cụ (không bật hết tự động), ghi nhật ký toàn bộ yêu cầu để soát. Cisco đã cảnh báo về plugin/skill bên thứ ba → chặn rò rỉ dữ liệu + prompt injection ngay từ thiết kế.

05.5 — Đa tenant & khả năng quan sát

Mỗi tenant một API key, mọi sự kiện được ghi nhật ký.

Cô lập tenant

API key băm SHA-256. Mọi bảng (trừ Tenant) có khóa ngoại tenant_id. Tầng truy vấn tự ép WHERE tenant_id = ? — lọc theo dòng ở mức SQLAlchemy.

Hạn mức & giới hạn nhịp

Dựa trên Redis, theo từng tenant: số yêu cầu/giây, số việc chạy song song. Hạn mức token theo tháng — chặn gọi khi TenantUsage.sum >= quota. Giới hạn số agent mỗi tenant.

Bảo mật gọi ngược

Gọi ngược ký HMAC-SHA256. Backend xác thực trước khi xử lý. tool_callback_url + callback_url phải nằm trong allowlist cùng domain — chống SSRF. Idempotency bằng Redis SET NX.

Các loại sự kiện — luồng chỉ-thêm, dùng để soát · gỡ lỗi · phát lại

user_message routing_decision llm_call llm_response tool_call tool_result agent_response agent_handoff agent_loop_exhausted confirmation_request confirmation_response state_snapshot context_summary

v2: dấu vết OTel cho mỗi AgentRunner + mỗi công cụ, xuất sang Jaeger/Tempo. Số liệu Prometheus khi quy mô vận hành vượt > 500 người dùng.

05.6 — Công nghệ từng tầng

Lựa chọn chính xác từng tầng, có lý do.

Tầng Công nghệ Lý do
Bot Telegram python-telegram-bot · webhook Có sẵn, mọi nhân viên đã có app, không phải cài thêm.
API Backend FastAPI (bất đồng bộ) Thông lượng cao, bất đồng bộ tự nhiên, tự sinh đặc tả OpenAPI.
Thực thi agent Vòng lặp gọi công cụ bằng Python thuần Bám mẫu của Claude Code, OpenAI Agents SDK. Không LangGraph/LangChain — dễ gỡ lỗi, < 800 dòng code tự viết.
Cổng LLM OpenRouter (tương thích OpenAI) Nhiều model (Claude, GPT, Gemini, GLM). Chuyển sang on-prem (vLLM, Ollama) trong vài giờ.
Cơ sở dữ liệu PostgreSQL 16 + pgvector Quan hệ + tìm kiếm vector trong 1 DB. Không cần Pinecone/Weaviate riêng.
Lưu dữ liệu tải lên SQLite mỗi file (chỉ-đọc) Cô lập hoàn toàn dữ liệu giữa người dùng. Co giãn được với file lớn — không nạp toàn bộ Pandas vào RAM.
Cache & hàng đợi Redis 7 + ARQ Khóa hội thoại, giới hạn nhịp, hàng đợi việc. ARQ bất đồng bộ tự nhiên (≠ Celery đồng bộ).
Giao diện quản trị Next.js · shadcn/ui · Tailwind Thành phần dựng sẵn, chế độ tối tự nhiên, hỗ trợ truy cập tốt.
Chạy trong sandbox Container Docker · matplotlib Vẽ biểu đồ cô lập, không rò rỉ hệ thống tệp của máy chủ.
Triển khai Docker Compose Tự vận hành trên 1 máy chủ. Co giãn ngang qua bản sao. Chưa cần Kubernetes ở quy mô 50–200 người.
06 — Trạng thái hôm nay

Tám phase. Đã hoàn thành tám.

8/8
Phase hoàn thành
~70
Commit
5
Agent đang chạy thật
15+
Công cụ dùng chung
P1
Nền tảng
XONG
P1b
Đối soát
XONG
P2
Lõi AI Server
XONG
P3
Công cụ & ngữ cảnh
XONG
P4
Tích hợp Backend
XONG
P5
Agent + UX
XONG
P6
Lịch tự động
XONG
P7-8
Quản trị + làm cứng
MỘT PHẦN
Đã chạy thật

Hoạt động đầu-cuối qua Telegram + Bảng quản trị tại :3000. Đã pilot nội bộ qua sử dụng thực tế. Docker Compose ổn định, kiểm tra sức khỏe đều đạt, gọi ngược giữa 2 service có HMAC + idempotency.

Còn một phần — đã có kế hoạch

Phase 7 (form thêm/sửa trên Bảng quản trị) và Phase 8 (theo dõi hạn mức theo tenant) còn vài hạng mục để sau. Toàn bộ liệt kê chi tiết trong docs/STATUS.md — nguồn thông tin duy nhất, không có việc nào bị giấu.

07 — Vì sao tự xây, không mua sẵn

Khác biệt cốt lõi với trợ lý cá nhân kiểu SaaS.

OpenClaw / AI desktop ChatGPT Enterprise / Copilot Enterprise Assistant
Đối tượng 1 cá nhân, máy cục bộ Cá nhân + nhóm (xoay quanh chat) Quy trình nhóm nhiều người tham gia — giao việc cấp trên ↔ cấp dưới, hạn chót cả nhóm, log giờ làm.
Kết quả trả ra Văn bản chat Văn bản chat + vài định dạng file File Excel có dữ liệu + biểu đồ, ảnh PNG, email định dạng chuyên nghiệp, công việc Jira tự log giờ.
Triển khai Cục bộ mỗi máy, dữ liệu phân tán Cloud OpenAI / Microsoft, không kiểm soát Tự vận hành bằng Docker Compose, DB nằm trong server công ty, admin kiểm soát hoàn toàn.
Bảo mật phần mở rộng Cộng đồng, không kiểm duyệt — Cisco cảnh báo rò rỉ dữ liệu + prompt injection Chợ plugin của OpenAI/Microsoft Chỉ admin cấu hình công cụ + allowlist. Bí mật không bao giờ vào tiến trình agent. Mọi yêu cầu MCP đều ghi nhật ký.
Dữ liệu Chat tự do cục bộ, khó tổng hợp Cloud OpenAI — không xuất ra dạng có cấu trúc được Dữ liệu có cấu trúc trong DB doanh nghiệp — sẵn sàng phân tích và finetune model riêng về dài hạn.
Mở rộng Phần mở rộng cộng đồng, admin không kiểm soát Chợ plugin của OpenAI/Microsoft Bất kỳ REST API + MCP server đều thêm được qua Admin UI, không cần viết thêm code.
07.1 — Lợi thế dài hạn

Dữ liệu có cấu trúc hôm nay → finetune model riêng 12 tháng tới.

Hôm nay

Mỗi hội thoại sinh sự kiện có cấu trúc

Công việc: ai giao, ai làm, hạn chót, trạng thái, thời gian hoàn thành thực tế. Cuộc họp: ai tham gia, bao lâu, quyết định gì. Log giờ làm: ai làm gì, mất bao lâu.

3–6 tháng

Phân tích điểm nghẽn, năng suất

Agent nào được dùng nhiều nhất, công cụ nào hay lỗi, người dùng quay lại ra sao, hạn chót thường trễ ở phòng nào, quy trình nào nghẽn. Thông tin cho ban lãnh đạo.

6–12 tháng

Finetune model riêng cho doanh nghiệp

Model tự phân việc dựa trên lịch sử. Model dự đoán hạn chót thực tế dựa trên việc tương tự. Model gợi ý quy trình tối ưu. Đây là lợi thế cạnh tranh mà SaaS không sao chép được.

Vì sao các giải pháp SaaS không làm được điều này? ChatGPT Enterprise lưu dữ liệu trên cloud OpenAI, không xuất ra dạng có cấu trúc được. OpenClaw lưu chat tự do trên máy cục bộ. EA là kiến trúc duy nhất sinh dữ liệu có cấu trúc + lưu trong DB doanh nghiệp ngay từ ngày đầu.
08 — Lộ trình đưa vào vận hành

Không big-bang. Một vòng lặp — mỗi vòng phủ thêm một phòng ban, một quy trình.

VÒNG LẶP CẢI TIẾN 1 tìm hiểu quy trình 2 pilot quy mô nhỏ 3 nhận phản hồi 4 cải thiện sản phẩm 5 tiếp nhận bài toán mới
01 · TÌM HIỂU

Quy trình vận hành thực tế của doanh nghiệp

Làm việc với từng phòng ban: họ làm gì hằng ngày, nghẽn ở đâu, dữ liệu nằm đâu → đối chiếu điểm nghẽn ↔ agent / công cụ đã có hoặc cần thêm.

02 · THỬ NGHIỆM

Quy mô nhỏ — một phòng, một quy trình

Pilot 1 phòng / 1 use case trong 2–4 tuần (vd phòng kinh doanh dùng Phân tích Excel + Quản lý công việc). Phạm vi nhỏ, rủi ro thấp, phản hồi nhanh.

03 · LẮNG NGHE

Phản hồi từ các phòng ban

Qua sử dụng thực tế + khảo sát ngắn + nhật ký sự kiện ở Bảng quản trị: công cụ nào hay lỗi, câu hỏi nào agent chưa trả lời được, chỗ nào vướng UX.

04 · CẢI THIỆN

Tinh chỉnh & mở rộng sản phẩm

Chỉnh system prompt của agent, thêm Dataset Profile, thêm công cụ tùy biến (API_CALL / DB_QUERY / MCP) qua Admin UI, vá UX, đo lại độ chính xác.

05 · MỞ RỘNG

Tiếp nhận bài toán mới → quay lại bước 1

Phòng ban đề xuất use case mới (onboarding nhân sự, kế toán nối Misa/FAST, dự án nối Jira…) → soạn agent / công cụ mới từ pool chung, hầu hết không cần code. Rồi lặp lại với phòng ban tiếp theo.

08.1 — Bốn hạng mục ưu tiên thời gian tới

Việc kỹ thuật cần làm ngay để bước vào vòng lặp mở rộng.

01
Hoàn thiện MCP executorMở Jira / Slack / GitHub / Confluence + MCP nội bộ. Model enum đã có sẵn trong DB.
2–3 ngày
ƯU TIÊN
02
Gửi email qua SMTP + tự log giờ làmHoàn thiện Lên lịch họp (mời người ngoài) + Quản lý công việc (tự log giờ qua Jira MCP).
1–2 ngày
ƯU TIÊN
03
Nhập bộ kiểm thử DeepSheet (≥ 90%)~200 ca kiểm thử thực tế cho agent Phân tích Excel, đảm bảo độ chính xác trước khi cấp lãnh đạo dùng tự tin.
2–3 ngày
ƯU TIÊN
04
Hạn mức & theo dõi token theo tenantMở khóa đưa tenant thứ 2 vào (chi nhánh hoặc khách hàng bên ngoài) với ngân sách token riêng.
3–4 ngày
ƯU TIÊN
Tổng — bốn hạng mục, đủ để khởi động vòng lặp mở rộng sang phòng ban / khách hàng tiếp theo.
≈ 10 ngày engineer
08.2 — Minh bạch rủi ro

Những giới hạn hiện tại. Không giấu, để dễ ra quyết định.

MVP còn 1 tenant

GIỚI HẠN THIẾT KẾ
Đa tenant đã có model + API khóa chủ nhưng chưa có hạn mức / theo dõi token. Chưa nên cho khách hàng thứ 2 vào ngay — cần ~3–4 ngày (hạng mục 04 ở slide trước).

Bảng quản trị chỉ đọc

THIẾU VỀ UX
Hiện chỉ xem danh sách / chi tiết; form thêm/sửa qua giao diện còn để sau. Admin không phải lập trình viên cần kỹ sư hỗ trợ khi tạo bí mật / công cụ / lịch tự động mới. Đã có trong kế hoạch ~1–2 ngày.

Phụ thuộc OpenRouter

PHỤ THUỘC NHÀ CUNG CẤP
Cổng LLM hiện đi qua OpenRouter — một điểm có thể hỏng. Nhưng dùng API tương thích OpenAI nên có thể chuyển sang Azure OpenAI, on-prem (vLLM, Ollama), hoặc nhà cung cấp khác trong vài giờ.

Bốn vấn đề kỹ thuật còn mở

ĐÃ BIẾT, CÓ CÁCH TẠM
Lệch phiên bản Docker image · ngữ cảnh nhiễu sau ~12 lượt · LLM đôi khi bịa tên đích chuyển tiếp · 1 test chập chờn trong CI. Đều có cách xử lý tạm, không chặn vận hành — sửa trong các hạng mục backlog.
Cảm ơn các anh chị đã lắng nghe

Mời thảo luận.

Mọi câu hỏi sâu hơn về kiến trúc, bảo mật, tích hợp, lộ trình — sẵn sàng đào sâu hôm nay hoặc trao đổi tiếp qua tài liệu nội bộ.

docs/STATUS.md · theo dõi phase + việc để sau + kế hoạch
docs/superpowers/specs/ · spec nghiệp vụ + kiến trúc AI Server
docs/runbook.md · quy trình xử lý sự cố + khôi phục + xoay vòng bí mật
Title
navigate  ·  F fullscreen  ·  01 / 22