Đang chạy mực qua máy in — từng lớp màu một, kiên nhẫn nhé!
№ 01
№ 02
№ 03
№ 04
№ 05
№ 06
Orbit · AI·20K Demo Day Zine
№ 73
Orbit
Orbit là AI agent nhúng trong app chat, tự động tóm tắt hội thoại, trích xuất task/lịch hẹn và tạo nhắc việc — luôn xác nhận với người dùng trước khi hành động (human-in-the-loop), đồng bộ 2 chiều với Google Calendar.
Fig. 01 · Ảnh dự án
Bài toán
Người dùng hiện nhận một lượng lớn tin nhắn mỗi ngày từ các cuộc trò chuyện cá nhân, nhóm công việc và cộng đồng. Trong các luồng hội thoại này thường xuyên xuất hiện những thông tin có giá trị hành động như:
Công việc cần thực hiện.
Người chịu trách nhiệm.
Thời hạn hoàn thành.
Lịch họp và lịch hẹn.
Lời hứa hoặc cam kết cá nhân.
Thay đổi hoặc huỷ bỏ kế hoạch.
Thông tin quan trọng cần ghi nhớ lâu dài.
Tuy nhiên, các thông tin trên thường được diễn đạt bằng ngôn ngữ tự nhiên, nằm rải rác trong nhiều tin nhắn và nhanh chóng bị chôn vùi khi cuộc trò chuyện tiếp tục. Người dùng phải tự đọc lại hội thoại, tạo task, đặt reminder và nhập sự kiện vào Google Calendar. Quá trình thủ công này dễ dẫn đến bỏ sót nhiệm vụ, quên lịch hẹn hoặc thực hiện công việc trễ hạn.
Các công cụ quản lý công việc truyền thống thường tách biệt khỏi nơi cuộc trao đổi thực sự diễn ra. Trong khi đó, việc tích hợp AI trực tiếp vào ứng dụng chat lại phát sinh thêm các vấn đề:
AI có thể đọc quá nhiều nội dung ngoài phạm vi người dùng cho phép.
AI có thể hiểu sai câu nói và tạo task hoặc sự kiện không chính xác.
Các thao tác tạo, sửa hoặc xoá dữ liệu không được diễn ra âm thầm.
Context hội thoại dài làm tăng chi phí token và thời gian phản hồi.
Khi mở rộng cho nhiều người dùng, hệ thống cần kiểm soát quyền, ngân sách và dữ liệu riêng tư theo từng tài khoản.
Một trợ lý AI tổng quát khó xử lý tốt mọi quy trình chuyên môn phức tạp trong tổ chức.
Orbit được xây dựng để giải quyết các vấn đề trên bằng một Personal Agent lấy hội thoại làm trung tâm. Agent hỗ trợ người dùng phát hiện công việc, quản lý lịch trình, đặt lời nhắc và ghi nhớ thông tin, đồng thời giữ người dùng ở vị trí quyết định cuối cùng đối với mọi hành động quan trọng.
Giải pháp kỹ thuật
Kiến trúc tổng thể: Backend sử dụng FastAPI, Pydantic 2, SQLAlchemy 2, Alembic và PostgreSQL. Frontend sử dụng React/Vite, được tách thành ứng dụng dành cho người dùng và ứng dụng quản trị. Backend được đóng gói bằng Docker, triển khai trên Render; frontend được triển khai trên Vercel.
Xác thực và quản lý tài khoản: Hỗ trợ đăng ký, đăng nhập bằng email/mật khẩu với bcrypt và JWT, đồng thời có Google Sign-In. Mỗi tài khoản mới có một không gian cá nhân riêng. Backend kiểm tra trạng thái tài khoản, quyền thành viên và vai trò trước khi cho phép truy cập dữ liệu.
Chat thời gian thực: Hệ thống hỗ trợ chat 1-1 và chat nhóm thông qua WebSocket. Người dùng có thể tìm kiếm tài khoản khác, tạo hội thoại, tạo nhóm và trao đổi realtime. Mọi kết nối đều phải xác thực JWT và quyền truy cập cuộc trò chuyện.
Personal Agent bằng LangGraph: Agent cá nhân được tổ chức thành workflow gồm:
Kiểm tra và bảo vệ đầu vào.
§
Phụ lục — Demo & Slides
Video demo
Bản demo trực tiếp
Slide trình bày
Xác định loại yêu cầu.
Lập kế hoạch thực hiện.
Yêu cầu người dùng bổ sung thông tin còn thiếu.
Lựa chọn và gọi công cụ.
Kiểm tra chất lượng kết quả.
Bảo vệ đầu ra.
Lưu hoặc rút gọn trạng thái thread.
Cách tổ chức này giúp Agent vừa xử lý các câu hỏi thông thường, vừa thực hiện được những quy trình nhiều bước nhưng vẫn giới hạn số lần gọi công cụ và LLM.
Bộ 18 công cụ của Personal Agent: Agent hiện có các nhóm công cụ sau:
Tóm tắt hội thoại.
Trích xuất task từ tin nhắn.
Tìm kiếm tin nhắn đã được cấp quyền.
Tra cứu thông tin và mối quan hệ liên quan.
Tìm kiếm và lưu Personal Memory.
Tổng hợp timeline cá nhân.
Kiểm tra policy trước khi thực hiện yêu cầu.
Xem danh sách task.
Xem và quản lý reminder.
Xem và quản lý sự kiện Google Calendar.
Trong số đó, các công cụ đọc và phân tích không làm thay đổi dữ liệu. Các công cụ tạo, sửa hoặc xoá Calendar/Reminder được xem là công cụ có tác dụng phụ và phải đi qua bước xác nhận.
Human-in-the-loop bắt buộc: Khi Personal Agent chuẩn bị tạo, sửa hoặc xoá sự kiện Calendar hay reminder, workflow sẽ dừng bằng LangGraph interrupt(). Giao diện hiển thị nội dung hành động để người dùng xác nhận hoặc từ chối.
Khi người dùng xác nhận, backend tiếp tục kiểm tra lại danh tính, quyền truy cập và trạng thái consent trước khi thực thi. Do đó, việc người dùng chỉ nhập một câu như “đồng ý” không thể tự động bỏ qua cơ chế xác nhận của hệ thống.
Quyền riêng tư theo từng hội thoại: Trong hội thoại trực tiếp, quyền AI được chia thành hai phần độc lập:
granted: người dùng có được sử dụng AI trong cuộc trò chuyện hay không.
contribution_allowed: nội dung do người đó gửi có được phép đưa vào context cho AI hay không.
Backend tự xây dựng tập tin nhắn hợp lệ từ database thay vì tin vào context do frontend gửi lên. Với nhóm chat, AI được quản lý thông qua policy chung của cuộc trò chuyện và chỉ người quản lý nhóm được bật hoặc tắt.
Provenance và consent-scope hash: Những kết quả AI suy ra từ hội thoại như task suggestion, event candidate hoặc memory đều có thể lưu lại danh sách tin nhắn nguồn và dấu vết quyền truy cập. Nếu người dùng thu hồi quyền hoặc dữ liệu nguồn không còn hợp lệ, hệ thống có thể phát hiện và vô hiệu hoá kết quả chưa được thực hiện.
Agent chủ động phát hiện cam kết: Sau khi có tin nhắn mới, backend có thể chạy pipeline nền để xác định xem nội dung có chứa hành động hoặc cam kết hay không. Nếu phù hợp, AI phân tích một cửa sổ hội thoại giới hạn để trích xuất:
Tên công việc.
Người thực hiện.
Deadline.
Độ ưu tiên.
Tin nhắn làm bằng chứng.
Ví dụ, câu “Tôi sẽ gửi báo cáo trước 6 giờ chiều mai” có thể trở thành một task suggestion. Gợi ý được lưu với trạng thái suggested và gửi realtime tới giao diện.
Accept/Dismiss thay vì tự động thực hiện: Người dùng có thể chọn:
Accept để đưa gợi ý vào danh sách công việc.
Dismiss để loại bỏ gợi ý.
Chấp nhận task không tự động tạo Google Calendar hoặc reminder. Nếu muốn thực hiện thêm các thao tác đó, người dùng phải yêu cầu hoặc xác nhận riêng.
Phát hiện lịch hẹn trong nhóm: Đối với nhóm chat, các tin nhắn có dấu hiệu chứa lịch hẹn được phân tích thành EventCandidate. Candidate lưu loại hành động, thời gian, địa điểm, confidence, trường còn thiếu và tin nhắn nguồn. Chỉ người quản lý cuộc trò chuyện mới có quyền xác nhận trước khi sự kiện được ghi vào Calendar của họ.
Quản lý task: Task được lưu trong PostgreSQL, hỗ trợ task cá nhân và task được giao trong workspace. Một task có thể mang các trạng thái như suggested, pending, in progress, blocked, submitted, changes requested, completed, dismissed hoặc invalidated.
Inbox nhiệm vụ: Thay vì chỉ hiển thị danh sách theo thời gian, Inbox gom những công việc cần chú ý thành các nhóm:
Cần người dùng quyết định.
Bị yêu cầu chỉnh sửa.
Đang chờ duyệt.
Đã quá hạn.
Sắp đến hạn trong 48 giờ.
Có mức ưu tiên cao.
Cách tổ chức này giúp người dùng tập trung vào công việc cần hành động trước.
Google Calendar hai chiều: Mỗi người dùng kết nối tài khoản Google Calendar riêng qua OAuth 2.0 với scope calendar.events. Token truy cập và refresh token được mã hoá trước khi lưu.
Orbit → Google: Tạo, sửa hoặc xoá sự kiện qua REST API hoặc công cụ của Personal Agent.
Google → Orbit: Backend sử dụng polling với syncToken để lấy những thay đổi mới thay vì tải lại toàn bộ Calendar.
Khi syncToken hết hạn, hệ thống thực hiện đồng bộ đầy đủ và tạo token mới.
Các thay đổi được gửi realtime về đúng người sở hữu Calendar.
Reminder liên kết với sự kiện được điều chỉnh khi thời gian sự kiện thay đổi.
Calendar trong Orbit hiển thị cả sự kiện Google và deadline của task, nhưng task chỉ được ghi sang Google khi người dùng chủ động yêu cầu.
Reminder có lưu trữ bền vững: Reminder được lưu trong PostgreSQL và lập lịch qua APScheduler với persistent job store. Hệ thống hỗ trợ tạo, cập nhật, huỷ và snooze reminder; thông báo được gửi realtime khi tới hạn.
Bộ nhớ Agent: LangGraph sử dụng AsyncPostgresSaver để lưu trạng thái thread qua quá trình restart backend. Thread được tách theo từng người dùng và có thời hạn lưu trữ cấu hình được. Khi lịch sử quá dài, hệ thống giữ các lượt trao đổi gần nhất và rút gọn phần cũ để kiểm soát context.
Personal Memory: Ngoài thread của Agent, người dùng có thể lưu sở thích, mối quan hệ, thông tin cá nhân hoặc hướng dẫn muốn Agent ghi nhớ lâu dài. Memory được gắn với owner và workspace, có thể đặt ngày hết hạn, đồng thời hỗ trợ xem, chỉnh sửa và xoá. Các nội dung nhạy cảm như mật khẩu hoặc credential bị chặn khỏi bộ nhớ.
Timeline và phân tích lịch trình: Personal Agent có thể hợp nhất task, reminder, Google Calendar và các tin nhắn được cấp quyền thành timeline cá nhân. Hệ thống phân tích xung đột lịch, công việc quá hạn, lịch trình dày đặc và nguy cơ quá tải.
Guardrail: Dữ liệu hội thoại được xem là nội dung không đáng tin cậy. Hệ thống có các lớp kiểm tra prompt injection, làm sạch context, chặn lộ secret và đánh giá lại những hành động nguy hiểm trước khi thực hiện. Đầu ra của Agent cũng được kiểm tra trước khi trả về frontend.
Kiểm soát token và ngân sách: Mỗi lần gọi LLM được ghi lại prompt token, completion token, tổng token, model và provider. Ngân sách được theo dõi theo từng tài khoản:
Cảnh báo realtime khi đạt 80% và 100%.
Chặn cuộc gọi LLM mới khi đã chạm giới hạn ngày.
Vẫn cho phép hoàn tất hành động đã được người dùng xác nhận.
Admin có dashboard theo dõi usage, chi phí và mức sử dụng theo tài khoản.
Rate limiting: Các endpoint được áp dụng giới hạn theo nhóm như đăng ký, đăng nhập, chat, đọc dữ liệu và CRUD nhằm giảm spam và hạn chế lạm dụng tài nguyên.
Quản trị hệ thống: Ứng dụng admin hỗ trợ quản lý tài khoản, workspace, cấu hình provider/model AI, theo dõi token, chi phí, audit log và tình trạng hệ thống. Admin không mặc định có quyền đọc hội thoại riêng tư nếu chưa có support grant phù hợp.
Tính khả thi
Các chức năng cốt lõi của Personal Agent đã được triển khai bằng backend, database và dịch vụ thật:
Đăng ký, đăng nhập và phân quyền user/admin.
Chat trực tiếp và chat nhóm realtime.
Tóm tắt và hỏi đáp theo context hội thoại.
Trích xuất task từ tin nhắn.
Phát hiện cam kết và tạo AI task suggestion.
Accept/Dismiss suggestion.
Quản lý task và Inbox nhiệm vụ.
Reminder có lưu trữ và thông báo realtime.
Personal Memory và Agent thread persistence.
Kết nối Google Calendar riêng cho từng tài khoản.
Đồng bộ Calendar hai chiều bằng Google Calendar API.
Human-in-the-loop cho Calendar và reminder.
Theo dõi token, ngân sách và dashboard quản trị.
Backend production hiện hoạt động trên Render và frontend hoạt động trên Vercel. Test suite hiện thu thập 1.032 test case; pipeline CI gần nhất đã pass kiểm tra backend, migration PostgreSQL, lint và build hai frontend.
Dự án có script eval_extract_tasks.py để đo precision, recall, F1 của tiêu đề task và độ chính xác deadline. Bộ dữ liệu đánh giá hiện còn nhỏ nên được sử dụng như bằng chứng kỹ thuật ban đầu, chưa phải benchmark đầy đủ cho dữ liệu người dùng thực tế.
Phiên bản hiện tại đã phù hợp để demo và tổ chức thử nghiệm với người dùng thật. Trước khi mở rộng public ở quy mô lớn, dự án cần tiếp tục:
Hoàn tất xác minh Google OAuth cho Calendar scope.
Nâng đồng bộ Google Calendar từ polling lên webhook.
Chuyển rate limiter và background processing sang kiến trúc hỗ trợ nhiều instance.
Mở rộng bộ dữ liệu đánh giá AI bằng hội thoại thực tế đã ẩn danh.
Bổ sung giám sát và cảnh báo vận hành chuyên sâu.
Phạm vi Multi-agent hiện tại
Trọng tâm sản phẩm hiện tại là Personal Agent. Tuy nhiên, Multi-agent không chỉ tồn tại ở mức ý tưởng: codebase đã triển khai một phần nền tảng workspace-agent và các module thử nghiệm cho những vai trò như:
Product Delivery Agent.
Quality Assurance Agent.
Các luồng giao việc, review và xử lý sự kiện trong workspace.
Các thành phần này đã có code và test nhưng chưa hoàn thiện ở cùng mức độ với Personal Agent. Vì vậy, trạng thái phù hợp nhất là:
Multi-agent đã có nền tảng và prototype hoạt động, nhưng đang được phát triển như hướng mở rộng tiếp theo của sản phẩm.
Hướng phát triển sản phẩm
Trong giai đoạn tiếp theo, Orbit có thể mở rộng từ một Personal Agent thành hệ thống nhiều agent chuyên môn phối hợp trong workspace:
Personal Agent đại diện cho nhu cầu và dữ liệu riêng của từng người dùng.
Product Delivery Agent theo dõi tiến độ và điều phối công việc.
Quality Assurance Agent kiểm tra tiêu chí và chất lượng đầu ra.
Executive Agent tổng hợp tình trạng, rủi ro và hỗ trợ quyết định quản lý.
Các agent có thể trao đổi qua những hợp đồng dữ liệu rõ ràng, nhưng mỗi agent vẫn phải có phạm vi quyền, ngân sách, audit log, circuit breaker và runtime riêng. Personal Agent tiếp tục là trải nghiệm trung tâm, còn Multi-agent trở thành lớp mở rộng phục vụ quy trình tổ chức phức tạp hơn.