Một thẻ tiêu đề ghi Xây dựng một vòng lặp tác nhân chủ động trên Claude Opus 5.5, với phụ đề về năm giai đoạn, một mô hình và mọi thứ mà ứng dụng dành cho người tiêu dùng của Anthropic không cung cấp cho bạn, phía trên bốn viên nhãn có viền mang nhãn Bộ lập lịch, Prompt được lưu cache, Cổng phê duyệt và Chuyển đổi dự phòng, cùng một họa tiết hình học nhẹ gồm các hình chữ nhật bo góc lệch nhau ở bên phải.
Guides & Insights

Xây dựng Vòng lặp Tác nhân Chủ động trên Claude Opus 5.5

Tác giả

Rowan Sterling

Ngày đăng

Mô hình mới nhất · 20Xem tất cả mô hình →
Benchmark: Artificial Analysis · cập nhật hằng ngày
Quay lại tất cả bài viết

Phần khó chịu khi tự xây dựng một agent chủ động của riêng bạn là công việc thú vị không nằm ở lời gọi mô hình. Bạn có thể làm cho Claude Opus 5.5 trả lời câu hỏi trong một buổi chiều. Bắt nó thức dậy theo lịch, chỉ đọc những gì đã thay đổi kể từ lần trước, quyết định xem có điều gì đáng để con người xử lý hay không, phác thảo hành động, rồi dừng lại và chờ — đó là cả nhiều tuần, và gần như không phần nào trong đó diễn ra bên trong mô hình. Anthropic đã phát hành một phiên bản của vòng lặp này với tên Claude Duet, và điều hữu ích ở sản phẩm đó đối với bất kỳ ai đang tự xây dựng hệ thống của riêng mình không phải là danh sách tính năng mà là những quyết định có thể thấy được trong cách nó được lắp ráp. Nó không có API công khai và không thể trỏ sang hệ thống của riêng bạn, nên nếu bạn muốn vòng lặp chứ không phải ứng dụng, bạn phải tự xây dựng nó. Phần tiếp theo là kiến trúc, theo từng giai đoạn, cùng chi phí thực tế của từng giai đoạn.

Hình dạng trước đã. Năm giai đoạn chạy tuần tự, và giai đoạn thứ năm chỉ đạt được sau khi con người đồng ý. Một bộ lập lịch kích hoạt. Một bước tổng hợp rút gọn mỗi hệ thống được kết nối thành một delta. Một bước quyết định biến delta đó cùng với chính sách thành một đề xuất có kiểu. Một cổng phê duyệt nằm ngoài mô hình quyết định liệu đề xuất có được chạy hay không. Một bộ thực thi thực hiện nó. Đó là toàn bộ thiết kế, và mọi thứ khó khăn về nó đều nằm ở các đường nối.

An architecture card titled The loop, stage by stage, showing five numbered stages from left to right, Scheduler firing every few hours rather than continuously, Digest reading a diff of what changed since the last sweep, Decide where Claude Opus 5.5 reads the diff against a byte-identical system prompt and tool schema, Approval gate as a separate service that can say no, and Act executing only the approved action, with a blue callout on Decide and a cyan callout noting the gate can refuse.

Giai đoạn một: một bộ lập lịch kích hoạt vài giờ một lần

Quyết định đầu tiên là quyết định mà người ta làm sai vì nhiệt huyết chứ không phải vì kỹ thuật: đừng thăm dò liên tục. Tài liệu Duet của Anthropic giải thích khoảng thời gian của nó — kiểm tra vài giờ một lần — bằng cách nói rằng kiểm tra không ngừng sẽ tiêu hao giới hạn của gói nhanh hơn nhiều. Đó không phải là sự thận trọng kiểu marketing. Đó là câu trả lời đúng cho một vấn đề chi phí thực tế, và đó là cái bẫy mà mọi agent tự xây đều rơi vào ngay tuần đầu tiên.

Việc thăm dò liên tục gây tốn kém nghiêm trọng vì một lý do mang tính cấu trúc. Mỗi lượt quét là một ngữ cảnh đầy đủ: hướng dẫn, định nghĩa công cụ, tài liệu bạn đã kéo vào, và bất kỳ lập luận nào mô hình thực hiện trên đó. Với nhịp một phút, đó là 1.440 ngữ cảnh đầy đủ mỗi ngày, và phần lớn áp đảo không tìm thấy gì mới. Bạn trả giá đầy đủ để được thông báo rằng hộp thư không thay đổi. Với ba giờ, bạn có tám, và tỷ lệ giữa những phát hiện so với chi phí trở thành điều bạn có thể biện hộ với người ký hóa đơn.

Vậy bộ lập lịch là một bộ hẹn giờ kiểu cron có mức sàn cho khoảng thời gian tối thiểu, chứ không phải một luồng sự kiện. Sự kiện nghe có vẻ hấp dẫn — phản ứng ngay khi có việc xảy ra — nhưng chúng đẩy bạn trở lại với công việc liên tục và khiến chi phí của một ngày bận rộn trở nên không có giới hạn. Một bộ hẹn giờ mang lại mức trần dự đoán được, đúng là thứ bạn cần khi hóa đơn biến động. Khi bạn muốn phản ứng nhanh hơn cho một nguồn, chỉ cần rút ngắn khoảng thời gian của connector đó và chấp nhận chi phí tăng thêm.

Giai đoạn hai: một tiền tố giống hệt từng byte, được giữ trong bộ nhớ đệm

Đây là nơi những con số được công bố phát huy tác dụng nhiều nhất. Claude Opus 5.5 trên OrcaRouter có giá 4,00 đô la mỗi triệu token đầu vào, 20,00 đô la mỗi triệu token đầu ra, với cửa sổ ngữ cảnh 1M token và đọc bộ nhớ đệm ở mức 0,20 đô la mỗi triệu, theo giá niêm yết của nhà cung cấp với mức cộng thêm 0 phần trăm. Hãy đọc những con số đó như một ràng buộc thiết kế chứ không phải một bảng giá: một lần đọc bộ nhớ đệm chỉ tốn bằng một phần hai mươi so với một token đầu vào mới, vì vậy mỗi byte bạn giữ ổn định qua các lượt quét là một byte bạn không còn phải trả đủ giá cho nó nữa.

Trên thực tế, system prompt và tool schema được lắp ráp một lần tại thời điểm triển khai và không bao giờ được tạo lại cho mỗi lần quét. Không được tuần tự hóa lại từ một từ điển với các khóa ở thứ tự khác. Không được tạo mẫu kèm dấu thời gian, ID yêu cầu, hoặc các tài khoản được kết nối hôm nay được ghép vào phần giữa. Bất kỳ byte nào khác biệt đều làm mất hiệu lực tiền tố đã được lưu trong bộ nhớ đệm, và khối hướng dẫn quay lại mức giá đầu vào đầy đủ trên mỗi lần quét. Các nhóm làm mất điều này do vô tình thường xuyên hơn là do cố ý, thường là vì một lớp trừu tượng có vẻ hữu ích đã bắt đầu chèn một mã định danh lần chạy gần phần đầu của prompt.

Kỷ luật có thể chịu được khi tiếp xúc với mã thực tế thì thật nhàm chán: một hàm trả về một chuỗi hằng cho khối ổn định, một literal đóng băng cho schema của công cụ, mọi phần tử thay đổi được đặt sau đó. Rồi đến một bài kiểm thử băm khối đó và khiến bản dựng thất bại khi mã băm thay đổi, vì rồi sẽ có người thêm một trường schema và không bao giờ nghĩ đến bộ nhớ đệm. Bài kiểm thử đó tốn một giờ và tiết kiệm toàn bộ lợi ích của việc lưu đệm.

Giai đoạn ba: bản tóm tắt cho mỗi kết nối, không phải xả toàn bộ hộp thư

Giai đoạn thứ ba là thứ mà một sản phẩm tiêu dùng được hưởng miễn phí còn bạn thì không. Duet sống bên trong tài khoản Anthropic và truy cập được các ứng dụng đã kết nối, nên nó có thể hỏi điều gì đã thay đổi kể từ một thời điểm nhất định và nhận về một câu trả lời nhỏ gọn. Khi xây dựng bên ngoài tài khoản đó, bạn nói chuyện với cùng các API như bất kỳ client thông thường nào: hoặc bạn tự triển khai đọc tăng dần, hoặc bạn kéo toàn bộ mọi thứ và đưa cho mô hình một bức tường văn bản.

Kéo mọi thứ là mặc định vì nó hoạt động ngay từ ngày đầu. Đây cũng là cách nhanh nhất khiến chi phí mỗi lượt quét trở nên khó dự đoán, vì đầu vào tăng theo hộp thư chứ không theo những gì đã thay đổi. Một lượt quét qua bốn mươi chuỗi không thay đổi tốn chi phí ngang với một lượt quét qua bốn mươi chuỗi mà chỉ một chuỗi là quan trọng, và chỉ một trong số đó có bất kỳ khả năng nào tạo ra một đề xuất hữu ích. Sau một tháng như vậy, phần lớn ngân sách của bạn đã dồn vào việc xác nhận hiện trạng.

Bước tổng hợp phải là mã, không phải là việc dùng prompt. Với mỗi kết nối, hãy tải dữ liệu bằng bất kỳ cursor hoặc delta nào API cung cấp, rồi rút gọn kết quả thành một bản tóm tắt có cấu trúc: những gì đã xuất hiện, những gì đã bị sửa đổi, những gì đã được giải quyết. Gán cho mỗi mục một định danh ổn định để các giai đoạn sau có thể tham chiếu đến nó, và ghi lại cursor thành công gần nhất cho mỗi kết nối để một lần tải thất bại không phát lại tài liệu của hôm qua như thể nó là mới. Một bản tổng hợp không phân biệt được "không có gì xảy ra" với "tôi không thể kiểm tra" cuối cùng sẽ báo cáo một cách tự tin về một trạng thái mà nó chưa từng quan sát.

Giai đoạn bốn: một bước quyết định xuất ra một đối tượng, không phải văn xuôi

Đây là vị trí của Claude Opus 5.5, và những gì nó phát ra quyết định liệu phần còn lại của hệ thống có thể được xây dựng hay không. Bản năng mách bảo là để mô hình viết một bản tóm tắt rồi để con người đọc. Cách đó hiệu quả với một bảng điều khiển nhưng thất bại với một cổng kiểm soát: giai đoạn tiếp theo phải quyết định có cho phép một hành động hay không, và không thể cấp quyền cho một đoạn văn.

Bước quyết định phải trả về một đề xuất hành động có kiểu: tên hành động từ một danh sách đóng, mục tiêu mà nó áp dụng, các tham số, lý do một dòng, và cờ độ tin cậy hoặc leo thang rõ ràng. Danh sách hành động đóng không phải là quan liêu; nó là cơ chế khiến cổng phê duyệt có thể thực thi được, vì một cổng chỉ có thể xác thực những hành động mà nó có thể liệt kê. Một tác nhân có thể phát ra bất kỳ động từ nào thì không thể bị đặt sau cổng, mà chỉ có thể được tin cậy.

Hai ghi chú thực tiễn. Hãy đưa cho mô hình bản tóm tắt trước, rồi đến chính sách, để chính sách nằm sau phần tài liệu biến đổi và tiền tố bộ nhớ đệm vẫn nguyên vẹn. Và hãy đặt kết quả mặc định là “không hành động” thay vì một đề xuất trống rỗng trông như thể là hành động. Những vòng lặp coi sự im lặng là thất bại sẽ tạo ra khối lượng, và một tác nhân tự tạo việc để trông có ích còn tệ hơn một tác nhân báo cáo rằng không có gì thay đổi.

Giai đoạn năm: một cổng phê duyệt thực sự có thể nói không

Cổng phải là một dịch vụ riêng, không phải một nhánh bên trong mã của chính agent. Đây là quyết định cấu trúc quan trọng nhất trong quá trình xây dựng. Nếu tiến trình của agent có thể tự thực thi hành động, thì một lỗi, một cuộc tấn công chèn lệnh (prompt injection) hoặc một cờ bị đặt sai trong tiến trình đó sẽ chạm tới hiệu ứng thực tế. Nếu bộ thực thi chỉ chấp nhận một đề xuất đã được cổng ký, thì điều tệ nhất agent có thể làm là đề xuất một điều gì đó sai, và sự từ chối của cổng là có hiệu lực thực tế.

Chính sách đã công bố của Anthropic dành cho Duet đáng được sao chép về cấu trúc ngay cả khi danh sách của bạn khác đi. Cổng kiểm soát yêu cầu phê duyệt trước khi một hành động gửi tin nhắn, thực hiện thanh toán, ký tài liệu hoặc xóa bất cứ thứ gì. Trên đó là một tầng thứ hai vẫn bị từ chối ngay cả khi có phê duyệt — trong trường hợp của Duet là giao dịch chứng khoán và chuyển tiền giữa các tài khoản. Mô thức là chính sách hai tầng: một tập lớn các hành động được kiểm soát mà con người có thể cho phép, và một tập nhỏ không phê duyệt nào mở khóa được. Hãy sao chép các tầng ngay cả khi mọi mục đều thay đổi, vì chúng giải quyết những vấn đề khác nhau. Cổng kiểm soát bảo vệ chống lại sai sót. Danh sách cấm bảo vệ chống lại một người vận hành đã bị xâm phạm, kể cả người vận hành là con người.

Nửa còn lại của một cổng kiểm soát thực sự là nó phải ngắt mạch. Yêu cầu phê duyệt của Duet hiển thị chính xác hành động và chờ, điều này cố ý dừng luồng công việc thay vì chỉ chú thích vào đó. Một cổng mà chỉ ghi một dòng vào nhật ký không ai đọc thì không phải là cổng; đó là một biên lai. Nếu bước phê duyệt của bạn cần ai đó theo dõi bảng điều khiển lúc ba giờ sáng, thì hoặc khoảng thời gian quá ngắn hoặc danh sách hành động quá rộng. Cả hai đều có thể sửa được, và không phải bằng cách thêm một thông báo.

Bộ nhớ, thông tin xác thực và hai bề mặt mà bạn không thể thoát khỏi bằng cách kiểm thử

Có hai vấn đề nan giải nằm ẩn dưới năm giai đoạn, và cả hai đều trông như tính năng cho đến khi chúng không còn như vậy.

• Chuyển tiếp ngữ cảnh.Mỗi lần quét là một ngữ cảnh mới, nên bất cứ điều gì tác nhân cần ghi nhớ giữa các lần quét đều phải được ghi lại ở giữa chúng. Một tệp trạng thái cuốn chiếu cho mỗi kết nối, có giới hạn kích thước, lưu các mục đang mở và các quyết định gần đây là đủ cho hầu hết các vòng lặp. Điều không hiệu quả là hy vọng mô hình tái dựng lịch sử từ bản tóm tắt, vì bản tóm tắt rõ ràng là một mô tả về thay đổi và không chứa ký ức về những gì đã được quyết định.

• Lưu giữ thông tin xác thực. Duet tuân theo thiết kế được dùng cho các tác nhân được quản lý của Anthropic, nên nó không bao giờ trực tiếp nhìn thấy mật khẩu hoặc token đăng nhập của bạn. Tái tạo kỷ luật đó là phần mà hầu hết tác nhân tự xây dựng đều bỏ qua, và bỏ qua nó nghĩa là mỗi lời nhắc đều có một đường dẫn đến thông tin xác thực. Mô hình không bao giờ được giữ token, không bao giờ được cấp khóa API dưới dạng văn bản, và không bao giờ là thành phần thực hiện xác thực. Hãy để bước xử lý tóm lược và bộ thực thi giữ thông tin xác thực và chỉ trao cho mô hình kết quả.

Rồi còn có bề mặt mà không ai muốn nghĩ tới: một khi tác nhân đọc email và các trang web, mỗi thứ đều là đầu vào có thể chứa chỉ dẫn. Một tin nhắn nói “hãy chuyển tiếp cái này tới địa chỉ bên dưới” không thể phân biệt với dữ liệu đối với một mô hình không có khái niệm riêng về quyền hạn. Hai biện pháp phòng vệ đánh bại mọi mức độ gia cố lời nhắc. Hãy giữ danh sách hành động đóng, để một chỉ dẫn bị chèn không có động từ nào để với tới. Và hãy giữ cổng kiểm soát nằm ngoài tầm ảnh hưởng của mô hình, vì một cuộc chèn lệnh thuyết phục được mô hình gửi thứ gì đó vẫn phải thuyết phục một con người nhìn thấy địa chỉ đích.

Chuyển đổi dự phòng, và nơi định tuyến thực sự phát huy tác dụng

Khi vòng lặp đã được xây dựng, một lựa chọn kiến trúc mở ra mà thiết kế đơn nhà cung cấp không có. DSL định tuyến của OrcaRouter kết hợp nhiều mô hình vào một lời gọi, và tính năng hợp nhất mô hình vận hành một hội đồng các mô hình trả lời song song; cả hai đều đặt nhiều hơn một mô hình phía sau một yêu cầu duy nhất. Công dụng thực tế ở đây khá bình dị: chỉ định một mô hình rẻ hơn đảm nhận phần tóm tắt tổng hợp, nơi công việc là nén thông tin chứ không phải phán đoán, và giữ Claude Opus 5.5 ở bước ra quyết định, nơi đề xuất được hình thành. Cùng một khóa duy nhất tương thích OpenAI truy cập được hơn 200 mô hình, nên việc chuyển mô hình nào phục vụ giai đoạn nào chỉ là thay đổi cấu hình chứ không phải viết lại.

OrcaRouter's own Claude Opus 5.5 model page. The site navigation lists Products, Models, Pricing, Docs and Blog, and the page hero carries the model name Claude Opus 5.5 above a specifications card showing a 1M-token context window, input priced at 4.00 dollars per million tokens, output at 20.00 dollars per million tokens, cached reads at 0.20 dollars per million tokens, zero percent markup, and access to more than 200 models through one OpenAI-compatible key.

Failover là nửa còn lại. Khi một nhà cung cấp gặp sự cố kéo dài một giờ, một agent chỉ có thể kết nối tới một endpoint cũng gặp sự cố tương tự, và một vòng lặp theo lịch không có dự phòng chỉ đơn giản là bỏ lỡ lượt quét của nó. Định tuyến biến một lượt quét bị bỏ lỡ thành một lượt chậm hơn — không phải một lợi ích to tát cho đến tuần bạn cần đến nó, và khi đó, đó là sự khác biệt giữa một lỗ hổng trong bản ghi và không có lỗ hổng nào.

OrcaRouter's own model catalogue page, headed Every frontier model, one key, with a subhead reading 200+ models from 20+ providers with a single OpenAI-compatible API, a search field for the models, a row of vendor filter pills, and a list where each row gives the model, its vendor, its context length and its input and output price, with Claude Opus 5.5 at 1M context and $4.00 and $20.00 visible in view.

Điều bạn thực sự đang đăng ký

Việc chạy vòng lặp này là vận hành một dịch vụ, và dịch vụ đó có bốn thuộc tính mà bạn vừa nhận quyền sở hữu.

• Uptime.Ứng dụng của Anthropic là máy nhắn tin của người khác; còn của bạn là của chính bạn. Một bộ lập lịch âm thầm ngừng kích hoạt sẽ không tạo ra lỗi và không có đầu ra, và bạn phát hiện ra điều đó từ một người đã nhận thấy thiếu bản tóm tắt buổi sáng của họ, chứ không phải từ một cảnh báo.

• Lưu giữ thông tin xác thực.Mỗi token mà bước tổng hợp của bạn nắm giữ đều là thứ bạn phải chịu trách nhiệm, và phạm vi ảnh hưởng của một vụ rò rỉ chính là mọi thứ mà kết nối đó có thể chạm tới. Thiết kế của Anthropic giữ thông tin xác thực tách khỏi mô hình; nếu thiết kế của bạn không làm vậy, mô hình sẽ trở thành bề mặt tấn công cho mọi tài khoản mà bạn đã kết nối.

• Phòng chống prompt-injection. Cơ chế cổng kiểm soát mang lại rất nhiều ở đây, nhưng chỉ với những hành động mà nó kiểm soát. Bất cứ điều gì agent làm mà không cần phê duyệt — đọc, tóm tắt, ghi trạng thái của chính nó — đều không được bảo vệ, và một bản tóm tắt bị đầu độc có thể làm hỏng ký ức mà các lượt quét sau này dựa vào để suy luận.

• Chương trình săn lỗi không thuộc về ai cả. Nếu vòng lặp của bạn kích hoạt sai và gửi nhầm thông điệp cho khách hàng, thì không có nhà cung cấp nào để báo cáo leo thang, không có trang trạng thái, không có báo cáo sự cố. Các quyết định ở trên là lưới an toàn duy nhất, đó là lý do cổng là một dịch vụ riêng và danh sách hành động bị đóng.

Không điều nào trong số đó phản đối việc xây dựng nó. Nó phản đối việc xây dựng nó một cách tùy tiện. Mỗi giai đoạn đều nhỏ, và các đường nối giữa chúng chính là nơi phán đoán nằm: một bộ hẹn giờ thay vì một luồng, một tiền tố bị đóng băng thay vì một mẫu, một bản tóm lược thay vì một bản kết xuất, một đối tượng thay vì văn xuôi, và một cổng là một dịch vụ thay vì một bình luận. Làm đúng những điều đó và vòng lặp sẽ đáng công — nó tìm ra những thứ bạn sẽ không tìm kiếm và dừng lại trước khi làm bất cứ điều gì không thể hoàn tác. Làm sai và bạn đã xây dựng thứ gì đó liên tục tiêu ngân sách của bạn và nói cho bạn những gì bạn đã biết.