---
title: "Planning Patterns: Chiến lược lập kế hoạch và phân rã mục tiêu tự động cho AI Agent"
description: "Phân tích các chiến lược lập kế hoạch tự động cho AI Agent: Phân rã mục tiêu (Goal Decomposition), tách biệt Lập kế hoạch - Thực thi (ReWOO/LLMCompiler), và mô phỏng World Model."
date: "2026-09-19"
author:
  name: "Nguyen Pham"
  role: "Xin chào. Mình thích lập trình và công nghệ. Đây là blog mình chia sẻ lại các kiến thức về lập trình, công nghệ."
  avatar: "http://0.gravatar.com/avatar/6fb61398e24046b34e13870dd6c357b9?s=128&d=mm&r=g"
category: "AI"
tags: ["AI", "AI Agent", "Planning", "Architecture", "ReWOO"]
coverImage: "/blog/covers/planning.png"
featured: false
readingTime: "7 min read"
---

Khác biệt cốt lõi giữa một chatbot thông thường và một **Tác tử tự chủ (Autonomous Agent)** nằm ở năng lực **Lập kế hoạch (Planning)**. Khi đối mặt với một mục tiêu mơ hồ hoặc có quy mô lớn (ví dụ: *"Hãy nghiên cứu thị trường xe điện tại Đông Nam Á và lập bản phân tích cạnh tranh chi tiết"*), một tác tử thông minh không hành động mù quáng ngay lập tức mà sẽ lập ra một lộ trình từng bước, đánh giá các điều kiện ràng buộc và linh hoạt điều chỉnh khi thực tế biến đổi.

---

## 1. Các phương pháp Lập kế hoạch chính trong AI Agent

### 1.1. Plan-and-Solve / Goal Decomposition (Phân rã mục tiêu)
Tác tử phân chia mục tiêu lớn thành một cây phân cấp các nhiệm vụ nhỏ hơn (*Hierarchical Task Network - HTN*). Mỗi nhiệm vụ con đều có điều kiện tiên quyết (pre-conditions), tài nguyên cần thiết và tiêu chí hoàn thành rõ ràng (success criteria).

### 1.2. Plan-Execute Decoupling: Tách biệt Lập kế hoạch và Thực thi (ReWOO & LLMCompiler)
- **Hạn chế của ReAct truyền thống:** ReAct lặp lại liên tục: *Nghĩ → Gọi 1 tool → Nhận kết quả → Nghĩ tiếp*. Điều này gây lãng phí lớn vì mỗi bước đều phải nạp lại toàn bộ lịch sử trò chuyện vào LLM, gây tốn kém token và chậm chạp.
- **Giải pháp tách biệt:**
  - **ReWOO (Reasoning WithOut Observation):** Mô hình lập toàn bộ đồ thị kế hoạch và danh sách các lời gọi công cụ có tham số phụ thuộc ngay từ đầu mà không cần chờ dữ liệu trả về. Sau đó, tầng thực thi chạy một mạch các công cụ để điền giá trị vào biến.
  - **LLMCompiler:** Xây dựng đồ thị có hướng không chu trình (DAG - Directed Acyclic Graph) cho các lời gọi công cụ, tự động phát hiện các công cụ độc lập để dispatch song song, giảm tới 70% độ trễ và 50% chi phí token.

### 1.3. Plan & TODO Recitation (Ghi nhớ và Đọc lại kế hoạch)
- Trong các quy trình kéo dài nhiều bước, mô hình rất dễ gặp hiện tượng **lạc mục tiêu (Goal Drift)** hoặc quên mất mình đang làm gì do ngữ cảnh quá dài (*lost-in-the-middle*).
- Kỹ thuật này yêu cầu Agent duy trì một file danh sách công việc tường minh (như `todo.md` hoặc trạng thái TODO). Ở mỗi bước, Agent chủ động cập nhật trạng thái các mục đã làm xong, đang làm và cần làm tiếp. Việc liên tục tái hiện bản kế hoạch ở cuối cửa sổ ngữ cảnh giúp duy trì sự chú ý tuyệt đối của mô hình vào mục tiêu ban đầu.

### 1.4. World-Model Simulation Planning (Mô phỏng trước khi hành động)
- Với các hành động không thể hoàn tác trong thực tế (như xóa cơ sở dữ liệu, gửi email cho khách hàng, đặt lệnh giao dịch tiền thật), Agent sử dụng một mô hình mô phỏng nội tại (*World Model*) để "tưởng tượng" trước hậu quả và trạng thái tiếp theo của môi trường trước khi bấm nút thực thi thật.

---

## 2. So sánh các mô hình Lập kế hoạch

| Tiêu chí | ReAct (Vừa nghĩ vừa làm) | ReWOO / LLMCompiler (Lập kế hoạch trước) | Plan & TODO List (Theo dõi liên tục) |
| :--- | :--- | :--- | :--- |
| **Độ trễ** | Trung bình - Cao | Thấp (do tối ưu hóa DAG song song) | Phụ thuộc độ dài tác vụ |
| **Chi phí Token** | Cao (nạp ngữ cảnh lặp lại) | Thấp (tối ưu hóa biến) | Vừa phải |
| **Tính linh hoạt** | Rất cao (thích ứng từng bước) | Trung bình (cần tái lập kế hoạch nếu có biến cố) | Rất cao (chống lạc đề cực tốt) |
| **Phù hợp nhất cho** | Nhiệm vụ thăm dò, chưa rõ kết quả | Nhiệm vụ có cấu trúc rõ ràng, nhiều API | Dự án phần mềm dài hạn, quy trình phức tạp |

---

## 3. Lời khuyên triển khai thực tế

1. **Đừng "lập kế hoạch quá đà" (Avoid Over-planning):** Nếu một tác vụ chỉ gồm 2 bước đơn giản, việc tạo đồ thị DAG phức tạp chỉ làm tăng độ phức tạp của mã nguồn.
2. **Luôn có cơ chế Tái lập kế hoạch (Dynamic Replanning):** Kế hoạch hoàn hảo trên lý thuyết có thể đổ vỡ ngay ở bước thực thi đầu tiên khi API báo lỗi. Hãy thiết kế cơ chế để Agent biết khi nào cần vứt bỏ kế hoạch cũ để lập ra lộ trình thay thế phù hợp hơn.
