Một coding agent không phải là một chatbot trả lời câu hỏi lập trình. Nó là một chương trình biết tự hành động trên máy của bạn: đọc file, sửa code, chạy test, đọc log lỗi rồi sửa tiếp — cho tới khi hoàn thành mục tiêu. Điểm khác biệt cốt lõi so với việc dán câu hỏi vào ChatGPT là: agent đóng vòng lặp (loop) giữa "suy nghĩ" (LLM) và "hành động" (tool).
Kiến trúc tối giản nhưng đầy đủ
Mọi coding agent nghiêm túc đều gồm 4 khối:
- LLM — bộ não, nhận ngữ cảnh và quyết định bước tiếp theo.
- Tools — tay chân:
read_file,write_file,run_command,list_dir... - Vòng lặp điều phối (agent loop) — vòng
whilegọi LLM, thực thi tool LLM yêu cầu, đưa kết quả trở lại LLM. - Bộ nhớ hội thoại (message history) — danh sách message tích lũy để LLM "nhớ" đã làm gì.
Vòng lặp agent bằng pseudocode
messages = [system_prompt, user_task]
while True:
reply = llm(messages, tools=TOOLS)
messages.append(reply)
if reply.tool_calls:
for call in reply.tool_calls:
result = run_tool(call.name, call.args)
messages.append(tool_result(call.id, result))
continue # quay lại cho LLM đọc kết quả
else:
print(reply.text) # LLM không gọi tool nữa => xong
break
Hãy đọc kỹ dòng continue: đây chính là "trái tim". Khi LLM gọi tool, ta không dừng lại hỏi người dùng — ta chạy tool, nhét kết quả vào history rồi để LLM tự quyết bước kế. Đó là điều biến một lời gọi API đơn lẻ thành một tác nhân biết làm việc nhiều bước.
Ví dụ cụ thể: yêu cầu "Sửa lỗi hàm chia cho 0"
- User: "File
math.pybị crash khi chia cho 0, sửa giúp." - LLM gọi
read_file("math.py")→ agent đọc file, trả nội dung. - LLM thấy hàm
divide(a, b)thiếu kiểm tra → gọiwrite_filevới bản vá. - LLM gọi
run_command("python -m pytest")→ agent chạy test. - Test pass → LLM ngừng gọi tool, trả lời "Đã sửa và test xanh".
Khung tư duy: Perceive → Decide → Act → Observe (PDAO)
- Perceive: agent thu thập ngữ cảnh (đọc file, list thư mục).
- Decide: LLM chọn hành động tiếp theo.
- Act: thực thi tool.
- Observe: đưa kết quả (kể cả lỗi) trở lại LLM.
Checklist khởi động dự án
- [ ] Đã chọn một LLM hỗ trợ tool/function calling (không phải model text thuần).
- [ ] Đã định nghĩa tối thiểu 3 tool: đọc file, ghi file, chạy lệnh.
- [ ] Có vòng
whilevới điều kiện dừng (không tool call ⇒ dừng). - [ ] Có giới hạn số vòng lặp tối đa (chống loop vô hạn).
- [ ] Ghi log mỗi bước để debug được.
Sai lầm thường gặp
- Coi agent như một prompt khổng lồ. Nhồi hết mọi thứ vào một prompt rồi mong LLM tự làm là ảo tưởng. Sức mạnh nằm ở vòng lặp nhiều lượt, không ở prompt dài.
- Quên đưa kết quả tool trở lại LLM. Nếu bạn chạy tool nhưng không append kết quả vào
messages, LLM sẽ "mù" và lặp lại hành động cũ. - Không giới hạn số vòng lặp. Agent có thể kẹt vòng lặp vô tận khi gặp lỗi nó không hiểu, đốt token và tiền.
- Dừng sai thời điểm. Dừng ngay sau lời gọi tool đầu tiên (thiếu
continue) khiến agent chỉ làm được một bước rồi "đơ".
Học xong bài này rồi?
Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu,
và học hết khóa thì có chứng chỉ.
Lưu tiến độ của tôi