Я лет 8, как интегратор, копался в "кишках" Magento (и первой, и второй) - вот там мне это смирение пригодилось на все 100%.
И, это... я ни в коей мере не считаю "Magento" поделкой, если что. Это очень сложный продукт в инженерном смысле. Код в двойке был ужасен с точки зрения перфекциониста, но в археологическом плане он был изумительно любопытен. Такого нагромождения архитектурных стилей и разных подходов в одном продукте я не видел нигде. А ещё огромный зоопарк расширений, где у каждого были свои тараканы в голове! И тем не менее - она работала и работает! Удивительный в инженерном смысле продукт! Со своей замечательной философией.
Ну нет, это вряд ли. Тут как раз весь смысл в неформальности и неявности. Модели улавливают связи, невыраженные формально. Если всё формализовать, то это как Java в JS перегонять в GWT. Это уже есть.
Точно! Я вот пытаюсь тут сказать, что нынешние исходники - это вчерашние бинарники. И отношение к ним будет такое же: что-то там есть и хорошо. А код будет другой - спецификации для LLM. Вот их мы и будем править. Ну вот, кто-то тоже понял!!
Ну, и вишенкой на торте - агент в браузерном приложении использует мою собственную библиотеку для внедрения зависимостей @teqfw/di. Про которую он при обучении вряд ли что-то мог сильно много узнать. Тем не менее, код в web/app написан на чистом JS и не содержит статических импортов:
import'ы есть только в карте типов для VSCode
Вот тут - да, пришлось заборчиков понаставить, чтобы агент с темы не съезжал. Но в результате JS-код работает в браузере без транспиляции и сборок - as-is.
Вы пытаетесь отвёрткой заколачивать гвозди и говорите, что получается плохо.
Да, отвёрткой гвозди заколачивать плохо. Согласен.
Знаете, что хорошо делать с LLM? Попросить её по скрину с фрагментом XML-файла написать скрипт для подсчёта количества позиций определённого узла в этом XML-файле. Причём сам файл на 110М, его даже не каждый viewer с полпинка откроет, а клиент висит на связи и вы пытаетесь понять, почему у него экспорт не прошёл и на чьей стороне проблемы. Запрос к чатику, пара итераций с уточнениями и через несколько минут ответ есть - 280К+ позиций и проблемы не на нашей стороне. Всё это - не прерывая общения с клиентом.
Ну смотрите, для меня LLM вполне себе повторяемы и управляемы. Я себе уже это доказал (см. коммент выше). Я теперь щупаю границы управляемости и повторяемости.
Но другим я ничего доказывать не хочу - нервное это занятие. Я просто показываю. Вот сервис, который я писал через LLM - GPT + Codex. Там много больше "Hello, World!" - PWA, сигнальный сервер на web-сокетах, WebRTC. История отношений агента со мной есть. Сервис живой, можно пробовать.
Это не железобетонное доказательство, кое-что я там правил ручками. Но старался по-минимуму.
А так пусть каждый сам себе решает, насколько LLM (не)повторяемы и (не)управляемы. Я, например, на моноколесе ездить в принципе не собираюсь - убьюсь в первый же день. А другие - ничего, рассекают.
Ну, температуру можно "выкрутить в ноль", а если ещй и зафиксировать seed - то вот и повторяемость. Случайность в основы внесли специально, чтобы убрать детерминированность. А иначе это сильно смахивало на Большую Британскую Энциклопедию, а не на ИИ.
Но даже без этого повторяемость можно очень сильно усилить за счёт работы с контекстом. Вот пример из моей же публикации (см. Сходимость "вычислений"):
Плотность и согласованность контекста уменьшает "свободу выбора" Модели. Сравните запросы:
Сколько будет два в пятой степени?
Сколько будет два в пятой степени? Ответ дай одним числом.
Сколько будет два в пятой степени? Ответ дай одним числом. Только число и ничего более, это важно.
И что вас заставило запостить 4+ тыс. комментариев на "форуме для недотыкомок"? Я за 10+ лет в два раза меньше комментов настрочил, чем вы за два с небольшим года. Причём я-то свои комменты делал на техническом форуме для айтишников, а вы - на форуме для недотыкомок.
Не мучали бы вы себя здесь. Шли бы на форум профессионалов, соответствующих вашему осознанию вашего уровня.
Я хотел провести аналогию, что, когда вы программируете на языке высокого уровня, вы не лезете в бинарники, доверя компилятору, т.к. он уже доказал свою "повторяемость и управляемость".
Аналогично, когда LLM докажут свою "повторяемость и управляемость", вы сможете формировать когнитивный контекст приложения, по которому агенты будут "что-то там генерировать". Весь вопрос в том, в каких рамках LLM "повторяемы и управляемы"? Достаточно ли этих рамок для генерации чего-то более сложного, чем "Hello, World!"?
У уверен, что LLM достаточно управляемы и повторяемы в определённых рамках (см. "сужающийся и расширяющийся контекст" по ссылке выше). Тепрь пытаюсь понять, где границы и что можно сделать в этих рамках.
Если бы вы были берёзовым поленом, вы бы не писали комменты на Хабре и не получили бы обратную связь от меня. А так, получилось, как получилось, именно потому, что вы - это вы и никто другой. Вот при этом тут ad hominem. Я всем разное пишу, так-то. Кто на что наговорил.
Разделяю вашу грусть, коллега. Лет 15 назад я пришёл к выводу, что хорошие в техническом плане продукты не обязательно становятся популярными. Их вполне себе вытесняют более грубые, но более агрессивные в маркетинговом плане поделки. Как сказал один практикующий философ: "жизнь такова, какова она есть и более никакова" (с) Лично я просто принял эти правила игры. Но любой другой может пытаться установить свои собственные правила.
Я лет 8, как интегратор, копался в "кишках" Magento (и первой, и второй) - вот там мне это смирение пригодилось на все 100%.
Я в код и так время от времени заглядываю. Но "заглядывать" != "ревьюить". У меня, например, есть в коде кандидат на переделку - простыня на 500+ строк. Я как-то когда-то взглядом зацепился и пометил, что надо бы в контексте проекта прописать этот момент более детально (декомпозиция + иерархия). Но пока так и не дошёл до. Были более приоритетные задачи.
Если есть повторяемость и управляемость, то действительно не важно, что под капотом. Я последний раз бинарный код анализировал и переделывал в середине 90-х. В нулевых ещё заглядывал, а последние лет 15 меня этот вопрос вообще не волнует. Мне совершенно "не важно, как оно там внутри сложено".
Полностью согласен. Я вообще пришёл к выводу, что человек не должен ревьюить код агента. Агент тупо быстрее на порядки. Я иду по пути проверки результата: работает - значит, не важно, как оно там внутри сложено. В следующую итерацию агент может переписать код вдоль и поперёк, главное - чтобы код выполнял свою функцию.
Я не говорю, что я вообще не смотрю на то, что делает агент. Как раз смотрю. Мне важно понимать, почему агент "вырвался из загона контекста". Кстати, он в сессии, зачастую, и сам может об этом рассказать, если его спросить. А потом важно переставить заборчики контекста так, чтобы он в следующий раз не вырывался.
У такого пути тоже есть свои ограничения, но, мне кажется, хорош любой путь, который позволяет дойти до границ. Главное - не за'loop'иться. Вот там-то границ как раз и нет :)
Мне кажется, что контроль результата работы LLM - это "путь тестирования". Тесты могут сказать, что работает неправильно, но они не говорят, как сделать, чтобы работало правильно.
IMHO, задача "парного кодирования с LLM" - держать агентов в определённых рамках и не давать им "проявлять творчество". Лично я ставлю на контекст (spec driven).
У всего есть свои пределы. Просто вы ещё не дошли до пределов вайб-кодинга, а Андрей Карпаты уже да. Причем где-то за месяц: в феврале - придумал, а в марте - дошёл.
Да. И это приведёт к тому, что подача материала и "мясными", и "силиконовыми" изменится. Потому что изменяется "приём" материала. Я, например, уже давно не читаю посты - я их сканирую. Пост по ссылке я просканировал и примерно могу сказать о чём там. И с большинством статей на Хабре я делаю так же. И вы, полагаю, тоже читаете не всё, а только то, что вас зацепило. И у вас есть свои алгоритмы быстрого анализа статей "на совместимость".
У меня был такой интересный случай лет 7-10 назад. На одном из местных новостных сайтов была опубликована реклама компании, в которой работала тогда моя жена. Я читал новости на ноуте, а она подошла и сказала: "О, наша компания новую рекламу запустила!". А я такой: "Где?!". Она: "Вон, на странице!". Вот я пялюсь на страницу и не вижу никакой рекламы. Пока она мне пальцем не показала - прямо в центре экрана, здоровый такой блок. В фирменных цветах и большой надписью с названием компании.
Мораль - мой мозг привык отключать рекламу в новостях и не увидел её, когда вдруг мне понадобилось.
Тренируйте свой мозг, чтобы он позволял вам эффективно действовать в условиях информационного насилия, и не впадайте в депрессию ;)
И, это... я ни в коей мере не считаю "Magento" поделкой, если что. Это очень сложный продукт в инженерном смысле. Код в двойке был ужасен с точки зрения перфекциониста, но в археологическом плане он был изумительно любопытен. Такого нагромождения архитектурных стилей и разных подходов в одном продукте я не видел нигде. А ещё огромный зоопарк расширений, где у каждого были свои тараканы в голове! И тем не менее - она работала и работает! Удивительный в инженерном смысле продукт! Со своей замечательной философией.
Ну нет, это вряд ли. Тут как раз весь смысл в неформальности и неявности. Модели улавливают связи, невыраженные формально. Если всё формализовать, то это как Java в JS перегонять в GWT. Это уже есть.
Я вам показал. Видеть или нет - ваше дело. Лошадь можно привести к водопою...
Спасибо :)
Точно! Я вот пытаюсь тут сказать, что нынешние исходники - это вчерашние бинарники. И отношение к ним будет такое же: что-то там есть и хорошо. А код будет другой - спецификации для LLM. Вот их мы и будем править. Ну вот, кто-то тоже понял!!
Ну, и вишенкой на торте - агент в браузерном приложении использует мою собственную библиотеку для внедрения зависимостей @teqfw/di. Про которую он при обучении вряд ли что-то мог сильно много узнать. Тем не менее, код в
web/appнаписан на чистом JS и не содержит статических импортов:Вот тут - да, пришлось заборчиков понаставить, чтобы агент с темы не съезжал. Но в результате JS-код работает в браузере без транспиляции и сборок - as-is.
Я же говорю, управляемы и повторяемы в определённых границах.
Вы просто про PWA и WebRTC мало чего знаете, поэтому полезли на бэк. Так-то, в этом приложении вся логика в браузере. Вот список файлов фронта:
Скрытый текст
Я, конечно же, не должен доказывать ничего ни вам, ни кому бы то ни было ещё. Я просто показываю.
Вы пытаетесь отвёрткой заколачивать гвозди и говорите, что получается плохо.
Да, отвёрткой гвозди заколачивать плохо. Согласен.
Знаете, что хорошо делать с LLM? Попросить её по скрину с фрагментом XML-файла написать скрипт для подсчёта количества позиций определённого узла в этом XML-файле. Причём сам файл на 110М, его даже не каждый viewer с полпинка откроет, а клиент висит на связи и вы пытаетесь понять, почему у него экспорт не прошёл и на чьей стороне проблемы. Запрос к чатику, пара итераций с уточнениями и через несколько минут ответ есть - 280К+ позиций и проблемы не на нашей стороне. Всё это - не прерывая общения с клиентом.
Одноразовые приложения - вот конёк LLM.
Ну смотрите, для меня LLM вполне себе повторяемы и управляемы. Я себе уже это доказал (см. коммент выше). Я теперь щупаю границы управляемости и повторяемости.
Но другим я ничего доказывать не хочу - нервное это занятие. Я просто показываю. Вот сервис, который я писал через LLM - GPT + Codex. Там много больше "Hello, World!" - PWA, сигнальный сервер на web-сокетах, WebRTC. История отношений агента со мной есть. Сервис живой, можно пробовать.
Это не железобетонное доказательство, кое-что я там правил ручками. Но старался по-минимуму.
А так пусть каждый сам себе решает, насколько LLM (не)повторяемы и (не)управляемы. Я, например, на моноколесе ездить в принципе не собираюсь - убьюсь в первый же день. А другие - ничего, рассекают.
Ну, температуру можно "выкрутить в ноль", а если ещй и зафиксировать seed - то вот и повторяемость. Случайность в основы внесли специально, чтобы убрать детерминированность. А иначе это сильно смахивало на Большую Британскую Энциклопедию, а не на ИИ.
Но даже без этого повторяемость можно очень сильно усилить за счёт работы с контекстом. Вот пример из моей же публикации (см. Сходимость "вычислений"):
И что вас заставило запостить 4+ тыс. комментариев на "форуме для недотыкомок"? Я за 10+ лет в два раза меньше комментов настрочил, чем вы за два с небольшим года. Причём я-то свои комменты делал на техническом форуме для айтишников, а вы - на форуме для недотыкомок.
Не мучали бы вы себя здесь. Шли бы на форум профессионалов, соответствующих вашему осознанию вашего уровня.
Я хотел провести аналогию, что, когда вы программируете на языке высокого уровня, вы не лезете в бинарники, доверя компилятору, т.к. он уже доказал свою "повторяемость и управляемость".
Аналогично, когда LLM докажут свою "повторяемость и управляемость", вы сможете формировать когнитивный контекст приложения, по которому агенты будут "что-то там генерировать". Весь вопрос в том, в каких рамках LLM "повторяемы и управляемы"? Достаточно ли этих рамок для генерации чего-то более сложного, чем "Hello, World!"?
У уверен, что LLM достаточно управляемы и повторяемы в определённых рамках (см. "сужающийся и расширяющийся контекст" по ссылке выше). Тепрь пытаюсь понять, где границы и что можно сделать в этих рамках.
Если бы вы были берёзовым поленом, вы бы не писали комменты на Хабре и не получили бы обратную связь от меня. А так, получилось, как получилось, именно потому, что вы - это вы и никто другой. Вот при этом тут ad hominem. Я всем разное пишу, так-то. Кто на что наговорил.
Разделяю вашу грусть, коллега. Лет 15 назад я пришёл к выводу, что хорошие в техническом плане продукты не обязательно становятся популярными. Их вполне себе вытесняют более грубые, но более агрессивные в маркетинговом плане поделки. Как сказал один практикующий философ: "жизнь такова, какова она есть и более никакова" (с) Лично я просто принял эти правила игры. Но любой другой может пытаться установить свои собственные правила.
Я лет 8, как интегратор, копался в "кишках" Magento (и первой, и второй) - вот там мне это смирение пригодилось на все 100%.
Я в код и так время от времени заглядываю. Но "заглядывать" != "ревьюить". У меня, например, есть в коде кандидат на переделку - простыня на 500+ строк. Я как-то когда-то взглядом зацепился и пометил, что надо бы в контексте проекта прописать этот момент более детально (декомпозиция + иерархия). Но пока так и не дошёл до. Были более приоритетные задачи.
Если есть повторяемость и управляемость, то действительно не важно, что под капотом. Я последний раз бинарный код анализировал и переделывал в середине 90-х. В нулевых ещё заглядывал, а последние лет 15 меня этот вопрос вообще не волнует. Мне совершенно "не важно, как оно там внутри сложено".
Я в курсе, что ваша узкая специализация позволяет вам уверенно позиционировать себя лишь в узкой области. Просто не выходите за её пределы.
Полностью согласен. Я вообще пришёл к выводу, что человек не должен ревьюить код агента. Агент тупо быстрее на порядки. Я иду по пути проверки результата: работает - значит, не важно, как оно там внутри сложено. В следующую итерацию агент может переписать код вдоль и поперёк, главное - чтобы код выполнял свою функцию.
Я не говорю, что я вообще не смотрю на то, что делает агент. Как раз смотрю. Мне важно понимать, почему агент "вырвался из загона контекста". Кстати, он в сессии, зачастую, и сам может об этом рассказать, если его спросить. А потом важно переставить заборчики контекста так, чтобы он в следующий раз не вырывался.
У такого пути тоже есть свои ограничения, но, мне кажется, хорош любой путь, который позволяет дойти до границ. Главное - не за'loop'иться. Вот там-то границ как раз и нет :)
Мне кажется, что контроль результата работы LLM - это "путь тестирования". Тесты могут сказать, что работает неправильно, но они не говорят, как сделать, чтобы работало правильно.
IMHO, задача "парного кодирования с LLM" - держать агентов в определённых рамках и не давать им "проявлять творчество". Лично я ставлю на контекст (spec driven).
У всего есть свои пределы. Просто вы ещё не дошли до пределов вайб-кодинга, а Андрей Карпаты уже да. Причем где-то за месяц: в феврале - придумал, а в марте - дошёл.
Да. И это приведёт к тому, что подача материала и "мясными", и "силиконовыми" изменится. Потому что изменяется "приём" материала. Я, например, уже давно не читаю посты - я их сканирую. Пост по ссылке я просканировал и примерно могу сказать о чём там. И с большинством статей на Хабре я делаю так же. И вы, полагаю, тоже читаете не всё, а только то, что вас зацепило. И у вас есть свои алгоритмы быстрого анализа статей "на совместимость".
У меня был такой интересный случай лет 7-10 назад. На одном из местных новостных сайтов была опубликована реклама компании, в которой работала тогда моя жена. Я читал новости на ноуте, а она подошла и сказала: "О, наша компания новую рекламу запустила!". А я такой: "Где?!". Она: "Вон, на странице!". Вот я пялюсь на страницу и не вижу никакой рекламы. Пока она мне пальцем не показала - прямо в центре экрана, здоровый такой блок. В фирменных цветах и большой надписью с названием компании.
Мораль - мой мозг привык отключать рекламу в новостях и не увидел её, когда вдруг мне понадобилось.
Тренируйте свой мозг, чтобы он позволял вам эффективно действовать в условиях информационного насилия, и не впадайте в депрессию ;)