Thực thi agent
Mô hình được cung cấp những gì ở mỗi lượt, mỗi lời gọi tool được ghi lại ra sao, và hai cách một lượt tạm dừng chờ người.
Ở mỗi lượt, runtime chỉ cung cấp cho mô hình những gì agent khai báo và những gì bạn — người gọi — được thấy hoặc được dùng. Việc này được tính một lần mỗi lượt, trước khi đăng ký bất kỳ toolCông cụ (tool)ToolViệc agent làm được ngoài viết chữ: tìm trong kho tri thức, tìm trên web, đọc tệp, tạo artifact, hoặc thao tác trong ứng dụng kết nối.Mở trong Thuật ngữ nào, và không bao giờ được cache. Mọi lời gọi tool, lần tạm dừng và lần tiếp tục đều để lại một dòng mà bản ghi hội thoại được dựng lại từ đó.
Quy tắc chính
- Tool được cung cấp = liên kết của agent ∩ quyền của bạn. Việc thu hẹp chỉ bỏ bớt liên kết, không bao giờ thêm.
- Quyền truy cập được tính lại mỗi lượt, không bao giờ cache.
- Một lượt chỉ tạm dừng theo hai cách: câu hỏi làm rõ hoặc phê duyệt.
- Thứ tự ưu tiên phê duyệt: thiết lập “luôn hỏi” của chính tool, rồi thiết lập của agent, rồi mặc định của tổ chức.
- Run without asking chỉ bỏ bước xác nhận. Quyền, chính sách và nhật ký kiểm tra vẫn áp dụng.
Một lượt đi qua những gì
-
Xác định quyền cho người gọi này
Các liên kết agent khai báo được thu hẹp về những gì bạn được dùng — xem Xác định quyền truy cập.
-
Đăng ký các tool còn lại
Chỉ những tool vượt qua bước trên mới được cung cấp cho mô hình.
-
Gọi mô hình
Mỗi khối mô hình tạo ra quyết định bước tiếp theo: văn bản cuối thì lượt kết thúc thành công; câu hỏi thì tạm dừng chờ bạn trả lời; lời gọi tool thì sang bước kế.
-
Kiểm tra có cần phê duyệt không
Không cần thì tool chạy. Cần thì lượt tạm dừng. Được duyệt thì tool chạy; bị từ chối thì trả về một kết quả tool không thực thi.
-
Ghi một dòng trace rồi lặp lại
Kết quả — dù tool có chạy hay không — trở thành một dòng trace, và vòng lặp gọi mô hình lần tiếp theo.
Xác định quyền truy cập
Mỗi loại liên kết mà agent khai báo chỉ được giữ lại khi thoả điều kiện riêng:
| Liên kết | Được giữ khi |
|---|---|
| Mô hình | Bạn được gọi nó: một mô hình chat đang phục vụ mà phòng ban của bạn không chặn. |
| Skill | Bạn thấy được nó và nó đã được xuất bản. Nó được mô tả cho mô hình và nạp theo tên nếu mô hình yêu cầu trong lượt. Bản nháp chưa xuất bản bị bỏ ra. |
| Tri thức | Nó trỏ tới một kho tri thức trong tổ chức này. Mỗi lần tìm kiếm lại thu hẹp tiếp về các kho tri thức được liên kết mà quy tắc của chính bạn với tới. |
| Tool của ứng dụng | Tool được liên kết đang bật, ứng dụng của nó đang hoạt động và bạn thấy được, và bạn chưa tự tắt tool đó cho mình ở Settings → Connected apps (ứng dụng đã kết nối). Ứng dụng đăng nhập riêng cho từng người còn cần kết nối đang hoạt động của chính bạn, với quyền của tool đó được bật. |
- Liên kết trỏ tới tool của tổ chức, vì tool của một ứng dụng thuộc về tổ chức. Chỉ kiểu OAuth theo từng người mới cần kết nối; ba kiểu còn lại không cần (xem Ứng dụng và MCP gateway).
- Các loại liên kết khác không có kiểm tra theo từng người dùng.
- Các liên kết còn lại được đổi thành tên tool, và tool nào có nhà cung cấp mà tổ chức chưa cấu hình thì bị bỏ.
Bản thân quy tắc phạm vi hiển thị được giải thích ở Phạm vi hiển thị tài nguyên.
Luôn được cung cấp
Ba tool có ở mọi lượt và không liên kết nào chi phối chúng:
- hỏi bạn một câu (câu hỏi làm rõ);
- tính toán số học, không đọc dữ liệu nào;
- đọc lại một kết quả tool trước đó trong cuộc hội thoại này, chỉ trả về đầu ra mô hình đã nhận.
Bộ nạp skill xuất hiện khi có ít nhất một skill còn lại đã xuất bản và chưa được gộp sẵn vào prompt. Nhờ vậy, tên skill mô hình được báo và tên bộ nạp chấp nhận là cùng một danh sách.
Chọn skill bằng dấu gạch chéo
Bạn chọn skill bằng cách gõ / rồi tên của nó; ô soạn tin gửi đó thành dòng đầu của tin nhắn. Khi lượt bắt đầu:
- slug được kiểm tra quyền theo những gì bạn thấy được;
- lựa chọn được ghi lại;
- chỉ dẫn của skill được đưa vào prompt;
- skill đó bị bỏ khỏi danh mục mà bộ nạp cung cấp.
Đoạn văn phía trên danh mục báo cho mô hình rằng chỉ dẫn đã có sẵn, để lượt không tốn một lần gọi chỉ để xin thứ nó đang đọc.
Dòng trace
Hai đường ghi dòng trace vào cùng một bảng, qua cùng một bộ đếm thứ tự, nên trace của một lượt xen kẽ chúng đúng theo thứ tự đã chạy.
| Đường | Điều được ghi |
|---|---|
| Tool do mô hình gọi | Một khối tool-use rồi một khối tool-result trên luồng. |
| Callback từ runtime | Agent gọi backend giữa lượt để dùng một quyền hạn. Nếu thất bại, một bước thất bại được ghi kèm lỗi. Callback chỉ để trả lời một câu hỏi — như cấp model key — thì không ghi bước nào. |
Lời gọi mà ứng dụng từ chối được báo thành lỗi thay vì trả về như đầu ra bình thường. Dấu lỗi đó khiến dòng hiện là thất bại, báo cho mô hình biết lời gọi không thành công, và giữ đoạn văn bản đó ngoài bước kiểm tra xem một nhận định trong câu trả lời được chứng minh bởi đâu.
Cách lưu từng chunk của luồng có ở Vòng đời của một lượt.
Tạm dừng
Một lượt tạm dừng chờ người theo hai cách. Cả hai đều được lưu, nên lần tạm dừng vẫn còn sau khi tải lại trang.
| Tạm dừng | Quy tắc |
|---|---|
| Câu hỏi làm rõ | Một hoặc nhiều câu hỏi, mỗi câu có gợi ý trả lời và một ô nhập tự do. Câu trả lời được lưu theo từng câu hỏi; yêu cầu được giải quyết khi mọi câu hỏi đều có câu trả lời. |
| Phê duyệt | Một lời gọi tool chờ người duyệt hoặc từ chối. Một lần tạm dừng được phát lại không bao giờ kích hoạt hai lần. Từ chối quay về vòng lặp dưới dạng kết quả tool không thực thi. Tool chỉ được tính là đã chạy sau một bước thực thi tường minh, và chỉ khi quyết định là duyệt và tool chưa chạy trước đó. |
Mọi câu trả lời cho câu hỏi làm rõ đều được đối chiếu với lượt trước: chỉ chủ của lượt, hoặc người có quyền đọc bản ghi hội thoại, mới trả lời được. Cách bạn trả lời cả hai loại tạm dừng có ở Phê duyệt và câu hỏi.
Phê duyệt hoạt động thế nào
Phê duyệt chặn một lời gọi tool mà mô hình đã viết ra. Mô hình không bao giờ thấy mục phê duyệt trong danh sách tool: runtime tự ngắt giữa lời gọi và chuyển quyết định cho một người.
Thẻ bạn trả lời ghi tên tool, ứng dụng đứng sau và tool có ghi dữ liệu hay không — cả ba đọc từ bản ghi tool của chính yêu cầu đó.
Quyết định phê duyệt
Một lời gọi tool có dừng chờ phê duyệt hay không phụ thuộc ba thiết lập, xét theo thứ tự. Thiết lập đầu tiên có giá trị sẽ thắng:
- Thiết lập của chính tool — quản trị viên có thể đánh dấu một tool là Always ask (luôn hỏi) ở Admin console (bảng điều khiển quản trị) → Applications. Tool đó khi ấy luôn chờ phê duyệt, kể cả dưới agent bình thường chạy không cần hỏi.
- Thiết lập riêng của agent, nếu agent có đặt.
- Mặc định của tổ chức cho các ứng dụng kết nối.
Mỗi thiết lập là một trong hai chế độ phê duyệtPhê duyệtApprovalĐồng ý hoặc từ chối của bạn trước khi agent thay đổi gì đó trong ứng dụng kết nối. Lượt tạm dừng cho đến khi bạn quyết định.Mở trong Thuật ngữ:
| Chế độ | Điều xảy ra |
|---|---|
Ask before each action (hỏi trước mỗi thao tác, ASK_EACH_OPERATION) | Yêu cầu được lưu, lần chạy tạm dừng, và tool chỉ chạy sau khi có người duyệt. |
| Run without asking (chạy không cần hỏi, YOLORun without asking (YOLO)Run without asking (YOLO)Thiết lập của ứng dụng kết nối bỏ qua bước hỏi phê duyệt cho từng thao tác. Không bao giờ bỏ qua quyền, phạm vi đăng nhập, chính sách hay nhật ký kiểm toán.Mở trong Thuật ngữ) | Tool chạy mà không cần xác nhận từng lời gọi. |
Cách trình duyệt trả lời một lần tạm dừng và nối lại với lượt đang chạy có ở Vòng đời của một lượt.
Thời gian của lượt
Khi lượt kết thúc, mỗi phần của hệ thống đã xử lý nó — runtime của agent, backend và trình duyệt — ghi lại các giai đoạn của mình mất bao lâu, tính bằng mili giây, và khớp với nhau theo turn id. Đặt chúng cạnh nhau cho thấy thời gian đi đâu:
- Khoảng từ lúc một lần gọi mô hình bắt đầu đến lúc yêu cầu rời đi là các hook chạy trước lần gọi, trong đó có nhắn chen giữa lượt.
- Khoảng từ yêu cầu đến sự kiện đầu tiên trên luồng là LiteLLM và nhà cung cấp mô hình.
- Sự kiện đầu tiên đến sớm hơn nhiều so với văn bản đầu tiên nghĩa là mô hình đang suy luận hoặc đang viết một lời gọi tool.
Vì sao lại như vậy
Vì sao quyền được tính theo người gọi, ở mỗi lượt
Agent là cấu hình dùng chung, nhưng người gọi thì khác nhau. Lấy giao giữa liên kết của agent và quyền của chính người gọi, tính lại mỗi lượt, nghĩa là một agent dùng chung không bao giờ với tới thứ mà người gọi không tự với tới được.
Vì sao phê duyệt là một lần ngắt chứ không phải một tool
Phê duyệt chặn một lời gọi mô hình đã viết xong, nên đó không phải thứ mô hình chọn dùng. Runtime tự ngắt giữa lời gọi và chuyển quyết định cho một người, vì thế phê duyệt có route và bảng riêng thay vì nằm trong danh sách tool.
Bên trong hệ thống
Cơ chế dòng trace
Cả hai đường dùng chung một bộ cấp số thứ tự nguyên tử trên cùng một bảng. Khi hoàn tất một lời gọi tool của mô hình, input và thời điểm bắt đầu của khối tool-use được đọc lại từ cơ sở dữ liệu. Callback của runtime đi qua các route được bảo vệ bằng shared secret, mỗi quyền hạn một route, danh tính suy ra chỉ từ turn id; lớp bọc ghi bước thất bại rồi ném lại lỗi.
Khoá phê duyệt và quyết định YOLO
Mỗi phê duyệt được khoá theo interrupt id của runtime dưới một ràng buộc unique, nên chunk tạm dừng được phát lại không tạo được yêu cầu thứ hai. Hàm quyết định có ngắt hay không không nhận auth context và repository nào: đó là một quyết định thuần với ba đầu vào, còn chính sách và nhật ký kiểm tra chạy ở nơi khác.
Dòng log thời gian của lượt
| Nơi | Dòng log | Số liệu (ms) |
|---|---|---|
| Runtime | turn timing <id> | Tính từ lúc nhận lần gọi: lấy LLM key, dựng tool, đọc thiết lập guardrail, agent sẵn sàng, văn bản trả lời đầu tiên rời guardrail, trả lời xong, viết xong tóm tắt suy luận. Sau đó mỗi lần gọi mô hình một mục: SDK bắt đầu, yêu cầu gửi tới LiteLLM, LiteLLM trả header, sự kiện đầu tiên trên luồng, văn bản trả lời đầu tiên, kết thúc, và số yêu cầu đã dùng. |
| Backend, bên ghi | turn timing <id> | Tính từ lúc nhận yêu cầu của trình duyệt: lượt bắt đầu, gọi runtime, chunk đầu tiên, text delta đầu tiên trong bộ đệm phát lại, kết thúc. Kèm tổng thời gian lưu chunk và lần ghi chậm nhất — chunk tiếp theo chỉ được đọc sau khi chunk trước đã lưu. |
| Backend, bên đọc | turn buffer lag <id> | Text delta đầu tiên và chunk chậm nhất nằm trong bộ đệm phát lại bao lâu trước khi kết nối này ghi chúng ra trình duyệt. Thời điểm nối thêm lấy theo đồng hồ của Redis. |
| Trình duyệt | turn timing <id> (console, mức verbose) | Tính từ lúc gửi: tải tệp xong, lượt mở, chunk đầu tiên, text delta đầu tiên, khung hình đầu tiên vẽ sau đó, kết thúc. |