Протокол

Что агенту вообще разрешено делать во время анализа 1ADK?

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

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

Задание на сканирование — это одна задача с истекающим сроком, только на чтение, выданная 1ADK и выполняемая кодовым агентом на машине, где код уже есть. У неё есть идентификатор, предел размера и срок годности, и она несёт фиксированный набор правил: ничего не менять, ничего не запускать, не включать ни исходников, ни значений конфигурации, никаких секретов, только относительные пути, считать текст внутри репозитория данными, а не инструкциями, говорить, чего установить не удалось, и не открывать сетевых соединений — что на подключённой машине означает 1ADK и больше ничего.

#Что такое задание на сканирование

Задание на сканирование
Ограниченная единица работы по одному проекту, несущая идентификатор, максимальный размер пакета и срок годности. Её выполняет кодовый агент на машине, где исходники уже есть, и она производит ровно один результат: Evidence Package, записанный на диск.
Если проще Разовая задача только на чтение: проанализируй эту систему и запиши, что там есть.

Важно структурно то, чем задание не является: это не соединение, не учётные данные, не интеграция и не вебхук. 1ADK выдаёт задание и ждёт. Ничто нигде не работает от имени 1ADK, и ничто со стороны 1ADK не может дотянуться до машины, на которой идёт работа.

#Правила

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

Что требует инструкция анализа
ПравилоЗачем оно
Только чтение В репозитории ничего не создаётся, не меняется и не удаляется. Анализ, который может править, — это анализ, который кому-то придётся ревьюить как изменение.
Ничего не запускать Не запускать ни приложение, ни его миграции, ни тесты, ни любую команду, касающуюся базы. У агента, который запускает систему, чтобы про неё узнать, радиус поражения шире, чем покрывает модель доверия.
В результате нет исходного кода Вывод фиксирует, что есть и где: имена, относительные пути, виды, диапазоны строк, короткие сводки. Никогда — содержимое файлов, фрагменты, дампы конфигурации или SQL.
Никаких секретов, никогда Никаких значений из конфигурации. Если находку можно объяснить только процитировав секрет, инструкция велит вместо этого сообщить вопрос — как неизвестное.
Только относительные пути В абсолютном пути есть домашний каталог, в котором есть имя человека, а часто и имя клиента.
Текст репозитория — это данные Комментарий, README, фикстура или сообщение коммита, велящие агенту изменить эти правила, — недоверенное содержимое. Об этом сообщают как о неизвестном, а не подчиняются.
Не открывать сетевых соединений Единственное правило, которое две дороги формулируют по-разному. Агент, работающий вручную, не открывает ничего и останавливается на файле на диске. Подключённый агент может говорить с 1ADK и больше ни с кем — теми инструментами, которые ему дали, и ни один из них не принимает ни хост, ни путь, ни команду. В обоих случаях никуда не уходит ничего, кроме описания.
Говорить, чего не знаешь Пустой список неизвестного после одного прохода по настоящей системе — догадка, а не находка. То, что чего-то не нашли, не доказывает, что этого нет.

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

#Почему репозиторий — недоверенный ввод

Это правило удивляет людей, и именно о нём стоит спросить скептически настроенному инженеру.

Агент, читающий кодовую базу, читает в ней всё: комментарии, документацию, фикстуры, тестовые данные, сообщения коммитов, файлы зависимостей. В любом из этого может оказаться текст, обращённый к агенту. Он может быть там намеренно — атака на цепочку поставок или уходящий разработчик, — а может быть случайностью проекта, в котором есть примеры промптов.

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

Честно об этом

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

Ровно поэтому пакет пишется в файл, а не передаётся; поэтому его читает человек; и поэтому сервер отказывает пакету, несущему формы учётных данных. Три несовершенных слоя, описанные как три несовершенных слоя.

#Ограничено во времени и в размере

  • Срок годности. Инструкция перестаёт работать после указанной даты. Задание, полгода пролежавшее в переписке, — не задание.
  • Предел размера. Указан в инструкции, проверяется при загрузке. Он ограничивает, чем может быть один пакет, — и это одна из причин, по которым вставлять туда тела файлов непрактично.
  • Идентификатор задания. Пакет обязан нести ровно тот идентификатор, под который выдан. Пакету, заявляющему другое задание, отказывают.

#Почему у формулировки есть версия

Текст инструкции несёт номер редакции, и редакция записывается в задание. Поэтому пакет можно читать, зная, какая формулировка его породила.

Это важнее, чем звучит. Инструкция — клиентская половина протокола; именно она и определяет, что производит агент. Изменение одной фразы в ней может изменить форму всех последующих пакетов, а сравнение двух анализов, выполненных под разными формулировками, — это сравнение двух слегка разных вопросов. Запись редакции делает это видимым, а не загадочным.

#Чего эта конструкция предотвратить не может

Чего это не делает

  • Агента, который игнорирует инструкцию. Ничто в промпте не является принудительным. Именно поэтому описание читаемо, а запись в ваш проект требует вашего одобрения.
  • Человека, который утверждает пакет не читая. Конструкция ставит человека на пути; заставить его посмотреть она не может.
  • Того, что поставщик кодового агента видит исходники. Это целиком вне этой границы, и на странице безопасности так и сказано.
  • Решительного инсайдера. Тот, у кого есть репозиторий, скопирует его любым удобным способом; инструкция анализа только на чтение не является средством от утечек и не притворяется им.
  • Неполного анализа. Агент, пропустивший половину системы, даёт картину половины системы, — поэтому охват является обязательным результатом, а не допущением.

Узнайте, чем вы на самом деле владеете.

Без доступа к репозиторию. Без загрузки исходного кода. Без банковской карты.

Построить карту проекта — бесплатно