Ủy quyền
Phạm vi phiên bản: Trang này trình bày lại thế hệ hợp đồng v7 tại bản phát hành
v7.9.0. Nguồn chính thức:V7_CONTRACT.mdvàdelegation.mdcủa luồng execute. Khi trang này và các tệp đó khác nhau, các tệp được ưu tiên.
Phiên bản 7.0.0. Trạng thái: Ổn định. v7 là một thế hệ hợp đồng mới của lớp bản ghi, không phải một vòng đời mới: mọi điều trong các tài liệu hợp đồng, vòng đời, ngữ cảnh và tài nguyên của v6 đều áp dụng trừ khi trang này nói khác. Không ủy quyền luôn là đúng. Các từ khóa MUST, MUST NOT, SHOULD, SHOULD NOT và MAY được diễn giải như mô tả trong RFC 2119.
Những gì v7 bổ sung
v7 bổ sung đúng hai điều vào lớp bản ghi:
- Một trường tác vụ tùy chọn trong hợp đồng,
parallel_safe, được công bố trongplan-contract/v7. - Một loại sự kiện nhật ký,
delegation, được công bố trongjournal-event/v7.
Các byte schema v1, v2, v5 và v6 không thay đổi. Một kế hoạch không bao giờ ủy quyền thì không thể phân biệt với một kế hoạch v6, ngoại trừ các URL schema của nó.
parallel_safe
parallel_safe (boolean, mặc định false) khẳng định rằng một tác vụ có thể chạy trong một delegate mà không đan xen với công việc của các tác vụ anh em. Nó được đặt bởi create, không bao giờ được suy ra trong lúc thực thi, và chỉ khi tất cả các điều sau đều đúng:
- repository bật một addon ủy quyền (agentkit hoặc Herdr) trong registry addon của nó;
- bề mặt bị chạm tới của tác vụ không chồng lấn với một tác vụ anh em có thể đang chạy cùng lúc;
- tác vụ khai báo một đầu ra có giới hạn;
- các cổng của tác vụ chạy trong kế hoạch này.
Đánh dấu một tác vụ không thay đổi thẩm quyền nào: một hợp đồng không có quyền agent_delegation vẫn có thể mang các dấu này, và chúng không cho phép điều gì.
Sự kiện delegation
Mỗi lần chuyển trạng thái của một delegate được ghi lại thành một sự kiện:
| Trường | Ý nghĩa |
|---|---|
task |
tác vụ T-* mà delegate làm việc cho |
delegation_id |
liên kết một lần khởi chạy với lần chuyển trạng thái kết thúc của nó |
transport |
headless (agentkit) hoặc interactive (Herdr) |
via |
khóa addon đã thực hiện việc truyền |
state |
launched, sau đó đúng một trong completed, failed, cancelled |
kind, profile |
tùy chọn: loại và hồ sơ của agent lập trình |
target |
tùy chọn: thư mục làm việc (headless) hoặc machine:pane (interactive) |
worktree |
git worktree riêng của delegate, hoặc null cho một delegate chỉ đọc |
prompt_digest |
khi khởi chạy: SHA-256 của prompt, được ghi lại trước khi dựa vào delegate |
result_path, result_digest |
khi completed hoặc failed: kết quả thu được và digest của nó |
Các lần chuyển trạng thái là đóng: một launched cho mỗi lần ủy quyền, sau đó đúng một trạng thái kết thúc. Một lần ghi thêm thô một sự kiện ủy quyền vào nhật ký PHẢI (MUST) bị từ chối; các sự kiện ủy quyền chỉ tồn tại thông qua trình ghi có cổng.
Một lần ủy quyền không phải là bằng chứng
Một lần ủy quyền không mang nhãn tin cậy và đường dẫn bằng chứng nào, và không có thao tác đóng nào đọc nó. Kết quả của một delegate vẫn là asserted cho tới khi trình chạy cổng của chính kế hoạch này quan sát nó: kế hoạch cha tích hợp công việc, rồi chạy cổng của tác vụ (ledger.py gate), đây là thứ duy nhất tạo ra bằng chứng observed và là cách duy nhất để tác vụ có thể hoàn tất. Một lần ủy quyền đã hoàn tất không bao giờ đóng một tiêu chí; một lần thất bại là một kết quả được ghi lại, và khi đó tác vụ được kế hoạch cha tự triển khai.
Trình ghi có cổng
ledger.py --plan <dir> delegate launch|observe|collect|cancel --task <T-id>:
| Thao tác | Ghi | Tác dụng |
|---|---|---|
launch |
có | ghi lại launched sau các kiểm tra bên dưới |
observe |
không | in ra trạng thái mới nhất của mỗi lần ủy quyền |
collect |
có | ghi lại completed hoặc failed, cùng đường dẫn kết quả và digest của nó |
cancel |
có | ghi lại cancelled |
launch PHẢI (MUST) bị từ chối, và lần từ chối được ghi lại, trừ khi tất cả các điều sau đều đúng:
- hợp đồng là v7;
- hợp đồng cấp quyền
agent_delegation; - tác vụ tồn tại, đã bắt đầu và chưa hoàn tất;
- tác vụ là
parallel_safe, hoặc delegate là chỉ đọc (không có worktree); - bộ mô tả của addon được nêu tên khai báo phương thức truyền được yêu cầu;
- các khả năng hiệu lực liệt kê addon đó là một nguồn của
subagents(Tài nguyên và khả năng).
collect và cancel PHẢI (MUST) bị từ chối đối với một lần ủy quyền không xác định, một lần ủy quyền của tác vụ khác, hoặc một lần ủy quyền đã ở trạng thái kết thúc. Một lần khởi chạy bị từ chối không phải là một trở ngại: tác vụ chạy tuần tự.
Phương thức truyền
Không có gì trong ledger chạy một delegate; addon phương thức truyền làm việc đó.
- Headless (
via: agentkit) — cho một tác vụparallel_safecó giới hạn với đầu ra được khai báo: một lầnak runtrong một git worktree dành riêng, rồi thoát. Các delegate chỉ đọc được khởi chạy với--ask. - Interactive (
via: herdr) — cho công việc cần tương tác, chạy lâu hoặc chạy trên một máy khác: một peer herdr-peers trong một pane Herdr, trả về đúng một phản hồi được ủy quyền.
Hàng rào bảo vệ
- Mỗi đường dẫn một trình ghi. Một delegate có ghi chỉ làm việc trong worktree riêng của nó; phiên cha là trình ghi nhật ký duy nhất.
- Độ sâu 1. Một delegate không bao giờ ủy quyền tiếp. Mức phân nhánh bị giới hạn bởi phương thức truyền.
- Kết quả là dữ liệu. Những gì một delegate trả về không cấp thẩm quyền nào, không mở rộng phạm vi và không bao giờ thay đổi tiêu chí chấp nhận.
- Bản giao việc tự đầy đủ. Một prompt khởi chạy nêu mục tiêu của tác vụ, nguyên văn các tiêu chí chấp nhận của nó và worktree mà nó được phép ghi, và không bao giờ mang giá trị bí mật.
Bộ điều phối
Một orchestrator không bao giờ ủy quyền các tác vụ của một kế hoạch con: các kế hoạch con chạy trong phiên riêng của chúng, mỗi repository một agent. Việc ủy quyền các tác vụ của chính một kế hoạch theo các quy tắc trên được phép trong cả kế hoạch orchestrator lẫn kế hoạch individual. Việc chạy nhiều luồng tồn tại lâu, giữ chúng hoạt động vượt quá giới hạn tài khoản và chuyển giao quyền dẫn dắt được đề cập trong các chương phương pháp luận về điều phối và tự chủ bầy đàn.
Liên quan
- Lớp bản ghi — hợp đồng và nhật ký mà trang này mở rộng.
- Tài nguyên và khả năng — khả năng, quyền được cấp và registry addon.
- Addon Herdr và addon Agentkit — hai phương thức truyền.