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

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

Общий принцип

Проект лучше разделять на три смысловых слоя:

./ctx/
    product/
    rules/
    agent/

Это мой рабочий подход, сформировавшийся из личного опыта взаимодействия с LLM-агентами.

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

./product/ - смысловой каркас продукта

В этом каталоге находятся документы, которые описывают продукт как идею:

  • назначение продукта;

  • ключевые сценарии;

  • цели и ограничения;

  • особенности, которые определяют направление разработки.

Это "скелет" приложения. Здесь нет технических деталей. Этот слой задаёт вектор: зачем существует продукт и что именно должно быть реализовано.

Документы в ./product/ небольшие по объёму, но определяют весь остальной проект.

./rules/ - нормативы разработки

Этот каталог служит опорной точкой для любой генерации кода. Здесь собираются технические правила:

  • соглашения по организации модулей;

  • архитектурные решения;

  • структура слоёв приложения;

  • особенности платформы (например, DI, файловая организация, правила взаимодействия между зонами);

  • требования к стилю и оформлению кода.

./rules/ - это набор норм, которые направляют агента. Если они сформулированы ясно, модель работает стабильнее, предсказуемее и реже ошибается.

Этот каталог - основной инструмент для управления качеством генерации.

./agent/ - фиксация хода работы

Этот каталог предназначен для фиксации итераций:

  • отчёты агента по выполненным задачам;

  • (опционально) журнал поставленных задач.

Эти материалы помогают восстановить контекст спустя время или при подключении новых людей.

Каталог ./agent/ делает процесс разработки наблюдаемым и прозрачным.

Итоговая схема

Структура верхнего уровня каталогов в ADSM:

./ctx/
    product/   - что мы делаем
    rules/     - как мы это делаем
    agent/     - что было сделано

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

Полное изложение и обоснование

Более подробное обоснование почему у меня сложилась именно такая структура и как я к ней пришёл — здесь. Для этой публикации на Хабре я специально представил только самую суть.

Внимание - это ресурс, который быстро заканчивается.

Благодарю за внимание!

Посмотреть результат применения излагаемого подхода можно в проекте "flancer64/pwa-home-call".

Комментарии (7)


  1. Kamil_GR
    22.11.2025 09:59

    Выглядит логично. Ещё бы промпт связки посмотреть.


    1. flancer Автор
      22.11.2025 09:59

      У меня только отчёты агентов по работам фиксируются. Сами запросы есть в логах моей учётки (облачная версия) или в IDE (консольная версия). Могу выложить, если интересно. Но я стараюсь задавать рамки агенту скорее через контекст, чем через запрос.

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

      Да, у меня довольно плотное общение идёт с чатиком перед постановкой задачи - в целях экономии токенов Codex-агента.


    1. flancer Автор
      22.11.2025 09:59

      У меня, получается, есть два типа промптов.

      1) Ссылочные промпты: в запросе указываю докуменатцию, на которую надо ориентироваться, и что нужно исправить.

      Текущая кодовая база отличается от того, что написано в документации (ctx/rules/arch/rtc). Приведи кодовую базу в соответствие с документацией.

      2) Детальные промпты: совместно с ChatGPT обсуждаю документы контекста и прошу его сформулировать постановку задачи для Агента:

      Скрытый текст

      Обновление цветовой темы веб-приложения «HomeCall»

      Цель

      Применить к веб-интерфейсу новую палитру, основанную на галапагосском зелёном (Pantone 18-5725 TSX), и переработать стили для лучшей визуальной доступности пожилых пользователей.
      Обновления касаются UI-стилей, не архитектуры и не namespace.

      Требования к цветовой схеме

      1. Основной акцентный цвет

      Использовать галапагосский зелёный (18-5725 TSX) как главный акцентный цвет приложения.

      Рекомендуемый HEX-эквивалент:
      #0E6251

      2. Градиенты

      Ввести мягкие градиенты на:

      • фон домашнего экрана,

      • большую кнопку «Связать»,

      • возможные акцентные элементы.

      Рекомендуемые градиенты:

      • Фон (горизонтальный или вертикальный):
        от #002D2A (очень тёмный зелёно-чёрный)
        к #0E6251 (галапагосский зелёный).

      • Кнопка (центр светлее, края темнее):
        от #0FAF8F (осветлённая версия галапагосского)
        к #0E6251 (основной).

      Градиенты должны быть мягкими, без резкого перехода.

      3. Дополнительная палитра (поддерживающие цвета)

      Для сеньоров важна высокая контрастность, плавность восприятия и отсутствие “слепящих” оттенков.

      Текст

      • Основной текст: #EAF2F1 (почти белый с лёгким зелёным оттенком — мягче на глаз).

      • Вторичный текст / хинты: #B8C7C3.

      Иконки

      • Акцентные иконки на кнопках: #FFFFFF или #F0F7F6.

      • Иконка настроек: #EAF2F1.

      Статусы

      • Информация: #6ECFC0

      • Предупреждение: #E9A944

      • Ошибка: #D95C4A Все статусы должны иметь мягкие тени и хорошо смотреться на тёмном фоне.

      Разделители и линии

      • Использовать прозрачный белый: rgba(255,255,255,0.08).

      4. UX для пожилых пользователей

      Агент должен обеспечить:

      • высокую контрастность текста и кнопок;

      • достаточный отступ вокруг элементов;

      • отсутствие мелких шрифтов ниже 15–16 px;

      • мягкие тени для улучшения различимости.

      5. Изменения в коде

      Агент должен:

      1. Обновить глобальные CSS/SCSS файлы, подключённые к интерфейсу, под новую палитру.

      2. Переработать градиенты кнопки «Связать» и фона домашних экранов.

      3. Проверить контрастность всех надписей на тёмном фоне.

      4. Обновить цвета статусов, используя новую палитру.

      5. Проверить SVG-иконки (телефон, шестерёнка, статусы):

        • заливки должны соответствовать новой схеме;

        • никаких “кислотных” оттенков.

      6. Сохранить существующие namespace-модули HomeCall_ — ребрендинг касается только UI.

      6. HTML-файлы

      • Проверить файл web/ui/enter.html.

      • Рекомендация: переименовать в web/ui/home.html для консистентности.

      • После переименования — обновить ссылки на HTML-файл.

      Ограничения

      • Запрещено изменять существующие отчёты в ctx/agent/report/**.

      • Новый отчёт — создавать по правилам контекста (не задавать конкретное имя в постановке).

      Результат

      После выполнения:

      • домашняя страница должна выглядеть «глубокой», спокойной, дорогой;

      • интерфейс должен легко читаться пожилыми пользователями;

      • кнопка «Связать» должна выделяться, но не слепить;

      • палитра должна быть консистентной во всём UI.

      Во втором случае я делаю конкатенацию документов из соответствующего каталога контекста (например, ctx/rules/web/ui/) и чатик на основании этих документов делает постановку задачи агенту.

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

      Совершенно очевидно, что таким образом нельзя создавать приложения типа MS Office - слишком велик объём документации даже в иерархии, но своя ниша у такого способа разработки ПО явно есть.


  1. funca
    22.11.2025 09:59

    Как расшифровывается ADSM? У меня только одна ассоциация: сказал A, говори и B.


    1. flancer Автор
      22.11.2025 09:59

      Я рассматривал оба варианта. Но народу зашло с "А".


      1. funca
        22.11.2025 09:59

        Шедевриально.

        BDSM — Business Driven Software Management

        ADSM — Agent Driven Software Management

        Вы думаете, что смена инструмента как-то влияет на суть?


        1. flancer Автор
          22.11.2025 09:59

          • BDSM — Bot Driven Software Management

          • ADSM — Agent Driven Software Management

          Если в основе бота/агента лежит LLM, то суть не изменяется. Но название - да. Название меняется. Как и отношение людей к тому, что стоит за тем или иным названием.

          Но до сути надо ещё докопаться, а название - оно вот, перед глазами.