<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title id="root">Поручите работу агенту</title>
  <status stage="doc" state="work" audience="user,agent"/>
  <p p="1">Каждая страница этого руководства, которая описывает задачу, начинается с простой просьбы, которую вы печатаете своему агенту. Эта страница объясняет, что эти просьбы предполагают, как агент доказывает, что работа сделана, и что происходит, когда vibe возвращает задание агенту, вместо того чтобы выполнить его самому.</p>
  <section id="the-prompt-blocks" title="Просьбы на этих страницах">
    <p p="2">Страница задачи открывается блоком, который можно скопировать любому агенту с [навыком](../glossary/index.xml#skill) vibevm: он называет предмет, формулирует результат и не упоминает секретов. Под ним *нужно* перечисляет, что у агента должно быть (навык, доступ к сети, токен в окружении), *результат* говорит, что вы увидите, когда всё получилось, а строки *assert* — команды, которые после этого должны проходить. Смысл именно в этих строках: ответ агента нельзя проверить по формулировке, а код выхода команды — можно. Запустите их сами или попросите агента запустить их и показать вам результаты.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-057#STYLE-PROMPT-FIRST" p="3"/>
    <p p="4">Просьба, в которой есть необратимый шаг, публикация или удаление, говорит, что перед этим шагом агент должен спросить подтверждения. Сохраняйте эту строку, когда приспосабливаете просьбу под себя.</p>
  </section>
  <section id="how-vibe-knows" title="Как vibe узнаёт, что его вызывает агент">
    <p p="5">vibe ведёт себя одинаково, печатает ли команду человек или агент, с одним уточнением. Агент представляется флагом `--invoked-by &lt;name&gt;` или переменной окружения `VIBE_INVOKED_BY`. Каждый машинный отчёт после этого несёт это имя, так что в журналах видно, кто что сделал. Установленный навык велит агенту передавать его. В скрипте `--unattended` отвечает на все подтверждения и отказывается открывать интерактивные мастера.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-018#MODE-INFERRED" p="6"/>
  </section>
  <section id="two-transports" title="Два пути от агента к vibe">
    <p p="7">Агент может запускать vibe как команду, по процессу на вызов: так естественно задать быстрый вопрос или сделать широкий обход. Или он может говорить с `vibe mcp serve`, постоянным сервером, который регистрирует `vibe mcp install`: сервер отвечает на вопросы о пакетах проекта и выполняет те же операции, не порождая оболочку на каждый вызов. Операция определена один раз; какой дверью пользоваться, выбирает агент, а навык учит его эвристике.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-018#ONE-OP-TWO-TRANSPORTS" p="8"/>
  </section>
  <section id="the-relay" title="Когда vibe возвращает задание">
    <p p="9">Внутри vibe нет модели. Когда операции нужно рассуждение, например объяснить проект прозой, vibe за него не берётся: он составляет инструкцию и оставляет её в почтовом ящике [эстафеты](../glossary/index.xml#relay) проекта, `.vibe/agentic/command.md`. Агент затем выполняет `vibe command`: команда печатает инструкцию и очищает ящик, а агент выполняет её собственной моделью. Автоматической записи назад нет: если результат должен дойти до vibe, агент выполняет команду, которая его записывает.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-018#RELAY-PARKS" p="10"/>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-018#NO-WRITE-BACK" p="11"/>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-018#DRAIN-VERB" p="12"/>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-018#EXPLAIN-DEMONSTRATOR" p="13"/>
    <example ref="agentic-explain" p="14"/>
    <example ref="command" p="15"/>
    <p p="16">То же рукопожатие управляет шагами сборки, которые проект объявляет работой агента: когда vibe работает под агентом, такой шаг откладывается как задача для агента, и та же команда продолжает работу, как только объявленные результаты появились. Под человеком за терминалом vibe может вместо этого вызвать настроенного провайдера модели и платит за него только тогда, когда шаг действительно выполняется.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#AGENT-HANDSHAKE" p="17"/>
  </section>
  <section id="edge-cases" title="Особые случаи и правила">
    <p p="18">`vibe command` с пустым ящиком печатает, что ничего не ждёт; вызывать её безопасно в любой момент.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-018#EMPTY-SLOT-OK" p="19"/>
    <p p="20">Запущенная без агента вокруг и без встроенного движка, операция, которой нужно рассуждение, громко падает и просит запустить её под агентом; операция, которой рассуждение не нужно, работает как обычно.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-018#REACH-STANDALONE-NO-ENGINE" p="21"/>
    <p p="22">У каждой подсистемы vibe есть полный алгоритмический режим; модель только улучшает результат, и каждое такое улучшение выключено, пока оператор его не включит.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#LLM-IS-AN-ENHANCEMENT" p="23"/>
    <p p="24">Агент, который читает это руководство по адресу, а не через навык, находит те же просьбы в текстовой форме каждой страницы; страницы публикуются для машин так же, как для людей.</p>
  </section>
</spec>
