Kỹ nghệ ngữ cảnh cho AI Agents: Những bài học từ hành trình xây dựng Manus

Kỹ nghệ ngữ cảnh cho AI Agents: Những bài học từ hành trình xây dựng Manus. Chia sẻ từ Yichao ‘Peak’ Ji – Co founder of Manus AI! Bài của anh Nguyễn Tiệp.

Kỹ nghệ ngữ cảnh cho AI Agents: Những bài học từ hành trình xây dựng Manus

Khi bắt đầu dự án Manus, đội của tôi đứng trước một lựa chọn quan trọng: nên huấn luyện một mô hình agentic end-to-end từ nền tảng mã nguồn mở, hay nên xây dựng agent dựa trên khả năng học ngữ cảnh (in-context learning) của các mô hình tiên tiến?

Quay lại thời kỳ đầu của NLP, vào thời BERT (mới đó mà đã 7 năm!), chúng tôi đâu có quyền lựa chọn. Muốn chuyển mô hình sang một tác vụ mới, phải fine-tune, phải đánh giá lại từng vòng lặp, có khi mất cả tuần cho một lần thử. Trong khi đó, mô hình thì bé tẹo so với LLM ngày nay. Với các ứng dụng đang trong giai đoạn dò tìm Product-Market Fit, tốc độ phản hồi chậm là “giấy khai tử”.

Tôi đã từng đau đớn nhận ra điều đó khi startup cũ phải xây mô hình từ đầu cho bài toán truy xuất thông tin và semantic search. Rồi GPT-3 và Flan-T5 xuất hiện, tất cả công sức đổ sông đổ biển. Nhưng chính những mô hình đó mở ra một kỷ nguyên mới: in-context learning và một con đường khác cho tương lai.

Từ kinh nghiệm ấy, tôi biết: Manus sẽ đặt cược vào kỹ nghệ ngữ cảnh. Thay vì chạy đua fine-tune, ta sẽ tối ưu prompt và ngữ cảnh nhanh hơn hàng chục lần, và giúp sản phẩm tách rời khỏi sự phụ thuộc vào một mô hình cụ thể. Mô hình có thể thay đổi, nhưng agent vẫn vững vàng như một con thuyền nổi theo sóng, không phải cột mốc chôn dưới đáy biển.

Nhưng làm ngữ cảnh không hề đơn giản. Chúng tôi đã đập đi xây lại khung kiến trúc agent đến 4 lần, mỗi lần là một bài học lớn. Quá trình mò mẫm, chỉnh prompt, thử – sai – học đó, chúng tôi gọi vui là “Stochastic Graduate Descent”. Không đẹp, nhưng hiệu quả.

Dưới đây là những bài học xương máu mà tôi chia sẻ, hy vọng giúp bạn đi nhanh hơn khi xây dựng agent của riêng mình.

1. Thiết kế xoay quanh KV-cache

Kỹ nghệ ngữ cảnh cho AI Agents: Những bài học từ hành trình xây dựng Manus

Nếu chỉ chọn duy nhất một chỉ số quan trọng, tôi sẽ chọn KV-cache hit rate vì nó ảnh hưởng trực tiếp đến độ trễ và chi phí.

Một agent hoạt động theo vòng lặp: nhận input → chọn hành động → thực hiện → ghi nhận quan sát → lặp lại. Với mỗi vòng, ngữ cảnh dài ra, nhưng output (thường chỉ là function call) thì ngắn. Tỷ lệ input/output token trong Manus thường là 100:1.

Nếu các đoạn ngữ cảnh có prefix giống nhau, ta có thể tận dụng KV-cache để tiết kiệm đáng kể thời gian và chi phí. Ví dụ: với Claude Sonnet, token có cache chỉ tốn $0.30/MTok, còn không có cache là $3/MTok chênh 10 lần!

Vậy làm sao tối ưu cache?

Giữ prefix ổn định: Đừng thêm timestamp (đặc biệt là giờ phút giây) vào đầu prompt. Một ký tự khác là đủ để phá cache.

Ngữ cảnh chỉ thêm, không sửa: Không nên sửa lại các bước trước. Serialization phải deterministic ví dụ JSON cần đảm bảo thứ tự key không thay đổi.

Đánh dấu rõ điểm phá cache nếu cần: Một số nền tảng inference yêu cầu bạn chỉ rõ vị trí cache breakpoint.

Nếu tự host model, hãy dùng các kỹ thuật như session ID để route yêu cầu nhất quán, đồng thời bật prompt caching.

2. Mask, đừng Remove

Kỹ nghệ ngữ cảnh cho AI Agents: Những bài học từ hành trình xây dựng Manus

Khi số lượng công cụ tăng lên, không gian hành động cũng phình to. Nếu người dùng được phép gắn thêm tool, bạn sẽ thấy hàng trăm tool kỳ lạ xuất hiện, khiến agent bối rối, chọn sai hành động, đi đường vòng.

Một số người dùng RAG để load tool theo nhu cầu, nhưng trong Manus, sau nhiều thử nghiệm, chúng tôi rút ra một quy tắc: tránh thêm/bớt tool giữa vòng lặp nếu không thực sự cần thiết.

Lý do:

Tool thường được serialize ở đầu ngữ cảnh → thay đổi tool sẽ phá cache toàn bộ phần sau.

Nếu các quan sát cũ tham chiếu tới tool đã bị xóa, model sẽ loạn, dễ sinh lỗi hoặc “ảo giác”.

Cách làm của Manus:

Dùng state machine để xác định tool nào đang sẵn sàng.

Không xóa tool khỏi ngữ cảnh, mà mask logit để ngăn model chọn hành động đó.

Thiết kế tên hành động có prefix chuẩn hóa (vd: browser_, shell_) → dễ kiểm soát nhóm hành động phù hợp với trạng thái.

3. Dùng File System làm bộ nhớ mở rộng

Kỹ nghệ ngữ cảnh cho AI Agents: Những bài học từ hành trình xây dựng Manus

Dù bây giờ LLM có context window 128K+, nhưng trong thực tế, điều đó không đủ. Đôi khi còn là điểm yếu:

Quan sát từ web, PDF có thể rất dài.

Model thường giảm chất lượng khi ngữ cảnh quá dài.

Tiền inference vẫn tốn để prefill toàn bộ ngữ cảnh.

Vì vậy, Manus không nhồi nhét mọi thứ vào context. Thay vào đó, coi file system là bộ nhớ mở rộng, nơi agent có thể đọc/ghi dữ liệu dài, không mất thông tin, không sợ giới hạn token.

Ví dụ:

Nếu URL vẫn còn, có thể bỏ nội dung web khỏi context.

Nếu biết đường dẫn file, có thể bỏ nội dung tài liệu.

Tưởng tượng nếu một State Space Model học được cách tương tác với file system thay vì giữ mọi thứ trong context, nó có thể là thế hệ kế tiếp của các Neural Turing Machine.

4. Điều khiển sự chú ý bằng Recitation

Kỹ nghệ ngữ cảnh cho AI Agents: Những bài học từ hành trình xây dựng Manus

Manus thường tạo file todo.md khi thực hiện tác vụ phức tạp. Nó liên tục cập nhật danh sách công việc và gạch bỏ những gì đã hoàn thành.

Đây không phải là trò vui. Đây là một kỹ thuật thao túng sự chú ý.

Trong các tác vụ kéo dài, mô hình dễ lạc hướng. Việc liên tục ghi lại mục tiêu vào cuối context giúp giữ trọng tâm trong vùng chú ý gần nhất, tránh “mất phương hướng giữa chừng” (lost-in-the-middle). Không cần thay đổi kiến trúc, chỉ cần “nhắc lại” bằng ngôn ngữ tự nhiên.

5. Giữ lại cả những thứ sai

Sai sót là một phần tất yếu của vòng lặp tác vụ. Agent sẽ có lúc hành động sai, môi trường lỗi, tool trục trặc.

Đừng giấu sai sót. Đừng xóa dấu vết lỗi khỏi ngữ cảnh.

Trong Manus, chúng tôi giữ nguyên lỗi trong context: failed action, stack trace, error… vì chính điều đó giúp model cập nhật “niềm tin” nội tại của nó, và tránh lặp lại sai lầm.

Việc model biết cách phục hồi sau lỗi, chính là một chỉ dấu mạnh mẽ cho “hành vi agentic thật sự”.

6. Đừng bị “Few-Shot hóa” chính mình

Few-shot prompting rất hữu ích, nhưng trong agent, nếu không khéo lại phản tác dụng.

LLMs là những “người bắt chước” xuất sắc. Nếu bạn đặt 10 ví dụ hành động giống nhau vào context, nó sẽ… làm theo, ngay cả khi đó không còn là lựa chọn tốt nhất.

Chúng tôi đã thấy điều này khi agent duyệt 20 CV, sau vài cái, nó bắt đầu rập khuôn. Để tránh điều này, Manus thêm độ đa dạng cấu trúc: thay đổi định dạng, thứ tự, phrasing, template… một chút. Cách này giúp phá pattern và làm model linh hoạt hơn.

Làm AI Agent là làm ngữ cảnh

Kỹ nghệ ngữ cảnh không phải mẹo vặt, mà là nền móng của AI agent hiện đại. Dù mô hình mạnh đến đâu, nhanh và rẻ đến đâu, thì cách bạn “dệt nên ngữ cảnh” sẽ quyết định mọi thứ:

Agent phản hồi nhanh hay chậm?

Hành xử chính xác hay trôi dạt?

Có phục hồi sau lỗi không?

Có mở rộng được không?

Tất cả là chuyện ngữ cảnh.

Ở Manus, chúng tôi đã học qua vô số lần vấp ngã, viết lại hệ thống từ đầu, và phục vụ hàng triệu người dùng thực tế. Không có gì ở đây là chân lý, chỉ là những mẫu hình đã hiệu quả với chúng tôi. Nếu nó giúp bạn tránh được một lần thử sai đau đớn, bài viết này coi như đã hoàn thành nhiệm vụ.

Tương lai của agent sẽ được xây dựng từng dòng ngữ cảnh một. Hãy xây nó thật tinh tế.