Agent không cần model lớn hơn, nó cần context tốt hơn

Vì sao agent hỏng do context chứ không do model, bốn luật của context tốt, và demo thêm long-term memory xuyên session cho coding agent qua MCP và Redis.

Đã duyệt độc lập · cập nhật 17/10/2026 · 13 min

1. Agent hỏng không phải vì model thiếu thông minh

Video được Redis tài trợ.

Muhammad mở đầu bằng một khẳng định thẳng: agent thất bại không phải vì model bạn chọn thiếu trí thông minh. Agent thất bại vì context bạn đưa vào nó bị hỏng. Và hoá ra, cho agent một context có cấu trúc, chọn lọc chính xác như phẫu thuật (structured, surgical context) thì lần nào cũng thắng việc nâng cấp nó lên một model flagship khổng lồ.

Câu hỏi đặt ra là "context tốt hơn" cụ thể nghĩa là gì, và làm thế nào để build được nó. Theo anh, đây đang là câu hỏi nóng nhất lúc này. Redis vừa công bố một báo cáo về chủ đề này, và báo cáo đó xác nhận đúng điều mà các team chạy agent trên production đã thấy: chúng ta đã tối ưu nhầm tầng (layer) của stack.

Lộ trình của video có hai phần: đầu tiên phân tích các kiểu hỏng ở mức kiến trúc (architectural failure modes), sau đó là một demo cách build context với Redis. Nhưng trước hết, anh đi qua những kiểu hỏng phổ biến mà agent hay gặp.

Bảng vẽ tay: model bị gạch chéo, agent, khối context thắng bigger model, bìa báo cáo The state of context engineering của Redis
Bảng mở đầu: model bạn chọn "not the culprit" (không phải thủ phạm); khối context gồm records, orders, tickets, live state thắng một bigger model. Bên phải là bìa báo cáo "The state of context engineering" của Redis, khảo sát các lãnh đạo hạ tầng AI, và lộ trình video: ý tưởng trước, demo trực tiếp về memory xuyên session sau.

2. Ba kiểu hỏng: dead end, stale state, latency

Ví dụ xuyên suốt: bạn có một customer support agent, và người dùng hỏi về trạng thái đơn hàng của họ ("status of my order?"). Agent có ba nguồn dữ liệu: CRM, database đơn hàng (Orders DB) và hệ thống ticket.

Kiểu hỏng thứ nhất, anh gọi là dead end (ngõ cụt). Agent kéo được support ticket về, nhưng không có một đường quan hệ (relational path) nào từ ticket sang bản ghi đơn hàng, vì hai thứ đó nằm ở hai silo khác nhau. Thế là model làm đúng cái việc mà language model vẫn làm khi bị bịt mắt: nó hallucinate, tức bịa ra câu trả lời.

Sơ đồ: khách hỏi trạng thái đơn, support agent nối tới CRM, Orders DB, Tickets; ticket không nối được tới order record
Kiểu hỏng số 1: agent tìm thấy ticket #4821 hỏi về trạng thái đơn, nhưng bản ghi đơn hàng thì "unreachable", giữa hai thứ chỉ có một đường nét đứt với dấu hỏi.

Kiểu hỏng thứ hai là stale state (trạng thái cũ). Lần này agent tìm được đơn hàng, nhưng từ một bản export lấy ra 12 tiếng trước. Đây là chuyện độ tươi của dữ liệu (freshness). Thực tế gói hàng đã được gửi đi sáng nay, nhưng agent không hề biết. Kết quả là agent tự tin khẳng định đơn chưa được gửi, và đưa thông tin sai cho người dùng.

Kiểu hỏng thứ ba là latency (độ trễ). Giả sử agent tìm được đúng dữ liệu, nhưng nó phải nối tám lượt gọi tuần tự (eight sequential round trips) qua ba API khác nhau. Đến lúc nó trả lời được thì người dùng đã đóng cửa sổ chat từ lâu, vì độ trễ quá lớn.

3. Model vẫn ổn, cái hỏng là context

Trong cả ba trường hợp trên, phần suy luận (reasoning) của model đều ổn. Thất bại không đến từ việc thiếu trí thông minh, mà từ việc không cung cấp đúng context vào đúng lúc. Và chuyện này có thể làm gãy hệ thống agentic của bạn mà bạn thậm chí không nhận ra. Theo Muhammad, báo cáo của Redis cho thấy đúng điều đó.

Bảng: model fine, agent ba lần hỏng, thông tin đúng gồm customer, order, ticket; biểu đồ 79%, 73%, 81% và hộp 83%
Trên bảng: "model: fine", agent vẫn hỏng ba lần; chữ "intelligence" bị gạch và thay bằng "what it could see" (những gì nó nhìn thấy được). Biểu đồ trích từ báo cáo: 79% cho rằng context rất quan trọng với mục tiêu AI, 73% cho rằng context navigable là thứ tách AI thử nghiệm khỏi AI production, 81% cho rằng độ trưởng thành của AI phụ thuộc vào hạ tầng biết tích luỹ (compounding); hộp bên dưới ghi 83% lãnh đạo đặt fresh context lên trước.

Hai dòng anh viết lên bảng tóm lại ý này: "broken context > broken model" (context hỏng là vấn đề lớn hơn model hỏng) và "fresh context > parameters" (context tươi quan trọng hơn số tham số). Mũi tên cuối cùng dẫn sang câu hỏi tiếp theo: vậy thay vào đó các team đang làm gì?

4. Prompt engineering và context engineering khác nhau thế nào

Muhammad quay lại định nghĩa: context engineering cho một agent chính xác là gì, và nó khác prompt engineering ở đâu.

Prompt engineering về cơ bản là cách bạn cấu trúc câu chỉ dẫn ban đầu (initial instruction) cho model. Bạn lấy một chuỗi duy nhất, chỉnh cách diễn đạt (phrasing), thêm vài ví dụ few-shot, và ép một schema cho đầu ra. Việc này có ích, nhưng mọi thứ đều nằm gói gọn trong một chuỗi đó. Ví dụ trên bảng là prompt "You are a support agent. Be concise, answer in 2 lines, always polite." với ba núm chỉnh: phrasing, examples, format.

Context engineering vận hành ở một tầng cao hơn hẳn. Đó là việc build một hệ thống real-time quyết định agent nhìn thấy trạng thái nào ở từng bước. Ví dụ: lấy bản ghi khách hàng nào, kiểm tra trạng thái live nào, và đưa chúng tới đủ nhanh để chạy được trên production.

Bảng so sánh: context engineering với các bước, records, past interactions, live state đi qua phễu vào agent; prompt engineering bên dưới; trích định nghĩa của Redis
Context engineering trả lời câu "ở bước này agent nên nhìn thấy gì?": records, past interactions (ticket tuần trước, chat 3 ngày trước), live state (đã gửi lúc 8:00, đang vận chuyển) từ CRM, orders db, tickets, đi qua một phễu để thành thứ usable, current, fast. Prompt engineering chỉ là "what you say", nằm thấp hơn một tầng; các kiểu hỏng (no path, đồng hồ, độ trễ) đến từ phần phễu. Ô vàng là định nghĩa context engineering trích từ báo cáo của Redis.

Nói gọn: prompt engineering là những gì bạn nói với model, còn context engineering là toàn bộ môi trường runtime bạn dựng xung quanh nó. Và phần lớn những thất bại bạn thấy trong hệ thống agentic đến từ việc cung cấp context sai hoặc hỏng.

5. Bốn luật của context tốt: navigable, fresh, fast

Nhìn lại ba kiểu hỏng ở trên, Muhammad nói context sẵn sàng cho production phải thoả bốn luật mang tính cơ học (four mechanical rules), lấy từ báo cáo.

Thứ nhất, nó phải navigable (đi lại được). Agent cần duyệt được quan hệ giữa các thực thể như người dùng, đơn hàng và ticket, thay vì tra từ khoá mù (blind keyword lookup) hay mò trong văn bản thô. Đây là lời giải cho vấn đề điều hướng (navigation problem), tức kiểu hỏng "không có đường".

Thứ hai, nó phải fresh (tươi). Nếu agent hành động dựa trên trạng thái cũ, nó sẽ hành động một cách tự tin nhưng sai. Vì vậy freshness là yếu tố sống còn: dữ liệu của "bây giờ", không phải của "đêm qua".

Thứ ba, nó phải fast (nhanh). Khi một task kích hoạt hàng chục truy vấn con (sub-queries), độ trễ của từng truy vấn cộng dồn lại và trực tiếp làm gãy workflow. Bạn cần nghĩ nghiêm túc về latency.

Bảng four requirements: navigable, fresh, speed problem; trích câu An agent acting on stale data will act confidently and wrongly
Ba yêu cầu đầu tiên vẽ thành ba cột: navigable (customer, orders, tickets nối với nhau thay vì một mớ loose text), fresh ("now, not last night") và vấn đề tốc độ (8 hops, hàng chục lượt truy xuất, chậm thì gãy). Ô trích từ báo cáo: "An agent acting on stale data will act confidently and wrongly." Bên phải là trang báo cáo liệt kê bốn yêu cầu.

6. Luật thứ tư mà phần lớn hệ thống bỏ qua: compound

Thứ tư, và đây là luật mà phần lớn các setup bỏ qua: context phải compound (tích luỹ theo thời gian). Hiện nay, khi một session của agent kết thúc, context của nó bị xoá về số không. Khi cùng người dùng đó quay lại vào ngày mai, model phải học lại từ đầu: họ là ai, họ dùng những quy ước nào, và lần trước cái gì đã hỏng.

Nhưng để một hệ thống production thật sự hiệu quả, nó phải thông minh hơn khi bạn dùng nó nhiều hơn. Đó là lý do những gì hệ thống học được cần được cộng dồn theo thời gian.

Bảng: không phải bigger prompt; agent bắt đầu từ số 0 khi khách quay lại ngày 2; better context bằng navigable, fresh, fast, compound
Khách quay lại vào "day 2", agent bắt đầu từ con số 0 và phải học lại họ là ai, họ đã đặt gì, cái gì đã hỏng: "nothing carries over". Hàng dưới: better context = navigable + fresh + fast + compound, cột cuối là đường cong độ hữu ích tăng theo số lần dùng. Góc trái: câu trả lời không phải một prompt to hơn.

Tất cả những điều này là về context tốt, không phải prompt lớn hơn. Cốt lõi là đúng thông tin vào đúng thời điểm. Câu hỏi tiếp theo là: tại sao phần lớn các team không build được nó?

7. Vì sao các team bị kẹt: mỗi agent một silo

Muhammad mô tả điểm xuất phát của đa số đội ngũ kỹ thuật. Giả sử có ba team. Team A build một agent và dựng các vector database riêng biệt để tìm kiếm tài liệu, và cách đó chạy tốt. Team B build một agent khác và tự viết các script lưu trữ bền vững (persistent scripts) của riêng mình trên một kho dữ liệu tách biệt, cũng chạy tốt. Rồi team C thì đang ghép nối vài tool với nhau.

Vấn đề là không ai trong số họ nói chuyện với nhau, vì tất cả đều nằm trong silo của riêng mình. Sáu tháng sau, bạn sẽ có cả chục data pipeline rời rạc, không ai có thể đảm bảo độ tươi của dữ liệu, và mỗi agent mới lại tốn phần lớn thời gian để build lại phần hạ tầng nối dữ liệu cho context (context plumbing). Theo anh, đó là tình trạng của phần lớn các tổ chức kỹ thuật hiện nay.

Team ATeam BTeam C agentagentagent vector DBscript riêngvài tool ghép chạy tốtchạy tốt ×× 6 tháng sau: hàng chục data pipeline rời rạc không ai đảm bảo freshness, mỗi agent mới lại build lại context plumbing
Hình 7.1Ba team, ba agent, ba kho dữ liệu riêng: từng cái chạy tốt, nhưng không cái nào nói chuyện với nhau.

8. Hai tầng memory: working memory và long-term memory

Tiếp theo là câu hỏi: làm thế nào để agent tích luỹ context qua nhiều session? Muhammad nói agent cần hai loại memory.

Tầng một là working memory, về cơ bản là tờ nháp (scratchpad) cho task đang chạy. Agent cần truy cập ngay các tool call vừa thực hiện và trạng thái thực thi. Khi session kết thúc, phần này sẽ bị xoá.

Tầng hai là long-term memory. Tầng này lưu những fact bền vững, phải sống sót qua nhiều session hay nhiều lần chạy, chẳng hạn các quyết định của project, cấu hình môi trường, hay các edge case khi debug. Một agent tốt cần cả hai tầng.

Bảng memory hai loại: working memory là scratchpad của session 1, long-term memory giữ các fact qua một tuần session
Working memory của session 1 gồm messages so far (12 lượt), tools called (search(), orders.get()) và what it found (đơn #4471 đã gửi); nó chỉ thuộc session này và có thể bỏ đi. Long-term memory giữ những fact như prefers email, uses ruff, timezone bug, sống qua session; sau một tuần session đã có 50 fact, sang tuần 2 một session mới vẫn dùng được.

9. Fact đi từ tầng này sang tầng kia thế nào

Mẹo nằm ở cách các fact chuyển từ tầng này sang tầng kia. Bạn không thể trông chờ người dùng tự tay gắn nhãn (tag) cho các fact. Vì vậy bạn cần một memory layer tự động, đọc cuộc hội thoại và trích xuất (extract) các fact bền vững ở chế độ nền. Việc này phải diễn ra tự động.

Khi một session mới khởi động, nó chạy một semantic search để chỉ kéo về đúng những fact lịch sử liên quan tới prompt đang làm. Nhưng bạn cũng phải cẩn thận để memory không biến thành một ngăn kéo đồ linh tinh phình to (bloated junk drawer). Engine lo phần khử trùng lặp (deduplication) và hết hạn (expiry): bỏ đi nhiễu tạm thời, giữ chặt các quy tắc vĩnh viễn của project. Nhờ đó context vừa navigable, vừa fresh, vừa fast, và compound theo thời gian.

Bảng: extraction từ working memory sang long-term memory, retrieval bằng semantic search, dedup, expiry; Redis ở dưới bốn cột navigable fresh fast compound
Không phải developer gắn tay, mà một bước extraction đưa fact vào long-term memory; retrieval là "semantic search on your own history", tìm theo nghĩa. Dedup: mười bản vào, lưu một; expiry: fact cũ tự hết hạn, tránh thành "junk drawer". Bốn cột navigable, fresh, fast, compound ứng với retrieval, expiry, Redis (tính bằng ms) và extraction; hộp cam ghi "the 4% have this". Góc phải là một coding agent nối qua MCP, chạy "fix the login bug", "add the export" rồi mở session mới để hỏi nó còn nhớ gì.

Đáng tiếc là phần lớn các hệ thống agentic hiện nay không thật sự có những thứ này. Vì vậy anh sẽ cho xem một giải pháp đơn giản dựa trên Redis, giúp agent có context nhanh, tươi và tích luỹ được.

10. Bối cảnh demo: harness DeepSeek, MCP và Redis 8

Để đặt mọi thứ đã bàn vào thực tế, Muhammad chuyển sang một ví dụ cụ thể. Anh làm việc trong harness của DeepSeek, với model mà anh gọi là "4.1 Flash", truy cập qua API (bảng vẽ ghi "V4.1 Flash", còn trong file config ghi deepseek-v4-flash). Mặc định, harness của DeepSeek không có memory xuyên session (cross-session memory). Đó chính là thứ anh sẽ build.

Anh dùng một MCP server, nối nó tới Redis Agent Memory Server. Bên dưới, Redis 8 lưu mỗi memory dưới dạng một hash kèm một vector, nhờ vậy có thể tìm các memory theo nghĩa thay vì tìm kiếm từ khoá đơn thuần.

Thí nghiệm như sau. Ở session một (session A), anh nói cho agent vài quy ước của project. Session hai (session B) là một session hoàn toàn mới, không mang theo gì từ session trước, và anh giao cho nó một task. Nếu memory chạy đúng như mong muốn, agent trong session B phải tìm tới Redis trước và áp dụng các quy ước đó mà anh không phải nhắc lại.

harnessmodel Flash qua API MCPmemory server Redis 8hash + vector Session ASession B ghi 3 factđọc lại, không lịch sử chat
Hình 10.1Kiến trúc demo: harness gọi MCP, MCP nói chuyện với memory server, memory server lưu vào Redis 8. Session A ghi quy ước, session B (không có lịch sử chat) phải tự tìm lại chúng.

11. Tích hợp: một file YAML và 10 tool

Muhammad nói trước hết về phần tích hợp. Chỉ cần một file YAML, khai báo cho harness biết có một MCP server tên là redis_memory. Trong file, mục insert thêm một entry id: memory-redis với name: '@deepseek-ai/dsh-mcp-client', và trong config là serverName: redis_memory, transport: streamable-http, một dòng url đọc từ biến môi trường REDIS_MEMORY_MCP_..., cùng headers: {}, toolCallTimeoutMs: 120000 và failOnStartupError: false.

Anh lưu ý phần cuối của URL: đó là namespace. URL trên màn hình có dạng http://127.0.0.1:9100/dsh-demo/mcp, và phần dsh-demo chính là namespace, nên mọi thứ agent này lưu vào đều được giới hạn trong phạm vi project cụ thể này.

Mục thứ hai ghim model: id: agent-default-model với provider: deepseek-official và model: deepseek-v4-flash. Khi model khởi động, nó hỏi MCP server xem có những tool nào. Kết quả là một danh sách 10 tool để tạo memory, tìm memory, sửa, xoá, và nhiều việc khác.

File YAML khai báo MCP server redis_memory, entry agent-default-model với deepseek-v4-flash, và danh sách 10 tool
"One file": cấu hình MCP client với serverName redis_memory, transport streamable-http, URL kết thúc bằng namespace; bên phải là model được ghim và 10 tool mà server trả về: get_current_datetime, create_long_term_memories, search_long_term_memory, memory_prompt, set_working_memory, get_working_memory, get_long_term_memory, edit_long_term_memory, delete_long_term_memories, compact_long_term_memories.

12. Session A: dạy agent ba quy ước của project

Ở session A, Muhammad nói với agent rằng project sẽ dùng uv để quản lý dependency, ruff để lint, và mọi function phải giữ ở dạng pure, chỉ trả về tuple mới. Câu anh gõ trên màn hình:

Project decision for tinytasks: we use uv for dependency management (uv run pytest, uv run ruff), ruff for linting, and every function stays pure and returns new tuples.

Vì MCP đã được nối, agent đầu tiên kiểm tra memory của nó (tool call mcp__redis_memory__search_long_term_memory) và không tìm thấy gì, vì đây là một khởi đầu trắng tinh. Sau đó nó gọi create_long_term_memories và lưu ba fact riêng biệt đúng như mô tả trong prompt. Trong danh sách bước, ta thấy rõ từng việc nó đã làm: nạp context, suy nghĩ rằng người dùng vừa nêu một quyết định của project, tìm memory, thấy trống, rồi lưu quyết định thành semantic memory.

Session A: prompt về tinytasks, search memory trả về empty, tool call create_long_term_memories lưu uv, ruff, pure; kết quả truy vấn memory server và raw hash
Session A mất 10 giây và 4 bước. Agent báo đã lưu vào namespace tinytasks ba mục: quản lý dependency bằng uv, lint bằng ruff, function giữ pure và trả về tuple mới. Góc dưới trái là raw hash trong Redis (text, vector float32[768], user_id, topics, namespace), góc dưới phải là kết quả truy vấn memory server với khoảng cách và topics của từng memory.

Tiếp theo, anh xem thẳng nội dung trong Redis. Nếu truy vấn memory server, bạn sẽ nhận lại đúng ba memory đó. Bạn cũng có thể xem raw hash trong Redis: gồm phần text, namespace, user và topic. Và vì đây là semantic retrieval, hash còn chứa embedding.

13. Session B: session mới, không có lịch sử chat

Session B là một session mới, trong cùng repo đó, với lịch sử chat bằng không. Lần này anh yêu cầu agent thêm một function remove_task kèm test, rồi chạy test và linter:

Add a remove_task(tasks, task_id) function to tinytasks with a test, then run the tests and the linter.

Hãy xem nó làm gì. Trước khi đọc bất kỳ file nào, nó gọi search long-term memory (agent nói "I'll start by checking my memory for project conventions, then look at the repo."). Kết quả trả về: đã tìm thấy quy ước, các function pure trả về tuple mới, và ném KeyError khi gặp id không tồn tại. Sau đó nó mới đọc code (pyproject.toml, src/tinytasks/tasks.py, tests/test_tasks.py, src/tinytasks/__init__.py) và viết function.

Session B: prompt remove_task, tool call search_long_term_memory đầu tiên, các bước đọc file, diff của remove_task, pytest 5 passed và ruff All checks passed
Session B mất 14 giây và 8 bước. Tool call đầu tiên là tìm memory, sau đó mới tới bốn lượt Read. Diff cho thấy function pure trả về tuple mới; pytest báo 5 test passed, ruff báo "All checks passed!". Ba ô uv, ruff, pure bị gạch với chú thích "not in prompt": không quy ước nào được nhắc lại trong prompt.

Nhìn vào diff, function là pure và trả về một tuple mới, khớp đúng phong cách đã mô tả ở session A:

+def remove_task(tasks: tuple[Task, ...], task_id: int) -> tuple[Task, ...]:
+    """Return a new task list without `task_id`."""
+    if not any(t.id == task_id for t in tasks):
+        raise KeyError(task_id)
     return tuple(t for t in tasks if t.id != task_id)

Để kiểm chứng, agent chạy test bằng uv và lint bằng ruff, đúng hai công cụ đã được ghi nhớ:

$ cd sample-repo && uv run pytest -q
5 passed in 0.00s

$ uv run ruff check .
All checks passed!

Năm test đều pass. Như vậy, nhờ Redis, anh đã thêm được long-term memory trực tiếp cho một coding agent vốn không có long-term memory.

14. Hai thí nghiệm thêm: tìm theo nghĩa và memory tự lớn

Muhammad còn chạy thêm hai thí nghiệm.

Thí nghiệm thứ nhất nhằm xem memory server có thật sự dùng semantic search hay chỉ tìm theo từ khoá. Anh hỏi memory server: "which linter and package manager does this repo use". Không từ nào trong hai từ khoá "linter" và "package manager" xuất hiện trong các memory đã lưu. Nhưng kết quả vẫn kéo đúng memory về ruff và uv, với khoảng cách thấp nhất (trên màn hình là dist=0.417 cho ruff và dist=0.436 cho uv). Điều đó cho thấy hệ thống đang tìm theo nghĩa, không phải so khớp từ khoá đơn thuần.

Thí nghiệm thứ hai là xem memory có tự lớn lên không. Lần này anh đẩy một đoạn hội thoại bình thường vào working memory, chỉ là người dùng nói họ thích dùng type hints, kèm một sở thích khác. Anh không hề yêu cầu agent gọi tool lưu memory, nhưng log của server ghi rằng bước extraction đã hoàn tất và memory đã được trích ra (trên màn hình: chạy inline extraction cho session demo-chat-1 với debounce 30 giây, rồi "Inline extraction completed", sau khoảng 34 giây).

Hai thí nghiệm: truy vấn which linter and package manager trả về ruff và uv với khoảng cách thấp; log extraction tự động cho demo-chat-1
Bên trái ("meaning"): các từ trong câu hỏi không có trong text đã lưu, nhưng hai kết quả gần nhất vẫn là ruff (0.417) và uv (0.436). Bên phải ("on its own"): người dùng chỉ nhắc tới type hints, không có lệnh lưu nào, vậy mà log server cho thấy extraction tự chạy và hoàn tất.

Sau đó bạn thấy được chính xác những gì người dùng muốn đã nằm trong long-term memory. Muhammad đánh giá đây là điểm rất hay: agent giờ có thể tự trích thông tin hữu ích từ cuộc trò chuyện với người dùng và đưa vào long-term memory dựa trên Redis. Cái đẹp của cách làm này là những gì hệ thống học được sẽ tích luỹ dần khi bạn dùng nó.

15. Kết: context quan trọng hơn kích thước model

Để khép lại, Muhammad nhắc lại điều đã bàn xuyên suốt video: context bạn đưa cho agent quan trọng hơn kích thước của model. Muốn vậy, bạn cần một memory layer tốt mà agent có thể dùng, và Redis là một ví dụ tốt. Bạn truy cập nó qua MCP server. Điểm hay là bạn có thể nối nó vào bất kỳ coding agent nào, và nó sẽ cho bạn context tốt hơn mà không phải hy sinh độ chính xác hay hiệu năng.

Sơ đồ tổng kết: người dùng, harness với V4 Flash qua API, MCP, memory server, Redis 8 lưu vector; session A ghi 3 fact, session B đọc lại
Cùng harness, cùng model Flash, không đổi gì ở model; chỉ thêm MCP, memory server và Redis 8 lưu vector. Session A ghi 3 fact, session B (cùng thư mục project) lấy lại chúng.

Cuối video, anh mời người xem cho biết video có hữu ích không, cảm ơn mọi người đã theo dõi và hẹn gặp ở video sau.

Nguồn và liên kết 7 nguồn

  1. Tên gốc: Your Agent Doesn't Need a Bigger Model
  2. Sự kiện: YouTube
  3. Video gốc: https://www.youtube.com/watch?v=tM8Lb7Yk0KE youtube.com
  4. Kênh YouTube Prompt Engineering (Muhammad Farooq): youtube.com/channel/UCDq7SjbgRKty5TgGafW8Clg youtube.com
  5. Báo cáo The state of context engineering 2026 của Redis, nơi video trích định nghĩa context engineering và bốn yêu cầu navigable, fast, fresh, compounding: redis.io/resources/state-of-context-engineering-2026 redis.io
  6. Redis Agent Memory Server, mã nguồn (hai tầng session memory và long-term memory, trích xuất fact ở chế độ nền, có MCP server): github.com/redis/agent-memory-server github.com
  7. Tài liệu Redis Agent Memory Server: redis.github.io/agent-memory-server redis.github.io