Từ "làm" sang "lên kế hoạch & tự đánh giá". Chain-of-Thought, Plan-and-Execute, Actor-Critic, Reflexion. Chapter 4 + 6 sách Gulli.
Agent 1-shot vs task phức tạp
CoT · Plan-and-Execute · Tree of Thought
Self-critique · Actor-Critic · Reflexion
Code, framework, anti-pattern
5 điểm nhớ + homework
• Task 20 bước ⇒ nhảy vào step 3 quên step 1.
• Không biết mình đã làm gì ⇒ lặp lại.
• Sai giữa chừng ⇒ sai luôn output cuối.
• Không so sánh option ⇒ chọn giải pháp đầu tiên nghĩ ra.
• Không tự phát hiện lỗi ⇒ user chấm điểm mới biết.
• Plan trước — liệt kê bước, ước lượng effort.
• Track progress — TodoWrite/plan mode.
• Reflect sau mỗi step lớn — đúng hướng chưa?
• Explore options (ToT) — nhánh nhiều, chọn best.
• Self-critique — chấm output rồi sửa.
Đổi token & latency lấy chất lượng output. Không phải task nào cũng cần — nhưng task hard thì phải có.
Prompt "Let's think step by step" ⇒ model tự sinh reasoning inline. Rẻ nhất, đơn giản nhất.
Wei et al., 2022. Dùng cho math, logic ngắn.
2 LLM tách vai trò: Planner sinh plan trước, Executor thực thi từng step. Có thể re-plan.
Wang et al., 2023. LangGraph, Claude Code TaskCreate/Update.
Nhánh nhiều option ở mỗi bước, score và chọn nhánh best. Đắt nhất, dùng cho task cực khó.
Yao et al., 2023. Game solving, code hard.
Chọn theo độ khó task. Đừng dùng ToT cho task CoT xử được — cost N² lần.
Đọc goal ⇒ sinh plan (list of steps).
Chạy step[0], dùng tool nếu cần.
Ghi kết quả, đánh dấu done.
Còn step ⇒ loop. Fail nhiều ⇒ Planner sinh plan mới.
Claude Code implement pattern này bằng TaskCreate + TaskUpdate: agent quản lý todo list, tick từng task khi hoàn thành.
Sau khi sinh output, prompt "Đánh giá lại và sửa nếu có lỗi". Cùng 1 LLM.
Rẻ, dễ; nhưng có "self-bias".
2 LLM tách vai: Actor sinh, Critic phê bình theo rubric. Actor sửa. Loop 1-3 lần.
Critic có thể là model khác family ⇒ giảm bias.
Fail ⇒ sinh lesson ghi vào memory ⇒ retry task với lesson trong context. Học liên phiên.
Shinn et al., 2023. Agent tự cải thiện.
Luôn cap reflection loop <= 3 iteration. Vô hạn = burn tokens, marginal gain nhỏ.
# Step 1: Planner sinh plan (list of concrete steps) plan = planner_llm.generate( prompt=f"Goal: {goal}\nSinh plan 3-7 bước concrete, JSON list.", schema=list[Step], ) results = [] for i, step in enumerate(plan): # Step 2: Executor chạy step out = executor_llm.run(step, tools=all_tools, context=results) # Step 3: Critic chấm điểm (Actor-Critic) review = critic_llm.score( prompt=f"Step: {step}\nOutput: {out}\nRubric: correct, useful, safe", schema=Review, # {score: 1-10, issues: [...]} ) if review.score < 7 and reflection_budget > 0: # Reflect: sinh lesson, retry step lesson = critic_llm.reflect(out, review.issues) out = executor_llm.retry(step, feedback=lesson) reflection_budget -= 1 results.append(out) # Step 4: Re-plan nếu step fail nặng if review.score < 4: plan = planner_llm.replan(goal, done=results, failed_at=i)
| Framework | Planning | Reflection | Ghi chú |
|---|---|---|---|
| LangGraph | Plan node + Replan edge | Critic subgraph | State machine rõ, debug tốt |
| CrewAI | Process.hierarchical |
Manager agent review | Role-based, code ngắn |
| Google ADK | PlanRunReflect |
Built-in reflection | Native trên Vertex |
| Claude Code | TaskCreate/Update, Plan mode |
Skill review + hook | Todo-driven, in-terminal |
Draft → phê bình mạch/giọng/rõ ràng → viết lại tới chuẩn.
Viết code → chạy test / static analysis → sửa lỗi.
Đề xuất bước → đánh giá có tiến gần lời giải không → back-track.
Tạo tóm tắt → đối chiếu với ý chính gốc → tinh chỉnh chính xác.
Sinh plan → mô phỏng execute → check tính khả thi → chỉnh.
Rà lịch sử chat trước khi trả lời → đúng ý user mới nhất, mạch lạc.
Mô hình Producer-Critic tách agent riêng ⇒ tăng tính khách quan. Chi phí đi kèm: latency, token, nguy cơ vượt cửa sổ context.
Nguồn: Cẩm nang thực hành xây dựng HTTM (VN Gulli Ch.4).
Analyst · PM · Architect · Dev · QA — mỗi role 1 agent Skill.
PRD → Architecture doc → Story shards → Implement → Review.
Mỗi role tự-critique + role kế review trước khi handoff.
Plan văn bản-hoá ⇒ verifiable, có thể pause & resume. Handoff structured qua file MD (giống OpenSpec).
Quy trình quá dày ⇒ scope creep. Role chồng chéo ⇒ agent tranh cãi. Cần rubric & owner rõ mỗi phase.
Tham chiếu: BMAD METHOD (VN) · kết hợp Planning (Ch.6) + Multi-Agent (Ch.7).
# Plan mode — read-only claude --permission-mode plan # Trong interactive: # Shift+Tab để đổi mode # Plan → Review → Edit # TaskCreate/Update tool # tự động dùng khi: # - task ≥ 3 bước # - user yêu cầu plan # Reflection qua subagent mkdir .claude/agents # code-reviewer.md # có tools: Read, Grep claude "Viết feature X, rồi gọi code-reviewer review lại"
# Composer Plan (bêta) cursor . # Cmd+I → Composer # Toggle "Plan first" # AI liệt kê bước # User review → Accept # Multi-file refactor plan # Chọn scope Composer # AI sinh diff preview # Approve từng hunk # Reflection tự động # Test-driven mode: # AI viết code + test # Fail → retry với feedback # Background agent cursor-agent \ --task "refactor auth"
# Thinking mode gemini -m gemini-2.5-pro \ -p "Lập plan chi tiết migration DB Postgres" # Extended thinking # pro model có deep think # tự phân rã CoT # Reflection loop shell reflect_loop() { for i in 1 2 3; do OUT=$(gemini -p "$1") SCORE=$(gemini -p \ "Chấm 1-10: $OUT") [ $SCORE -ge 8 ] && break done echo "$OUT" } # Dùng: reflect_loop "..."
Plan mode Claude Code Windows: Nhấn Shift+Tab trong terminal Windows Terminal / VS Code terminal. WSL2 hỗ trợ đầy đủ.
Reflection loop bash: Linux/macOS chạy trực tiếp. Windows: cài Git Bash hoặc WSL để chạy shell function trên.
Planning + Reflection = đổi token & latency lấy chất lượng. Chỉ dùng khi task đủ khó.
3 mức Planning: CoT (rẻ) → Plan-and-Execute (chuẩn) → ToT (đắt). Match độ khó.
3 mức Reflection: Self-critique · Actor-Critic · Reflexion. Loop <= 3 luôn.
Critic tốt nhất là model khác family hoặc rubric objective. Tránh self-bias.
Claude Code plan mode + TaskCreate = Plan-and-Execute out-of-the-box. Học từ đó.