Короткий ответ
#Небольшие порции работы
Для каждого анализа сервер держит план и выдаёт по одной порции работы за раз. Порция представляет собой структурированный вопрос с заданной формой ответа: сначала общий контур системы, потом её компоненты, интерфейсы, хранилища данных и важные операции, потом вопросы, которые оставил открытыми прежний анализ. Кодовый агент никогда не получает от сервера произвольных инструкций, только порции тех видов, которые описаны в опубликованном контракте.
Именно небольшие порции позволяют анализу пережить сбой. Сессия кодового агента может закончиться в любой момент и по причинам, которые к 1ADK отношения не имеют. Когда работа разбита на последовательность отвеченных вопросов, оборвавшаяся сессия теряет в худшем случае ту порцию, которую держала.
#Две проверки, до сети и после
-
На машине, до отправки
1adk-agent сверяет каждый ответ с тем же контрактом, по которому работает сервер, и пропускает его через защиту приватности. Ответ, не прошедший проверку, возвращается кодовому агенту с причиной, чтобы тот его исправил. Ответ, не прошедший защиту приватности, не отправляется ни в каком виде.
Контракт опубликован открыто, у него есть версия и хеш, и его исполняют обе стороны.
-
На сервере, до сохранения
Сервер проверяет ответ снова и независимо, потому что проверке на чужой машине сервер полагаться не может. Принятые ответы хранятся как черновик, которого проект ещё не видит.
Пока анализ идёт, в проекте ничего не меняется.
-
Когда отвечены все порции
Черновик собирается в один результат и проверяется целиком. Подключённый анализ после этого попадает в проект сам. Результат, который не удалось собрать, в проект не записывается, а страница анализа говорит, что делать дальше.
Отсутствие записывается только там, где анализ действительно смотрел, а два противоречащих ответа хранятся как противоречие, и никто не выбирает между ними наугад.
#Что отправляется
До 1ADK доходит структурированное описание: названия компонентов и интерфейсов, с чем они связаны, где хранятся данные, важные операции, ссылки на то, где найден каждый факт, и то, что установить не удалось. Это не исходные файлы.
Граница
1ADK не требует доступа к репозиторию и не требует загружать нам исходный код. Сам кодовый агент читает репозиторий на условиях того, кто его предоставляет. Это отдельные отношения, и 1ADK в них не участвует.
#Остановка и продолжение
Закрыли кодового агента, пропала сеть, захлопнули ноутбук. Порцию, над которой шла работа, выдадут снова, когда машина вернётся, а уже отвеченные порции остаются отвеченными. Чтобы продолжить, откройте кодового агента в той же папке и снова скажите фразу.
Кабинет показывает, подключена ли машина и что она сейчас делает, поэтому затихший анализ виден как затихший, вместе с шагом, который его снова запустит.
#Коммит посреди анализа
Анализ описывает одну ревизию кода. Если репозиторий сдвинулся, пока анализ шёл, половина ответов описывала бы одну ревизию, а половина другую. Поэтому анализ останавливается и ждёт вас, а не смешивает их. Страница анализа об этом говорит и предлагает продолжить на той ревизии, на которой репозиторий находится сейчас.
#Завершение, досрочное или в срок
Анализ завершается, когда отвечены все порции. Его можно завершить и досрочно со страницы анализа. Отвеченные порции сохраняются, остальные пропускаются, и результат говорит, какую часть он покрыл.
Следующий проход запускается со страницы проекта кнопкой «Продолжить изучение». Она просит у той же подключённой машины новую работу, начиная с того, что проект уже знает, и с вопросов, которые ещё открыты. Человек у машины открывает кодового агента и говорит фразу, потому что 1ADK не может запустить кодового агента удалённо.
#Когда что-то не работает
| Что вы видите | Что делать |
|---|---|
| Кодовый агент не знает инструментов 1ADK. | Перезапустите кодового агента в подключённой папке. Он загружает серверы инструментов при запуске, поэтому сервер, зарегистрированный, пока агент был открыт, ему ещё не виден. |
| Строка подключения сообщает, что код недействителен. | Код сопряжения срабатывает один раз и истекает через несколько минут. Откройте страницу подключения снова, чтобы получить новый. |
| Кабинет говорит, что машина отстала. | Выполните строку установки ещё раз. Она заменит программу текущим выпуском, предварительно сверив контрольную сумму. |
| Анализ ждёт вас. | Обычно это значит, что репозиторий сдвинулся во время анализа. Откройте страницу анализа и продолжите с карточки наверху. |
| Результат не попал в проект. | На бесплатном тарифе лимит составляет два принятых анализа. Результат ждёт, а проект остаётся доступным для чтения. Страница тарифа говорит, что вам доступно. |