Документация

Что происходит, пока кодовый агент анализирует систему?

Анализ устроен не как один большой запрос. Он состоит из небольших вопросов, на каждый из которых дают ответ, проверяют его дважды и сохраняют, поэтому при обрыве сессии ничего не теряется.

Короткий ответ

Подключённый анализ приходит небольшими порциями работы. Кодовый агент отвечает на одну порцию за раз через инструменты, которые ему отдаёт 1adk-agent. Прежде чем что-то покинет машину, 1adk-agent сверяет ответ с опубликованным контрактом и пропускает через защиту приватности, и ответ, который не прошёл одну из проверок, не отправляется вовсе. Сервер затем проверяет его снова, прежде чем сохранить. Когда ответы есть на все порции, они собираются в один результат, который попадает в проект. Перерыв ничего не стоит, потому что та же фраза продолжает работу с места остановки.

#Небольшие порции работы

Для каждого анализа сервер держит план и выдаёт по одной порции работы за раз. Порция представляет собой структурированный вопрос с заданной формой ответа: сначала общий контур системы, потом её компоненты, интерфейсы, хранилища данных и важные операции, потом вопросы, которые оставил открытыми прежний анализ. Кодовый агент никогда не получает от сервера произвольных инструкций, только порции тех видов, которые описаны в опубликованном контракте.

Именно небольшие порции позволяют анализу пережить сбой. Сессия кодового агента может закончиться в любой момент и по причинам, которые к 1ADK отношения не имеют. Когда работа разбита на последовательность отвеченных вопросов, оборвавшаяся сессия теряет в худшем случае ту порцию, которую держала.

#Две проверки, до сети и после

  1. На машине, до отправки

    1adk-agent сверяет каждый ответ с тем же контрактом, по которому работает сервер, и пропускает его через защиту приватности. Ответ, не прошедший проверку, возвращается кодовому агенту с причиной, чтобы тот его исправил. Ответ, не прошедший защиту приватности, не отправляется ни в каком виде.

    Контракт опубликован открыто, у него есть версия и хеш, и его исполняют обе стороны.

  2. На сервере, до сохранения

    Сервер проверяет ответ снова и независимо, потому что проверке на чужой машине сервер полагаться не может. Принятые ответы хранятся как черновик, которого проект ещё не видит.

    Пока анализ идёт, в проекте ничего не меняется.

  3. Когда отвечены все порции

    Черновик собирается в один результат и проверяется целиком. Подключённый анализ после этого попадает в проект сам. Результат, который не удалось собрать, в проект не записывается, а страница анализа говорит, что делать дальше.

    Отсутствие записывается только там, где анализ действительно смотрел, а два противоречащих ответа хранятся как противоречие, и никто не выбирает между ними наугад.

#Что отправляется

До 1ADK доходит структурированное описание: названия компонентов и интерфейсов, с чем они связаны, где хранятся данные, важные операции, ссылки на то, где найден каждый факт, и то, что установить не удалось. Это не исходные файлы.

Граница

1ADK не требует доступа к репозиторию и не требует загружать нам исходный код. Сам кодовый агент читает репозиторий на условиях того, кто его предоставляет. Это отдельные отношения, и 1ADK в них не участвует.

#Остановка и продолжение

Закрыли кодового агента, пропала сеть, захлопнули ноутбук. Порцию, над которой шла работа, выдадут снова, когда машина вернётся, а уже отвеченные порции остаются отвеченными. Чтобы продолжить, откройте кодового агента в той же папке и снова скажите фразу.

Кабинет показывает, подключена ли машина и что она сейчас делает, поэтому затихший анализ виден как затихший, вместе с шагом, который его снова запустит.

#Коммит посреди анализа

Анализ описывает одну ревизию кода. Если репозиторий сдвинулся, пока анализ шёл, половина ответов описывала бы одну ревизию, а половина другую. Поэтому анализ останавливается и ждёт вас, а не смешивает их. Страница анализа об этом говорит и предлагает продолжить на той ревизии, на которой репозиторий находится сейчас.

#Завершение, досрочное или в срок

Анализ завершается, когда отвечены все порции. Его можно завершить и досрочно со страницы анализа. Отвеченные порции сохраняются, остальные пропускаются, и результат говорит, какую часть он покрыл.

Следующий проход запускается со страницы проекта кнопкой «Продолжить изучение». Она просит у той же подключённой машины новую работу, начиная с того, что проект уже знает, и с вопросов, которые ещё открыты. Человек у машины открывает кодового агента и говорит фразу, потому что 1ADK не может запустить кодового агента удалённо.

#Когда что-то не работает

Что вы видите и что делать
Что вы видите Что делать
Кодовый агент не знает инструментов 1ADK. Перезапустите кодового агента в подключённой папке. Он загружает серверы инструментов при запуске, поэтому сервер, зарегистрированный, пока агент был открыт, ему ещё не виден.
Строка подключения сообщает, что код недействителен. Код сопряжения срабатывает один раз и истекает через несколько минут. Откройте страницу подключения снова, чтобы получить новый.
Кабинет говорит, что машина отстала. Выполните строку установки ещё раз. Она заменит программу текущим выпуском, предварительно сверив контрольную сумму.
Анализ ждёт вас. Обычно это значит, что репозиторий сдвинулся во время анализа. Откройте страницу анализа и продолжите с карточки наверху.
Результат не попал в проект. На бесплатном тарифе лимит составляет два принятых анализа. Результат ждёт, а проект остаётся доступным для чтения. Страница тарифа говорит, что вам доступно.

Посмотрите, что именно покидает машину.

Предпросмотр метаданных показывает, какое структурированное описание отправляет анализ, без аккаунта и без отправки чего-либо.

Создать аккаунт Предпросмотр метаданных