Handoff из Local в Cloud удобно представить как кнопку продолжить в облаке: нажал - и та же работа поехала дальше, только на чужой машине. Сильная сторона приёма в другом, и её легко проскочить. Сильный маршрут - исследовать задачу локально в режиме Plan, согласовать решение, а затем одним действием передать уже согласованный план в Cloud на реализацию. Ценность не в том, что работа продолжается, а в том, что в облако уезжает согласованный план, а не сырой замысел.
Наивный ход - нажать передачу пораньше и дописывать детали по ходу, как в обычном локальном диалоге. Кажется, что так быстрее: не тратить время на формулировки, а поправлять агента репликами, когда он свернёт не туда. Локально это иногда работает, потому что вы рядом и видите каждый шаг. Но то, что спасает локально, - ваше присутствие рядом, - в облаке недоступно, и приём перестаёт работать ровно тогда, когда работа уходит с ваших глаз.
Ломается это на двух границах сразу. Первая уже знакома: облако не видит вашего незакоммиченного состояния и вашего хода мыслей - оно знает только то, что передано. Вторая - темп: облачная сессия идёт долго и без вас, и оперативно поправить репликой уже нельзя так, как локально. Значит, всё, что агенту понадобится, должно быть в handoff в момент передачи, а не появиться позже.
Профессиональный механизм - делать handoff самодостаточным контрактом. В него входят зафиксированный commit или ветка, согласованный план, явные запреты, обязательные проверки, ожидаемая структура PR, секреты и сетевая политика, условие остановки и известный падающий baseline. Удобно держать это единым шаблоном, который заполняют перед каждой передачей. Каждое из этих полей отвечает на вопрос, который иначе всплыл бы в неудобный момент: с какого состояния стартовать, что считать успехом, чего не трогать и где остановиться и спросить человека.
Почему именно контракт, а не свободная переписка. Каждое поле контракта - это заранее снятая неопределённость, которую иначе пришлось бы снимать посреди долгой сессии, когда вас нет рядом. Строка do not change превращает пожелание в границу; required checks превращает слово работает в проверяемый факт; known failing baseline отделяет унаследованную поломку от внесённой агентом. Контракт стоит минуты на входе и экономит часы разбирательств на выходе.
Отдельно стоит понять, как устроена очередь сообщений в облаке, потому что она провоцирует ту самую наивную ошибку. Cloud send queue живёт на сервере и синхронизируется с web-приложением; Cmd/Ctrl+Enter ставит сообщение в очередь, а не отправляет немедленно. Раз очередь серверная, она переживает перезагрузку и видна в web. Правильное её использование - редактировать поставленное в очередь исправление, а не досылать поверх противоречащие добавления, из которых агент будет собирать вашу настоящую мысль сам. Несколько противоречащих сообщений в очереди - это не уточнение, а поручение агенту угадать, какое из них главное, и угадывает он не всегда так, как вы имели в виду.
Оправдан такой handoff там, где исследование и реализация естественно разделяются: область прояснилась локально, решение согласовано, а сама работа долгая и вашей машине не нужна. Признак готовности к передаче - вы можете заполнить контракт целиком, не оставив полей на тему разберётся по ходу. Если такое поле остаётся пустым, задача ещё не созрела для облака и просит доработки плана локально.
Проверять результат стоит по соответствию PR контракту, а не по факту, что агент что-то прислал. Прошёл ли required checks; соблюдён ли раздел do not change; совпала ли структура PR с ожидаемой; остановился ли агент там, где контракт велел остановиться и спросить. Известный падающий baseline здесь особенно ценен: он не даёт списать старую красную проверку на работу агента и наоборот.
Отсюда инженерный вывод: контракт handoff - это не бюрократия, а перенесённая вперёд проверка. Всё, что вы не зафиксировали в нём, вы будете выяснять постфактум по чужому diff, уже без контекста согласования. Поэтому план согласуют локально, где это дёшево, и передают в облако только то, что можно проверить по возвращении. Это дисциплина, а не требование продукта: система примет и пустой замысел, дорогой окажется его реализация.
Типичный провал - противоречивые дописывания в очередь и неполный контракт. Симптом узнаётся так: PR приходит почти то, агент явно понял часть задачи по-своему, а в истории очереди лежат несколько сообщений, которые спорят друг с другом. Прежде чем досылать очередную реплику, отредактируйте уже стоящую в очереди и сверьте handoff с контрактом - чаще всего расхождение растёт из пропущенного поля, а не из ошибки агента.
Handoff contract
Repository/branch:
Approved plan:
Do not change:
Required checks:
Expected PR structure:
Secrets and network policy:
When to stop and ask:
Known failing baseline: