Саша написал интересное про модульность. Хочу от себя дополнить: 1. Еще при работе с Event Storming + DDD вывел, что модуль – это граница передачи информации, то есть такое место, где одна часть системы делает предположение о поведении другой части. 2. Таким образом, контракт – это формализованное предположение об этой границе. Контракт, по всей видимости, верифицируем ровно настолько, насколько предположение о поведении проверяемо. То есть можно предположить, что модульность в привычном смысле и в смысле работы с AI может быть переосмыслена (простите за тавтологию): граница модуля проходит там, где задача его изменения становится самодостаточной, то есть полностью опысываема без загрузки контекста смежных модулей. Типичное наше восприятие долгое время строилось на том, что мы оптимизируем модули под понимаемость человеком, в агентных системах оптимизационная функция направлена на повышение информационной гигиены контекста агента. Если немного углубиться, то мы получаем такое разделение: ▪️Модульность для человека - это про снижение когнитивной нагрузки на человека, то есть семантическая близость через coupling и cohesion ▪️Модульность для агента - минимизация информации, необходимой для выполнения задачи изменения в рамках одного контекстного окна, то есть та самая информационная самодостаточность конкретной задачи То есть если семантически парсер и валидар имеет смысл разделять для людей, то, если в рамках цельной задачи в 80% случаев изменения затрагивают и парсер и валидатор данных, то с точки зрения агента это будет один модуль.