Доводим задачи 1С до боевой базы: конвейер из семи агентов, восемь задач, шесть промахов

19.08.26

Интеграция - Нейросети

Код от агента выглядит хорошо, но между «агент выдал код» и «код работает в боевой базе» лежит дистанция, которую никто не проходит за вас. Как я обвесил её конвейером из семи ролей на боевой 1С:БП КОРП с БИТ.ФИНАНС: устройство конвейера, почему «критично» у агента не значит «дефект», шесть промахов, прошедших конвейер насквозь, один дефект, доехавший до боевой базы, и честный список того, чего я не измерял.

Полтора десятка задач заказчика прошли путь от строки в трекере до кода в боевой конфигурации - 1С:БП КОРП с БИТ.ФИНАНС с большим количеством доработок типового кода и новых подсистем. Не демо-база и не "конфигурация с нуля".

В конвейере те же роли, что в обычной разработке, от аналитика до технического писателя, только выполняют их агенты. Человек ставит задачу, утверждает решения и принимает результат. На выходе каждая задача несет полный набор документов - от ТЗ до чек-листа для QA - и набор одинаковых проверок, результат которых записан и который можно предъявить.

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


Проблема

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

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

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

Что нужно перед загрузкой в боевую базу Почему не закрывается само
Задача понята правильно Постановка из трекера в три строки, агент домысливает молча
Механизм выбран верно Агент правит типовой модуль там, где есть штатная настройка
Код компилируется Чистые диагностики этого не доказывают: линтер, работающий по одному модулю, класс "имя не определено" не видит
Соседнее не сломано Дефект живет в последствиях правки, а не в измененных строках, и из диффа не виден
Суммы сходятся Тихий дефект не падает и не мешает приемке, его находит бухгалтер через квартал
Правка оформлена по регламенту В команде свои требования к вставкам в вендорский код, и агент про них ничего не знает

Последняя строка - не об ИИ вовсе. Конфигурация редактируется с сохранением поддержки, правки идут в вендорские модули, и регламент оформления правок в команде появился задолго до меня. Теперь регламент должен соблюдать еще и агент.

Поэтому задача ставилась не как "пусть ИИ пишет код", а как довести доработку до боевой базы. С ТЗ, обоснованным выбором механизма, проверенным кодом, тестами и документацией.

Как устроен конвейер

Сначала о том, где конвейер стоит в командной цепочке. У нас она такая: аналитик готовит задание, я с агентами разрабатываю, QA проверяет результат по ТЗ, аналитик принимает. Аналитик и QA тут - живые коллеги, а конвейер целиком помещается внутрь моего звена.

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

Схематично конвейер выглядит так:

постановка из трекера

  1  аналитик
       * открытые вопросы аналитику-человеку
  2  архитектор
  3  разработчик
  4  сценарист         (параллельно с разработчиком)
       * проверка на стенде руками
       * синтаксический контроль конфигуратора
  5  ревьюер
  6  тестировщик
  7  технический писатель

приемка человеком, перенос в базу

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

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

На выходе с каждого этапа получаем следующие артефакты:

Артефакт Роль Что внутри
01-ТЗ.md аналитик как работает сейчас, что меняем, открытые вопросы по постановке. Кода не пишет
02-ПроектноеРешение.md архитектор выбранный механизм с обоснованием, план метаданных, риски. Кода не пишет
03-Реализация.md + правки исходников разработчик код и отчет "что где изменено, чем проверено"
04-СценарииТестирования.md сценарист эталонные сценарии. Правок разработчика не видит
05-Ревью.md ревьюер сверка плана, отчета и фактического git diff
06-Тесты.md, 06-ЧекЛистQA.md тестировщик автотесты на YAxUnit (модульные тесты для 1С) и ручной чек-лист для QA-человека
07-Документация.md технический писатель описание для заказчика, настройки, smoke-набор проверок

Схема выглядит как стандартный процесс разработки, где исполнителей заменили промптами. Разница в другом. Раньше при сжатых сроках первым отваливалось все, что не код: сценарии проверки держались в голове, чек-лист для QA не писался вовсе, документация появлялась после сдачи или не появлялась. Теперь каждый из этих документов выпускается на своей роли, потому что он вход для следующей: без сценариев тестировщику не из чего писать тесты, без отчета о реализации ревьюеру нечего сверять с diff.

В этой схеме работают две вещи, обе неочевидные:

Изоляция сценариста. Сценарист пишет проверки параллельно с разработчиком и не видит правок кода, только постановку, ТЗ, архитектуру и код по снимку "до задачи". Поэтому сценарии проверяют замысел, а не результат: тесты, написанные по готовому коду, проверяют код на соответствие самому себе.

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

Что из этих документов читаю

Подробно вычитываю три вещи: ТЗ, проектное решение и diff. Остальные по диагонали: они пишутся для следующей роли, а не для меня, и служат материалом для проверок. "Принято" на таком этапе означает "я посмотрел, что артефакт создался и он о нужном", а не "я его вычитал". Если бы каждый переход требовал полного прочтения семи документов, схема не окупалась бы никогда - но и цену такого решения знаю: один из дефектов, которые потом нашлись на стенде, лежал ровно в той части, куда я не смотрел.

Как изменения выглядят в коде

// {[*](фрагмент ИЗМЕНЕН), 28.07.2026, #FSK Иванов И.И. #TASK-1234

//  СтароеЗначение = Настройки.Реквизит;

    СтароеЗначение = фск_РаботаСНастройками.РеквизитНастроек(Настройки);

// } Иванов И.И., 28.07.2026

Это наш командный регламент комментирования правок. Здесь {[*] открывает вставку изменения существующего кода, // } - закрывает, #FSK - метка доработок команды, а закомментированная строка выше сохраняет то, что было до правки. Для добавления и удаления - те же метки, другой маркер: [+] и [-]. Мне важно было, чтобы агент соблюдал этот формат сам, без ручной доводки после каждой правки.

Стек

Слой Чем реализовано Зачем нужен
Оркестратор главная сессия Claude Code, восьмой участник сверх семи ролей принимает от меня постановку, запускает роли, ведет журнал, сводит результат. Решения о возвратах и приемке за мной
Роли семь отдельных агентов, у каждого свой системный промпт у аналитика и архитектора нет прав на запись в исходники, у ревьюера есть доступ к git на чтение
Правила 3 файла: контекст проекта (устройство конвейера и обязанности ролей), регламент разработки (требования к коду и проверки между этапами), соглашения (накопленные решения по конкретным механизмам) читаются каждым агентом перед работой
Код выгрузка конфигурации в файлы под git git diff как источник правды для ревью
Знание о конфигурации свой MCP-сервер (MCP - протокол, которым модель подключает внешние инструменты): поисковый индекс (RAG) по выгрузке конфигурации плюс детерминированный граф связей объектов ответы про механизм за секунды вместо обхода каталогов; граф отвечает на "где еще используется" без семантики, перечнем
Справочники платформы синтакс-помощник, исходники БСП и стандарты 1С - загружены в тот же индекс отдельно от кода конфигурации сигнатуры методов сверяются по справочнику, а не досочиняются по памяти модели
Диагностика BSL Language Server, поднятый как MCP-сервер замечания по коду, поиск вызовов и переходы к определению
Тесты YAxUnit, прогон через MCP-раннер (mcp-onec-test-runner) на отдельной тест-базе конфиг-клон без боевых данных, тестовые данные создают сами тесты; раннер же собирает базу из исходников
Компилируемость синтаксический контроль конфигуратора, запускается тем же раннером 3 мин 41 с на нашей конфигурации и занимает тест-базу - поэтому запускаем в оговоренной точке, до вердикта ревью, а не после каждой правки

Как устроены эти серверы внутри, почему индекс собран именно так и почему мы до сих пор не на EDT - тема отдельного разговора, к ней вернусь во второй части. Здесь стек перечислен затем, чтобы было видно, чем именно получены цифры ниже.

Как правки доезжают до базы

Командная работа остается штатной: объекты захватываются в хранилище конфигурации, а принятые правки переносятся сравнением и объединением конфигураций руками. Агенты правят исходники - выгрузку конфигурации в файлы, которая лежит под git. Она нужна для двух вещей: агентам - как рабочая копия, где можно править код, ревьюеру - как способ увидеть все изменения задачи целиком в git diff. Хранилище она при этом не заменяет. Схема рабочая, но это самая ручная часть цикла. С переездом на EDT ветки на задачу станут рабочим инструментом, а не вспомогательным.

Где берется выигрыш

Задачи с оценкой в пять дней закрываются за три. Оценку ставил не я - команда разработки на PBR, до того как задача попадала ко мне. Печатает агент быстрее, это правда, но два дня экономии получаются не из-за скорости набора. Они набегают на трех этапах.

Аналитика. На вход я даю то, что пришло от аналитика-человека: функциональный дизайн или текст задачи из трекера. Дальше идет тот самый разбор, который делает разработчик перед началом работы: какие механизмы затронуты и что в задании можно понять по-разному. Раньше он съедал больше всего времени, шел в голове и не оставлял артефакта, а неясности всплывали по одной уже посреди реализации. Теперь это ТЗ за один проход плюс список вопросов ко мне. На одной из задач вопросов набралось 15 - настолько неточными оказались формулировки в описании. Сколько из них изменили объем работ, я не считал; знаю только, что изменили существенно - и до первой строки кода, а не после демонстрации заказчику.

Архитектура. Выбор механизма перестал быть решением "как привык": варианты выписываются и сравниваются. На одной задаче архитектор забраковал собственный первый вариант: правка задела бы соседние документы. Механизм поменяли до того, как под него написали хоть строку.

Разработка. Экономится сопутствующее: поиск всех мест по графу вызовов, оформление вставок по регламенту, отчет, документация. Те часы, которые обычно не оцениваются и потому кажутся бесплатными.

Чего в этих двух днях нет, разбираю в конце статьи отдельно - вместе с остальным, что я не измерял.

Модульные тесты, которых раньше не писали

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

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

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

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

Что показали измерения

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

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

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

Задача Тип Критичных Важных Незначительных Возврат
1 конфигурация 2 7 6 да
2 конфигурация 2 4 11 да
3 конфигурация 3 2 11 да
4 конфигурация 0 6 25 да
5 внешний отчет 0 3 6 да
6 конфигурация 1 2 2 да
7 конфигурация 1 0 2 да
8 внешняя обработка 0 0 1 нет
Итого   9 24 64 7 из 8

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

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

Как считал. Одно замечание - один пункт из отчета ревью; в трех счетных колонках только они. Находки других этапов туда не попали: вопросы аналитика, забракованные архитектором варианты, сценарии тестировщика. Колонка "Возврат" шире - она про сам факт разворота, а развернуть задачу мог и аналитик-человек, уже увидев работающую доработку. То есть счет - про то, что поймало ревью, а не про все, что поймал конвейер.

А вот что из этих цифр следует, по самой таблице не увидишь.

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

Так я разбирал только критичные - важные и незначительные остались тем, как их оценил ревьюер.

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

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

Один раз это выглядело так. Оркестратор увидел в вендорском модуле проверку Структура.Свойство("X") И ЗначениеЗаполнено(Структура.X) и счел ее небезопасной: решил, что правая часть вычислится даже тогда, когда свойства нет, и код упадет. На деле во встроенном языке 1С логические выражения вычисляются слева направо и только в необходимой части - это прямо написано в синтакс-помощнике: свойства нет - левая часть уже дала Ложь, до правой дело не дойдет. Конструкция безопасна.

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

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

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

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

Дело было так. Доработка убирала из отчета несколько уровней группировки. Сам по себе код правки был верным, но рядом, в соседнем методе, лежало обращение к этим полям. После доработки отчет открывался нормально, а при попытке расшифровки падал с "Поле объекта не обнаружено".

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

А соседний дефект, наоборот, поймало ревью - он был виден прямо в diff: в новом запросе не хватало 13 из 26 полей в СГРУППИРОВАТЬ ПО - и в выборке их тоже не было. Отчет от этого не падает и выглядит правдоподобно. Просто строки, которые раньше различались по этим полям, теперь сливаются в одну, а суммы по ним складываются. Замечает такое обычно бухгалтер на квартальной сверке.

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

Где конвейер пропускал и что сделано

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

За восемь задач промахов набралось шесть, а видов ошибок - четыре: два вида выстрелили по два раза.

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

Второй вид - то, что не ловится чтением кода и линтером. Один раз это был вызов функции, которой нет ни в модуле, ни в конфигурации, - он и доехал до боевой базы. Другой раз - переменная, не объявленная перед использованием; ее разберу сразу после таблицы. Третий и четвертый виды выстрелили по одному разу - они в таблице ниже.

Дыра Чем закрыли
Линтер по одному модулю не видит целый класс ошибок. "Ноль замечаний" и неработающий код спокойно уживаются - это два промаха из шести, включая единственный, доехавший до боевой базы синтаксический контроль конфигуратора в цепочке, причем первый прогон сдвинут на позицию до вердикта ревью. Плюс подключенные разработчику справочники - синтакс-помощник и документация БСП: имена методов сверяются по ним еще на этапе написания
Автоматика не смотрит в интерфейс. Тесты зеленые, а пользователь видит другое ручной чек-лист QA обязателен в каждой задаче, даже когда автотесты зеленые. И первая проверка руками на стенде переехала на позицию до ревью: проверки читают код, а поведение из кода не видно
Не все, что приходит с задачей, читается как текст. Агент разбирает то, что может прочитать, и молчит про остальное. К задаче был приложен файл шаблона выходной формы; ни аналитик, ни архитектор его не открывали - "двоичный файл, его правит человек". Книга оказалась защищена от изменения структуры, и вставить в нее лист, как задумывала доработка, было нельзя вскрывать любое двоичное вложение до того, как на нем строятся выводы. У нас этот промах стоил отката готовой доработки уже со стенда
Дефект приходит через требования, а не через код. Конвейер исправно делает то, что ему дали открытые вопросы по форме результата уходят аналитику-человеку сразу после ТЗ, до разработки: требованиями владеет он, и дописать их в ТЗ может только он. Единственная строка таблицы, где вместо проверки стоит договоренность - то есть закрытой я ее не считаю. Подробнее в конце статьи

Начну с обещанного разбора. Вот код, который не компилируется:

Если Не Настройки.Свойство("КлючВарианта", КлючВарианта) Тогда

А вот тот же код, который компилируется:

КлючВарианта = Неопределено;
Если Не Настройки.Свойство("КлючВарианта", КлючВарианта) Тогда

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

Поиском по diff такое ловится грубо: параметр метода регулярка примет за необъявленную переменную, многострочный вызов пропустит. Как подсказка ревьюеру годится, гарантией не является. Гарантия тут одна - синтаксический контроль конфигуратора, и вопрос был только в том, когда его запускать.

Но интереснее не сам дефект, а обе потери.

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

Вторая потеря - вывод из разбора не доехал до правил. Урок записали в журнал задачи как "кандидат на ретроспективу", и он там остался. В регламент он попал только тогда, когда я сел собирать статистику для этой статьи и увидел, что дефект, с которого все начиналось, так ничем и не закрыт. То есть ретроспектива прошла, вывод сформулировали, а до места, где он бы сработал, он не доехал.

Вывод отсюда такой же, как с проверками кода: запись о проблеме и ее закрытие - разные события, и второе тоже нужно кому-то проверять.

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

Как конвейер чинит сам себя

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

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

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

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

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

Что в итоге

Что изменилось по факту, если убрать цифры.

Каждая задача доезжает с полным набором документов - от ТЗ до чек-листа для QA и документации. Раньше половина этого списка писалась только там, где хватало времени, а модульные тесты на доработки не писались вовсе.

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

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

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

Чего я не измерял и кому это не подойдет

Дальше - то, что я не измерял, и то, где схема не сработает. Без этого списка статья читалась бы убедительнее, но пользы от нее было бы меньше.

Сперва про цифры.

Я не считал, сколько это стоит в токенах. Счет за месяц я вижу, отдельно по задачам не разносил, поэтому назвать цену одной доработки не могу.

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

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

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

А теперь про границы.

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

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

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

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


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

Буду рад отзывам и критике по существу: часть правил, описанных выше, появилась именно так - кто-то со стороны задал вопрос, на который у меня не было ответа.


Отдельная благодарность Дмитрию Заикину (TeamLead) за редактуру статьи.

Вступайте в нашу телеграмм-группу Инфостарт

ИИ-агенты автоматизация разработки конвейер разработки code review ревью кода доработка типовой конфигурации YAxUnit автотесты регламент разработки RAG BSL Language Server статический анализ MCP качество кода промпты LLM

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

SALE! %

Банковские операции Обмен с интернет-банком Мастера заполнения Нейросети Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.

15250 руб.

20.12.2024    18922    96    29    

82

SALE! %

Нейросети Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Задавайте вопросы базе 1С обычными словами: получайте данные, находите ошибки и связанные документы, проверяйте права, работайте с вложениями и контролируемо вносите изменения. Всё это работает в самой программе, а Codex и Claude подключаются по желанию.

15989 9891 руб.

30.07.2026    9841    24    4    

23

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    69590    139    41    

147

Нейросети Программист Бесплатно (free)

Первая часть подборки простых приёмов для работы с ИИ-агентами. Без «секретных техник» — скорее сверим часы и посмотрим, какие подходы действительно помогают экономить время, лимиты и нервы. Разберём шесть практических приёмов: как выбирать модель под задачу и не тратить дорогую модель на мелочи; зачем сначала составлять план сложной работы; как сохранять агентские сессии на VPS с помощью tmux и Herdr; почему голосовой ввод даёт больше контекста, но требует проверки; как перепроверять решения одного агента другим; и как организовать параллельную работу через Git worktree. Большинство этих вещей опытным пользователям наверняка знакомо. Но иногда именно «очевидная» мелочь оказывается той, о которой узнаёшь слишком поздно. Возможно, из этой подборки вам пригодится хотя бы один приём.

04.09.2026    2270    Ibrogim    7    

15

Нейросети Программист 1С:Предприятие 8 Россия Бесплатно (free)

Как связать 1С и Cursor через MCP так, чтобы AI-агент сам получал актуальную конфигурацию из информационной базы, находил нужный BSL-код, вносил изменения, загружал конфигурацию обратно и запускал 1С:Предприятие. В статье — настройка 1C: Platform Tools, 1C: Platform Tools MCP, OneScript, vanessa-runner и env.json, а также важные нюансы при работе с несколькими проектами, IPC-портами, большими конфигурациями и длительными операциями загрузки. Покажу полный практический цикл на тестовой базе без ручной выгрузки и загрузки XML через Конфигуратор.

28.08.2026    15875    rinat1c    18    

30

Нейросети Программист 1С:Предприятие 8 Бесплатно (free)

Новый UI-контур CodexTestBridge запускает штатные TestClient/TestManager и даёт ИИ-агенту семантические действия вместо координат. Результаты возвращаются по шагам, долгие операции сопровождаются heartbeat. На реальной БП 3.0 открываем и заполняем приходную накладную без записи.

26.08.2026    2448    Aleksandr    3    

9

Нейросети Программист Бесплатно (free)

Практический эксперимент по использованию ИИ при обновлении расширений 1С. Сравниваются GigaChat-2-Pro и локальный Qwen3-Coder 30B на реальных конфликтах BSL-кода. Показано, как модели анализируют изменения типовой конфигурации, где могут ошибаться даже с высокой уверенностью и почему рекомендации AI необходимо дополнительно проверять алгоритмически и в тестовой базе 1С.

24.08.2026    1948    aldar    13    

8

Нейросети Программист 1С:Предприятие 8 Бесплатно (free)

В этой статье расскажу, как реализовал с помощью LLM полноценную генерацию кода для 1С (BSL) в популярном Open Source API-клиенте Bruno.

21.08.2026    1956    malikov_pro    9    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gybson 13 19.08.26 20:16 Сейчас в теме
У меня очень условный тестовый конвеер с небольшой складской конфигурацией, только чтобы тестировать как цепочка отрабатывает. На самых простых задачах с хорошим обвесом нормально работает копеечная DeepSeek V4 Flash
2. RustIG 1980 20.08.26 09:41 Сейчас в теме
1) что такое md? что это за формат? что за файлы такие?
2) анализ задачи на ИИ много забирает памяти на сервере?
Прикрепленные файлы:
3. ZaikinDA 3 20.08.26 10:33 Сейчас в теме
(2) расширение md - это файлы с разметкой Markdown. Этот язык обычно используют для написания файлов readme в репозиториях, для ведения заметок в приложениях вроде Obsidian. Для агентской разработки обычно в таком формате хранятся правила, скилы. Агенты на выходе выдают в таком формате файлы. Их удобно и человеку читать, и агентам.
top_1c; support; starik-2005; RustIG; +4 Ответить
4. RustIG 1980 20.08.26 10:36 Сейчас в теме
(3) спасибо) все понятно стало)
10. starik-2005 3302 21.08.26 10:03 Сейчас в теме
(4) Для агентов md стал форматом по умолчанию, т.к. он краток и ёмок. Все эти жиренькие/курсивчики, списки и заголовки, выдаваемые моделями в чатах - это md, в нем есть возможность вставить блоки кода, таблицы и прочее предельно просто. Так же существуют несколько отличных текстовых форматов для схем, которые идеально ложатся на md. Так что прям вот рекомендую. Удивлен предельно, что не все об этом формате наслышаны.
top_1c; RustIG; +2 Ответить
36. top_1c 4182 27.08.26 18:33 Сейчас в теме
(4) MD-файл - это обычный текстовый файл с расширением .md, в котором используется простая разметка Markdown.

По сути, это обычный .txt, только специальными символами можно обозначать структуру текста:
# Заголовок

## Подзаголовок

**жирный текст**

*курсив*

- пункт списка
- ещё один пункт

[ссылка](https:// top_1c.t.me)
Показать


То есть Markdown - это примитивный язык разметки текста, который легко читать даже без специальной программы. .md часто используют для README, документации, инструкций, промтов и описаний проектов.

Нейросети его используют повсеместно. На нём построена работа Обсидиан https://obsidian.md/ Их легко версионировать через гид. В итоге ты получаешь понятную человеку и машине библиотеку файлов. Сейчас популярный тренд строить на них так называемую LLM Wiki или SDD-разработку.

LLM Wiki и SDD (Spec-Driven Development) - это два взаимодополняющих подхода к управлению контекстом для ИИ-агентов, но решают они разные задачи.

LLM Wiki - это живая база знаний проекта под управлением ИИ, которая непрерывно синтезирует и обновляет информацию из документов в единую структуру для чтения людьми и агентами.

SDD-разработка - это рабочий процесс, где строгая текстовая спецификация (спека, в нашем случае в формате MD) для каждой конкретной фичи становится главным источником правды для написания кода.
27. support 4484 23.08.26 17:04 Сейчас в теме
(3) Мне недавно сказали, что все что текст - это код. Все тексты надо хранить на Git. Автоматически все ИИ-инструменты для Git можно использовать. Поэтому все регламенты, инструкции, мануалы, документации надо хранить в Git в иерахической структуре.
А формат md позволяет внутри документы продолжать поддерживать иерархию, с минимальным количеством символов, соответственно экономить токены.
5. VlaMax 15 20.08.26 10:56 Сейчас в теме
(2) Сама модель памяти не ест - она облачная, считает не на нашем железе.

Расходуется на обвязку вокруг неё - инструменты, которыми модель пользуется при разработке и анализе. В пике анализа доходит до 10-12 ГБ, и основных потребителей два: RAG (индекс по исходникам конфигурации, синтакс-помощнику, БСП и граф метаданных) и BSL Language Server - диагностики и граф вызовов.

А вот с локальной моделью всё упрётся в память, и расход будет заметно выше. Работать она может и на процессоре (без GPU), просто медленно. Сам я так не пробовал, поэтому цифр не назову.
7. RustIG 1980 20.08.26 11:01 Сейчас в теме
(5) спасибо! все понятно.
6. VlaMax 15 20.08.26 10:56 Сейчас в теме
8. RustIG 1980 20.08.26 11:34 Сейчас в теме
Спасибо за статью.
Вы описали глубокий анализ.

В статье описан конвейер командной разработки. У вас до внедрения ИИ уже был и конвейер командной разработки, и лучшие практики девопс. ИИ делает вашу командную работу еще "сильнее".

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

У вас изменения в коде выглядят так (взято из статьи):
// {[*](фрагмент ИЗМЕНЕН), 28.07.2026, #FSK Иванов И.И. #TASK-1234

//  СтароеЗначение = Настройки.Реквизит;

    СтароеЗначение = фск_РаботаСНастройками.РеквизитНастроек(Настройки);

// } Иванов И.И., 28.07.2026
Показать


Работая удаленно разработчиком в компании, где несколько разработчиков обособленно ведут разработку через хранилище, где нет аналитиков и тестировщиков, я пришел вот к такому способу внесения доработок:
Если ОбщийМодульПроверок.ИспользоватьКод(1234, 1) Тогда //как стало TASK-1234
	 СтароеЗначение = фск_РаботаСНастройками.РеквизитНастроек(Настройки);
Иначе //как было
	СтароеЗначение = Настройки.Реквизит;
КонецЕсли;


По одной задаче, у меня таких обрамлений кода может быть больше 100 - если на утро возникают ошибки - "откатываю" изменения, просто снимая галочку в справочнике "Доработки1С". Конечно это временная мера, но ей уже больше двух лет... (описал тут)
Прошу прощения за оффтоп, наболело
11. starik-2005 3302 21.08.26 10:14 Сейчас в теме
(8) 14 лет назад на одной из своих прошлых работ даже интеграция с итилиумом была про номер релиза. Все изменения проверялись как раз на включенность релиза и изменения в нем. Можно было откатить релиз целиком или откатить изменение в нем. В 1с так же примерно сделано, в итоге видимо потому она такая большая
13. RustIG 1980 21.08.26 10:21 Сейчас в теме
(11)
интеграция с итилиумом была про номер релиза.

добрый день! не представляю о чем вы.
особенно интересно про :
В 1с так же примерно сделано
21. starik-2005 3302 21.08.26 20:13 Сейчас в теме
(13)
про
Слова "режим совместимости" ничего не заставляют йокнуть?
15. webester 26 21.08.26 12:44 Сейчас в теме
(8)
Прошу прощения за оффтоп, наболело
Что наболело то?
16. RustIG 1980 21.08.26 13:11 Сейчас в теме
(15) да много чего есть сказать по этому вопросу... вы сами что используете при разработке? как реагируете, когда ошибка проявляется после обновления? если вы в контексте проблематики, то у вас не должно быть вопросов ко мне и просто поделитесь опытом
23. webester 26 22.08.26 08:55 Сейчас в теме
(16)
вы сами что используете при разработке?

Конфигуратор разумеется. EDT пробую приблизительно раз в месяц. Пока безуспешно.

как реагируете, когда ошибка проявляется после обновления?

Философски. Код без ошибок пишет только господь бог. Если кто-то может сделать эту работу лучше, пусть садится и делает. Я найду чем заняться. Занимаемся ретроспективой по итогам исправлений. Результаты записываем. Пытаемся сделать так, чтобы второй раз не наступить. Получается не всегда.

Предложенный вами подход не решает проблем с косяком при обновлении. Он не уберегает от ошибок, он позволяет быстро все откатить. Цена этого - раздувание кодовой базы бесполезным мусором. Это сильно усложняет анализ кода приводит к неочевидным ошибкам. Дополнительно необдуманный * изменений может принести больше проблем чем решить проблем.
24. webester 26 22.08.26 09:01 Сейчас в теме
(23) слово otkat видимо запрещено произносить на ИС
25. RustIG 1980 22.08.26 18:09 Сейчас в теме
(23)
Конфигуратор разумеется. EDT пробую приблизительно раз в месяц. Пока безуспешно.

этого мало, вебестр.
(23)
Философски.
вот я тоже философски на вас смотрю...и слушаю...мы много лет не понимаем друг друга...

(23)
Он не уберегает от ошибок, он позволяет быстро все откатить. Цена этого - раздувание кодовой базы бесполезным мусором.

ну раз можно быстро откатить, значит не бесполезный это код.
лишние проверки со временем чистятся...
короче, по сути ничего нового мы друг другу не скажем...
37. webester 26 02.09.26 10:16 Сейчас в теме
(25)
вот я тоже философски на вас смотрю...и слушаю...мы много лет не понимаем друг друга...
Ну отчегож, я то тебя прекрасно понимаю. Можно сказать вырос у меня на глазах. Как соседский ребенок.

ну раз можно быстро откатить, значит не бесполезный это код.
Приблизительно в 90% случаев он бесполезен(но иногда конечно...). Нужно помимо типового кода, разгребать еще ветки кода страховочного, которых может быть бесконечное количество. И еще точно знать, какой работает, а какой откатили. Увеличение когнитивной нагрузкой которая в функциональном плане не добавляет вообще ничего.

лишние проверки со временем чистятся...
Новое исправление - дополнительный потенциальный источник ошибок. Лучший код, этот тот который не был написан. А не тот который был добавлен "на всякий случай". А потом удален.

короче, по сути ничего нового мы друг другу не скажем...
Бывает такое, ничего не скажешь человеку, который не слушает. Ничего страшного. Все придет само, со временем.
38. RustIG 1980 02.09.26 11:36 Сейчас в теме
(37)
Ну отчегож, я то тебя прекрасно понимаю. Можно сказать вырос у меня на глазах. Как соседский ребенок.

Бывает такое, ничего не скажешь человеку, который не слушает. Ничего страшного. Все придет само, со временем.
- это все лирика, это не интересно ни читать, ни обсуждать


(37)
Нужно помимо типового кода, разгребать еще ветки кода страховочного, которых может быть бесконечное количество. И еще точно знать, какой работает, а какой откатили. Увеличение когнитивной нагрузкой которая в функциональном плане не добавляет вообще ничего.

- вы не правильно поняли суть идеи и технологии, поэтому неправильно транслируете вовне ...

ВМЕСТО такой вставки
 // {[*](фрагмент ИЗМЕНЕН), 28.07.2026, #FSK Иванов И.И. #TASK-1234

//  СтароеЗначение = Настройки.Реквизит;

    СтароеЗначение = фск_РаботаСНастройками.РеквизитНастроек(Настройки);

// } Иванов И.И., 28.07.2026


ТЕПЕРЬ используется такая вставка:
 Если ОбщийМодульПроверок.ИспользоватьКод(1234, 1) Тогда //как стало TASK-1234
     СтароеЗначение = фск_РаботаСНастройками.РеквизитНастроек(Настройки);
Иначе //как было
    СтароеЗначение = Настройки.Реквизит;
КонецЕсли;


ПОДОБНОЕ используется только в сложных сценариях, когда нет 100% гарантии, что не дернете за "неизвестную ниточку" другого механизма.

В простых случаях в разработке подобного обхода кода не нужно делать.

Также надо понимать, что подобная вставка живет 1 день - 2 дня - 3 три дня - до полного понимания, что код не ломает невидимые или неизвестны или чужие механизмы... В лучшем случае, разработка идет непрерывно, после двух дней работы на рабочей базе, этот код чистится от вставки Если Тогда, остается только такая вставка
 // {[*](фрагмент ИЗМЕНЕН), 28.07.2026, #FSK Иванов И.И. #TASK-1234

//  СтароеЗначение = Настройки.Реквизит;

    СтароеЗначение = фск_РаботаСНастройками.РеквизитНастроек(Настройки);

// } Иванов И.И., 28.07.2026

Отсюда следует, что никакого захламления кода не возникает и не возникает когнитивного усложнения. Если разработка слишком быстрая и слишком непрерывная, значит на проверку и зачистку ЕслиТогда оставляете один день, чтобы не усложнять код для других разработчиков.
Цена вопроса - это лучше, чем останавливать работу компании, выгонять всех, делать динамическое обновление, тушить пожары и принимать решение : исправлять ошибку на лету или откатить исходный код....
39. RustIG 1980 02.09.26 14:18 Сейчас в теме
(37)
Приблизительно в 90% случаев он бесполезен(но иногда конечно...). Нужно помимо типового кода, разгребать еще ветки кода страховочного, которых может быть бесконечное количество. И еще точно знать, какой работает, а какой откатили. Увеличение когнитивной нагрузкой которая в функциональном плане не добавляет вообще ничего.

пишу не только для вас, а для всех, кого вы в заблуждение вводите своими "метафорами" :)

Ситуация 2. В прошлом году 31 августа 2025 г вечером обновил Рабочую базу (вечером можно заблокировать базу на полчаса-45 минут - клиентский поток низкий). Но механизм я не стал включать, поскольку есть ночные смены, и возможны ошибки в механизме.
Утром 1 сент я включил механизм - просто включил галочку в пользовательском режиме 1с - в справочнике. Включил в 8 утра. Никому не пришлось перезаходить в 1с - все продолжили работать в обычном режиме.
В 8.30 я ушел на линейку в школу на 1 сент к 9 утра. В 9 утра мне сообщили, что возникает ошибка, из моих доработок.
Получается, целый час не было ситуаций, при которых ошибка возникает.
Я в течение 15 мин вернулся домой, отключил галочкой механизм. И ушел на линейку. Уже вечером разбирался с ошибкой, вечером ее поправил - включил в рабочую базу, но включил механизм только утром следующего дня. Алгоритм работал правильно.

Ситуация 1. Вернемся годом ранее. В сентябре 2024 г я обновил вечером рабочую базу. Ночью начались ошибки у пользователей, но никто мне не звонил, разбор оставили на утро. Сначала выяснили кто обновлял, кому смотреть - судя по модулю, я видел что ошибка есть, но как в этот модуль попасть и при каких сценариях я протестировать и смоделировать не мог. В теории можно было бы полдня потратить - подключиться к пользователю, посмотреть что он делает и зачем так....
Но в то утро надо было быстро принимать решение - откатываться назад или внести небольшую правку. Механизм я не знал, оставалась высокая вероятность, что правка не учтет что-то еще... В итоге, откатили изменения - пользователям пришлось утром прервать работу в 1с - около 100 пользователей вышли из 1с для обновления 1с...

И это не единственный пример. И для меня уж точно подобный механизм не бесполезный. А полезный.
Я его не во всех базах (не у всех клиентов) использую.
Как отличный инструмент теперь он у меня есть.

Остальные разработчики, которые не используют подобное, вынуждены откатывать изменения и на лету править код, бывает, что допускают очередную ошибку, тратят время на тестирование - и это в рабочей базе в рабочее время... Каждый сам кузнец своего счастья.
40. webester 26 02.09.26 16:53 Сейчас в теме
(38)(39)Видно горит знатно дружище. Не принимай так близко к сердцу. Не бесполезная доработка, очень даже полезная и важная. Особенно если надо уйти на линейку.
41. RustIG 1980 02.09.26 17:41 Сейчас в теме
(40) умеете вы в сторону мысль пустить... да еще с таким подколом исподтишка...
42. webester 26 03.09.26 07:11 Сейчас в теме
(41) Спасибо. Не то, что в сторону. Просто начинается все одно да потому: "а я вот могу написать косяк а потом сделать так, что как будто его не писал, это надо, честно, честно". Доказывать поинты с которыми я не спорил. Это как будто бесполезное абсолютно занятие. Но страсть с которой ты бросаешься, защищать свои позиции, удивляет и вдохновляет. Я уже давно сгорел в угли на всем этом. А ты вот еще в потоке, очень круто.
9. chagbig 35 20.08.26 11:50 Сейчас в теме
В конвейер обязательно добавление тестов Vanesssa Automation.
Вылавливает еще много ошибок перед тем как все придет ко мне после конвейера.
12. starik-2005 3302 21.08.26 10:15 Сейчас в теме
(9) даже интересно, сколько токенов кушает в среднем небольшая задача...
14. ZaikinDA 3 21.08.26 11:41 Сейчас в теме
(12) я, например, использую подписку max 5x клода с клод коде + правила со скилами из опенсорса и обвязку в виде MCP по справке, метаданным и т.п. За рабочий день в этом месяце ни разу не выгребал лимит 5 часовой, т.к. не только разрабатываю, но еще и по всяким встречам хожу. За токенами поэтому даже не слежу... если бы работал через Cursor, тогда следил бы, наверн =)
17. chagbig 35 21.08.26 14:01 Сейчас в теме
(12) Не совсем из разработки пример.
1. Анализ библиотеки электронного документооборота из последней типовой ERP с полным раскладом структуры программного интерфейса и взаимосвязей с дальнейшим построением скила, что бы больше не пришлось повторять.
700 тыс.
Вся прелесть в обратной рефлексии и формировании скилов. В дальнейшем это занимает уже 2-3 тыс.

2. https://infostart.ru/1c/articles/2762800/ пример из этой статьи - Задача по оперативному учету из Специалиста 1с. Укладывается в час и в принципе можно в лимитах подписки клода про по 2 - 3 задачи в день уложиться.


3. При подписке max 5x вполне комфортно можно работать над проектами в 5 тыс строк.
Главное - постоянная оптимизация скилов и добавление MCP серверов в конвейнер.
ZaikinDA; +1 Ответить
22. starik-2005 3302 21.08.26 20:14 Сейчас в теме
(17)
В дальнейшем это занимает уже 2-3 тыс.
Усомнюсь. Системный промпт опенкода без ничего уже кушает 8к+ токенов. Скилл для 1С, в котором более-менее чего-то понаписано полезного - легко до 20к символов разрастается. Даже если он разложен по папочкам и файликам, то для средней задачи большая часть этих файликов скушается средой, а это еще 10к+ токенов.

ЗЫ: 10к символов - статья, за которую ИС дает стартманей. И это реально небольшая статья. Для сравнения со скилом.
18. RustIG 1980 21.08.26 15:16 Сейчас в теме
(0) Коллеги, а как ИИ справляется с запароленными модулями (закрытыми в поставке) ?
19. VlaMax 15 21.08.26 16:11 Сейчас в теме
(18) Никак. В исходниках это просто файл .bin - ни посмотреть, ни поправить.
То есть работает с ним так же, как и мы.
20. RustIG 1980 21.08.26 16:31 Сейчас в теме
(19) по идее, нужен новый промт - "решить задачу, обойдя ограничения модулей"
- если человек может обойти, то и машина обойдет
26. allegrosoft 56 23.08.26 09:26 Сейчас в теме
Реиндекс графовой базы как часто делаете и как долго длится?
29. VlaMax 15 24.08.26 11:35 Сейчас в теме
(26) Графа у нас два, и обновляются они по-разному.

Граф метаданных (связи объектов конфигурации) перестраивается вместе с индексом кода: после коммита задачи - частичная актуализация по хешу коммита, 1–2 минуты. Это часть закрытия задачи, иначе индекс отстаёт от кода. Полный реиндекс - 20–25 минут: это проход по всем 114 тысячам файлов выгрузки со сверкой хешей. Нужен он редко, только после релизов (раз в неделю).

Граф вызовов живёт в BSL Language Server и обновляется сам: точечные правки текущей задачи подхватываются на лету. Полный переиндекс - около 2 минут, нужен на старте новой задачи, чтобы подтянуть накопившееся за прошлые.
30. allegrosoft 56 24.08.26 13:16 Сейчас в теме
(29) mcp сами разрабатывали или это что то опенсорсное?
31. VlaMax 15 24.08.26 14:22 Сейчас в теме
(30) Индексный сервер - RAG и граф метаданных я писал сам. BSL Language Server открытый, я его только обернул в MCP.

Но для конвейера это не важно, главное чтобы закрывались потребности агентов и оставалось поменьше проверок "на глаз".
32. allegrosoft 56 24.08.26 16:27 Сейчас в теме
(31) на инфостарте будете выкладывать?
33. VlaMax 15 24.08.26 17:24 Сейчас в теме
(32) До конца следующей недели выложу на GitHub, ссылку дам здесь.
34. allegrosoft 56 24.08.26 17:27 Сейчас в теме
(33) Большое человеческое спасибо!
43. VlaMax 15 04.09.26 11:32 Сейчас в теме
(34)
Как и обещал, ссылка на один из инструментов.

Обёртка над BSL Language Server: https://github.com/Vladimirov-Maxim/bsl-ls-mcp - диагностики, поиск вызывающих и вызываемых методов, переход к определению, места использования, сложность. Делал под свои нужды, развиваю по остаточному принципу, но на вопросы по нему с радостью отвечу.

Индексный сервер с RAG и графом метаданных выкладывать не буду: развёртывание сложное, а поддерживать его по-настоящему у меня не выйдет. На вашем месте я бы посмотрел в сторону готовых решений. Например, у vibecoding1c.ru собран похожий набор MCP-серверов. Сам не пробовал.
28. RomualdIP 24.08.26 09:30 Сейчас в теме
Добрый день
Разработал аналог на codex
https://github.com/akim-kaneyev/1c-erp-diagnostics
35. investec 26.08.26 11:10 Сейчас в теме
(28) Зачем вы вместе с unica используете скиллы прямой правки кода? Это ухудшит работу системы в целом, поскольку архитектура unica не предполагает правок кода кроме как через mcp unica. Там сложная система кэширования используется.
В данном случае это не то масло, которое не портит кашу.
Рекомендую оставить что-то одно.

PS Кстати, пробовал unica стартануть на OpenCode. Там модель с контекстом 200.000 токенов уходила в постоянную компактизацию, потому что unica при старте каждой сессии в контекстное окно вываливало 250.000 токенов. Может так только с OpenCode (вроде по умолчанию он не поддерживается). Но было бы интересно сколько на Codex|Claude Code отъедает описание тулов mcp сразу при старте работы.
250.000 токенов с описанием инструментов в контексте до пользовательского сообщения - мягко говоря многовато.
Для отправки сообщения требуется регистрация/авторизация