PLAYBOOK SDD ADD & CODEX | Chuyên đề cho chuyên gia công nghệ về bản chất kỹ thuật của AI Agent: cách agent nhận thức trạng thái, suy luận kế hoạch, hành động qua tool, nhận phản hồi môi trường và tự điều chỉnh.
Chương 9
AI Agent Thực Sự Là Gì?
Vượt Xa Autocomplete - Reasoning, Planning, Acting
Từ marketing term đến cơ chế kiến trúc
Chín chương trước đã dựng framework SDD. Chương này lùi một bước để trả lời câu hỏi nền tảng: AI Agent thực sự là gì ở góc nhìn kiến trúc kỹ thuật, không phải khẩu hiệu.
Điểm cốt lõi cần hiểu: cơ chế nào cho phép agent đọc file, chạy test, tự sửa lỗi và lặp lại đến khi đạt mục tiêu; khi nào agent đang thật sự suy luận và khi nào nó chỉ đang đoán theo pattern.
Cấu trúc Chương 9
9.1 Định nghĩa Agent
Perception -> Reasoning -> Action, feedback loop, so sánh với autocomplete và chat.
9.2 Kiến trúc Agentic Coding
Agent core, tool layer, MCP, checkpoint, state management.
9.3 Mức độ Autonomy
Conversational, Agentic, Autonomous và vai trò Human-in-the-Loop.
9.4 Demo thực tế
Session 6 phases, đọc logs, internal monologue.
9.5 Giới hạn hiện tại
Token burn, loop trap, dependency model, context cliff, API hallucination.
Kết chương
Tổng hợp key concepts và chuyển tiếp sang Chương 10.
Định nghĩa Agent
Perception -> Reasoning -> Action và Environmental Feedback
AI Agent khác chatbot ở đâu?
Từ "agent" bị lạm dụng. Định nghĩa kỹ thuật chính xác: một AI Agent phải có khả năng nhận thức trạng thái môi trường (Perception), lập kế hoạch theo trạng thái (Reasoning), thực thi hành động (Action), rồi điều chỉnh dựa trên phản hồi (Feedback Loop) cho đến khi đạt mục tiêu.
- Chatbot nhận phản hồi chủ yếu từ con người.
- Agent nhận thêm phản hồi từ môi trường thực thi.
- Feedback gồm lỗi terminal, test result, API response, command output.
Vòng lặp Plan -> Execute -> Observe -> Adjust
- PERCEIVE: đọc context và trạng thái môi trường hiện tại.
- REASON: dùng inference-time compute để lập kế hoạch.
- ACT: gọi tool để sửa file, chạy lệnh, gọi API, thao tác MCP.
- OBSERVE: nhận test output, lỗi runtime, response từ hệ thống.
- ADJUST: tái lập kế hoạch theo phản hồi và lặp lại.
Inference-time Compute: Agent nghĩ như thế nào?
Inference-time Compute giải thích vì sao agent hiện đại thông minh hơn simple autocomplete. Thay vì sinh output ngay, model dành compute để suy luận rồi mới commit kết quả.
Claude Sonnet hay o1 có thể chậm hơn GPT-3.5 ở tốc độ phản hồi tức thời nhưng thường chất lượng tốt hơn cho task nhiều bước, logic phức tạp, debugging đa file.
Extended Thinking trong Claude tạo thinking tokens ẩn trước output, hữu ích cho phân tích vấn đề, cân nhắc nhiều approach và phát hiện edge case; đổi lại token cost thường tăng 2-5 lần.
Bảng cơ chế suy luận
| Cơ chế | Tên | Hoạt động | Model điển hình | Use case tốt nhất |
|---|---|---|---|---|
| Fast answering | Standard generation | Token -> token trực tiếp | GPT-3.5, Claude Haiku | Câu trả lời nhanh, task đơn giản |
| Chain-of-thought | Step-by-step | Viết reasoning steps rồi kết luận | GPT-4, Claude Sonnet | Toán nhiều bước, logic problem |
| Extended thinking | Internal monologue | Thinking tokens ẩn trước output | Claude Sonnet (thinking mode) | Planning phức tạp, code debugging |
| Search-augmented | Test-time search | Generate -> verify -> backtrack | o1, o3, Claude Opus | Formal verification, proofs |
mà là slow thinking machine."
Autocomplete -> Chat -> Agent
Ba thế hệ công cụ coding AI có năng lực kiến trúc khác nhau: autocomplete chỉ gợi token kế tiếp; conversational tạo code/text theo prompt; agent có khả năng lập kế hoạch, thực thi tool, nhận phản hồi và tự sửa lỗi theo vòng lặp.
Bảng so sánh Autocomplete - Chat - Agent
| Tiêu chí | Autocomplete | Chat | Agent |
|---|---|---|---|
| Hành động | Suggest next tokens | Generate code/text block | Plan + execute + loop |
| Tự lập kế hoạch | Không | Không | Có (multi-step) |
| Đọc codebase | Chỉ file hiện tại | Chỉ khi paste vào | Tự đọc nhiều files |
| Thực thi lệnh | Không | Không | Terminal, test runner |
| Environmental feedback | Không | Chỉ từ user | Errors, test results |
| Tự sửa lỗi | Không | Khi user báo | Tự detect + fix loop |
| Error recovery | Không có | Không có | Rollback + checkpoint |
| Ví dụ tool | Copilot inline, Tabnine | ChatGPT, Claude.ai | Cline, Claude Code, Cursor |
| Context window | ~2K | 8K-128K | 200K+ qua tools |
Environmental Feedback là khác biệt then chốt
Khi chạy pytest và nhận lỗi AssertionError, IntegrityError, agent không dừng để hỏi tiếp mà tự parse output, trace root cause, tạo bản sửa và chạy test lại.
FAILED test_cart_merge_max_qty: assert 5 == 3 FAILED test_concurrent_add: duplicate key value violates unique constraint 1 passed, 2 failed in 0.23s
Kiến trúc Agentic Coding
Agent core, tool layer, feedback processing và checkpoint
Kiến trúc tổng quan
Agentic coding system không chỉ là "LLM + khả năng chạy code". Đây là pipeline gồm model lõi, context management, tool orchestration, state tracking, feedback parsing và inject lại context cho vòng kế tiếp.
- Agent Core: LLM engine + context window (system prompt, AGENTS/CLAUDE, history, tool outputs, file contents).
- Tool Layer: file ops, terminal, web search, MCP servers, checkpoint system.
- Feedback Processing: parse stdout/stderr, phân loại lỗi, tính state diff.
- Kết quả được bơm ngược vào context để tự sửa trong iteration kế tiếp.
Sơ đồ kiến trúc: các khối vận hành
- LLM Engine thực hiện inference-time compute và phát sinh tool calls.
- Context Window chứa prompt hệ thống, tài liệu quy ước, lịch sử và kết quả công cụ.
- Tool Layer kết nối file, terminal, MCP servers (GitHub/Jira/DB/Slack).
- Feedback Processing chuẩn hóa log thực thi để vòng lặp tiếp theo ra quyết định tốt hơn.
Tool Layer và vai trò của MCP
Trước MCP, mỗi tool phải tích hợp riêng cho từng agent. MCP chuẩn hóa giao tiếp kiểu "write once, use everywhere": bất kỳ server nào implement protocol đều dùng lại được trên host tương thích.
Trong SDD, agent cần đọc spec từ issue tracker, đọc code từ filesystem, chạy test ở terminal và cập nhật trạng thái project. MCP là lớp chuẩn hóa để các luồng này nối liền.
Bảng Tool Layer theo category
| Tool category | Capabilities | Ví dụ MCP Server | Khi agent dùng |
|---|---|---|---|
| File System | read, write, list, search | Filesystem MCP | Đọc codebase, edit files, tìm patterns |
| Terminal | execute commands, capture output | Native (built-in) | Run tests, build, git, CLI tools |
| Web Search | query, fetch pages | Brave Search MCP | Tìm docs, error solutions, API specs |
| Version Control | git log, diff, blame, PR | GitHub MCP | Trace history, tạo PR, review changes |
| Project Mgmt | issues, tasks, sprints | Jira/Linear MCP | Đọc requirements, update status |
| Database | query, schema inspect | PostgreSQL MCP | Verify data, check migrations |
| Communication | send messages, search | Slack MCP | Alert hoàn thành, escalate issues |
Thay vì mỗi agent tự build integration,
mọi agent dùng lại cùng một protocol."
Extended Thinking trong hành động
Khi nhận task "Fix failing cart merge test", agent không phản hồi ngay. Nó đọc failure, đối chiếu SPEC, so sánh approach, dự báo side effects, rồi mới quyết định sửa logic cộng quantity thành lấy max.
<thinking> Approach 1: change add -> max Approach 2: verify test vs spec SPEC §3 says keep max(guest_qty, user_qty) => Test đúng, code sai. Fix CartMergeService.merge(). </thinking>
Checkpoint System và State Management
Ba tầng checkpoint
- Tầng 1: Git-based checkpoint trước action lớn.
- Tầng 2: Tool snapshot trước khi overwrite file.
- Tầng 3: Session checkpoint để rewind hội thoại.
Workflow an toàn
- Quy tắc bắt buộc: checkpoint -> action, không làm ngược.
- Khi đi sai hướng: rollback checkpoint và thử approach mới.
- Khi context đầy: summarize, clear, re-inject essentials.
Checkpoint workflow thực thi
create_checkpoint -> git stash / commit state hiện tại
AGENT: \"Tôi sắp xóa nhiều file. Checkpoint tại abc123.\"
\"Rollback: git checkout abc123\"
Nếu đi sai hướng:
git reset --hard abc123
Agent restart với approach mới.
Manual rollback:
- Cline: Ctrl+Z / Restore checkpoint
- Claude Code: /restore hoặc git reset
Bảng State type - TTL - Risk
| State type | Lưu ở đâu | TTL | Risk nếu mất |
|---|---|---|---|
| Working memory (current plan) | Context window | Session | Agent quên plan, re-plan sai |
| File changes | Filesystem | Permanent | Mất code nếu không checkpoint |
| Tool outputs | Context window (appended) | Session (truncated) | Agent quên kết quả test cũ |
| Conversation history | Context window | Session | Context coherence bị break |
| Cross-session memory | MCP Memory Server | Configurable | Agent không nhớ preferences |
Agentic vs Conversational vs Autonomous
Ba mức autonomy, ba mức rủi ro và oversight
Three-tier Autonomy Spectrum
Tier 1 - Conversational
Pattern: Human input -> AI output -> Human review. Error recovery gần như không có, con người phải phát hiện và phản hồi lỗi.
Tier 2 - Agentic
Pattern: Human intent -> AI executes -> Human gates. AI tự sửa lỗi qua feedback loop; đây là sweet spot hiện tại.
Tier 3 - Autonomous
Pattern: High-level goal -> AI thực thi toàn bộ (đọc ticket, sửa code, test, tạo PR, merge). Hiện vẫn phù hợp hơn cho tác vụ cô lập và dễ rollback.
Bảng so sánh Conversational - Agentic - Autonomous
| Tiêu chí | Conversational | Agentic | Autonomous |
|---|---|---|---|
| Human input | Mỗi bước | Chỉ tại approval gates | Chỉ high-level goal |
| Tự lên kế hoạch | Không | Multi-step plan | Long-horizon plan |
| Error recovery | Human phải báo | Self-detect + fix | Automated rollback |
| Rủi ro khi sai | Thấp | Vừa (gate controlled) | Cao (no human gate) |
| Traceability | Manual review | Log + checkpoint | Cần audit system |
| Cost efficiency | Human bottleneck | 90% AI, 10% human | Highest automation |
| Tool examples | ChatGPT, Claude.ai | Cline, Claude Code, Cursor | AI Software Engineers (2025+) |
| Best for | Simple tasks | Feature dev, bug fix | Maintenance, scheduled tasks |
Human-in-the-Loop: Con người là Gatekeeper
Một hiểu lầm phổ biến: nghĩ HITL là dấu hiệu AI chưa đủ mạnh. Thực tế, đây là thiết kế chủ ý để kiểm soát risk tại các điểm khó đảo ngược.
- Agent làm 90% phần nặng: đọc codebase, phân tích, plan, viết code, chạy test, tự sửa lỗi.
- Human can thiệp tại điểm no-return: delete, deploy, lệnh nguy hiểm, thay đổi shared history.
Cline approval gate configuration
{
"cline.alwaysAllowReadOnly": true,
"cline.alwaysAllowWrite": false,
"cline.alwaysAllowExecute": false,
"cline.autoApproveEnabled": false,
"cline.allowedCommands": ["pytest", "ruff", "mypy", "git status", "git diff"]
}
Approval Gate Design
| Action | Risk level | Gate type | Lý do cần human |
|---|---|---|---|
| Read files, search web | Thấp | Auto-approve | Không đổi state, không side effects |
| Write file (small edit) | Vừa | Show diff, 1-click approve | Reversible nhưng cần eyeball check |
| Delete files | Cao | Explicit confirm + checkpoint | Khó hoàn tác, nguy cơ mất dữ liệu |
| Run terminal commands | Tùy lệnh | Show command, approve trước run | Lệnh như rm -rf cần human review |
| Git commit | Vừa | Show message + diff | Ảnh hưởng shared history |
| Deploy / Release | Cao | Full review + explicit approve | Production impact, khó undo |
| Call external APIs | Tùy API | Show request details | Cost, side effects, rate limits |
Agentic sweet spot = AI làm 90%, human gates 10% risk."
Demo: Agent Làm Việc Thực Tế
Walkthrough session thật, có lỗi và tự sửa
Session Walkthrough - Phases 1 đến 3
Phase 1 - Perception: Agent đọc cấu trúc `src/cart/`, mở `service.py`, `models.py`, và `SPEC.md` để hiểu merge rule: cùng product+variant thì giữ max(qty).
Phase 2 - Reasoning: Agent lập plan với 5 scenarios: merge qty theo max, thêm guest-only item, giữ user-only item, refresh snapshot_price, xóa guest cart sau merge.
Phase 3 - Action: Agent tạo `merge_service.py`, viết tests cho 5 tình huống, chạy `pytest` để quan sát kết quả thực thi.
Session Walkthrough - Phases 4 đến 6
Phase 4: Observe
Test fail với `Cart.add_item` không tồn tại và transaction không hợp với unit-test context.
Phase 5: Reasoning
Agent tự phân tích: chuyển transaction lên CartService để đúng orchestration pattern, giữ MergeService thuần logic.
Phase 6: Adjust
Agent sửa `merge_service.py`, `service.py`, update mocks test, chạy lại test.
Kết quả: 5/5 merge tests pass; 23/23 cart tests pass.
Files changed: tạo `merge_service.py`, cập nhật `service.py`, tạo test file.
Agent Log Analysis
Đọc logs cho biết agent đã làm gì, vì sao làm, lúc nào sai. Các mốc quan trọng: TASK_START, TOOL_CALL, THINKING duration, HUMAN_APPROVED, exit_code, TASK_COMPLETE.
[10:23:05] read_file SPEC.md -> Agent đọc spec [10:23:08] THINKING duration 3.2s [10:23:18] execute_command pytest -> exit_code 1 [10:23:19] THINKING duration 4.1s (analyze error) [10:23:28] execute_command pytest -> exit_code 0 [10:23:30] TASK_COMPLETE total_tokens 22450
Red Flags trong Agent Log
| Log pattern | Ý nghĩa | Action cần làm |
|---|---|---|
| Thinking duration > 10s liên tục | Agent stuck hoặc over-analyzing | Chia task nhỏ hơn |
| Cùng tool call lặp > 3 lần | Loop trap | Interrupt, check root cause thủ công |
| context_tokens > 150K | Context sắp đầy | Summarize và restart session |
| exit_code:1 > 5 lần liên tiếp | Agent không fix được test | Human review spec + code |
| TOOL_CALL không có THINKING trước | Acting without reasoning | Đánh giá lại scope hoặc prompt |
| HUMAN_DENIED nhiều lần | Đề xuất hành động quá rủi ro | Điều chỉnh task scope |
Internal Monologue: vì sao chọn A thay vì B
Extended Thinking thường ẩn nhưng có thể bật trong Cline (`cline.showThinking`) hoặc qua API (`thinking: enabled`) để quan sát logic ra quyết định.
{
"cline.showThinking": true,
"cline.budgetTokens": 5000
}client.messages.create(
model="claude-sonnet-4-5",
thinking={"type":"enabled","budget_tokens":5000}
)Typical thinking excerpt (Redis vs MatView)
Approach A: Redis cache TTL 5 phút Approach B: PostgreSQL materialized view SPEC: p95 < 200ms, DB 50K products Redis ~1ms, cost ~$20/month, cần cache invalidation MatView ~5ms, cost $0, auto-refresh PLAN.md: hệ thống đã có Redis cluster => Chọn Redis: không thêm hạ tầng, team đã quen vận hành.
nên chọn Redis thay vì materialized view.
Không phải cảm tính, mà là reasoning chain có kiểm chứng."
Giới hạn của Agent Hiện tại
Đặt kỳ vọng đúng để thiết kế workflow bền vững
Kỳ vọng đúng = kết quả tốt hơn
Ngay cả model mạnh như Claude Opus hay GPT-4o vẫn có giới hạn từ kiến trúc. Mục tiêu không phải nản, mà là thiết kế quy trình phù hợp với điểm mạnh và điểm mù của agent.
Token Burn: chi phí ẩn của Agentic Workflow
Mỗi thao tác đọc file, chạy command, nhận output, reasoning đều đốt token. Task tưởng nhỏ có thể lên 50K-200K token.
Token budget breakdown chi tiết
Bước 1 - Initial context: AGENTS.md + CLAUDE.md: 4,000 SPEC.md: 2,500 PLAN.md + TASKS.md: 1,500 Total setup: 8,000 tokens Bước 2 - Dynamic: Read source files: 12,500 Thinking: 4,500 Generate code: 4,000 Test output: 2,400 Error analysis: 2,000 Total dynamic: ~25,400 tokens
Chiến lược tối ưu token cost
| Kỹ thuật | Token saving | Trade-off |
|---|---|---|
| Dùng Haiku cho boilerplate tasks | 70-85% cheaper | Chất lượng thấp hơn cho logic phức tạp |
| Limit file reads (chỉ relevant) | 30-50% | Cần tổ chức code tốt |
| Summarize context trước khi bắt đầu | 20-40% | Có thể miss detail |
| Tắt Extended Thinking cho task đơn giản | 20-30% | Giảm reasoning quality |
| Set hard token limit per task | Không giảm trực tiếp | Task có thể chưa hoàn tất |
| Break large tasks thành atomic | 15-25% mỗi task | Tăng overhead phiên làm việc |
Loop Trapping: khi agent bị kẹt vòng lặp
Loop trap xuất hiện khi fix lỗi A sinh lỗi B rồi quay lại A. Mỗi vòng trông khác nhau cục bộ nhưng không tiến bộ toàn cục.
Dấu hiệu nhận biết
- Cùng test fail hơn 3 lần liên tiếp.
- Edit cùng file hơn 5 lần.
- Thinking time tăng dần và token tăng nhanh.
- Xuất hiện thông điệp kiểu "Approach 5".
Cách xử lý
- Interrupt ngay, đọc trạng thái hiện tại.
- Human phân tích root cause (spec mơ hồ/constraint thiếu/dependency issue).
- Cung cấp prompt làm rõ constraint cụ thể, không chỉ "fix test".
- Nếu >5 lần fail: rollback và viết lại theo hướng mới.
Prompt đúng để phá loop
Prompt mơ hồ khiến agent tiếp tục loop.
Rule of thumb: hơn 5 lần failed attempts thường là root-cause issue (spec/architecture), không còn là incremental fix.
Model Dependency: chất lượng bị chặn bởi model lõi
Cline, Claude Code, Cursor đều là orchestration layer. Trần chất lượng vẫn phụ thuộc năng lực model bên dưới. Agent architecture tốt + model yếu vẫn có thể tệ hơn architecture đơn giản + model mạnh.
Bảng model cho agentic tasks
| Model | Strengths | Weaknesses | Best for agentic tasks |
|---|---|---|---|
| Claude Sonnet | Code quality, reasoning, spec compliance | Cost cao hơn Haiku | Business logic, spec implementation |
| Claude Haiku | Nhanh, rẻ | Yếu ở multi-step reasoning | Boilerplate, task đơn giản |
| GPT-4o | Multi-modal, broad knowledge | Kém nghiêm spec hơn | General coding, docs |
| Llama 3 (local) | Privacy, không API cost | Yếu ở reasoning phức tạp | Sensitive code, offline work |
| o1/o3 | Deep reasoning, math mạnh | Rất chậm, rất đắt | Algorithm design, formal verification |
Các giới hạn quan trọng khác
Context Window Cliff
Đến ngưỡng (~180K), phần đầu context bị rơi đột ngột: agent quên constraints, hỏi lại dữ kiện cũ, sinh code lệch pattern. Cần summarize định kỳ và chia task nhỏ.
API Hallucination
Agent có thể bịa method không tồn tại (`set_with_ttl` thay vì `setex`). Phòng tránh bằng docs/version trong context, ví dụ thật trong spec và bắt buộc chạy code sau generate.
Tóm tắt giới hạn và cách đối phó
| Giới hạn | Biểu hiện | Mitigation | Khó tránh khi |
|---|---|---|---|
| Token Burn | Chi phí cao bất ngờ | Hard limits, task decomposition, Haiku cho task đơn giản | Refactor đa file phức tạp |
| Loop Trap | Agent không converge | Clarification, rollback, human intervention | Spec mơ hồ về constraints |
| Model Dependency | Quality ceiling | Chọn model đúng loại task | Budget ép dùng model yếu |
| Context Cliff | Agent "quên" | Summarization định kỳ, chia task nhỏ | Session > 4h trên codebase phức tạp |
| API Hallucination | Code fail runtime | Run code ngay, đưa docs vào context | Library mới/ít phổ biến |
| Long-range Blind | Hidden breaking changes | Run full test suite, không chỉ unit test | Codebase lớn, nhiều dependency |
Summary / Takeaways Chương 9
| Phần | Key concept | Điểm cốt lõi |
|---|---|---|
| 9.1 Định nghĩa | Perception -> Reasoning -> Action | Environmental feedback là khác biệt so với chatbot |
| 9.1 Inference-time | Extended Thinking | Agent nghĩ trước khi làm, tốn token nhưng tăng chất lượng |
| 9.2 Kiến trúc | Tool Layer + MCP | Chuẩn hóa agent tools, tái sử dụng đa host |
| 9.2 Checkpoint | State management | Checkpoint trước action để rollback an toàn |
| 9.3 Autonomy | Three-tier spectrum | Agentic là sweet spot cho phần lớn workflow hiện tại |
| 9.3 HITL | Human-in-the-Loop | Gate là cơ chế kiểm soát rủi ro, không phải điểm yếu |
| 9.4 Demo | Fail -> Observe -> Fix | Giá trị thật nằm ở self-correction, không phải happy path |
| 9.4 Log analysis | Reading logs | exit_code, thinking duration, token count là tín hiệu debug |
| 9.5 Limits | Token burn + loop trap | Thiết kế workflow để né điểm yếu thay vì chống lại |
Chuyển tiếp Chương 10
nguyên tắc nào giúp hệ thống không conflict và không khuếch đại sai sót?"
LinhNDM — Nguyễn Đình Mạnh Linh | Bản trình chiếu này giữ đầy đủ nội dung trọng tâm của Chương 9 theo định dạng dành cho chuyên gia công nghệ.