Кто отвечает за код, который написал ИИ: регламент для агентств и команд разработки

Разработчик вставляет фрагмент клиентского кода в личный чат с моделью: корпоративная подписка есть, но открыт другой таб. На ревью его спрашивают, почему здесь сделано именно так, - он отвечает, что так предложила модель. Клиент интересуется, применяется ли ИИ на его проекте и что происходит с его данными, - а показать ему подрядчику нечего: документа нет.

Кто отвечает за код, который написал ИИ: регламент для агентств и команд разработки

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

Мы в Вебформате делаем автоматизацию на заказ: пишем код для чужих систем, ходим в продуктивные среды клиентов, держим их данные. Границы работы с ИИ на таких проектах нужно было описать документом - не потому, что что-то случилось, а потому, что без документа на вопрос клиента нечем ответить. Документ есть, его обезличенный образец выложен целиком - забрать можно в конце.

Ниже - что мы туда записали, на чём чуть не ошиблись и чего до сих пор не знаем.

Почему не подошло то, что уже написано

Регламентов по ИИ в интернете много. Прежде чем писать свой, мы разобрали то, что уже лежит в выдаче.

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

Вторая половина - инженерные чек-листы. Как формулировать запрос, почему сначала план и только потом код, почему нельзя мержить непрочитанное. Всё по делу. Только по 152-ФЗ и по коммерческой тайне такой чек-лист не закрывает ровным счётом ничего.

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

Главное решение: две части с разным статусом

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

Очевидный ход - слить их в один перечень требований. Мы его чуть не сделали и теперь считаем это главной развилкой документа.

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

Поэтому частей две:

  • Часть I, Политика. Данные, инструменты, ответственность за код, права на результат. Нарушить эту часть - значит нарушить трудовые обязанности, со всеми последствиями по Трудовому кодексу.
  • Часть II, Регламент. Как работать на конкретной задаче. Забыл, пропустил, не описал - задачу вернут на доработку и разберут на ежемесячной встрече. До дисциплинарных мер это доходит, только если повторяется систематически и после двух письменных замечаний.

Часть I защищает клиента и компанию. Часть II растит разработчика. Цена ошибки разная, поэтому и последствия разные.

Пять неочевидных вещей из правовой части

Ссылка на ИИ ответственность не снимает. Отвечает тот, кто закоммитил. Фраза "так предложил ИИ" названа в документе прямо и там же объявлена недостаточной. Звучит грубовато, зато закрывает целый класс споров на ревью раз и навсегда.

Личные учётные записи - красная линия. Ни код клиента, ни конфиги, ни токены, ни выгрузки базы не попадают в личный аккаунт - в том числе в платный. Личная запись отличается от корпоративной ровно одним: режимом приватности, при котором провайдер не забирает переданное на дообучение.

Соответствие 152-ФЗ - свойство оператора, а не модели. Это место, где чаще всего пишут ерунду. Российский сервис сам по себе ничего не соблюдает: требования выполняет тот, кто поручил обработку. Поэтому в документе стоят условия передачи - поручение от клиента или согласие субъекта, серверы в России либо трансграничная передача по статье 12, запись в журнале обработки, - а не фраза "используем сервис, соответствующий 152-ФЗ".

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

Слово клиента сильнее нашего документа. Клиент вправе ограничить или вовсе запретить ИИ у себя на проекте - договором или своей политикой безопасности. Такие проекты собраны в отдельный список, и команда узнаёт о них до начала работ, а не в середине.

Категории задач: как не похоронить регламент за неделю

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

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

Сомневаешься между двумя - берёшь верхнюю. Категория умеет расти по ходу дела: выяснилось, что задача всё-таки задевает оплату, - работа останавливается, категория меняется, включаются её требования.

Дальше в документе матрица: какие требования включаются на какой категории. У простой не требуется ничего, кроме обычного ревью. У критичной - согласование подхода с альтернативами до кода, письменный план проверки, проверка на копии данных клиента и ревью технического руководителя.

Порядок на задаче: шесть шагов

  1. Опиши задачу сам, до первого запроса к модели. Что делаем, зачем, что не входит, что затрагиваем, риски, как проверю.
  2. Сложная или критичная - согласуй подход с техническим руководителем до кода. Для критичной альтернативы обязательны: вариант без альтернатив к согласованию не принимается.
  3. Проси план и риски, а не готовый код. Первым запросом идут контекст проекта и ограничения, план разбираем, лишнее отклоняем.
  4. Иди маленькими шагами. Большая задача целиком модели не поручается; после каждой части разработчик сам читает изменения и запускает.
  5. Заполни карточку использования ИИ. Пять-десять строк в описании запроса на слияние: для чего использовал, какие дал ограничения, что модель предложила, что принял, что отверг и почему, что проверил руками.
  6. Пройди план проверки. Ошибки и некорректный ввод, границы, повторный запуск, права доступа, что стало с накопленными данными, не сломалось ли соседнее.

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

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

На ревью добавилось правило: проверяющий вправе спросить про любую строку и ожидать объяснения без обращения к модели. "Так предложил ИИ" ответом не считается - задачу возвращают на доработку.

Отдельно про автономных агентов и MCP

В офисных регламентах такого раздела нет: они написаны про чат в браузере. Агент, который сам запускает команды и переписывает файлы, - другая история. Из цепочки между предложением модели и изменением в репозитории пропадает человек.

Четыре условия, при которых мы разрешаем автономный режим:

  • работает агент только в изоляции - своя ветка, контейнер, песочница; к основной ветке и к боевым средам доступа у него нет;
  • ревью человеком перед слиянием обязательно, в описании запроса на слияние указаны параметры запуска;
  • MCP-серверы подключаются к среде с боевыми доступами клиентов только с ведома техлида;
  • работать в бою у клиента с правом менять данные агенту запрещено, если рядом нет человека, следящего за каждым шагом.

Последний пункт написан не из осторожности вообще, а потому что цена такой ошибки - это данные клиента, а не наш рабочий день.

Тревожные признаки разбираем, а не наказываем

Раз в месяц техлид садится с разработчиком и проходит одну живую задачу от постановки до сдачи. Час, не больше. На выходе - одна-две зоны роста, записанные словами, а не в голове; на следующей встрече их проверяют.

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

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

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

Что мы вырезали из внутренней версии перед публикацией

Образец - это наш рабочий документ, из которого убрано то, что нельзя отдавать как есть. Что именно:

  • Готовое основание для увольнения. Во внутренней версии стояла конкретная ссылка на подпункт "в" пункта 6 части 1 статьи 81 ТК. В публичной оставлена отсылка к статье 81 и прямое требование согласовать формулировку с юристом. Причина простая: без фактически введённого режима коммерческой тайны ссылаться на её разглашение нельзя, а он введён далеко не у всех.
  • Перечень инструментов. Он остался, но помечен как пример. Смысл не в названиях, а в трёх колонках: инструмент, что им разрешено делать, на каком тарифе.
  • Наши продукты и проекты в разделе про персональные данные - обобщены.

Отдельно добавили выноску "как пользоваться образцом" и раздел о том, откуда этот документ взялся. Это образец, а не готовый приказ: перед введением его надо заполнить под себя и показать своему юристу. Трудовой договор, клиенты и поручения на обработку у всех разные.

Чего мы пока не знаем

Мерить пока нечего: первый ежемесячный разбор ещё впереди. Написать сейчас, что дефектов стало меньше, значило бы соврать.

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

Есть и вопросы, на которые у нас ответа нет. Главный - как проверять карточку использования ИИ, когда задач много, а проверяющий один. Пока держимся на том, что карточка короткая и экономит время ревью, но это утверждение ещё предстоит проверить нагрузкой.

Забрать образец

Полный текст лежит на странице, оттуда же скачиваются Word и PDF:

Документ можно брать за основу, менять под себя и вводить у себя. Ссылка на источник приветствуется, но не обязательна.

Если у вас такой документ уже есть - интереснее всего, как вы решили вопрос с автономными агентами: пускаете ли их в продуктивные среды и под каким контролем. У нас это самое узкое место, и мы закрыли его запретом, а не процессом.

22