S-08 · TRACK 03 · PATTERNS

Planning & Reflection

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.

Buổi 8 — Chúng ta sẽ đi qua gì?
🚩

01 · Vì sao cần?

Agent 1-shot vs task phức tạp

📌

02 · Planning

CoT · Plan-and-Execute · Tree of Thought

🔍

03 · Reflection

Self-critique · Actor-Critic · Reflexion

💻

04 · Thực chiến

Code, framework, anti-pattern

🎯

05 · Takeaways

5 điểm nhớ + homework

01

Vì sao cần
Planning & Reflection?

Agent one-shot vỡ ở task phức tạp

One-shot — nói xong là làm

• 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.

Planning + Reflection

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ó.

02

Pattern 1 · Planning
CoT · Plan-and-Execute · ToT

3 mức độ Planning
💬

Chain-of-Thought (CoT)

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.

📋

Plan-and-Execute

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.

🌲

Tree of Thought (ToT)

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.

Sơ đồ Plan-and-Execute
Step 1

Planner

Đọc goal ⇒ sinh plan (list of steps).

Step 2

Executor

Chạy step[0], dùng tool nếu cần.

Step 3

Update State

Ghi kết quả, đánh dấu done.

Loop

Re-plan?

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.

03

Pattern 2 · Reflection
Agent tự phê bình chính mình

3 mức độ Reflection
🔍

Basic Self-Critique

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".

🎭

Actor-Critic

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.

🔄

Reflexion

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ỏ.

04

Thực chiến
Code · Framework · Anti-patterns

Code — Plan-and-Execute + Reflection
plan_execute_reflect.py
# 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 implement thế nào?
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
Anti-patterns thường gặp

❌ Planning

  • Plan quá chi tiết — 30 step tí xíu, không executable.
  • CoT verbose — nhồi chain-of-thought vào context làm phình token.
  • Không update plan — sự thật đổi, plan cứng nhắc.
  • ToT cho task đơn — cost N², marginal 0.

❌ Reflection

  • Vô limit loop — reflect > reflect > reflect, không cap.
  • Self-bias — critic cùng model, "yêu" chính mình.
  • Rubric mơ hồ — "hay không" ⇒ score vô nghĩa.
  • Không cap budget — token tăng bùng nổ.
Case VN 🇳🇻 — 6 lĩnh vực Reflection thực chiến

1. Viết sáng tạo

Draft → phê bình mạch/giọng/rõ ràng → viết lại tới chuẩn.

💻

2. Sinh & debug code

Viết code → chạy test / static analysis → sửa lỗi.

🧠

3. Giải quyết vấn đề

Đề xuất bước → đánh giá có tiến gần lời giải không → back-track.

📚

4. Tóm tắt & tổng hợp

Tạo tóm tắt → đối chiếu với ý chính gốc → tinh chỉnh chính xác.

📌

5. Lập kế hoạch

Sinh plan → mô phỏng execute → check tính khả thi → chỉnh.

💬

6. Agent hội thoại

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).

Case VN 🇳🇻 — BMAD METHOD: Planning cấp đội
BMAD METHOD — framework VN kết hợp đội ngũ AI chuyên biệt + quy trình có cấu trúc + vòng đời dự án hoàn chỉnh. Đây là ví dụ Plan-and-Execute cấp đội (không chỉ 1 agent).
Phase 1

Đội chuyên biệt

Analyst · PM · Architect · Dev · QA — mỗi role 1 agent Skill.

Phase 2

Quy trình cấu trúc

PRD → Architecture doc → Story shards → Implement → Review.

Phase 3

Reflection theo phase

Mỗi role tự-critique + role kế review trước khi handoff.

🎯 Điểm mạnh

Plan văn bản-hoá ⇒ verifiable, có thể pause & resume. Handoff structured qua file MD (giống OpenSpec).

⚠ Bẫy hay gặp

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).

CLI thực chiến — Planning & Reflection

🤖 Claude Code

# 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"

⚡ Cursor

# 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"

💎 Gemini CLI

# 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.

05

Takeaways
& homework

5 điều nhớ
1

Planning + Reflection = đổi token & latency lấy chất lượng. Chỉ dùng khi task đủ khó.

2

3 mức Planning: CoT (rẻ) → Plan-and-Execute (chuẩn) → ToT (đắt). Match độ khó.

3

3 mức Reflection: Self-critique · Actor-Critic · Reflexion. Loop <= 3 luôn.

4

Critic tốt nhất là model khác family hoặc rubric objective. Tránh self-bias.

5

Claude Code plan mode + TaskCreate = Plan-and-Execute out-of-the-box. Học từ đó.

Bài tập & chuẩn bị buổi 9
📝

Tự kiểm tra

  • • Task nào đội bạn đang one-shot mà nên plan?
  • • Viết rubric 3 tiêu chí cho critic (specific, measurable).
  • • Chọn 1 task, thử Plan-and-Execute vs one-shot — so sánh output.
📚

Đọc trước

  • • A. Gulli — Ch.4 Reflection + Ch.6 Planning.
  • • Wei et al. — Chain-of-Thought Prompting.
  • • Shinn et al. — Reflexion.
🔗

Tài liệu VN

  • BMAD METHOD.
  • Cẩm nang Vibe coding OpenSpec Framework.
  • VÒNG ĐỜI PHÁT TRIỂN PHẦN MỀM MỚI Cùng Vibe Coding.
Hết buổi 8

Buổi 9 — Memory & RAG
Agent nhớ được gì, tra được đâu. Ch.8 + Ch.14 sách Gulli.