Agentic Engineering
Vì sao nhiều người vẫn đang nhầm lẫn về cách AI thực sự thay đổi Software Engineering?
Một trong những nhầm lẫn lớn nhất của làn sóng AI coding hiện nay là: rất nhiều người đang dùng cùng một từ để chỉ những cách làm hoàn toàn khác nhau.
Có người nói “AI code giỏi quá, giờ chỉ cần prompt là xong”.
Có người khác lại nói “AI chỉ hữu ích khi có spec, test, guardrails và review nghiêm túc”.
Thực ra, cả hai đều đúng nhưng họ đang nói về hai cấp độ rất khác nhau của việc phát triển phần mềm với AI.
Vibe Coding: nhanh, hứng khởi, nhiều khi rất đã, cực hợp để prototype.
Agentic Coding (Agentic Engineering): nơi AI không chỉ sinh code, mà trở thành một tác nhân thực thi trong một workflow có cấu trúc, còn con người giữ vai trò architect, reviewer và người chịu trách nhiệm cuối cùng.
Bài viết này không chỉ phân biệt hai khái niệm đó. Mình muốn đi xa hơn: giải thích vì sao trong giai đoạn mới này, Prompt Engineering không còn đủ, vì sao Context Engineering đang trở thành năng lực cốt lõi, và vì sao muốn đưa AI vào production một cách nghiêm túc thì cuối cùng chúng ta phải nghĩ đến Agent Harnesses.
1. Vibe Coding là gì?
Trong một bài viết trước đây của mình, mình đề cập tới khái niệm Vibe Coding và đi khá sâu, bài viết này không phủ nhận nội dung bài viết đó mà sẽ tách rõ ra các khái niệm và tên gọi thường được sử dụng ngày này của các chuyên gia trong lĩnh vực công nghệ,
Nói một cách chính xác Vibe Coding là cách làm phần mềm với AI theo hướng rất trực giác:
bạn mô tả ý tưởng,
AI sinh code,
bạn chạy thử,
có lỗi thì ném ngược lỗi lại cho AI sửa tiếp,
và cứ thế lặp cho đến khi trông có vẻ chạy được.
Cách làm này cực kỳ mạnh ở giai đoạn đầu vì nó làm giảm gần như toàn bộ friction giữa “ý tưởng” và “một thứ có thể demo được”. Với prototype, hackathon, landing page, side project, internal tool, hoặc one-off script, đây là một siêu năng lực thực sự. Nó giúp nhiều người xây được thứ trước đây họ không thể tự làm nổi hoặc tốn quá nhiều thời gian để làm trước đây.
Nhưng Vibe Coding có một giới hạn rất rõ: nó tối ưu cho speed of creation, chứ không tối ưu cho reliability of change.
Khi phần mềm còn nhỏ, điều đó chưa lộ rõ. Nhưng khi hệ thống bắt đầu có nhiều file, có dependency, có logic nghiệp vụ, có integration, có team cùng làm, có CI/CD, có customer impact, thì việc cứ prompt rồi sửa dần sẽ nhanh chóng gặp nhiều hạn chế và vấn đề. Lúc đó vấn đề không còn là “AI có viết ra code được không”, mà là:
code đó có đúng kiến trúc không,
có ảnh hưởng đến phần khác không,
có test được không,
có maintain nổi sau 3 tháng không,
có ai trong team thật sự hiểu hệ thống đang làm gì không.
Nói đơn giản: Vibe Coding rất mạnh để tạo ra thứ gì đó mới. Nhưng nó rất yếu khi phải thay đổi một hệ thống thật ngoài đời một cách đáng tin cậy.
2. Agentic Coding là gì?
Agentic Coding là bước trưởng thành hơn. Ở đây, AI không còn chỉ là “công cụ tạo code theo prompt”. Nó trở thành một agent có thể:
đọc codebase,
chỉnh sửa nhiều file,
chạy command,
chạy test,
tạo commit hoặc pull request,
và lặp nhiều bước để tiến gần tới một mục tiêu có thể kiểm chứng.
Các công cụ như Claude Code, GitHub Copilot coding agent, Cursor Agent, hay các hệ thống agentic khác đều đang đi theo hướng này: AI không chỉ trả lời trong một ô chat, mà hành động bên trong môi trường làm việc của developer. Nó có tool, có loop, có trạng thái, có workflow rõ ràng hơn.
Điểm quan trọng nhất là: trong Agentic Coding, vai trò của con người thay đổi.
Con người không còn chủ yếu là người gõ từng dòng code. Con người trở thành người:
viết spec,
xác định acceptance criteria,
cung cấp context,
thiết kế công cụ và quy tắc,
review diff,
quyết định thứ gì được merge,
và chịu trách nhiệm cho chất lượng hệ thống.
Vì vậy, nếu phải tóm gọn:
(a) Vibe Coding = AI giúp bạn làm nhanh thứ mới.
(b) Agentic Coding = AI giúp bạn thay đổi hệ thống một cách có kiểm soát.
3. Khác biệt cốt lõi giữa Vibe Coding và Agentic Coding
Sự khác nhau không nằm ở việc có dùng AI hay không. Nó nằm ở kỷ luật kỹ thuật.
Vibe Coding thường có đặc điểm:
prompt nhanh,
ít spec,
ít hoặc không review diff kỹ,
sửa theo vòng thử-sai,
không có nhiều guardrails,
chấp nhận rewrite nếu cần.
Agentic Coding thường có đặc điểm:
có plan hoặc spec trước, tức là bạn cần plan rõ chúng ta cần làm gì, giải quyết vấn đề từ đâu,
có objective rõ và có thể kiểm chứng,
có lint, type checking, unit test, integration test,
có review,
có rules, memory, context strategy,
có workflow để agent hành động nhưng không phá hệ thống.
Cursor gọi đây là làm việc với agent theo kiểu “verifiable goals”: agent làm tốt hơn nhiều khi nó biết rõ thế nào là đúng, thế nào là sai — thông qua typed languages, linters, tests và ràng buộc cụ thể.
Đó là một insight rất lớn:
AI coding không mạnh nhất khi ta cho nó tự do tuyệt đối. AI coding mạnh nhất khi ta xây được một môi trường mà trong đó AI có thể tự do hành động, nhưng luôn bị feedback loop kéo về đúng quỹ đạo.
4. Prompt Engineering: nền tảng đầu tiên, nhưng không còn là toàn bộ cuộc chơi
Trong giai đoạn đầu của AI, gần như mọi người đều tập trung vào Prompt Engineering.
Prompt Engineering về bản chất là nghệ thuật viết chỉ dẫn tốt hơn để model trả ra kết quả tốt hơn: rõ mục tiêu, rõ ngữ cảnh, rõ format, rõ ràng buộc, dùng delimiter, chia bước, yêu cầu output có cấu trúc, đưa ví dụ khi cần. OpenAI vẫn xem đây là điểm khởi đầu quan trọng nhất cho hầu hết use case.
Ở level thấp, Prompt Engineering thật sự tạo ra khác biệt rất lớn. Một prompt tốt có thể tốt hơn một prompt tệ rất xa.
Nhưng khi bước sang coding agents, prompt chỉ còn là một lớp trong cả hệ thống. Nó không còn giải quyết được những bài toán như:
agent nên đọc file nào trước,
tài liệu nào nên đưa vào ngữ cảnh,
khi nào cần tóm tắt bớt context,
khi nào memory nên được lưu lại,
khi nào nên gọi tool nào,
làm sao để cùng một agent hoạt động nhất quán qua nhiều phiên làm việc,
làm sao để task kéo dài hàng chục phút hoặc hàng giờ mà không “lạc trí nhớ”.
Nói cách khác:
Prompt Engineering quyết định agent sẽ suy nghĩ theo hướng nào.
Nhưng nó chưa quyết định được agent có đủ thông tin đúng để suy nghĩ hay không.
Và đó là lúc chúng ta phải nói tới lớp tiếp theo.
5. Context Engineering: năng lực thật sự bắt đầu ở đây
Anthropic mô tả Context Engineering là tập hợp các chiến lược để curate và duy trì bộ thông tin tối ưu trong context của model trong quá trình suy luận. Đây được xem như sự tiến hóa tự nhiên của Prompt Engineering.
Nếu Prompt Engineering là viết lệnh tốt, thì Context Engineering là thiết kế môi trường nhận thức cho agent.
Với coding agents, Context Engineering không chỉ là nhét thêm tài liệu vào prompt. Nó bao gồm:
file nào nên được nạp,
phần nào của repo nên bị bỏ qua,
convention nào phải được nhắc lại,
tài liệu nào nên retrieve theo yêu cầu thay vì đưa toàn bộ vào context,
kết quả tool nào nên được giữ nguyên, kết quả nào nên tóm tắt,
khi nào phải compact context,
khi nào cần spawn sub-agent để tách tác vụ,
memory nào nên được lưu giữa các phiên làm việc.
Anthropic còn chỉ ra rằng với các long-running agents, context management như compaction là cực kỳ quan trọng để agent tiếp tục làm việc hữu ích mà không bị cạn context window. Đồng thời, khi số lượng tool hoặc MCP servers tăng lên, việc bơm toàn bộ định nghĩa tool vào context sẽ làm agent chậm hơn và tốn token hơn, nên phải có chiến lược hiệu quả hơn cho tool use và memory.
Đây là điểm mà rất nhiều team hiện nay bắt đầu nhận ra:
Vấn đề không còn là model có đủ thông minh hay không.
Vấn đề là ta có đang cấp cho model đúng thông tin, đúng thời điểm, đúng định dạng hay không.
Nếu không làm tốt phần này, agent rất dễ:
lặp vô nghĩa,
sửa sai file,
phá convention,
hallucinate dependency,
hoặc simply bị “ngợp” bởi chính lượng thông tin mình đổ vào.
6. Agent Harnesses: lớp khiến agent thực sự làm việc được ngoài đời
Đây là phần nhiều người nói ít, nhưng lại cực quan trọng.
LangChain phân biệt khá rõ giữa framework, runtime và harness. Theo cách hiểu đó:
Framework giúp bạn xây agent.
Runtime giúp agent chạy một cách stateful, durable, có execution model rõ ràng.
Harness là lớp bao quanh model để biến một model “thông minh nhưng thất thường” thành một hệ thống có thể làm việc được ngoài đời.
Một agent harness tốt thường bao gồm:
prompt scaffold,
tool wiring,
planning loop,
context management,
memory,
retry/fallback,
permission model,
observability,
và đôi khi cả subagents.
Anthropic mô tả Claude Agent SDK như một general-purpose agent harness có thể dùng cho coding và cả các tác vụ dài hơi khác, với khả năng tool use, planning và context compaction. LangChain thì giới thiệu Deep Agents như một agent harness có planning, context management, filesystem backend và subagent orchestration.
Nếu cần nói thật đơn giản:
Prompt là lời hướng dẫn ban đầu.
Context là bộ thông tin mà agent đang nhìn thấy.
Harness là bộ khung vận hành khiến agent có thể làm việc ổn định, lặp được, kiểm soát được và debug được.
Và khi task kéo dài từ vài phút lên vài chục phút, rồi hàng giờ, harness gần như không còn là “nice to have” nữa, mà trở thành điều kiện cần, hay có khi nó là bắt buộc.
7. Framework, Runtime và Harness khác nhau thế nào?
Phần này rất đáng làm rõ, vì rất nhiều người đang gom tất cả vào một rổ.
Framework
Dùng khi bạn muốn xây logic agent.
Ví dụ: tổ chức multi-agent, chia role, định nghĩa flow, message passing, handoff.
AutoGen là một ví dụ tiêu biểu: Microsoft mô tả nó là framework để xây các ứng dụng agentic, nơi agents có thể tự động hành động hoặc cộng tác với con người.
Runtime
Dùng khi bạn cần execution model bền vững cho workflow nhiều bước, có state, có persistence, có khả năng resume hoặc debug tốt hơn. LangGraph là ví dụ rõ ràng cho lớp runtime này.
Harness
Dùng khi bạn không chỉ muốn xây và chạy agent, mà muốn agent thực sự hữu dụng trong công việc thực tế.
Harness lo planning, memory, context, tool execution, retries, guardrails, tracing và nhiều thứ khác.
Deep Agents và Claude Agent SDK là hai ví dụ rất sát cho lớp này.
Framework = giúp bạn xây agent
Runtime = giúp agent chạy ổn định
Harness = giúp agent làm việc được ngoài đời
8. Maturity model: đi từ Vibe tới Agentic theo từng level
Gần đây team mình dành nhiều thời gian nghiên cứu và tối ưu việc sử dụng các Agents. Và đây là cách thực tế nhất để nhìn sự trưởng thành của một team hoặc một cá nhân trong thời đại AI coding.
Level 0 — Vibe / Prototype
Mục tiêu ở level này là tốc độ. Bạn cần ra demo, POC, side project, landing page, hoặc proof-of-concept càng nhanh càng tốt.
Thứ cần nhất là:
prompt rõ,
task nhỏ,
feedback nhanh,
và chấp nhận throw-away code.
Tool phù hợp:
Claude Code,
Cursor Agent,
Codex CLI,
GitHub Copilot ở mode hỗ trợ coding cơ bản.
Skill cần:
mô tả bài toán rõ,
đọc error,
biết test tay,
chấp nhận rewrite khi cần.
Level 1 — Assisted Engineering
Bắt đầu xuất hiện kỷ luật kỹ thuật.
Bạn có:
spec ngắn,
acceptance criteria,
lint/test,
review diff,
custom rules hoặc instructions.
Cursor có Rules và Skills để cấu hình hành vi agent ở cấp project; GitHub Copilot có custom agents và agent skills để chuyên biệt hóa workflow. Đây là bước chuyển từ “chat với AI” sang “thiết kế môi trường làm việc cho AI”.
Skill cần:
viết prompt như checklist,
review như review PR,
biết từ chối giải pháp chạy được nhưng không phù hợp.
Level 2 — Context-Engineered Coding
Đây là lúc bài toán thực sự khó hơn.
Bạn bắt đầu cần:
memory files,
repo conventions,
retrieval cho docs,
context compaction,
phân tách plan và act,
rules theo project,
typed languages, tests, linters để tạo verifiable goals.
Skill cần:
biết cái gì nên đưa vào context,
cái gì nên retrieve khi cần,
cái gì nên tóm tắt,
và cái gì không nên cho model thấy ngay từ đầu.
Level 3 — Agentic Engineering / Production
Đây là level mà AI trở thành một phần trong SDLC.
Bạn sẽ cần:
harness/runtime,
CI/CD integration,
observability,
policy và permissioning,
evals,
subagents hoặc parallel agents,
long-running task support.
Skill cần:
system design,
test strategy,
guardrails,
orchestration,
và đặc biệt là khả năng đánh giá chất lượng bằng tín hiệu kiểm chứng, không chỉ bằng cảm giác.
Hiện tại thì mình đang sử dụng một bộ Claude kit khá hiệu quả, nó thực sự giúp mình thay đổi cách làm việc và tăng hiệu suất rất nhiều, ai quan tâm thì có thể tìm hiểu và mua bằng link của mình nhé, sẽ được giảm 20%: https://claudekit.cc/?ref=XTVD81PQ
9. Tool stack nên dùng ở mỗi tầng
Nếu phải nhóm lại theo công năng, tôi sẽ chia như sau.
Nhóm 1: Coding agents trực tiếp
Dành cho người muốn “đưa AI vào môi trường dev ngay lập tức”.
Claude Code: agent có thể đọc codebase, chỉnh file, chạy command, dùng tool, phù hợp cho workflow coding và cả các agent loop rộng hơn.
Cursor Agent: mạnh ở editor workflow, rules, context customization và best practices cho agentic coding.
GitHub Copilot coding agent: phù hợp nếu workflow của bạn xoay quanh GitHub issues, pull requests và review. Nó có thể tạo branch, commit, push và mở PR để bạn review.
Open Code: dạo gần đây mình cũng đang chuyển sang sử dụng OpenCode khá nhiều, mình thấy nó quản lý session khá tốt và có lớp orchestration giúp điều phối agents, tuy nhiên chưa sử dụng nhiều nên tạm chưa giới thiệu sâu.
Nhóm 2: Framework / orchestration
Dành cho người muốn tự thiết kế hệ agent.
AutoGen: framework multi-agent do Microsoft phát triển, phù hợp để tạo các ứng dụng agentic tự động hoặc human-in-the-loop.
Nhóm 3: Runtime / harness
Dành cho người muốn tiến tới agentic production.
LangGraph: runtime cho workflow nhiều bước, stateful và durable.
Deep Agents: harness tập trung vào planning, context management, memory và orchestration.
Claude Agent SDK: hướng tới long-running agents, tool use, planning và context compaction.
Không có tool nào “tốt nhất cho mọi trường hợp”.
Câu hỏi đúng hơn là: team bạn đang ở level nào, và mức độ reliability bạn cần là bao nhiêu?
10. Prompt Engineering, Context Engineering và Harness Engineering: mỗi thứ giải bài toán gì?
Đây có lẽ là phần quan trọng nhất.
Prompt Engineering
Giải bài toán instruction quality. Tức là: làm sao để model hiểu đúng bạn muốn gì.
Phù hợp nhất khi task ngắn, output rõ, ít trạng thái, ít tool.
Context Engineering
Giải bài toán information quality. Tức là: làm sao để model có đúng thông tin cần thiết, đúng lúc, đúng lượng.
Phù hợp khi task dài, nhiều file, nhiều tài liệu, nhiều tools, hoặc cần nhất quán qua nhiều phiên làm việc.
Harness Engineering
Giải bài toán execution quality.
Tức là: làm sao để agent hành động bền vững, có planning, có retries, có guardrails, có observability và có khả năng làm việc dài hơi.
Đây là một cách rất dễ nhớ:
Prompt Engineering giúp agent hiểu lệnh.
Context Engineering giúp agent hiểu hoàn cảnh.
Harness Engineering giúp agent làm việc ra kết quả.
11. Kỹ năng nào sẽ trở nên quan trọng hơn trong thời đại Agentic?
Có một điều rất thú vị: khi AI viết code giỏi hơn, giá trị của con người không giảm mà nó dịch chuyển.
Những kỹ năng ngày càng quan trọng hơn sẽ là:
viết spec và acceptance criteria rõ ràng,
thiết kế test để “máy có thể tự biết đúng/sai”,
review diff nhanh nhưng sâu,
biết chia task thành bước có thể kiểm chứng,
thiết kế context và memory,
định nghĩa rules/conventions cho codebase,
thiết kế tools tốt cho agents,
xây guardrails và permission model,
dùng observability/evals để đo chất lượng thay vì chỉ dựa vào cảm giác.
Anthropic còn nhấn mạnh rằng chất lượng của tool descriptions cũng ảnh hưởng rất lớn đến hiệu quả của agents. Nói cách khác, thiết kế tools cho agent ngày nay gần như đã trở thành một nhánh của system-level prompting.
Vì vậy, seniority trong giai đoạn này sẽ ngày càng nằm ở:
tư duy kiến trúc,
khả năng đánh giá đúng-sai,
năng lực orchestration,
và khả năng xây một môi trường làm việc tốt cho AI.
Không phải ở việc ai gõ nhanh nhất.
Kết luận
AI không chỉ thay đổi cách ta viết code, nó thay đổi cách ta tổ chức công việc kỹ thuật
Vibe Coding cho chúng ta thấy một sự thật rất mạnh: AI có thể rút ngắn khoảng cách giữa ý tưởng và phần mềm tới mức nào.
Prompt Engineering giúp chúng ta nói chuyện với model tốt hơn.
Context Engineering giúp agent có đủ hiểu biết để làm việc đúng hơn.
Harness Engineering giúp agent vận hành như một hệ thống có thể tin cậy được.
Và khi tất cả những mảnh ghép đó ghép lại với nhau, thứ xuất hiện không còn đơn thuần là AI hỗ trợ code. Nó là một cách làm phần mềm mới:
con người gõ ít hơn,
nhưng phải nghĩ rõ hơn,
thiết kế tốt hơn,
review sâu hơn,
và chịu trách nhiệm nhiều hơn.
Đó là lý do tôi tin rằng tương lai không phải là developer bị thay thế bởi AI.
Tương lai là: developer giỏi sẽ trở thành người thiết kế, điều phối và kiểm soát các agent ngày càng mạnh hơn.
Và ở điểm đó, Agentic Coding không còn là Vibe Coding nâng cấp.
Nó là một kỷ luật mới của software engineering.
Nguồn tham khảo
AI Agents & Context Engineering
Anthropic — Effective Context Engineering for AI Agents https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
Anthropic — Effective Harnesses for Long-Running Agents
https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents
Anthropic — Writing Effective Tools for Agents
https://www.anthropic.com/engineering/writing-tools-for-agents
Anthropic — Building Agents with the Claude Agent SDK
https://www.anthropic.com/engineering/building-agents-with-the-claude-agent-sdk
Anthropic — Memory Tool Documentation
https://console.anthropic.com/docs/en/agents-and-tools/tool-use/memory-tool
Anthropic — Code Execution with MCP
https://www.anthropic.com/engineering/code-execution-with-mcp
Anthropic — Building Effective Agents
https://www.anthropic.com/research/building-effective-agents
Prompt Engineering & Reasoning
OpenAI — Best Practices for Prompt Engineering
https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api
OpenAI — Prompt Engineering Guide
https://platform.openai.com/docs/guides/prompt-engineering
OpenAI — Reasoning Best Practices
https://platform.openai.com/docs/guides/reasoning-best-practices
Agent Frameworks & Infrastructure
LangChain — Agent Frameworks, Runtimes and Harnesses
https://blog.langchain.com/agent-frameworks-runtimes-and-harnesses-oh-my/
LangChain — Deep Agents
https://blog.langchain.com/deep-agents/
LangGraph Overview
https://docs.langchain.com/oss/python/langgraph/overview
Coding Agents & Developer Tools
Cursor — Best Practices for Coding with Agents
https://cursor.com/blog/agent-best-practices
Cursor Docs — Rules & Skills
https://cursor.com/docs/context/rules
GitHub — Copilot Coding Agent
https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-coding-agent
GitHub — Agent Skills & Custom Agents
https://docs.github.com/en/copilot/concepts/agents/about-agent-skills
Claude Code Documentation
https://docs.anthropic.com/en/docs/claude-code
Multi-Agent Frameworks
Microsoft AutoGen
https://github.com/microsoft/autogen
CrewAI Documentation
https://docs.crewai.com
Bài viết liên quan
Addy Osmani — Agentic Engineering
https://addyosmani.com/blog/agentic-engineering/
Simon Willison — Vibe Coding
https://simonwillison.net/2025/Mar/19/vibe-coding/





