Agent Vốn Đã Thông Minh. Không Cần Dạy Nó Nghĩ.

5 phút đọc English
Featured image for shareAI-lab/learn-claude-code — Agent Vốn Đã Thông Minh. Không Cần Dạy Nó Nghĩ.

⚡ TLDR

  • Thay vì chắp vá trí thông minh bằng if-else: Dạy bạn cách làm cái “vỏ” (harness), còn trí thông minh cứ để mặc mô hình định đoạt.
  • Cái giá của sự rườm rà: Khi viết quá nhiều luồng prompt kéo-thả, framework của bạn dễ gãy, chạy chậm cứng và chẳng giải quyết được gì mới mẻ.
  • Mổ xẻ cơ chế phần cứng: Hiểu rõ tường tận một con Claude Code thực thụ bên dưới có gì, không bị che giấu đi bằng mớ trừu tượng.
  • Bỏ qua tư duy kéo-thả: Mọi agent cơ bản nhất chỉ là một vòng lặp vĩnh viễn, quyết định lấy công cụ ra xài tới khi nào xong thì thôi.
  • Áp dụng bất cứ đâu: Muốn làm con AI quản lý cái vườn nhà, việc của bạn là viết API tưới cây, rồi thảy cho nó, chứ không phải đi viết lại nguyên cái não agent.

Tôi yêu cầu thêm một tính năng. Nó quăng cho tôi năm cái. Code chạy thẳng băng. Đang định vỗ tay khen mình giỏi. Một lúc sau hóa đơn API bắt đầu đổ về.

Người ta hay bảo AI thần thánh, chỉ cần có một đống code điều hướng (prompt-chaining, workflow, node graphs), nhét mô hình AI qua mớ if-else đó là phép màu xảy ra. Hàng tỉ tham số nằm lọt thỏm trong mấy dòng nhánh của code.

[learn-claude-code] thì lại khác. Nó vứt hết mớ lý luận màu mè đó vào thùng rác. Với 12 file Python ngắn gọn, nó lột trần mọi mánh khóe của thứ gọi là “viết AI”. Nhìn thẳng vấn đề: mô hình AI (Model) đã là con Agent rồi. Cái đám code nối lằng nhằng ở ngoài thực chất chỉ là “cái xe” (Harness).

Hai người thợ. Một ông cầm búa, đục đẽo cả mấy tuần để vẽ ra từng kịch bản nhánh rẽ cho đủ loại lỗi mô hình tạo ra. Ông thứ hai chỉ lẳng lặng vất cho con AI một hàm subprocess, xả kết quả console thẳng vào mắt nó. Ông đầu tiên trông có vẻ bận rộn cả ngày. Còn agent của ông thứ hai thì sáu tháng sau vẫn chạy bon bon.

Bash Vậy Là Đủ Rồi

Gạt đi mấy lời thổi phồng của mấy công ty, một con AI tự chạy được cấu thành bởi đúng cái cốt tủy này:

# Đoạn code đáng giá nhất (Bài học số 1)
def agent_loop(messages):
    while True:
        # 1. Để cho AI nhìn và tự ra quyền hành
        response = client.messages.create(model="claude-3", messages=messages, tools=[bash_tool])
        messages.append({"role": "assistant", "content": response.content})

        # 2. Xong việc thì nghỉ
        if response.stop_reason != "tool_use":
            return

        # 3. Còn không thì làm trò gì đó với máy tính đi
        for block in response.content:
            if block.type == "tool_use":
                output = subprocess.run(block.input["command"], shell=True, capture_output=True)
                messages.append({"role": "user", "content": [{"type": "tool_result", "content": output}]})

Bất kỳ lập trình viên nào lần đầu đọc cũng phải vỗ dùi kêu: “Trời, chỉ có thế thôi à”. Đúng vậy. Một cái vòng lặp không chịu tắt cho đến khi mô hình thần kinh chịu bảo rằng công việc đã xong. Thế thôi.

Nghệ Thuật Chọn Lọc Môi Trường

Kho lưu trữ không dừng lại ở đó. Nó bắt bạn đi qua 12 cấp độ “Xây Dựng Khung Xe”:

Gặp Cục SạnCách Họ Lắc Xí NgầuCách Đúng Đắn Mở Lối
Máy Nhớ Ngu ĐiChửi AIMở một array messages mởi tinh cho từng nhiệm vụ con (Subagent).
Não Cá VàngNgồi nhắc lại trong promptLưu cái task.json vô thẳng cái đĩa cứng để tự moi ra.
Treo Máy Do ĐợiNín thở ngồi chờVất lệnh cho thread chạy ẩn, xong thì tự rới tin nhắn nhắc tao vô.

Một người quản lý điền trang là sự kết hợp giữa mô hình và cảm biến cửa, cảm biến tưới. Trí thông minh không phải thứ để bạn cắm mặt vào giải quyết. Viết môi trường cho nó mới là việc của bạn.

Dù vậy thì trên đời làm gì có buổi tiệc nào trọn vẹn. Ở đây không có chuyện phân lớp OAuth, không có cái hộp cát (sandbox) che chở, và cũng không có hệ sinh thái tiện dụng gì hết. Bạn mà thả rông script bản cuối chạy dưới quyền Admin, nó chỉ cần điên khùng một phát rm -rf là nguyên máy xách đi nghỉ dưỡng ngay. Vâng, bạn phải tự tay viết các plugin cho nó sinh nhai.

Đôi khi nghĩ lại. Tôi thấy chúng ta lãng phí quá nhiều thời gian để cố khôn hơn một bộ mã đã thẩm thấu lượng kiến thức nhiều hơn mọi thế hệ gom lại. Tóm lại là, ở đẳng cấp của tôi thì tôi không bắt AI làm trò con bò. Nếu có chuyện, tôi chỉ quăng cho nó cái lệnh bash rồi chạy đi mua cà phê.

Hoang Yell

Hoang Yell

Một nhà phát triển phần mềm và là người kể chuyện kỹ thuật. Tôi dành thời gian để khám phá những repository mã nguồn mở thú vị nhất trên GitHub và trình bày chúng dưới dạng những câu chuyện dễ hiểu cho mọi người.