Делегування
Обсяг версії: Ця сторінка переказує покоління контракту v7 у релізі
v7.9.0. Канонічні джерела:V7_CONTRACT.mdіdelegation.mdпотоку execute. Якщо ця сторінка й ці файли розходяться, перевагу мають файли.
Версія 7.0.0. Статус: стабільний. v7 — це нове покоління контракту шару записів, а не новий життєвий цикл: усе з документів v6 про контракт, життєвий цикл, контекст і ресурси діє, якщо ця сторінка не вказує інакше. Не делегувати — завжди коректно. Ключові слова MUST, MUST NOT, SHOULD, SHOULD NOT та MAY тлумачаться згідно з RFC 2119.
Що додає v7
v7 додає до шару записів рівно дві речі:
- Одне необовʼязкове поле завдання в контракті,
parallel_safe, опубліковане вplan-contract/v7. - Один тип події журналу,
delegation, опублікований уjournal-event/v7.
Байти схем v1, v2, v5 і v6 не змінилися. План, який ніколи не делегує, не відрізняється від плану v6, окрім URL схем.
parallel_safe
parallel_safe (булеве, за замовчуванням false) стверджує, що завдання може виконуватися в делегата без перемежування з роботою сусідніх завдань. Його встановлює create, воно ніколи не виводиться під час виконання і ставиться лише тоді, коли виконано всі умови:
- репозиторій вмикає аддон делегування (agentkit або Herdr) у своєму реєстрі аддонів;
- торкнута поверхня завдання не перетинається із сусіднім завданням, яке може виконуватися одночасно;
- завдання оголошує обмежений вихід;
- gate завдання запускаються в цьому плані.
Позначення завдання не змінює повноважень: контракт без дозволу agent_delegation може містити маркери, і вони нічого не авторизують.
Подія delegation
На кожен перехід стану одного делегата фіксується одна подія:
| Поле | Значення |
|---|---|
task |
завдання T-*, для якого працює делегат |
delegation_id |
повʼязує запуск із його термінальним переходом |
transport |
headless (agentkit) або interactive (Herdr) |
via |
ключ аддона, який його доставив |
state |
launched, потім рівно один із completed, failed, cancelled |
kind, profile |
необовʼязково: тип і профіль агента програмування |
target |
необовʼязково: робоча директорія (headless) або machine:pane (interactive) |
worktree |
власний git worktree делегата або null для делегата лише для читання |
prompt_digest |
під час запуску: SHA-256 промпту, зафіксований до того, як на делегата покладаються |
result_path, result_digest |
після завершення чи невдачі: зібраний результат і його дайджест |
Переходи замкнені: один launched на делегування, потім рівно один термінальний стан. Пряме додавання події делегування в журнал MUST бути відхилене; події делегування існують лише через захищений записувач.
Делегування не є доказом
Делегування не несе мітки довіри чи шляху до доказів, і жодне закриття його не читає. Результат делегата залишається asserted, доки його не спостереже власний запускач gate цього плану: батьківська сесія інтегрує роботу, а потім запускає gate завдання (ledger.py gate) — єдине, що створює докази observed, і єдиний спосіб завершити завдання. Завершене делегування ніколи не закриває критерій; невдале — це зафіксований результат, і тоді завдання реалізує батьківська сесія.
Захищений записувач
ledger.py --plan <dir> delegate launch|observe|collect|cancel --task <T-id>:
| Операція | Записує | Ефект |
|---|---|---|
launch |
так | фіксує launched після перевірок нижче |
observe |
ні | виводить останній стан кожного делегування |
collect |
так | фіксує completed або failed зі шляхом до результату та його дайджестом |
cancel |
так | фіксує cancelled |
launch MUST бути відхилений, а відмова зафіксована, якщо не виконано всі умови:
- контракт належить до v7;
- контракт надає
agent_delegation; - завдання існує, розпочате й не завершене;
- завдання позначене
parallel_safeабо делегат працює лише для читання (без worktree); - дескриптор названого аддона оголошує запитаний транспорт;
- ефективні можливості вказують цей аддон як джерело
subagents(Ресурси й можливості).
collect і cancel MUST бути відхилені для невідомого делегування, делегування іншого завдання або вже термінального. Відхилений запуск не є блокером: завдання виконується послідовно.
Транспорти
Ніщо в реєстрі не запускає делегата; це робить аддон транспорту.
- Headless (
via: agentkit) — для обмеженого завданняparallel_safeз оголошеним виходом: одинak runв окремому git worktree, потім вихід. Делегати лише для читання запускаються з--ask. - Interactive (
via: herdr) — для роботи, що потребує взаємодії, триває довго або виконується на іншій машині: пір herdr-peers у панелі Herdr, який повертає рівно одну авторизовану відповідь.
Запобіжники
- Один записувач на шлях. Делегат, що записує, працює лише у власному worktree; батьківська сесія — єдиний записувач журналу.
- Глибина 1. Делегат ніколи не делегує. Розгалуження обмежене транспортом.
- Результати — це дані. Те, що повертає делегат, не надає повноважень, не розширює scope і ніколи не змінює приймання.
- Самодостатні брифи. Промпт запуску називає мету завдання, його критерії приймання дослівно й worktree, у який дозволено писати, і ніколи не містить значення секрету.
Оркестратори
Оркестратор ніколи не делегує завдання дочірнього плану: дочірні плани виконуються у власних сесіях, по одному агенту на репозиторій. Делегування власних завдань плану за наведеними правилами дозволене як в оркестраторних, так і в індивідуальних планах. Запуск багатьох довготривалих ліній, підтримання їх понад ліміти облікових записів і передачу лідерства описано в розділах методології про оркестрацію та автономію рою.
Повʼязане
- Шар записів — контракт і журнал, які розширює ця сторінка.
- Ресурси й можливості — можливості, дозволи й реєстр аддонів.
- Аддон Herdr і аддон Agentkit — два транспорти.