05 / Điều phối
Một cuộc trò chuyện, thêm đồng đội khi cần
Giao mục tiêu cho một Soot. Soot đó có thể gọi đồng đội được phép và trả kết quả tổng hợp ngay trong cuộc trò chuyện—bạn không phải mở từng chuyên gia hay chuyển kết quả giữa các chat.
01 · Giao kết quả cần đạt, không phân công từng agent
Bắt đầu bằng đề bài bình thường: muốn gì, dùng nguồn nào, không được làm gì và sẽ xem kết quả ra sao. Bạn không cần quyết định Radar, người viết hay biên tập viên thực hiện từng bước. Soot đầu mối tự chọn khi nào cần giao việc; câu hỏi đơn giản có thể được trả lời ngay, không gọi đồng đội.
Chuẩn bị ba bản nháp cho tuần tới từ brand-guide và nguồn sản phẩm đã duyệt. Dẫn ID và revision của nguồn. Chỉ đề xuất kênh đã có kết nối. Không đăng bài. Trả bản nháp, kế hoạch theo kênh và những quyền hoặc quyết định còn thiếu.Tiếp tục trong cùng chat để chỉnh công việc đó: bổ sung nguồn, duyệt đúng bản nháp hoặc chọn chỉ làm bản nháp. Một chat tự động giữ một Soot đã chọn và có thể xử lý việc trong nhóm A, rồi B, rồi A. Không cần chat mới mỗi lần công việc cần nhóm được phép khác. Native history, artifact và bộ nhớ nhóm giữ đúng phạm vi, không sao chép xuyên nhóm. Chat đã ghim và nhóm ghim của app/client vẫn cố định; chat cũ không có nhóm giữ phạm vi cũ. Đổi mặc định hay runtime quản lý không chuyển chat đang có. Tạo chat mới cho mục tiêu hoặc Soot đầu mối khác, hay để thay chat cố định.
Chương này mô tả cơ chế tự phối hợp trong source hiện tại; không khẳng định các khả năng đã được bật ở một deployment công khai. Nếu chưa có một Soot làm việc được, bắt đầu với khởi tạo và vận hành hằng ngày.
02 · Một Soot, đồng đội do host cấu hình và nhóm mẫu
| Khái niệm | Vai trò | Không có nghĩa là |
|---|---|---|
| Soot đã chọn, hay coordinator | Nhận việc, chọn đồng đội được phép, tổng hợp kết quả; lưu ở Conversation.Soot | Đổi danh tính giữa chừng trong chat cũ |
| Nhóm do host định nghĩa | Giới hạn Soot nhận chat, đồng đội, thao tác đã duyệt gắn khóa, bộ nhớ riêng và ngân sách | Tự cấp quyền chỉ vì là thành viên hoặc cách ly hệ điều hành |
| Snapshot của lượt chạy | Đóng băng đích nhóm được phép, đồng đội, grants, credential bindings và revision thực tế cho một lần thực thi | Cho người dùng chỉnh roster hay nhận thêm quyền được cấp sau đó |
| Nhóm mẫu, hay group template | Gói vai trò, capabilities và dependency đã pin để operator thiết lập | Cấp khóa, kích hoạt runtime hay trở thành đối tượng chọn khi chat |
| Thư mục ở thanh bên Nest | Sắp xếp các cuộc trò chuyện để dễ xem | Đổi nhóm phân quyền của chat hoặc cấp công cụ |
Người dùng chọn một Soot, không chọn nhóm hay chỉnh danh sách đồng đội. Nest, SDK chat session hiện tại, widget và CLI tự tạo với group_id: auto khi host quảng bá groups.auto.v1 và Soot đó có automatic_groups: true. Luồng chat thông thường không bắt buộc bước chọn nhóm. Native AgentCore spawn_subagent chọn đích nhóm được host cấp quyền khi cần làm việc theo phạm vi; câu trả lời thông thường không cần delegation. description của nhóm giúp xác định việc phù hợp, không cấp công cụ hay quyền truy cập. Chuyển chat giữa các thư mục Nest không đổi phân quyền. Host đóng băng đích được phép và chính sách theo phạm vi cho từng lần thực thi; Soot giữ danh tính và mission.
Đừng nhầm cộng tác với Principal.Team hay conversation_clients.*.team: true: đó là quyền dùng chung conversation trong một tenant, không phải chọn đồng đội. Người có key cố định vẫn dùng được đồng đội được phép trong chat của mình mà không cần quyền đọc chat của người khác.
03 · Members của host, tự nhận lượt và tương thích API
Host định nghĩa groups có ID riêng, tham chiếu các Soot đang hoạt động và bật conversation trong cùng runtime. Đối chiếu Configuration và chính sách thực tế trước khi kích hoạt. Người dùng chọn Soot; tự giao việc chỉ chọn được đích host đã cấp quyền, không suy ra quyền từ đề bài hay chỉnh roster.
| Trường deployment | Ý nghĩa do host quản lý |
|---|---|
groups.<id>.name / description / entries | Nhãn an toàn, mô tả để chọn đích và ID các Soot được làm đầu vào nhóm; mô tả không cấp quyền |
groups.<id>.members | ID thành viên (chỉ là danh sách; mỗi Soot chạy với tools, operations và credentials trong hồ sơ của chính nó) |
groups.<id>.limits | Trần số lần giao việc, độ sâu, chạy đồng thời và model calls; không chứa roster khác |
default_groups | Nhóm mặc định cho từng Soot nhận chat, chỉ dùng khi caller được phép |
standalone_soots | Cho phép rõ việc độc lập, không có đồng đội được gọi theo tên |
Client groups / group_id | Nhóm được phép / nhóm ghim tùy chọn; vẫn phải có Soot grants |
Thành viên nhóm chạy với grants trong hồ sơ Soot của chính nó — tools, operations và liên kết khóa đến từ định nghĩa Soot đó, không phải từ nhóm. Grants toolbox trên host không được mang vào lượt nhóm. Tư cách thành viên, tên Pack hay prompt không cấp shell, công cụ hoặc khóa của nhóm khác. Đây không phải môi trường cách ly hệ điều hành: operator phải duyệt ranh giới tài nguyên ở adapter và backend, không tin vào nhãn nhóm.
Trong đích nhóm đã chọn, đồng đội hợp lệ là giao của thành viên nhóm và Soot grants của caller. Đồng đội được gọi lồng nhau vẫn ở nhóm đó dù cũng thuộc nhóm khác. Root tự động có thể chọn đích nhóm được phép khác cho công việc khác trong cùng chat; phạm vi sai hay bị thu hồi không tự chuyển sang nhóm khác, Soot nhiều quyền hơn hoặc standalone. Standalone vẫn là chế độ được cấp riêng, không phải đường lui của root tự động.
Chat cũ không có nhóm giữ phạm vi và biên nhận cũ, không tự gán vào nhóm mới. Cấu hình cũ giữ hành vi collaboration.<root>.members; chuyển đổi cần host duyệt. Với mỗi lần thực thi, host đóng băng đích nhóm được phép, đồng đội đã nhận, grants, credential bindings và revision thực tế. Cấp thêm quyền sau đó không mở rộng việc đang chờ hoặc tiếp tục; chính sách đổi thì từ chối an toàn. Quyền hiện tại được kiểm tra lại trước effect và công bố. Retry cùng request ID trả receipt gốc, không tính lại phạm vi.
Client tạo conversation với id, soot và group_id tùy chọn. Client hiện tại tự yêu cầu group_id: auto chỉ khi có groups.auto.v1 và Soot có automatic_groups: true; yêu cầu auto rõ ràng bị chặn trước khi liên hệ host cũ không hỗ trợ capability đó. Nhóm có tên tạo chat cố định. Chat đã ghim và nhóm ghim của app/client vẫn cố định, từ chối lựa chọn không tương thích. API cũ bỏ `group_id` giữ hành vi cũ/mặc định, gồm xác định nhóm mặc định/duy nhất được phép và lỗi group_selection_required nếu chưa rõ trước khi chạy. Nó không tự bật delegation tự động. Chế độ conversation bất biến: thay chat cố định hoặc đổi nhóm ghim cần chat mới, còn chat tự động có thể dùng A → B → A. Không gửi team: lựa chọn cũ rõ ràng, kể cả `team: []`, trả 400, không chuyển sang standalone.
| API conversation | Hành vi hiện tại |
|---|---|
GET /v1/conversations/{id}/team | Chẩn đoán snapshot đã nhận, lọc theo scope và chỉ đọc; editable: false, không nằm trong luồng chat hay catalog Soot |
POST /v1/conversations/{id}/team | Đã ngừng dùng; từ chối sửa roster |
GET /v1/conversations/{id}/runs/{run}/delegations | Attribution và biên nhận riêng tư đã lọc theo quyền, không phải native transcript |
Public roster POST cũng từ chối thay đổi: 403 khi public collaboration bị tắt, còn lại 400. SDK chat session hiện tại chọn chế độ nhóm tự động theo cùng capability/flag và không cho chỉnh danh sách đồng đội; group_id khác với team[]. Client cấp thấp giữ chẩn đoán chỉ đọc. Bỏ bước chỉnh roster khỏi tích hợp cũ. Xem tự phối hợp và tương thích API cùng Conversation API.
04 · Một đường thực thi, mỗi đồng đội dùng quyền riêng
Coordinator là Soot đã chọn, giữ mission riêng và nhận hướng dẫn phối hợp từ host, không phải router, scheduler hay vòng chạy model riêng. Trong chế độ tự động, native AgentCore spawn_subagent chọn đích group/<id> được host cấp quyền; đích đó chạy Soot này với grants đã thu hẹp và đồng đội của nhóm. AgentCore vẫn sở hữu vòng lặp model, retries, jobs, subagents, ngân sách và vòng đời thực thi. Root tự động không có công cụ bên ngoài hay fallback sang khóa toàn cục; nó có thể trả lời câu hỏi thông thường trực tiếp hoặc tổng hợp kết quả được trả về.
Host chuyển tiếp đầu vào gốc của người dùng, không chuyển task hay context xuyên nhóm do coordinator viết. Nhóm xử lý phần việc phù hợp theo chính sách đã đóng băng; văn bản điều phối sinh ra không mang dữ liệu nhóm khác vào công cụ của nó. Đồng đội được gọi theo tên dùng definition và model policy riêng, với thao tác và credential bindings thu hẹp theo nhóm đó. Binding được xác định theo nhóm, Soot thực thi và thao tác, không gộp khóa của root hay nhóm khác. Tư cách thành viên không cấp công cụ. Self-fork không mang tên teammate chỉ đọc/nghiên cứu trong phạm vi cha.
Native history của nhóm tách theo conversation/nhóm/Soot, chỉ dùng lại sau restart với cùng policy revision. Bộ nhớ worker giữ phạm vi tenant/người dùng/nhóm/Soot, công việc công khai còn cách ly theo conversation; artifact thuộc conversation và nhóm thực thi của nó. Quay từ B về A chỉ dùng lại context được phép của A, không dùng native history, artifact hay bộ nhớ B. Bộ nhớ tổng hợp của root chỉ thuộc chat đó, không toàn cục hay dùng chung giữa các nhóm. ACL backend vẫn phải giới hạn nguồn và tài nguyên qua adapter đã duyệt và khóa riêng theo nhóm; nhóm không phải sandbox hệ điều hành.
Kết quả việc con về root để tổng hợp trong conversation gốc, không tạo chat khách hàng hay hàng đợi marketing khác. Chat chứa kết quả nhóm cần quyền với tất cả nhóm đã đóng góp, tính cả đóng góp thất bại theo cách thận trọng. Thu hồi quyền ẩn toàn bộ chat tổng hợp thay vì cố lọc phần tóm tắt do mô hình tạo. Artifact riêng không tự chuyển xuyên nhóm. Delegation receipts ghi attribution và recovery, không tạo scheduler thứ hai hay công bố native transcript đầy đủ của child.
Các thành viên hiện chạy trong cùng runtime. Nối nhiều runtime vào Nest không tạo cross-runtime delegation hay bộ định tuyến toàn cục tự chọn giữa chúng.
05 · Chung giới hạn, một Stop, khôi phục thận trọng
Số lần giao việc, độ sâu, child chạy đồng thời và model calls bị giới hạn theo cây thực thi của root run. Child không được cấp ngân sách mới để vượt trần. Giới hạn host thông thường vẫn áp dụng khi không có đồng đội được phép; reservation của app/public toàn cục là trần dùng chung bổ sung, không phải ngân sách cộng thêm.
Stop chặn cả cây thực thi. Runtime lưu Stop bền vững trước cancellation, chặn effect mới và câu trả lời đến muộn, rồi hủy descendants và đợi chúng kết thúc trong vòng đời thực thi. Biên nhận Stop chưa chứng minh mọi child đã thoát ngay lúc đó. Bạn không phải tìm từng đồng đội để bấm dừng. Stop không hoàn tác effect đã xong hay hoàn lại phần đã tiêu thụ.
Sau gián đoạn, work đang chạy và thao tác bên ngoài chưa rõ kết quả không tự replay khi restart. Giữ request IDs và biên nhận gốc, đọc kết quả authoritative rồi reconcile trước khi gửi lại. Lặp cùng đích nhóm trong một request trả biên nhận gốc. Rào chắn tài nguyên dùng danh tính tài nguyên thật xuyên nhóm: không phát lại effect chưa rõ kết quả qua nhóm khác. Mất kết nối không chứng minh công việc đã dừng. Xem vận hành và Execution.
06 · Thiết lập nhóm từ Soot Forge
Group template dùng soot/group-template/v1; Pack cung cấp Skills/tools dùng soot/v1. Template mô tả vai trò, soul/mission, capability selectors phẳng, channel metadata, binding requirements và dependency archives pin bằng SHA-256. Đó là điểm bắt đầu dùng lại được, không phải đồ thị bắt buộc chạy từng bước.
Trong Nest, mở Soot → Mẫu Soot. Thêm archive với checksum đã kiểm tra, xem thành viên và capabilities đề xuất, đặt tên nhóm rồi cung cấp đường dẫn binding files riêng trên runtime host. Xác nhận grants để lưu nhóm có namespace. Áp dụng Soot đi theo đường kích hoạt sau khi runtime drain; đợi runtime báo nhóm active rồi mới chat.
Khám phá → kiểm tra/cài → cấu hình bindings → duyệt grants → lưu → kích hoạt → tạo chat. Đây là các bước riêng. Tải xuống chưa chạy tool, chưa tạo phiên. Runner của Pack đã chọn và dịch vụ phía sau có thể vẫn cần operator chuẩn bị. Xem khởi tạo, quyền Data Pool và Soot Forge.
Danh mục Marketing team hiện trên website là hướng dẫn source/chuẩn bị, chưa phải archive đã phát hành để cài. Không suy ra có release chỉ vì tồn tại thư mục source. Khi đã có archive được duyệt, ví dụ CLI sau minh họa thiết lập local; thay mọi placeholder và dùng thư mục output mới:
soot group add ./marketing-team-group_VERSION.tar.gz --sha256 CHECKSUM
soot group inspect groups.d/marketing-team
soot group create groups.d/marketing-team --name acme --output ./acme-marketing --ai-config /private/ai.json --draft-only
soot check --config ./acme-marketing/deployment.json --show--draft-only bỏ các thành viên mang publisher channel metadata. Xem required-bindings.json, quyền nguồn và runner đã chọn trước khi khởi động deployment được tạo. Các lệnh trên chưa khởi động nó. Cấu hình provider và credential bindings thật phải ở riêng trên host; không dán secret vào chat hay template.
Operator lưu workspace đã cấu hình và điều chỉnh bằng soot group save, rồi export bằng soot group export; đây không phải thao tác với roster theo phiên. Save/export cần provenance đã pin và dependency archives đã kiểm tra. Export lấy binding requirements từ archive đó, không đọc secret bindings hay transcript. Template không mang provider configuration, credential values, lịch đang hoạt động, lịch sử hoặc runtime database. Vẫn phải xem lại prompt: dữ liệu riêng tự dán vào prompt không tự biến mất.
CLI cũng có soot group save và soot group export. Lưu local không upload lên Forge; chia sẻ theo quy trình PR của catalog. Xem vòng đời nhóm và ví dụ export.
07 · Marketing: từ nguồn đến nháp, rồi kênh được phép
Lợi ích là một đề bài và một lần xem kết quả tổng hợp, dù nhiều chuyên gia làm các phần khác nhau:
Bạn → Coordinator
Coordinator → Radar → pool chứa URL nguồn và revision
Coordinator → Content creator → bản nháp có dẫn nguồn từ pool
Coordinator → Editor → kế hoạch theo kênh sẵn có
Coordinator → 0, 1 hoặc N publisher được phép → kết quả riêng từng kênh
Coordinator → Bạn: bản nháp, kế hoạch, kết quả và quyết định còn thiếuRadar đọc nguồn host cho phép, chẳng hạn X, blog hoặc GitHub, rồi ghi URL và revision quan sát được vào pool dùng chung. Creator viết từ các tham chiếu đó. Editor chỉ lập kế hoạch cho kênh có publisher được phép và binding cần thiết. Tool context có channel metadata của cả root lẫn teammates; configured nghĩa là có cấu hình/bindings, không chứng minh tài khoản hay endpoint bên ngoài đang hoạt động.
| Publisher được phép | Kết quả đúng phạm vi |
|---|---|
| 0 | Bản nháp và đề xuất; không nói đã đăng |
| 1, chẳng hạn Blog | Kế hoạch riêng cho Blog và kết quả phát hành sau khi được duyệt |
| N, chẳng hạn Blog và X | Nội dung theo kênh và kết quả được ghi độc lập |
Publication thông thường cần operator duyệt đúng draft revision, content hash và `plan_revision`. Sửa kế hoạch làm approval trước đó mất hiệu lực. Host có thể cấu hình tự duyệt rõ ràng, nhưng câu “đăng giúp tôi” không thay approval hoặc credentials. Ngày đăng đề xuất chưa phải scheduled job; muốn chạy đúng giờ cần lịch do host quản lý.
Publisher ghi uncertain receipt trước khi thử HTTP. Nếu mất phản hồi, nó tra kết quả lần gửi gốc qua gateway đã bind thay vì POST lại. Đổi destination hoặc gateway khi còn uncertain bị chặn: khôi phục binding gốc đã duyệt và reconcile trước. Một kênh thất bại không xóa thành công của kênh khác. Trả rõ phần đã xác nhận, phần thất bại và phần chưa biết.
Cài template không tạo tài khoản X/blog, quyền crawl hay gateway phát hành thật. Đọc Marketing Pack và source nhóm Marketing để chuẩn bị pool, approval và gateway, không coi source là bằng chứng đã đăng lên tài khoản thật.
08 · Chat công khai: cùng cơ chế phối hợp, quyền hẹp hơn
Public chat dùng cùng conversation service, native AgentCore, durable store và Stop. Widget dùng group_id: auto khi host quảng bá groups.auto.v1 và Soot đã chọn có automatic_groups: true, vẫn tuân theo nhóm ghim của app/client. Host chỉ phải bật public_web.apps.<id>.collaboration: true khi giao việc cho Soot khác; chế độ vào nhóm tự động chạy chính Soot đã chọn trong nhóm được phép và vẫn dùng được khi không bật cộng tác với đồng đội (autoScopes luôn cho Soot đầu vào tham gia và chỉ cho đồng đội tham gia khi đủ điều kiện). Mỗi đích nhóm phải được client groups cho phép; đồng đội là giao của thành viên nhóm và các Soot được gán cho client đang active. Soot đã chọn phải được làm đầu vào nhóm; root và đồng đội phải đạt public capability profile an toàn. Chat đã ghim và nhóm ghim của app/client vẫn cố định; chat cũ không có nhóm giữ phạm vi cũ. false tắt named teammates; true không bao giờ cho visitor chỉnh roster.
Publishable app key là selector, không phải operator credential. Visitor bearer do server cấp cùng tenant/visitor ownership bảo vệ conversation. Client assignments là grant browser; không còn reverse grant public_apps. Host sở hữu cấu hình client, Origin, key, giới hạn và activation. Policy đã lưu chưa phải policy active cho đến khi runtime xác nhận kích hoạt. Không đặt operator key hoặc trusted-backend key vào frontend công khai.
Tích hợp công khai chọn một soot được phép; client hiện tại hỗ trợ tự động chọn group_id: auto mà không bắt buộc chọn nhóm. Nhóm có tên rõ vẫn cố định; API cũ bỏ group_id giữ cách xác định nhóm ghim/mặc định/duy nhất và lỗi khi chưa rõ, không tự chọn auto hay nhóm đầu tiên. Mặc định chỉ ảnh hưởng chat mới, không chuyển lịch sử đang có. Đọc hoặc tiếp tục chat tổng hợp cần quyền với mọi nhóm đã đóng góp; thu hồi quyền ẩn chat theo cách thận trọng. Chẩn đoán snapshot chỉ đọc và lọc theo scope vẫn còn, nhưng sửa roster công khai bị từ chối. Detailed delegation receipts và native transcripts vẫn riêng tư; visitor dùng history và tiến độ được phép.
Với workload tools cấu hình, public safety chỉ cho read_skill, không cho thao tác workload đặc quyền. Nghiên cứu/crawl và phát hành marketing cần private deployment cùng grants phù hợp. Public coordinator không thể gọi publisher ngoài assignments. Công việc nội bộ dùng backend xác thực hoặc transport private phù hợp.
Đặt limits.model_calls_per_run cho mỗi public app đủ root calls, đồng đội và lượt tổng hợp. Bỏ giới hạn này thì app reserve một call, không đủ delegation. Quota app/global là trần dùng chung dù collaboration budget của host cao hơn. Assignments, trạng thái bật và ngân sách hiện hành được kiểm tra lại tại các ranh giới thực thi. Xem kiến trúc public web; hành vi source không chứng minh đã kích hoạt production.
09 · Hỏi quyết định cần thiết, không hỏi cách chia việc cho đồng đội
Chọn một Soot rồi giao việc bình thường. Khi có chế độ nhóm tự động, không cần bước chọn nhóm hay prompt định tuyến tự viết: native spawn_subagent chọn đích nhóm host đã cấp quyền, còn câu trả lời thông thường không gọi đồng đội. Mô tả nhóm giúp chọn công việc phù hợp, không mở rộng quyền. Để Soot thu bằng chứng và trả một kết quả tổng hợp trong conversation gốc; chế độ ghim và cũ giữ giới hạn của chúng.
Soot chỉ nên hỏi mục tiêu, dữ liệu còn thiếu hoặc quyền cần cấp khi thật sự cần, không hỏi bạn chọn Radar, Editor hay Publisher. Với marketing, quyết định hữu ích là “Kết nối Blog”, “Duyệt revision này” hoặc “Tiếp tục chỉ với bản nháp”. Thiếu quyền thì nêu blocker cụ thể hoặc trả bản nháp, không tự thêm Soot ngoài scope.
Operator vẫn cấu hình members, bindings, grants và kích hoạt template. Cài template không tạo tài khoản ngoài hệ thống hay tự bật bindings. Xem chất lượng công việc và bằng chứng thay vì quản lý roster theo phiên hoặc tab của từng đồng đội.
Nội dung được xem lại: 09.10.2026