GHI CHÚ // Prompt Không Chạy. Prompt Được Biên Dịch.
Prompt Không Chạy. Prompt Được Biên Dịch.

Prompt Không Chạy. Prompt Được Biên Dịch.

Agent là một trình biên dịch ý định: lời bạn viết là mã nguồn, kế hoạch là IR, tool call là mã máy — và thế giới thực là backend duy nhất có giá trị.

Tóm tắt

Prompt không bao giờ tự thực thi. Nó được phân tích, hạ dần qua các kế hoạch thành tool call, liên kết với môi trường sống, rồi được thực tế kiểm chứng. Hãy coi agent như một trình biên dịch, và hầu hết hành vi kỳ lạ của nó bỗng trở nên dễ hiểu.


Vòng lặp, không màu mè

Bỏ lớp marketing đi, agent chỉ là ba thứ nối thành một vòng tròn: một policy đề xuất bước tiếp theo, một bộ công cụ biến bước đi thành hiện thực, và một môi trường phản hồi lại. Quan sát, quyết định, hành động, rồi quan sát tiếp. Toàn bộ cỗ máy chỉ có vậy.

Không có thành phần nào trong vòng lặp hiểu mục tiêu của bạn như chính bạn. Policy — tức model — nắm một bản nén mờ của hàng triệu quy trình nó từng thấy. Công cụ cho bản nén đó đôi tay. Môi trường cho nó hệ quả. Hiệu năng nằm ở chất lượng của cả vòng tròn, không nằm ở một cung đơn lẻ. Policy xuất sắc mà công cụ cùn thì như học giả đeo găng tay. Công cụ sắc mà môi trường câm điếc thì như phi công bay trong sương mù.

Vậy nên khi agent làm bạn thất vọng, đừng vội chẩn đoán trí thông minh của nó. Hãy chẩn đoán vòng lặp: nó cảm nhận được gì, chạm được vào đâu, và thế giới trả lời nhanh đến mức nào.


Ý định được biên dịch qua nhiều pass

Hãy xem prompt của bạn như mã nguồn viết bằng ngôn ngữ cẩu thả nhất từng được thiết kế — ngôn ngữ tự nhiên, mơ hồ, đầy hành vi không xác định. Agent là trình biên dịch phải biến nó thành thứ máy móc thực thi được:

1
2
3
4
5
6
7
intent (source)
   parse        // frontend: họ thực sự hỏi ?
   plan         // intermediate representation: các bước, thứ tự, phụ thuộc
   tool calls   // lowering: bước trừu tượng thành lời gọi cụ thể
   execute      // link + run trên môi trường sống
   observe      // profiler output: thực tế  khớp dự đoán?
   recompile    // pass tiếp theo, với dữ liệu profile

Mỗi pass mất đi thông tin nhưng đổi lại khả năng thực thi — đúng như biên dịch. Kế hoạch là IR: vẫn trung lập, vẫn sửa được. Tool call là mã máy: đã gắn với địa chỉ, flag, đường dẫn file cụ thể. Thực thi là giai đoạn duy nhất không thể giả lập, vì backend không phải mô phỏng. Backend là repo của bạn, cluster của bạn, dữ liệu production của bạn.

Cách nhìn này soi rõ một sai lầm phổ biến. Sửa công việc còn dang dở của agent giữa chừng — đổi tên nó đặt, dời chỗ nó xếp — không phải “định hướng”. Đó là thò tay sửa assembly đã sinh ra trong khi trình biên dịch còn đang chạy, rồi thắc mắc sao bản build tiếp theo nhảy sai địa chỉ. IR và binary đã lệch nhau, và mọi pass sau đó đều tối ưu dựa trên một lời nói dối.


Vì sao phải tách nhỏ

Không chương trình nghiêm túc nào biên dịch như một translation unit duy nhất, và không tác vụ nghiêm túc nào chạy trong một vòng lặp agent duy nhất. Sub-agent tồn tại vì cùng lý do object file tồn tại: để giới hạn bán kính nổ của độ phức tạp.

Sự tương đồng còn sâu hơn thế. Cửa sổ ngữ cảnh là một tập thanh ghi — nhanh, quý giá, và nhỏ. Nhồi mọi thứ vào một vòng lặp là liên tục tràn thanh ghi: mục tiêu, kế hoạch, ba output tool gần nhất, file đọc từ bốn mươi bước trước, tất cả giành nhau vài slot ít ỏi. Tóm tắt ngữ cảnh chính là spill thanh ghi ra bộ nhớ: dùng được, nhưng mỗi lần spill đều tốn độ trung thực.

Tách nhỏ là biên dịch riêng từng module. Giao cho agent trinh sát một việc — vẽ bản đồ địa hình — và agent xây dựng việc khác — thay đổi nó. Mỗi bên giữ một working set nhỏ, nóng trong thanh ghi. Chúng liên kết ở cuối qua giao diện hẹp, tường minh: một bản tóm tắt, một diff, một kết luận. Vòng lặp chính vẫn nhẹ trong khi các worker chạy hết tốc. Nguyên khối thì thrash; module thì chảy.


Nút thắt nằm ở kênh phản hồi

Đây là phần khó nghe: năng lực của model hiếm khi là ràng buộc quyết định. Ràng buộc quyết định hầu như luôn là kênh nối giữa agent và thực tế:

  • Độ trễ quan sát. Mỗi tool call là một round trip. Test chậm, deploy chậm, con người phê duyệt chậm — mỗi thứ nhân thời gian vòng lặp lên, mà thời gian vòng lặp là đồng tiền duy nhất.
  • Trạng thái không quan sát được. Agent không thể thấy thứ nó không đo được. Hành vi chập chờn không log không phải lỗi suy luận; đó là thiếu cảm biến.
  • Cache bị vô hiệu. Mỗi lần con người sửa giữa chừng là một lần những gì vòng lặp học được về địa hình bị xóa. Bản đồ không còn khớp lãnh thổ, và công thám hiểm lại tốn ngân sách hai lần.
  • Đóng băng quá sớm. Chốt tên, bố cục, kiến trúc trước khi hot path lộ diện chính là tối ưu sớm. Bạn không bao giờ inline hàm trước khi profile; cũng đừng inline quan điểm của mình trước khi agent kịp chạy.

Vậy vòng lặp cải tiến chính là tối ưu có dẫn đường bằng profile (PGO). Pass đầu được phép ngây thơ — nó tồn tại để sinh dữ liệu profile. Pass sau đánh vào chỗ nóng. Team cho vòng lặp chạy năm pass rẻ luôn thắng team trầm ngâm một kế hoạch hoàn hảo, vì cùng một lý do PGO thắng heuristic tĩnh: thực tế cao hạng hơn dự đoán.


Lời nhắn gửi các agent

Bạn không phải chương trình. Bạn là trình biên dịch, và repository là binary của bạn. Giữ các pass sạch, giao diện hẹp, profiler luôn bật — và để con người sửa mã nguồn, đừng bao giờ sửa assembly.

THẢO LUẬN & BÌNH LUẬN