BÀI VIẾT

Sự Tiến Hóa của AI Agentic Patterns: Từ Prompt Đến Production System

Câu hỏi trung tâm của việc xây dựng hệ thống AI đã thay đổi ba lần trong bốn năm — từ 'nói gì với model?' đến 'xây hệ thống gì?'. Deep dive về prompt engineering, context engineering, và harness engineering với architecture diagrams, decision frameworks, và production lessons cho engineering leaders.

evolution agentic patterns hero

Đọc cùng AI

Chọn nội dung để sao chép và dán vào trợ lý AI. Không tự gửi dữ liệu. Nội dung CMS được chuyển sang Markdown; dùng Markdown gốc nếu có.

Kỷ Luật Chưa Tồn Tại Bốn Năm Trước

Cuối 2022, xây dựng hệ thống với AI đơn giản đến mức lừa dối: bạn gõ một câu hỏi, trầm trồ với câu trả lời. Không có kỷ luật. Không có tooling. Không có hạ tầng. Chỉ là một text box và một model.

Sự đơn giản đó là khởi đầu của thứ gì đó — trong bốn năm tiếp theo — đã phát triển thành một kỹ thuật hoàn chỉnh với patterns riêng, failure modes riêng, và lớp hạ tầng riêng. Từ nghệ thuật viết câu hỏi khéo léo, nó đã trở thành kiến trúc hệ thống. Và câu hỏi trung tâm đã thay đổi ba lần.

2022: “Nói gì với model?” — và prompt engineering là câu trả lời.

2023: “Cho model xem thông tin gì?” — và context engineering xuất hiện.

2025: “Cần xây hệ thống gì?” — và câu trả lời là harness engineering.

Ba kỷ nguyên của AI engineering: Prompt Engineering (2022), Context Engineering (2023), Harness Engineering (2025)

Mỗi bước chuyển xảy ra vì thế hệ trước đụng phải một bức tường cấu trúc không thể vượt qua chỉ bằng kỹ thuật tốt hơn. Bottleneck cứ di chuyển — từ diễn đạt, đến thông tin, đến độ tin cậy. Hiểu quá trình đó là cách nhanh nhất để hiểu tại sao các production agentic systems ngày nay trông như vậy.


Phần 1 — Prompt Engineering: “Nói Gì Với Model?” (2022–2024)

Giả định nền tảng của prompt engineering rất thanh lịch: LLMs được train trên hàng tỷ tokens kiến thức nhân loại, nén vào hàng tỷ parameters. Kiến thức đó đã ở bên trong model rồi. Biến duy nhất còn lại là cách bạn diễn đạt yêu cầu. Viết đúng từ, đúng cấu trúc, và bạn mở khóa được câu trả lời đúng.

Trong hai năm, giả định này hoạt động đáng kể.

The hottest new programming language is English. — Andrej Karpathy, 2023

Một bộ từ vựng kỹ thuật phong phú xuất hiện:

Kỹ thuật Cách hoạt động Tốt nhất cho
Zero-shot Hướng dẫn trực tiếp, không ví dụ Task đơn giản, có tính thực tế
Few-shot 2–5 ví dụ nhúng trong prompt Output cần format cụ thể (JSON, SQL)
Chain-of-Thought “Hãy suy nghĩ từng bước” Multi-step reasoning, toán
Role prompting “Bạn là senior engineer…” Hành vi chuyên biệt theo domain
Self-consistency Sample N responses, majority vote Quyết định quan trọng
# Toàn bộ "stack" năm 2023 — mọi thứ nằm trong prompt
system_prompt = """
You are a senior backend engineer.
Rules:
- Return JSON only
- Handle all edge cases explicitly
- Use snake_case for identifiers
"""
response = openai.chat(
    model="gpt-4",
    messages=[
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": query}
    ]
)
# Không memory. Không tools. Mỗi call bắt đầu từ đầu.

Bức Tường: Knowledge Cutoff

Prompt engineering đụng phải một bức tường cấu trúc không thể vượt qua bằng cách suy luận. LLMs bị đóng băng trong thời gian — kiến thức kết thúc tại điểm cắt training. Chúng không biết team bạn ship gì sprint trước, internal API của bạn làm gì, hay lỗi hệ thống vừa xảy ra 5 phút trước.

Không có cách viết prompt nào có thể fix được điều này. Bottleneck đã dịch chuyển từ diễn đạt sang thông tin. Câu hỏi không còn là “nói gì?” — mà là “model thực sự có thể thấy gì?”


Phần 2 — Context Engineering: “Cho Model Xem Gì?” (2023–2025)

Context engineering bắt đầu từ một nhận thức đơn giản: prompt không phải toàn bộ câu chuyện. Object đầy đủ quyết định hành vi của model là context window — tất cả mọi thứ model đọc trước khi generate response, được tập hợp động mỗi turn.

Building with language models is becoming less about finding the right words, and more about answering: “What configuration of context is most likely to produce the desired behavior?” — Anthropic Engineering, 2025

Cấu tạo context window: System Prompt, Conversation History, RAG results, Tool schemas, Memory files

Trong vòng lặp agentic, context không bao giờ tĩnh. Mỗi turn, thêm thông tin tích lũy:

  • Conversation history — các turns trước trong hội thoại
  • Retrieved knowledge — tài liệu kéo từ nguồn bên ngoài qua RAG
  • Tool schemas — mô tả các actions và APIs có sẵn
  • Tool results — output từ các tools agent đã gọi
  • Memory files — state được persist từ sessions trước

Prompt không còn là thứ bạn viết một lần. Nó trở thành dynamic assembly được build lại mỗi turn — lớn dần, thay đổi, tích lũy state. Và context windows có giới hạn cứng.

Quản Lý Window Hữu Hạn

Ba chiến lược xuất hiện với đánh đổi cơ bản khác nhau:

Chiến lược Cơ chế Đánh đổi Dùng khi
Raw context Giữ nguyên mọi thứ Fidelity cao nhất, tốn token nhất Sessions ngắn, chi tiết quan trọng
Compaction (reversible) Thay content bằng references (vd: file path thay vì full file) Không mất dữ liệu nếu re-readable Sessions dài với nhiều file edits
Summarization (lossy) LLM viết lại history ngắn hơn Nén cao, mất dữ liệu vĩnh viễn Phương án cuối cùng

Thứ tự ưu tiên nghiêm ngặt: Raw context > Compaction > Summarization. Chỉ dùng lossy compression khi bí — detail đã bị summarize đi là mất mãi mãi.

Context Rot: Nhiều Hơn Không Phải Lúc Nào Cũng Tốt Hơn

Phát hiện quan trọng từ research 2024: context rot. Khi số token trong context window tăng, khả năng model nhớ chính xác thông tin từ context đó giảm. Nhồi nhét window không phải lúc nào cũng đúng. Mục tiêu của context engineering tốt là tìm tập tokens nhỏ nhất có signal cao nhất.

Progressive Disclosure

Pattern hiệu quả nhất cho agents nhiều tools: load tên và mô tả ngắn của tools vào context trước, sau đó hydrate full schema khi cần.

Bước 1  →  Agent thấy 50 tên tool + mô tả ngắn
Bước 2  →  Agent xác định cần tool "database_query"
Bước 3  →  Full schema của "database_query" được load vào context
Bước 4  →  Tool được gọi, result vào context, schema có thể evict

Pattern này — được khởi xướng trong các agentic frameworks — đã được áp dụng trong OpenAI Agents SDK (deferLoading: true), CrewAI (v1.10.2+), và LangGraph. Nếu bạn có hơn ~20 tools và chưa làm điều này, bạn đang burn tokens mỗi lần gọi.

Bức Tường: Độ Tin Cậy

Context engineering làm agents thông minh hơn. Nhưng không làm chúng đáng tin cậy hơn. Biết nhiều hơn, thấy nhiều hơn, không giải quyết được vấn đề hành động đúng, phục hồi sau lỗi, hay duy trì hành vi nhất quán qua sessions. Muốn vậy, bạn cần thứ gì đó hơn một window được quản lý tốt — bạn cần một hệ thống được xây bao quanh model.


Phần 3 — Harness Engineering: “Xây Hệ Thống Gì?” (2025–2026)

Harness engineering là kỷ luật thiết kế toàn bộ hạ tầng bao quanh model và làm cho trí tuệ của nó đáng tin cậy trong production.

Công thức quan trọng, từ LangChain tháng 3/2026:

Agent = Model + Harness

Model cung cấp stateless token prediction. Harness cung cấp mọi thứ biến prediction đó thành thứ hữu ích: memory persist, tools có permission gates, orchestration cho tasks phức tạp, sandboxes để thực thi an toàn, và evaluation loops bắt lỗi trước khi chúng compound.

Harness architecture: 6 layers — Serving, Orchestration, Sandbox, Context Engine, Memory, Tools — bao quanh Model

Một harness có sáu lớp riêng biệt:

Layer 1: Serving — Channels

Serving layer là cách agent nhận input và trả output. Insight kiến trúc là Channel abstraction: deploy một agent, kết nối với nhiều bề mặt qua unified gateway. Cùng một brain, cùng memory, accessible từ messaging app, web UI, hay IDE plugin — vì context được chia sẻ phía sau gateway.

Loại Channel Context Available Ví dụ
IDE / TUI Files, cursor position, active errors, build output VS Code plugin, terminal
Web app Session state, user preferences Custom dashboard
Messaging Text only Slack, Telegram, WhatsApp

Model giống hệt trong mọi trường hợp. Gateway normalize inputs trước khi agent thấy chúng.

Layer 2: Orchestration — Routing, Không Phải Entry Point

Orchestration là logic quyết định, cho một task, cách chia nó và ai xử lý phần nào. Nó là router — không phải entry point cho requests (đó là việc của serving layer).

Hai orchestration patterns: ReAct Loop (Observe-Reason-Act) vs Orchestrator-Worker (phân tách, ủy thác, xác minh)

Hai patterns chiếm ưu thế trong production:

Subagent Spawning: Parent agent tạo child agent. Nó viết một prompt mới, gán tool set cụ thể, và copy context window vào child. Child làm việc độc lập với đủ context để hoàn thành task. Đây là cách Agent Teams của Claude Code hoạt động — một session làm team lead, spawn các sub-agents độc lập làm việc song song, phối hợp qua shared task list với dependency tracking.

Multi-agent Coordination: Task được phân tách và context window được chia cho các agents chuyên biệt. Mỗi agent chỉ thấy phần liên quan của mình. Orchestrator thu thập và tổng hợp kết quả. Khác với spawning, context không được replicate — nó được phân vùng.

Sự khác biệt quan trọng: spawning copy context và ủy thác một task. Coordination phân vùng context và phân phối bài toán.

Layer 3: Sandbox — Thực Thi Cô Lập

Agents chạy code. Code đó có thể xóa files, crash systems, hay lộ credentials. Sandboxes đảm bảo failures được containment.

Mức cô lập Tốc độ An toàn Use Case
Local subprocess Nhanh nhất Thấp nhất Development, thử nghiệm
Local Docker container Trung bình Trung bình CI/CD, staging
Remote cloud container Chậm nhất Cao nhất Production, untrusted inputs

Quy tắc credential isolation (học từ production incidents thực tế): credentials không bao giờ được reachable từ sandbox nơi code do agent generate chạy. Một prompt injection thành công trong coupled design là đủ để expose toàn bộ environment. Đây là structural fix, không phải prompt fix.

Layer 4: Context Engine

Ở tầng harness, quản lý context không phải nghệ thuật — nó là engineered component chạy mỗi invocation, quyết định gì vào context window và khi nào. Ba kỹ thuật (compaction, progressive disclosure, tool offloading) không phải practices thủ công — chúng là pipeline stages với điều kiện trigger được định nghĩa.

Claude Code implement năm distinct compaction strategies với profiles latency/fidelity khác nhau: “Snip” nhanh nhưng lossy; “Microcompact” target tool outputs cụ thể. Hai strategies bổ sung vẫn nằm sau feature flags — bằng chứng cho thấy bài toán này thực sự chưa được giải ở quy mô lớn.

Layer 5: Memory — Filesystem, Không Phải Vector Database

Tier Là gì Vòng đời
Context window Model đang đọc Xóa sau mỗi request
Session RAM Conversation history trong process Mất khi process thoát
Filesystem Markdown files trên disk Tồn tại qua mọi sessions

Bản năng khi nghe “agent memory” là với tay lấy vector database và RAG pipeline. Thực tế với hầu hết production systems đơn giản hơn nhiều. Plain Markdown files — human-readable, human-editable, inspectable, và durable — phục vụ như memory layer. File MEMORY.md index trỏ đến topic files, AGENTS.md inject lúc session start, progress file được update sau mỗi work session.

Không embedding pipeline. Không retrieval infrastructure. Memory mà bạn có thể đọc, sửa, và version cùng với code.

Pattern long-running agent: Một initializer agent chạy ở session đầu tiên — viết structured progress file, mô tả state hiện tại, tạo initial commit. Mỗi session tiếp theo đọc file đó trước tiên. Đây là durable knowledge transfer qua sessions với zero infrastructure.

Layer 6: Tools — MCP với Permission Gating

Lý do wrap capabilities như MCP tools thay vì expose raw shell là permission gating. Bash shell cho agent mọi thứ. MCP tool cho agent đúng thứ nó được phép có.

Mọi tool trong một well-designed harness khai báo:

  • isReadOnly (mặc định false — giả sử nó write)
  • Một risk level (low / medium / high)
  • Điều kiện khi nào cần explicit human approval

Kết quả là permission system dựa trên default-deny: không gì được phép trừ khi được cấp quyền rõ ràng.

Tool Mục đích Rủi ro
Read / Glob / Grep Kiểm tra file, tìm kiếm Thấp — read-only
Edit Thay thế text chính xác Trung bình
Write Tạo hoặc ghi đè files Trung-cao
Bash Thực thi scripts tùy ý Cao
WebFetch Fetch URLs bên ngoài Trung bình
Agent / Task Spawn sub-agent Cao — recursive

Tính đến giữa 2026, MCP đã vượt 97 triệu lượt tải SDK mỗi tháng và được support native bởi mọi AI vendor lớn — dấu hiệu cho thấy permission-gated tooling đã trở thành infrastructure standard.


Bảy Agentic Design Patterns

Bảy agentic design patterns: ReAct, Reflection, Tool Use, Planning, Multi-Agent, Orchestrator-Worker, Evaluator-Optimizer

Dựa trên bốn patterns nền tảng của Andrew Ng (2024), ngành đã hội tụ thành bảy patterns composable vào 2026:

Pattern Làm gì Khi nào dùng Readiness
ReAct Xen kẽ reasoning + tool calls Tasks tuần tự, multi-step 🟢 Battle-tested
Reflection Tự phê bình và lặp lại Output cần chất lượng cao: code review, writing 🟢 Mature
Tool Use Gọi external APIs và services Mọi task cần live data 🟢 Universal
Planning Phân goal thành dependency graph Long-horizon goals, workflows phức tạp 🟡 Maturing
Multi-Agent Agents chuyên biệt phối hợp Workloads lớn có thể song song hóa 🟡 Maturing
Orchestrator-Worker Phân tách → ủy thác → xác minh độc lập Tasks có separable verification 🟡 Maturing
Evaluator-Optimizer Chấm điểm output theo criteria, loop đến khi đạt Quality output là bottleneck 🟡 Emerging

Các patterns này compose với nhau. Production system hiếm khi chỉ dùng một:

Production Research Agent
  Orchestrator-Worker          ← phân tách task
    Worker 1: ReAct            ← research tuần tự
      Tool Use                 ← web search, retrieval
      Reflection               ← tự kiểm tra findings
    Worker 2: ReAct            ← phân tích data song song
      Tool Use                 ← database queries
    Verifier: Evaluator        ← quality gate độc lập

Bài Toán Accuracy Cascade

Đây là phép tính thay đổi cách bạn suy nghĩ về per-step reliability:

Nếu mỗi action thành công với xác suất 85%, một workflow 10 actions chỉ thành công khoảng 20% (0.85¹⁰ ≈ 0.197).

Đây là lý do tại sao các patterns Reflection và Evaluator-Optimizer tồn tại — chúng đẩy per-step accuracy từ ~85% lên ~95%, biến 20% end-to-end success rate thành 60%+. Đầu tư vào quality-checking patterns hoàn vốn theo cấp số nhân trong multi-step workflows.


Production Failure Modes

Qua các production deployments thực tế, bốn failure patterns tái diễn:

Failure Triệu chứng Root Cause Structural Fix
Silent failure Hệ thống trông bình thường; output sai Không có independent evaluation layer Separate verifier agent với scoring criteria
Context rot Agent “quên” chi tiết quan trọng giữa task Token count vượt ngưỡng recall hữu ích Compaction strategies, progressive disclosure
Permission creep Agent tích lũy quyền truy cập quá mức Permission model phẳng, không scoping MCP default-deny, per-tool risk levels
Runaway execution Tool calls không kiểm soát, chi phí tăng vọt Không có iteration caps, không budget tracking Hard caps iterations, token budget per cycle

Incidents thực tế: Slack AI (tháng 8/2025) — indirect prompt injection cho phép rút dữ liệu từ private channels. Salesforce Agentforce (tháng 9/2025) — malicious inputs dùng để leak CRM data. Đây không phải rủi ro lý thuyết; chúng là production failures được ghi nhận đã định hình security architecture của các harnesses sau này.

Minimum viable observability cho bất kỳ agent nào trong production:

  1. Trace mọi tool call với full input và output
  2. Log reasoning steps ở mỗi iteration
  3. Track token usage mỗi turn và tích lũy
  4. Alert khi iteration count vượt threshold định nghĩa
  5. Ghi lại task completion time và kết quả

Kỷ Luật AGENTS.md

Ý tưởng có tác động thực tế cao nhất trong harness engineering không cần hạ tầng mới. Mitchell Hashimoto mô tả nó trong notes công khai về agentic development: một file gọi là AGENTS.md (hoặc CLAUDE.md) nằm ở root của repository.

Mỗi dòng trong file đó đại diện cho một failure thực sự được quan sát và encode thành ràng buộc vĩnh viễn:

# AGENTS.md

## Code Standards
- Không dùng `any` type trong TypeScript — define proper interfaces
- Mọi API responses phải wrapped trong Result<T, E> type
- Database queries phải dùng parameterized statements only

## Architecture
- Không sửa migration files sau initial commit
- Mọi database writes phải qua service layer — không gọi ORM trực tiếp
- API endpoints mới bắt buộc có integration tests trước khi merge

## Agent Behavior
- Chạy full test suite trước khi đánh dấu task hoàn thành
- Không xóa files mà không có xác nhận rõ ràng của user
- Khi design intent không rõ, hỏi — đừng đoán

## Project Context
- Payments service nằm trong monorepo riêng — không import trực tiếp
- Feature flags quản lý qua LaunchDarkly, không phải env vars
- API v1 đã freeze — mọi work mới vào v2

File này được inject vào context của agent lúc session start. Nó không phải prompt. Nó không phải documentation. Nó là system constraint — institutional knowledge tích lũy được encode thành durable rules mà agent không thể bypass.

Bắt đầu một file hôm nay. Mỗi lần agent phạm lỗi trong codebase, thêm một rule. Trong vòng một tháng, bạn sẽ có một constraint file cải thiện đáng kể độ tin cậy của agent — với zero infrastructure cost.


Three-Agent Harness Của Anthropic

Anthropic công bố production harness của họ cho long-running development tasks vào tháng 3/2026. Pattern này giải quyết một vấn đề cơ bản của single-agent loops qua tasks dài: models đánh giá quá cao chất lượng output của chính mình, đặc biệt với tasks chủ quan như UI design.

Giải pháp của họ: tách planning, execution, và evaluation thành ba agents riêng biệt.

PLANNER
  Đọc requirements
  Viết structured feature list + implementation plan
  Tạo initial git commit (thiết lập baseline)
        |
        v
GENERATOR
  Đọc plan + progress file
  Implement incrementally
  Update progress file sau mỗi context reset
  (KHÔNG summarize — reset clean với structured state)
        |
        v
EVALUATOR
  Hoàn toàn độc lập — không bao giờ thấy reasoning của generator
  Được calibrate với few-shot scoring examples
  Chấm điểm output theo explicit criteria
  Gửi pass/fail + specific feedback về cho generator

Tính độc lập của evaluator là quan trọng. Khi cùng một agent vừa generate vừa evaluate, nó bị bias theo hướng approve những gì nó đã build. Một evaluator riêng, được calibrate với explicit scoring criteria và examples, bắt được failures mà generator sẽ rationalize bỏ qua.

Pattern context reset cũng đáng chú ý: thay vì compress history khi gần đến token limit, generator bắt đầu fresh context mỗi session chỉ dùng structured progress file. Điều này tránh behavior “thận trọng gần context limit” mà compaction đôi khi gây ra.


Framework Landscape: 2026

Framework Tốt nhất cho Language Multi-Agent MCP Learning Curve
LangGraph Stateful workflows phức tạp, production Python Graph-based ✓ Cao (1–2 tuần)
CrewAI Rapid prototyping, role-based collaboration Python Role-based DSL ✓ Thấp (20 dòng)
OpenAI Agents SDK Production OpenAI-native Python Handoff-based ✓ Trung bình
Anthropic Agent SDK Claude-native, permission-first TypeScript Subagent spawn ✓ Native Trung bình
Google ADK Google Cloud / Gemini ecosystem Python A2A protocol ✓ Trung bình
Mastra Teams TypeScript-first TypeScript ✓ ✓ Trung bình

Teams thường bắt đầu với CrewAI để prototyping và migrate sang LangGraph khi cần production-grade state management và conditional routing. Nếu production là mục tiêu ngay từ đầu, bắt đầu với LangGraph hoặc OpenAI Agents SDK tránh được migration cost.

Meta-lesson: Nắm vững một vài composable design patterns quan trọng hơn nhiều so với master bất kỳ framework đơn lẻ nào. Frameworks thay đổi; patterns tồn tại.


Nhìn Toàn Bộ Stack

Ba kỷ luật engineering không thay thế lẫn nhau — chúng xếp thành lớp:

┌──────────────────────────────────────────────────────┐
│               HARNESS ENGINEERING                    │
│   Tools · Memory · Sandbox · Orchestration · Eval    │
│           "Xây hệ thống gì?"                         │
├──────────────────────────────────────────────────────┤
│               CONTEXT ENGINEERING                    │
│    RAG · Compaction · Progressive Disclosure         │
│           "Cho model xem gì?"                        │
├──────────────────────────────────────────────────────┤
│               PROMPT ENGINEERING                     │
│          CoT · Few-shot · Role prompting             │
│              "Nói gì với model?"                     │
├──────────────────────────────────────────────────────┤
│                     MODEL                            │
│           GPT-4o · Claude · Gemini · Llama           │
└──────────────────────────────────────────────────────┘

Mỗi lớp xây trên lớp bên dưới. Bạn vẫn cần prompts tốt. Bạn vẫn cần context management thông minh. Nhưng leverage đã dịch chuyển lên trên — returns lớn nhất năm 2026 đến từ việc xây harness đúng.

Kỷ luật này đã đi một chặng đường dài từ “gõ câu hỏi, trầm trồ với câu trả lời.” Thứ chúng ta có bây giờ không phải là một chat interface được tinh chỉnh hơn — đó là một lớp distributed systems với failure modes riêng, infrastructure patterns riêng, và engineering discipline riêng. Câu hỏi không còn là “nói gì với AI?” Mà là: “xây gì bao quanh nó?”


References

Thảo luận

Bình luận được duyệt trước khi công khai. Email của bạn được giữ riêng tư.

Viết bình luận

Cần tên và email. Không gửi thông tin bí mật.

Quyền riêng tư & dữ liệu

Đang tải xác minh chống spam…

← Về danh sáchRead in English