Transcription
Друзья, привет. Это подкаст "Организованное программирование". Меня зовут Кирилл Макевнин. Я его ведущий. И в гостях у меня Дима. Дима у нас уже получается третий раз.
>> Да, это, мне кажется, ты чемпион или близко к этому по количеству приходов. Да, у нас с тобой выпуски всегда очень хорошо заходят. Мы с Димой часто обсуждаем какие-то вещи. Мы про ассемблер говорили, про Rust говорили. Вот сегодня у нас тема про агентов. Мы будем обсуждать ИИшку. И началась, наверное, эта история с того, что Дима очень, ну, как бы активен в Твиттере. И в какой-то момент я вижу, что он начал там хвалиться то, что написал очень быстрый поиск файлов, которые в первую очередь для Nvim. И потом там завязалась вокруг этого какая-то история. И в конце концов это было приземлено в Open Code. То есть в Open Code сейчас в агенте одном из самых популярных в мире используется Димин поиск. И в связи с этим у меня есть к Диме вопросики, у Димы есть ответики. И плюс, я знаю, что там была какая-то интересная история с курсором, про которую мы сегодня тоже поговорим. Короче, сейчас будем перетирать твиттерские истории. В общем, расслабляйтесь. Я думаю, будет интересно, весело и задорно. Давай, Дим, рассказывай свою историю.
>> Кайфулики. Ну да, не, на самом деле, прикольно. Я вообще очень хотел с Кириллом конкретно поговорить, потому что я считаю, что вот эта тема AI агентов для программистов харнезов, да, вот как как говорят по-американски, как говорят американцы, но она вообще недораскрыта, потому что как-то вообще вот я не знаю, ей как-то хочется послушать информацию про то, как там, я не знаю, как они устроены, какие разницы вообще между ними, и этого вообще нет, а я как-то почему-то, как оказалось, что я в этом очень сильно закопался, в частности, делая этот самый файловый поиск, потому что, как оказалось, всё, что делают агенты - это ищут файлы и генерят генерят дифы и всё по факту. Ну и запускают какие-то консольки в терминале. Вот. И как-то так вдруг получилось, что у меня был плагинчик для Neovim, назывался он FF, который, собственно говоря, SEO Open Code в Твиттере. Я и, короче, я как обычно в своём токсичном стиле написал, что типа Z - это редактор кода, они должны были меня нанять, чтобы я им починил файловый поиск, потому что он там сломанный. И мне такой пишет CEO вот Open Code, когда это ещё было в ноябре или в октябре, короче, это было очень давно, типа, можем ли тебя нанять, чтобы ты починил нам код. Говорю, я вам сделаю это бесплатно. И вот, короче, с того момента я пилю не просто файловый поиск как бы в редакторе кода в Neovim, а пилю как бы SDK для файлового поиска, которое я пытаюсь сделать максимально эффективным для агентов. Я сделал MCP, который типа заменяет встроенные лколы, которые встроены там в Cloud Code, например, который вроде бы как он показывает на моих м бенчмарках, он показывает, что он быстрее и тратит меньше токенов. Ну, это всё очень-очень мы нужно вообще поговорить, потому что самая большая проблема всего я, что нет никакого детерминизма аутпута. Невозможно, практически невозможно замерить, насколько хорошо он работает. Вот это самая большая проблема. Ну, короче, как-то так. Я вот сделал быстрый очень файловый поиск, который работает на все на всех платформах, в том числе на Макее и на Винде, что grep не делает хорошо. И он как бы оптимизирован для того, чтобы жить долго в памяти и работать с, ну, с редакторами или с агентами. Но grep тот же, который все используют, он оптимизирован для как слайка, который ты один раз запустил, и она перевыполняет миллион действий каждый каждый божий раз, когда она выполняется.
>> У тебя стейт какой-то там внутри есть.
>> Ну, конечно, в этом вся соль, да. То есть как бы grep он в принципе довольно эффективно написан под Linux, да? То есть у него практически нет никаких оптимизаций платформ specific, но для для Linux он прямо очень эффективно использует все кэши. Но каждый раз, когда ты его запускаешь, он каждый раз идёт по всем файлам, каждый раз все файлы открывает, даже если он знает, что там, ну, в принципе, этих файлов можно не делать. Ну что, если ты даже текст ищешь, да, ну можно использовать не большие индексы, которые тебе очень сильно урежут количество файлов, которые тебе, в принципе, нужно обрабатывать, а на определённую.
>> А можно я адвокатом дьявола немножко побуду?
>> Ну давай, да.
>> потому что grep появился, ну довольно давно, насколько я помню, и его внедрили там везде у тебя в фазе search. Ну, наверное, во всём коде даже на нём работает, да, или что-то типа такого, да. Хотите расти как разработчик не в одиночку, а вместе с сильным сообществом? Вступайте и в Hexlet Club. Это закрытое пространство для тех, кто уже в профессии хочет развиваться дальше. Здесь помогают определить уровень, построить персональный план развития и дают обратную связь менторы из индустрии, в том числе из зарубежных компаний. В клубе живые разговоры о технологиях, собеседованиях, работе в компаниях, карьерном росте и нетворке. Есть отдельные топики с историями участников, отзывами о работодателях, отчётами менторов и планами развития. Люди приходят в клуб, чтобы расти, и помогают другим делать то же самое. То есть везде, короче, он работает. И все такие, помню, как кипятком писали: "Смотрите, как быстро. Смотрите, как быстро". И большинство проектов реально, ну, что такое? Там, ну, 1.000 файлов, ну, 10.000 файлов, да. Ripgrep вроде как с этим хорошо справляется. Почему вдруг внезапно это стало проблемой, и все такие: "Ой, он такой медленный".
>> Это так это ж я виноват. Это ж я начал накидывать на меня вообще в Твиттере забанили. Ой, не в Твиттере, а на Редите. На Редите просто ненавидят, потому что я прихожу и рассказываю, что мой проект быстрее, чем Эндрю Галанд написал. А вот на Редите вообще такие специфические люди, если ты приходишь и рассказываешь, что ты написал код лучше, чем кто-то другой, они почему-то очень сильно на тебя обижаются и очень сильно тебя даунвоутят. Это для меня, ну, загадка.
>> Не, ну если ты если ты так приходишь и говоришь: "Ваш код [ __ ] а мой лучше", то я, наверное, даже могу их понять. Не, ну я типа я я типа прихожу и говорю, что я вот написал файловый поиск, который оптимизирован для долгих сессий, который вот на конкретно репозитории Хрома, а там 500.000 файлов и 66 ГБ, он в 100, а иногда даже в 500 раз быстрее на на одном квере, чем Ripgrep. И они такие: "Да что, как ты типа используешь индекс? Это не Apples to Apples comparison". Ну я же я же вам написал, что это как бы ну если вы используете grep для того, чтобы ну искать до ну в какой-то долгой сессии файлы типа агентской, ну типа вот это тулзовина, которая быстрее работает. Ну нет, короче, удаляют пост, забанивают. Ну короче, ладно разница.
>> Понял уточнение сразу сюда. А то есть я правильно понимаю, что всё-таки есть некий минимальный лимит, с которого, ну типа до которого вообще не принципиально? Скажем, если у тебя 1.000 файлов, ну тебе grep выше крыши.
>> Вполне grep вполне себе будет выше крыши. Почему вообще изначально я делал этот Neovim плагин? Потому что идея была в том, что у тебя, ну, в Neovim, ты же тоже Neovim пользуешься, насколько я помню, ты, наверное, пользуешься каким-нибудь Snacks and Vim для поиска файлов и так далее.
>> Ну, у меня Vim, да.
>> Проблема в том, что сам по себе поиск был очень говённый. То есть именно у тебя ты делаешь единственную там ошибку, опечатку делаешь опечатку и всё, и у тебя файл не находится. То есть ты написал не не S схема, а перепутал две буквы, всё, у тебя ничего не найдёт. А это как бы фундаментальная проблема FZF, потому что FZF как алгоритм, он не защищает вас от опечаток, не типа resistant. И в чём была моя идея? В том, что я сделаю себе плагин, который будет, во-первых, всё сортировать по frequency, то есть это frequency и recency, то есть насколько часто и насколько недавно ты работал с конкретным файлом. Он будет знать про Git статус конкретного файла. То есть, потому что это очень важно, когда ты, ну, когда у тебя есть файл, который недавно модифицирован, ты хочешь его приоритизировать, и он будет работать супербыстро, как поиск у него будет гораздо более алгоритм сам поиска, он будет тебе как бы, ну, из абсолютно отвратительного поиска с пятнадцатью опечатками. Но если он максимально подходит под то, что мы видим, как файл, который тебе подходит, ну, короче, там прямо очень классный алгоритм называется Smith Waterman. А, который, кстати, его придумали на основе ДНК, то есть его, короче, изначально его придумали, вдохновившись тем, как нуклеотиды в ДНК распределяются. И, ну, короче, там целая интересная история о том, как это работает, но я уже всё забыл. Но идея была в этом. И всё это время это был плагин, который работает просто, чтобы ты мог быстрее искать код. Но из-за того, что, собственно говоря, сам алгоритм занимает больше времени, чем поиск файлов в Ла, мне нужен был, скажем так, мой собственный стейт вот этих всех файлов, чтобы я мог написать эффективный SIMD оптимизированный алгоритм. SIMD - это single instruction multiple data. Это платформенно-специфичные инструкции в ассемблере для того, чтобы обрабатывать несколько элементов за один раз. То есть там, ну, сразу там несколько перемножить чисел, сразу несколько там поделить, байты переставить и так далее. И вот для этого я написал как бы свой целый файловый поиск. И всё это время это был как просто Neovim плагин. Но когда у тебя появились все вот эти ИИ-агенты, которые делают по тысяче кверей, да, вот в секунду вполне себе. То есть, если вы откроете сессию Cloud Code, вы увидите, что там, когда он начинает искать по коду, он делает по 50 запросов в Ripgrep по куче ContentGrep. Вот он делает это, делает, делает, пока не найдёт файлы. А почему? Потому что у него нет памяти. Он не помнит, какие файлы где находятся. То есть ему каждый раз надо заново их искать. И он делает это быстро. И вот это время time и, собственно говоря, у тебя, во-первых, чаще стали поиск искать, а, во-вторых, у тебя в кода стало больше, потому что у всех вот этих слоперов, которые пишут и не смотрят, у них просто миллионы кода. Во-первых, они файлы огромные, по две, по п.000 строк, а, во-вторых, файлов куча. И это стало проблемой. И вот поэтому, собственно говоря, так получилось, что я вот эту вот всю всю всю мутотень превращаю потихоньку в SDK, которое можно как бы одной строчкой подключить и файлики себе искать без проблем, быстренько, удобненько. У тебя там и Git подсвечивается, и при как бы оно само запоминает, какие файлы редактируются, само знает, какие файлы добавлены, то есть вообще тебе ничего не надо делать.
>> Удивительно, на самом деле, как вот это изменение заставляет, знаешь, по спирали. Вроде бы казалось, поиск, ну что за проблема, да? Бам, у тебя эти тулы делают действительно такой объём запросов, что с ума сходишь. Я знаешь что хотел сказать? Вот ты сейчас немножко изменил моё понимание происходящего. Я каждый раз, когда в фазе пользовался, просто для тех, кто вдруг не уловил, там действительно есть всегда такая проблема, по крайней мере, в Vim уж точно, что когда ты начинаешь, ну, теперь мы это поняли, что это связано с алгоритмом, да, что когда ты набираешь фази сам-то работает хорошо, если ты пропускаешь буквы. Но если ты их не просто пропускаешь, а, например, ты действительно набрал в какой-то момент какой-то символ, которого дальше просто нет физически.
>> Или перепутал их местами.
>> Ну да, перепутал, короче, да, путь нельзя. И я прямо в какой-то момент, у меня уже на подкорке это высветилось, что я могу как бы набирать не всё, но я обязан набирать только то, что идёт вот в правильном порядке и только те буквы, которые присутствуют.
>> И сейчас ты мне как бы говоришь, что это на самом деле ограничение конкретного инструмента, потому что можно сделать по-другому. И я очень этому рад, потому что в Snacks это тогда должны завести, надеюсь.
>> Да, дело в том, что сам по себе алгоритм, ну вот который FZF использует, тот же, к примеру, или тот, кото, который вот это фолке написал, у него весь этот этот алгоритм на Lua написан, то есть он всё это сортирует на Lua. И они просто физически, скорее всего, не смогут это заимплементировать, чтобы это было быстро в реальном времени, потому что у тебя, ну, по сути, у тебя комбинаторика начинается. То есть обычный фазы матчинг, он просто идёт по строке, да, и он у тебя по сути пропускает, ну, как ты сказал, да, пропускает символы. Когда ты начинаешь запариваться с опечатками, у тебя начинается комбинаторика, ты начинаешь переставлять символы, и ты начинаешь как бы допускать возможно, там, короче, начинается очень большое количество,
>> да, и это становится в N раз больше, чем длиннее у тебя. То есть, если у тебя восемь символов запроса, да, запрос твой, то, что ты ищешь, у тебя в восемь раз медленнее будет алгоритм. И для этого уже выполнять нативный код очень важно. Но для человека, который, как я, очень сильно любит постоянно себе что-то ломать, типа пальцев. Кстати, смотрите, это мой палец сломанный. Это для всех, кто будет писать, что я использую постоянно английские слова.
>> Надо скриншот вырезать. Сломанный палец для вас.
>> Да, вот это мой сломанный палец. Посмотрите, что будет вспоминать Зоя Виксельштейн под в комментариях под этим видео. Но, э, собственно говоря, мм, дело в том, что, да, поэтому как бы быстрый нативный поиск очень сильно решает. Тут есть ещё один очень интересный момент. Смотри, у тебя все твои ИИ-агенты, они вообще не пользуются фазематчингом. То есть вот просто подумай, вот человек, который у тебя работает как программист, да, первый раз садится за IDE, что ты ему показываешь во всём коде? Ну вот этот Ctrl P, да, в фазе матчинг, чтобы быстро находить, потому что текст, который вот у тебя будет, человек, который у тебя будет по вот этому вот дереву, а зависимости, дереву файлов, ходить и искать все файлы так постоянно, каждый день, это просто, ну, это было ужасно, согласись. А и агенты, они вообще поэтому.
>> Я это, причём иногда наблюдаю, и мне больно становится, глядя на таких людей, кто это делает.
>> Ну да, просто как бы, ну это нормально, когда ты там, например, начинаешь только исследовать проект, но когда ты там 3 года уже работаешь над проектом, если ты только так этим поиском файла занимаешься, ну это ужасно неэффективно, да, то есть это всегда ты, ну как бы я всегда старался показать, что есть там другой способ находить файлы, но и агенты они вообще про FZF не знают ничего, потому что, ну, вот этот FZF он фундаментально не, ну это как бы, скажем так, интерактивный CLI. И твои агенты, они по дефолту всегда делают глоб. То есть они просто начинают смотреть файлы, которые у тебя есть на файловой системе, и пытаться как-то понять из глубокого этого, либо переходят к контент поиску, несмотря на файлы, что тоже не всегда очень хорошо, потому что иногда тебе просто нужно файл найти, не, ну, то есть тебе нужно в контекст попасть в файл, а не конкретное, ну, то есть, например, там user controller, да, они начинают это искать в контенте и пытаться вычленить, какой файл же отвечает за вот этот user controller, вместо того, чтобы найти сам по себе файл, что тоже очень сильно тратит, во-первых, деньги, а, во-вторых, время. То есть они делают это быстро, но от этого эффективно. Это, ну, как бы не становится суперэффективным решением. Вот.
>> Прикольно. И скажи, что у тебя внутри-то там происходит? Одно дело сам алгоритм более сложный и учитывающий ошибки, а другое дело какие-то индексы. То есть, что ты там ещё дополнительно строишь? Я так понимаю, это что довольно компактно всё равно получается.
>> Ну да, короче, основная идея в том, что эта штука должна жить в памяти. То есть, поэтому у тебя, во-первых, у меня хранится там полный список файловой системы. То есть у тебя вот твой проект, весь все твои индексированные Git файлы, они лежат как в списке, в просто в списке, э, в векторе, э, который неизменяемый. Это очень важно. Каждый раз, когда твоя файловая система что-то меняет, у нас есть легковесный файловый watcher. Это, кстати, тоже мно немногие об этом задумываются, но гораздо удобнее, а, подписаться на watch системы, то есть у тебя есть Inotify в Linux или FS Events в macOS, и знать, что у тебя конкретные файлы поменялись, чем каждый раз вот это ходить по файловому дереву и пытаться его пересобрать, потому что это тоже как бы, ну, ээ, у тебя миллион сисколов возникает. И помимо этого для контентного поиска у меня есть свой собственный, короче, это мой собственный проприетарно придуманный тип индексов. Я использую два типа биграммов. То есть есть триграммы, но я использую биграммы. То есть это два символа. То есть, короче, это идея, которая мне лично пришла в голову, и она работает очень хорошо. Дело в том, что я не знаю, хочешь ты за запариваться вообще вот, собственно, в индексирование текста или нет.
>> Давай, давай. Ты, может быть, не смотрел. У меня был недавно выпуск про поиск, где мы очень глубоко про это говорили, так что это очень резонирует.
>> Слушай, может быть, я пропустил, мне надо будет посмотреть. Вдруг я там, вдруг я что-то не знаю. Ладно,
>> Вполне возможно, там есть интересные мысли, да.
>> Как вообще традиционно индексирует любой текст очень много лет, и вы там, скорее всего, использовали, например, в PostgreSQL Fulltext Search, да? Что он делает? Он вытаскивает триграммы. Триграммы - это последовательные, ну, то есть три символа, которые идут последовательно в тексте. Эти триграммы собираются прямо из текста. То есть вот есть моё имя - это Дмитрий, да? То есть первая триграмма - это будет дми, вторая будет мит, третья будет итри и тр, ну, короче, вот так вот. Три, каждые три, три символа. И у тебя как бы собираются вот эти вот триграммы по всему тексту, который у тебя есть, хранятся и, по сути, складываются как индекс, как чаще всего как инвертированный индекс. У тебя получается лежат вот каждая, эта триграмма, и она говорит там итр, да, три буквы и тр, они есть в файлике номер один, а дми есть в файлике номер два. И когда ты начинаешь искать по своему запросу, у тебя запрос тоже разбивается на вот эти триграммы, и потом у тебя собирается просто сет файлов, которые содержат все эти триграммы. То есть это то, как работает традиционный файловый поиск. Например, Google Code Search, которому уже там хрен его лет. В чём проблема? Проблема в том, что этих триграмм очень много. У тебя примерно на любом проекте будет их под под 800.000 уникальных триграмм. И дело в том, что сам код он очень, скажем так, у него очень много вариативности, и у тебя самих файлов, которых много одинаковых триграмм, их тоже будет очень-очень много, потому что у тебя часто повторяющиеся идентификаторы и текст, который полноценный поиск по тексту, потому что если ты английский текст, например, будешь индексировать, у тебя, например, никогда в жизни не будет три буквы J последовательных или три буквы F, да? Но в коде вполне себе может быть, потому что идентификаторы разные. У тебя есть текстовые у тебя есть слова, которые в kebab-case или в camel-case, которые слиты между собой. Из-за этого у тебя получается очень много триграмм и очень много файлов, которые их содержит. Из-за этого у тебя получается индекс под гигабайт. И вот этот индекс нужно собирать каждый раз его нужно ложить. И каждый раз, когда ты что-то написал, тебе нужно каким-то образом этот индекс обновить. Или каждый раз, когда с git pull, тебе нужно это всё обновить. В этом проблема. И, собственно говоря, очень многие сейчас стали прыгать в Твиттере на вот этот вот индексирование локальное кода. Они используют триграммы, Cursor использует там вообще какую-то навайпкоженную тему с блумфильтрами, хэшмапами и, короче, непонятно чем. Что я сделал? У меня лежит от биграммов. У меня лежит биграммы - это два символа. То есть как бы у меня лежит на моё имя Dm M и Т. Но не просто граммы. У меня лежат про биграммы. Их в принципе очень мало. То есть у меня есть супер маленький сабсет биграммов. То есть это английские буквы и специальные символы, которые используются в программировании. Я специально оптимизирую этот поиск для кода, поэтому я не учитываю, что unicode символы. То есть, например, на русском языке индексирование, к сожалению, не работает. Но так как я в принципе и большинство людей не пишет код ни комментарии, ничего на русском языке, собственно говоря, в этом я не вижу проблемы. Из-за этого у тебя получается очень маленькое количество биграмм. У тебя получается всего 4.000 биграмм вообще комбинаторика. И, ну, естественно, у тебя очень будет очень много файлов, которые содержат разного рода биграммы. Поэтому я храню, собственно говоря, вот такой же индекс, как с триграммами, где у тебя лежит биграмма и индекс файла, в котором она содержится, но не так, что. То есть у меня лежит, получается, биграмма, которая идёт подряд, но ещё я лично придумал, и я безумно этому как бы рад. Я делаю так называемый Sparse One Big Ram. Это то, что я нигде до этого не видел. Это мне где в голову пришло. Я храню не просто d и m, я храню ещё и m t, то есть пропускаю одну букву и индексирую ещё и дополнительно как бы с пробелом. Почему это прикольно для именно для кода? Потому что когда у тебя есть идентификатор, где у тебя есть, например, нижний underscore, и ты знаешь, что у тебя этот нижний underscore встречается в середине слова, с обычными триграммами, он у тебя встретится всего, например, пять раз. Когда у тебя есть двойной поиск по биграммам, этот underscore у тебя будет индексирован больше раз, чем при едином проходе триграмм. Из-за этого конкретно в одном случае, там, например, нижнего, когда эти нижние подчёркивания встречается в тексте. У тебя несколько будет комбинаторик, где у тебя встречается конкретный, это очень, наверное, сложно статистически, ну, собрать в голове без какого-то визуализации, но идея в том, что у тебя просто больше комбинаций, которые включают себя в редкие символы, даже с тем, что у тебя не три, а два символа. Из этого у тебя получается, что поиск фильтрует примерно столько же, может быть, чуть-чуть меньше, чем три граммы сами по себе файлов на моменте префильтра, но занимает место примерно в 10, в 15 раз меньше. Короче, вот такая идея. Я не знаю, насколько понятно я это объяснил. Я не готовился. Извините.
>> Не, это это более-менее понятно, да, как оно работает. Апдейт, соответственно, у тебя есть файловый чек. Ну это, господи, как это называется?
>> Watcher, да. Watcher и, соответственно, как только что-то меняется, ты бум, тут же достраиваешь.
>> Смотри, да, то есть идея в том, что индекс очень классный, когда он immutable. Из-за того, что у меня биграммы, самая большая проблема с постройки индекс - это, в принципе, открыть все файлы. Потому что если у тебя 100.000 файлов, например, ты работаешь над Linux kernel, да, тебе нужно 100.000 файлов открыть. Ну, мы их не открываем, мы их мапим в виртуальную виртуальную память операционной системы и читаем оттуда, но всё равно это занимает время, это все сисколы и так далее. Идея в том, что когда ты работаешь над каким-то сабсетом кода, у тебя, например, там 10-15 файлов в изменениях. Мы храним их как дополнительную информацию про overlay. И у тебя, получается, весь код индексирован, кроме вот этих новых файлов. И вот эти новые файлы, с которыми ты работаешь активно сейчас, мы в них ищем полностью, потому что мы, ну, в принципе, сам алгоритм поиска, он настолько же эффективен, как у Ripgrep, даже, возможно, быстрее на платформах, таких как MacOS и Windows. Но во всех остальных файлах мы используем этот поиск. То есть у тебя получается такая быстрый win, то есть твои локальные файлы, которые сейчас ты редактируешь, они всегда ищутся полностью, когда файлы, которые ты не трогал, они индексированы. Но прикол в том, что даже на Linux обновить этот индекс не проблема. Поэтому как только возникают какой-то конфликт или твои локальные изменения очень большие, мы просто перебилживаем этот индекс в бэкграунде. Это занимает около 1 секунды на Linux. Это на 100.000 файлов. То есть это, в принципе, незаметно.
Я только сейчас хотел сказать, что надо чаще комититься, но получается, поскольку у тебя там живая система, то она обрастает уже логикой, да, такой именно наблюдение. Ну да.
То есть типа условно говоря, если ты там сделал какой-то сет, который у тебя переписал в одночасие 10.000 файлов, нам проще дропнуть весь вот этот индекс и перебилдить его заново за счёт того, что это довольно быстро. То есть идея вообще такая, что на любом проекте, который размером до 100.000 файлов, FF должен производить вот этот изначальный индекс сAN быстрее, чем ЛМКА сгенерировала первый Tool callл. То есть вот такая идея. То есть, ээ, примерно 2 секунды на этот бюджет есть, что, в принципе, для любой машины, которая используются программистами, это не проблема.
>> Слушай, я правильно понимаю, вот ты говорил, э что к этой СДКшке по сути коннект по MCP происходит или как? Или он как тул встраивается? Это как вообще отдельная штука?
>> Короче, идея супер простая. SDK - это как бы кор, да, вот это всего ту кор файлового поиска. Я его использую в Nein плагине. Я его паблишу для людей, которые хотят этим пользоваться. Например, OpenC, да, они просто устанавливают npm пакет или бановский пакет и используют его с помощью FIF. MCP - это штука, которую я сделал, чтобы повыпендриваться, что эту штуку, ну, W FFФ можно использовать внутри поиска именно агентского, потому что агентский поиск вообще суперспецифический, потому что, если так подумать, то то, как ищет человек, очень сильно отличается от того, как ищет агент, правильно? Потому что у человека всё-таки есть какой-то бэкграунд, да, вот он понимает, я вот этот файл я как-то видел, да, в своей жизни. Я знаю, что вот скорее всего мне точно не сюда. Или вот этот файл я только что редактировал. Вот мне, наверное, точно не сюда. Агент он как бы он не знает этого, особенно после компашена, да, у него иишка, она всегда как бы с нуля начинает искать эти файлы. Поэтому контекст, который ты даёшь, и очень важно фильтровать и дополнять. Поэтому, как бы, я сделал специальный MCP, который не просто вот это всё делает, да, то есть, но он, например, из интересных фечей я дополнительно паршу все definitions. То есть у тебя, когда есть какая-то структура или класс или функция в любых языках, дополнительно, когда мы ищем текст, мы помечаем линии как линии, которые содержат definition. Что это значит? что когда у тебя ищет какой-то текст, и мы пытаемся вернуть эту линию, вместо того, чтобы просто её отдавать и надеяться, что яичко это поймёт, мы, во-первых, её помечаем как definition, приоретизируем и дополнительно даём контекст вниз. То есть, условно говоря, когда твоя ишка ищет дефиницию типа, в большинстве случаев, если тип твой маленький, FF он прямо напрямую выдаст ишке прямо целый тип, вместо того, чтобы иишка потом думала: "Ой, а надо мне идти читать файл".
Генерировала целый лolл. А тулколы они на самом деле, это же не просто у тебя что-то встроенное в твой агент. Тулкол - это настоящий месседж, который у тебя приходит от лмки. который содержит себе огромный JON, в котором у тебя есть ID твоего Туolлкола, параметры. Эти параметры, они должны ещё совпасть с схемой, которую ты предоставил, потому что все тул-колы, они работают через JSON схему. То есть ты JSON схему должен отправить этой лэмке, она должна при отдать тебе правильный Jсоon. После этого ты должен вернуть и она должна ещё это всё обработать. Это всё очень долго. Поэтому очень лёгкий вин - это вот, например, сделать такую вещь или, например, пометить файлы, которые мм они в гите, например, модифицированы. Ишка тебе что-то ищет, например, функцию там user authenticate, да, и ты, например, помечаешь информацию про файл, говоришь в скобочках modified and git. И это уже содержит по себе информацию, потому что иногда тебе как бы важно это контекст. То есть, ой, а мне я этот файл редактировал, мне нужно сюда. Или наоборот, я этот файл редактировал, мне сюда не нужно, мне нужно в другой файл. А Иишка этого не знает, пока она не сделает отдельный гитстатус. Мы это всё предоставляем из коробки в надежде на то, что как бы Иишка сама разберётся и сделает более правильные выводы, что очень сильно зависит от модели, от харнеса, от инструкций и от, в принципе, удачи.
>> Тогда вопрос, как в это всё вкладывается лспишки? Потому что ощущение, что ты частично заходишь на их территорию, не совсем понятно, они должны у тебя быть внутри или LLM как бы как альтернативу это воспринимает и делает это в параллель за счёт вот агентских вот этих примочек, когда, например, там два сабагента, один поиск делает, второй LSP, и они как-то потом мержатся. Как, короче, это устроено и куда всё это идёт.
Я очень, короче, сильно думал про эту тему, потому что, э, скажем так, LSP - это очень классная идея, когда у тебя есть язык по типу тейпскрипта, у тебя Open CД, например, у него сразу встроен этот lsp, да, он тебе что-то поредактировал файл, и ему сразу же дали там, да, список этих инструкций. Но как только ты начнёшь делать какой-то компилируемый код, типа, например, Раста, этот LSP, от него больше проблем. Поэтому, например, я этот LSP растовый весь выкинул, потому что из агентского контекста, потому что оно с об него, во-первых, спотыкается, во-вторых, это всё долго, потому что LSP он внутри себя сделан как очень большой индекс, который заточен на мм дефиниции вот этих вот, собственно говоря, структур, которые тебе не принадлежат. Потому что, ну, скажем так, раньше был такой проект, как назывался CX, да, вот, может, ты помнишь ещё Виме он до сих пор встроенный. Это же то же самое, это же локальный индекс по твоему коду, который ты можешь запустить у себя локально индексировать код и прыгать под дефинициям, да? То есть это можно делать в бэкграунде, он довольно эффективный. Проблема, почему он не прижился? Потому что тебе нужно не только локальный твой код идентифицировать, а ещё и код в твоей стандартной библиотеке. Но что я замечаю, что яишки практически никогда не ходят в эти стандартные библиотеки. Они либо идут на документацию на сайт, они либо достают документацию из каких-то дополнительных своих тулов. Я вообще, честно говоря, не знаю, откуда они ещё могут достать эту информацию. Иногда они просто её знают, наверное, из из контекста memory, где они были натренированы. Поэтому вот этот весь LSP, он сам по себе огромный индекс. Он содержит очень большой, огромный индекс с поиском по символам, что очень удобно для человека. Но мне иногда кажется, что иишкам гораздо проще найти конкретный файл с помощью контента, потому что они ищут конкретную функцию. В основном они не ищут. Ой, а что же внутри этой функции происходит? Давайте-ка я прыгну сюда, а вот этот definition, мне нужно hoverover сделать на него. Я посмотрю, а есть ли здесь какой-то филд. Они сразу идут, сразу вытаскивают весь truck дефиниitionна. Ну как бы вот такая у меня идея. Поэтому мне кажется, что LSP с агентами - это немножко, ну, гиблая тема, мне так кажется. Ну, возможно, я не прав.
>> Ну, вот интересно, я тоже на, знаешь, об этом думаю. Вот, например, рефактор какой-нибудь такой тупой уровня переименования. Очевидно, это не просто в 1.000 раз быстрее LSP сделал с помощью LSP, это ещё и гарантированный результат. То есть ты взял и сделал. Поэтому, например, если мне надо переименовать, очевидно, я воспользуюсь возможностями редактора, но не буду LSP просить.
>> Ты видел ходи хоть раз, чтобы Иишка делала это через LSP?
>> Я вот именно, что ни разу такую ей командную не давал. То есть для меня очевидно, что если я хочу функцию переименовать, я просто в редакторе переименную функцию, она у меня всё само сделается. Поэтому я даже не знаю, что она будет делать. Но я уверен, что надо сделать это хуже. Скорее всего,
>> у них, по-моему, нет возможности, потому что LSP - это отдельный протокол, который, чтобы с ним взаимодействовать, тебе нужен отдельный внутренний JON RPC поднимать, который у тебя будет как бинарник висеть, который ты даёшь команды, а он тебе даёт информацию и читает назад. Я с LSP никогда так тесно не работал, но, по-моему, она это не сделает. Что она может сделать? Это она может считать информацию уже из готового сервера, который где-то под поднят в своём де, например. Но, кстати, я вот не уверен насчёт этого, но да,
>> OpenCД сам поднимает без идэшки, то есть он поднимает сам, это видно, ты когда с ним работаешь, он прямо тебе справа пишет, я там типа причём ты открываешь какой-то файл или он открывает какой-то новый файл, и ты прямо видишь, как справа в openде такой типа бам новый LSP- сервер добавляется.
>> Да,
>> да, я видел это, да, но я никогда не видел, чтобы он какие-то изменения через сервер вводил. Возможно, это просто не заимплементировано, потому что, чтобы Иишка могла это делать, тебе нужен опять же отдельный встроенный лolл, правильно? А lspтих возможных, да? Вот скорее все скорее всего так оно и есть. И ему просто нужно отдельный встроенный Tool callл. А отдельный встроенный Tool callл, который у тебя будет как это засранный systemм это засранный контекст и так далее и тому подобное. Поэтому, кстати, да, проще, как они там часто делают у тебя в конце, там же в openде сейчас форматоры есть, которые в конце запускаются. Либо у меня, например, там в проекте типа в конце выполни там, ну, грубо говоря, BIми там форматор какой-то, и он просто всё приводит в порядок. Это, конечно, нерефакто био, ты так называешь его. Это не разве не биом?
>> Ну, биом. Я первый раз его произнёс в жизни. Я знаешь, как часто бывает, когда ты какую-то штуку произносишь первый раз, ты читаешь её вообще не так. Вот. Я тебе клянусь, первый раз в жизни я произнёс его вслух.
>> Если он
>> Я сразу тебя забулил. Я тебя сразу забулил. Извини, пожалуйста.
>> А я привык, потому что всегда так происходит. Я никогда не угадываю название тулов. Никогда.
>> Это вообще нереально. То как вот это как вид появился, а это на самом деле не вид. Это вайт или
>> наоборот. Наоборот. Вот именно, что ровно оборот. И ты не поверишь, я прямо себя заставлял, я его вайтом называл. Меня зашеймили. Я после этого так видт, вид вид вид. Везде хожу. Витвит витвит, витвит. Восьмой вышел недавно. Приятненько. А у меня в продакшене бетки. Бетки?
>> Да, у меня CS:GO. Я, слушай, я на всех последних версиях, потому что вот это вот маньячество мне нравится производительности, потому что я от этого страдал. И, конечно, мне очень хотелось, чтобы это всё произошло. Поэтому RЛу там Виты, CS:GO, я уже вот последние полгода на всё это свичнулся.
>> Классно.
>> Это хорошо, это приятно. Скоро для всех идёт. Да, у меня не получается никак проект переделать. Там что-то, короче, не работает. Хочу тоже восьмою попробовать, потому что вечная проблема с этим роллапом была. У меня с ним уже 10 лет проблемы. Я не могу никак с ним побороться. Как в материал UI были проблемы, когда я там с ними с ним работать пытался, так и до сих пор.
>> Ну, надеемся, это на прош У меня есть следующий вопрос про LSP. Понятно. То есть, скорее всего, получается, что он LSP сейчас юзает больше как дополнительный способ искать, потому что он может, ну, более связанные графы давать. Ну, в теории типа должно быть лучше, но видишь вопросики.
>> Да.
>> Вот прикол. В чём-то прикол? Что мне кажется, что и не ищет он черезоло спиннинг. Я ни разу не видел. Ну то есть вот у меня есть клодко, с которым плагины. Ты видел когда-нибудь, чтобы у них они именно искали через LSP? Я ни разу не видел. Всё, что я вижу - это вот этот дополнительный информацию про ошибки и вот эти линтеры, которые появляются, когда он внёс изменения.
>> Но у меня линтер точно свои. Слушай, надо будет пообращать внимание. Говорю, единственное, что я прямо видел, это то, что он их реально начинает включать. А вот какую непосредственно он задачу с помощью их выполняет?
>> Хоро.
>> Ну вот я точно знаю, потому что я видел этот код впенкоде, когда он вносит изменения, например, в конкретный файл в тайпскрипте. Если у него есть тайпскриптовый линт, он у тебя этот линт сразу же запустит. И если у него есть ошибки какие-то в этом файлике, он эти ошибки скормит лмке и скажет: "Вот, вот тут такие-то ошибки". То есть если у него синтакс, чтобы у тебя не генерировался отдельный тол на запуск компилятора и так далее. То есть это вот, ну, просто быстрее луп. Вот это то, что я точно знаю, как они используют лспи.
>> Ага.
>> На, надо будет посмотреть, может быть, ээ как-то сбивается, потому что я, знаешь, что помню? Вот у меня, несмотря на то, что в рубях подключен, там же тоже лспишка есть, но я, знаешь, что замечаю? Каждый раз, когда он правит, он прямо запускает там рубит с каким-то флагом на чек синтаксиса файла. То есть он делает это не через какие-то, а инструменты такие лспишные,
>> да, и поэтому неизвестно. Ну, я точно знаю, что у меня с тайпскриптом OpenCд это делает. А аналазер я ему специально вырубил, потому что он только спотыкался об него.
>> Угу.
>> Лод-код там тоже я ему установил, по-моему, Zig и Typeскриптовый lspт. Но тоже я ни разу не видел, чтобы он через них искал. Возможно, это просто кто-то же ещё не до конца это написал и какой-нибудь диджей, который там, да, пропагандист, он должен просто это сделать. И все скажут: "Боже, как же мы жили до этого". Знаешь, у меня вообще иногда такое возникает идея, что современные вот эти все open cд clкоды, они как V, вот эти вот, знаешь, редакторы, которые только появились на графических интерфейсах. Они ещё настолько простые, настолько настолько как бы никто ещё не знает, как ими пользоваться. Там ни синтакс хайлайта, ну, не было, но люди всё равно пользовались, да, никакого ни компиляторов, ничего не было. А люди пользовались всеми редакторами. И мне кажется, что сейчас, ну вот миллион людей работает над разными вот этими агентами, и они как раз-таки вот это пытаются понять, что вообще нужно и как вообще это правильно делать, потому что мы ещё не поняли, как эффективно этим бороться. А может уже и поняли, может лучше уже и не будет, я не знаю. Вот, по крайней мере, файловый поиск, я уверен, можно сделать лучше.
>> Можно, я думаю, много чего можно сделать лучше. Мы сейчас про интерфейс, кстати, тоже поговорим. У меня есть претензии к Open-коду. И про бан с тобой тоже поговорим. Там есть интересные штуки, которые надо обсудить. Но сначала смотри, какой вопрос ещё. Я всё-таки до конца, знаешь что, не понял? То есть вот если твоя утилитка, она же по сути всё-таки с состоянием, а мне до этого казалось, что тулы всё-таки - это statтless штука. То есть он, грубо говоря, поиск у тебя внедрён как некая прямо часть самого-кода, а не как просто ещё один тул. И поэтому это работает.
>> Да.
>> Да. То есть он прямо живёт у тебя в Оенкоде. И на каждый твой проект, который ты открываешь, параллельно, он тебе открывает отдельный инстанс этого пикера.
>> Инсвой. Всё, я понял.
>> Инс, да. То есть, как бы, и тут, на самом-то деле, оно ещё не полностью roll out, потому что, ну, к примеру, если там кто-то решит у тебя открыть индексовый root, ну, операционной файловой системы, и FFФ он, конечно, быстрый, но когда у тебя триллион файлов индексировать, но там уже как бы начинаются проблемы с памятью и с CPU usage. Поэтому тут как бы мы ещё балуемся по поводу дефолта выкину выкинуть репреп и использовать только это. Потому что не всегда это хорошо, когда у тебя есть инстанс, который у тебя индексирует весь твой проектный root. Возможно, это стоит делать только когда у тебя есть, например, гиit в папочке. Тогда у тебя мы точно знаем, что Ага. Вот здесь нам нужно искать по файлам, которые мы точно знаем, что будут полезные. Поэтому вот здесь мы запускаем этот индексер. Он там, мы точно знаем, что он отработает за секунду, за две, и потом весь файловый поиск будет очень быстрый.
>> Собирать стату и анализировать всё это добро и пытаться угадать, это, конечно, очень прикольно. Знаешь почему? Потому что оно, с одной стороны, сложно, не детерминировано, ты никогда не знаешь, да, нет хорошего решения, надо всегда смотреть по юзкейсам. А во-вторых, знаешь, что это прикольно? Эта штука делает твою работу очень продуктово ориентированной, потому что ты не можешь просто пилить фичу, которую тебя там кто-то поставил, да? То есть твоя задача всегда понимать, а что нужно пользователям, а как мне угадать так, чтобы UX был по сути здесь именно даже UX просто, а не dx или давай по-русски X, по-английски X будем говорить, а то тебе постоянно надо над этим думать, разговаривать с людьми и пытаться понять: "О'кей, а какой у вас кейс? Ты не пробовал, кстати, аналитику собирать? Есть там механизм, типа, а давайте посмотрим, что у чувака. Или тебе приходится стенды локальные делать, чтобы проверять?
>> Ну, у меня конкретно нет таких возможностей. У OpenCда есть Open Telemetry. Я же не не часть компании OpenCд. Я на них не работаю. То есть я имею в виду у них,
>> поэтому у меня к ним я могу только спросить, сколько там у вас людей виндоусом пользуется, сколько там у вас людей вообще такой-то Толкол вызывает и так далее. То есть, ну, там, естественно, Open Telemetry это всё и в клодкоде тоже есть это всё. То есть вы не переживайте, это собирается аналитика анонимизированная и, ну, короче, там всё вполне себе нормально. Вряд ли, конечно, GDPR согласо compliant, но единственный способ это всё Evaluate - это, ну, как бы, во-первых, либо запускать свои собственные, скажем так, бенчмарки, но опять же ты никогда не знаешь, как пользователи будут использовать вот твой проект. То есть вот я недавно вот, буквально вчера Борис Черный, который сделал клод-код, он написал, что он завайп-кодил для клодкода в три раза быстрее поиск по файлам, когда ты делаешь собачка. То есть он прямо это написал в твит такой типа вот у нас enterprise customers, они мне пишут, говорят, что у нас поиск фафлом очень сложный, очень тяжело вот эти собачкам шн делать. И я вот сделал индексовый поиск по файлам с помощью клодкода, который теперь в три раза быстрее. И я написал, я сделал твит, что в следующей версии репгрепа в 100 раз быстрее, чем укода будет файловый поиск, потому что я собачка приписал на в FF в Open Cod. Но в чём прикол? В комментариях к моему посту мне пришёл человек и говорит: "Я не понимаю". Начал жаловаться мне, как будто я разработчик Нкода и говорит: "Я не понимаю, почему собачка меншин не даёт мне меншнить файлы, которые не в нотмодулях, точнее, у меня в нотмодулях, которые загит игнорины". И ты такой: "А что ему ответить?" То есть как бы, ну, то есть я ему говорю, что, ну, это будет очень, очень медленно. Он говорит: "Нет, документация говорит, что файлы должны, что только игнорируются файлы в точке игнор мне нужно, чтобы в Gitгноре не игнорировалось файлы". Но если мне нужно какие-то файлы заигнорить, я их добавлю себе в файлик точ игN. Ну, то есть и ты смотришь этот человек, ты ему никак не угодишь, потому что тысячи людей никто не знает про fйлик. Про его существование. Если мы сейчас включим всех файлов в твоёх нодмодулях, твой Openкод просто взорвётся, когда ты собачку нажмёшь. Поэтому, ну, невозможно. То есть нужно выискивать какую-то вот это вот именно, да, продукт, то, чем занимаются продукты, да, вот какой-то вот именно правильный сабсет людей, которые действительно пользуются твоим продуктом каким-то образом. И это не суперпродвинутые пользователи, потому что суперпродвинутые пользователи, они там запустят какой-то P agent, соберут свои кастомные экстеншены, сделают себе полностью собственный хардness и не какие-то супер не не продвинутые пользователи, которые скажут: "А почему у меня номодули не индексируются и почему я не могу заменшишнить файлик из номодулей?"
>> Ну да, да, да. Ну всем не угодишь. В этом-то и прикол, что ты начинаешь понимать, когда-то,
>> что, да, надо фильтровать и понимать, на кого ты работаешь, и всегда будет хейт.
>> А с давай, знаешь, про что поговорим? Перед тем, как в кишки переходить небольшую историю с курсором, по-моему, с курсором было связано, да, когда они сделали бенчмарк и сказали, что у тебя там всё отстой или у них слишком круто всё. Расскажи,
>> короче, что было. Я не люблю benchmark oriented Development. То есть, что они сделали? Они, условно говоря, написали Google Search, Google Code Search, заиндексировали всё триграмами. Я проверил, сколько занимает вот этот вот Google Code Search на машине, которую они сами упомянули в своих бенчмарках. Занимают 2 минуты. Они в своей статье ничего не сказали, вообще ничего не сказали про то, что они индексировали код, кроме того, что мы индексируем код. Они не упомянули ничего, что что сколько у них это заняло. Но когда пришло время говорить, сколько занимает одна один quy, они сказали: "Мы в 1.300 раз быстрее, чемпгреб". Ну, честно говоря, ну, это несерьёзно, ребята. То есть это очень странный мув, потому что, ну, вы реально сделали много работы, вы ничего не сказали о том, как вы вообще собираете, как вы мейнтените этот индекс, потому что я делаю примерно то же самое, да, у себя. Возможно, вы украли мою идею и ничего мне не сказали про это. Но что ещё смешно, что у них, почему меня эта статья очень сильно выбесила, потому что они там очень долго описывают алгоритм, которым они это всё делают. Ну я просто в этой в этой системе варюсь, около года я работаю над этим проектом, даже больше, по полтора года я работаю над FF. До вот этих всех клод-кодов он появился. Он, ну, скажем так, он уже довольно содержавшийся проект. И я исследовал, мне интересна тема поиска по файлам. И то, что они пишут, очень сильно звучит как то, что навайп-кодила, нагллюцинировала лмка. То есть лмки просто безумно любят blomфильтры. Это такая Я, конечно, не не бросаюсь говном говорить, что они ничего не разобрались, не сделали, потому что я не видел их кода. Это проприетарная штука, которая где-то там работает. Но проблема в том, что каждый раз, когда ты говоришь лэмке: "Вот твой бенчмарк, попытайся это заоптимизировать", рано или поздно она начнёт куда-то пихать блумфильтры. И это никогда не работает. На самом деле просто мне не нравится вот эта вся система, когда тебе не говорят, что есть у какого-то инструмента своя цена, да? То есть цена вот такого вот массивного индексирования - это то, что, во-первых, у тебя это всё индексирование где-то должно лежать, и оно должно синхронизироваться. Каждый раз, когда ты заспавнишь нового агента, тебе нужен новый индекс на на весь твой код. Мы тоже используем индексы, но так как я пытаюсь это всё сделать прозрачно, индексы максимально стараются быть быстрыми, чтобы они оптимизированы для стартап-тайма. смешно, что я после этого очень сильно пытался всё это заоптимизировать, и я добился того, что криме у меня были быстрее. Но это всё, скажем так, супер оптимизировано под конкретный бенчмарк. Поэтому этот код, я даже не хочу как бы, знаешь, хвалиться этим. В твиттере говорит, что я теперь у меня в два раза быстрее, чем у курсора. Нет, потому что, во-первых, у меня нет доступа к курсору, и это код вообще непонятно где лежит и что он делает. А, во-вторых, это всё на, ну, можно, конечно, суперсильно вычленить и сделать так, что конкретно на хромиуме, конкретно на Query Max File Size у меня будет 1 мисекунда или даже наносекунды будут у меня файловый поиск. Но будет ли это полезно для всех остальных, я не думаю.
>> Кстати, по поводу поиска и фильтра Блума. Мы как раз разбирали в том подкасте эту тему, что, оказывается, по-моему, то ли BН, ну, короче, что-то майкрософтовское. сначала как раз пытались на этой технологии делать. Там есть концепт, который очень фактически это фильтр Блума, не не в чистом виде, да, но с помощью которого можно действительно строить поиск. У него там есть куча других недостатков, из-за которых в целом от этой идеи отказываются, но оно является вполне себе как бы ну одним из вариантов построения. Их всего несколько, там два или три. То есть я просто к чему? К тому, что это не совсем прямо уж сумасшедшая
Идея, и она даже для нормального поиска, в общем-то, использовалась крупняками. По крайней мере, попытки были. Или, кстати, Yahoo это был, не помню, кто-то вот кто-то оттуда.
Ну, BL BLФильтр - это ж, короче, идея простая. Я как бы исследовал очень много разных вариантов индекса. Идея такая, что нам не обязательно нужно знать, что конкретные файлы имеют или не имеют текст конкретный, да, то есть какие-то меншены. Нам нужно знать, что какие-то файлы не имеют вот этого текста, потому что основная задача любого индекса - это не допустить прочитки конкретного файла. То есть он может быть false positive, но он не может быть false negative. И вот Bloom filter - это идея в том, что мы используем хэши для того, чтобы, э, как бы впихнуть больше информации о том, что у тебя конкретный файл не содержит чего-то в меньшее количество данных.
Проблема только в том, что то, как они это используют, ну, из из докладок, из их блога, ведёт к тому, что они занимают больше данных. Это вообще, ну, как бы я попытался даже навайп-кодить это solution с этого блога. У меня получилось ещё больше. То есть у меня получилось не гигабайт, а гигабайт и 200 Мб вот этого индекса. То есть да, он был супер супер поит. То есть он, грубо говоря, на хромиуме, у которого 500.000, Он по сравнению с триграммами. Триграммы у тебя на одном кри дают 700 файлов, а он тебе дал 500 файлов. Но разница на 700 и 500 файлов, она настолько ничтожная, что, ну, то есть 500 файлов обойти для любого поиска, проверить, что у них там что-то содержится, в тридцатьвух из которых действительно содержится этот текст, это очень легко. То есть это меньше, чем миллисекунда.
То есть там, ну, я так и не понял, что произошло, и там сделал целую статью по этому поводу. То есть я вообще, как бы, как человек, который чуть-чуть разбирается в файловом поиске, я вообще не понял, на какой ляд они это сделали. И если это реально работает, ну, так за openрсити это я ж может поучусь. Я, может быть, что-то для себя выужу из этого. Может быть, мы сделаем мир лучше, но нет, они как бы bragging, хвалятся тем, что у них технология такая крутая, что они всё сделали. Но, извините, мы вам её не дадим. Ну, о'кей. Ладно.
Хорошо. Я, знаешь, что думаю? Помнишь историю с Кими и композером? Да. О, да, обожаю. У них паттерн в этот видно паттерн в работе курсора. А ты видел изначально их вот этот текст? Я тоже с этого кекал в твиттере, что у них изначально вот этот вот композер, который они выставили, вот такой, ну, график, как любят, да, вот эти все мкино модели, что вот здесь composer о здесь opus 4.6, а здесь composer 2 и подпись тестирована на на бенчмарке курсор bench 2.0, который проприетарный, который вы никак не можете запустить. Ну о'кей, ладно. Ну, то есть как бы, ну, а какой вообще какой смысл бенчмарков, которые невозможно проверить?
Опять же наехать на курсор в той статье, которой они говорили, они говорили, что они запускают это на Apple M2. У меня у коворкеров есть Apple M2. Я говорю: "Дайте, пожалуйста, Apple M2". Я беру этот же Птоп, запускаю этот же, клонирую этот же репозиторий, запускаю этот же QY, и у меня не 16 секунд, а 9 секунд он запускается. То есть даже вот это банальный бейзлайн, который они сделали, и тот ни туда-ни сюда. То есть я не знаю, как это всё работает.
Дим, знаешь, я тебе так скажу, это вот всегда как бы такая история про то, что с этой точки зрения они ребята, которые раздражают спецов настоящих профессионалов, вот типа тебя. Но с точки зрения смысла существования курсора и того, что происходит на рынке, надо, конечно, смотреть на цифры. А с цифрами у них всё хорошо? Вот эти, пожалуйста. Да, ну, пожалуйста, я ж, ну, смотри, в Твиттере твит, который написал, что я сейчас разоблачу курсор, набрал в два раза больше просмотров, чем твит, в котором, собственно говоря, я разоблачил курсор. То есть как бы, понимаешь, их зада вот этот вот антропик мисс, да, вот который объявление, ну, столько пафоса они нагнали, ну, столько пафоса это же humanity thread, да? То есть это угроза для человечества. Ну, то есть как бы эта угроза для человечества вам дала утечь вашим исходником клодкода, который вы потом DMcешьте всем. Но нет, как бы маркетинг см с точки зрения маркетинга я вообще фанат их всех. И мне ещё надо им учиться, потому что учиться, учиться, ещё раз учиться.
Более того, заметь, ты попадаешь в ту же самую ситуацию. А это же часто просто люди думают, что там злодеи специальные следят, сидят и это делают. Вот заметь, ты сам говоришь, у тебя твит о том, что я сейчас разоблачу. набирает больше, чем так. Это же то же самое. То есть они точно та это ровно то же самое, да? Просто ты скорее как бы пойдёшь и скажешь: "Ой, жалко, что так происходит, что не ценят настоящую работу". А там маркетологи скажут другое. Они скажут: "Смотри, вот это работает лучше, поэтому давай делать только так". И похер, что там вот эти чуваки. Да, согласен. Я как бы я полностью с этим согласен. И как бы на меня тоже накидывают, что я бы что я токсичный человек втре, что я там говорю, чтогребно или там, что я там говорю только токсичные вещи, говорю. Ну, ребята, вы смотрите только токсичные вещи. Я рассказываю членжлок своего проекта, у меня 1.000 просмотров. Я пишу, я делаю видео о том, как ээ там наврали в бенчмарках кто-то, там 100.000 просмотров. Я делаю видео, в котором я представляю проект, но внизу вставляю лоль эту, как его Лоли аниме, танцующую девочку. У меня 300.000 просмотров. То есть вы меня сами заставляете так себя вести. То есть я бы я вообще супермилейший человек, вы же меня видите, да? Но как бы когда тебе когда вот ну это затягивает вот эти все соciдиа, да, то есть ты как бы начинаешь вот этим всем заниматься, и оно тебя как бы побуждает, а там ещё и монетизация есть какая-никакая, то есть уже как бы ты уже как бы и такой же мой бизнес уже такой, я там, конечно, три хлебные крошки и банку кефира получаю в месяц. Уже нужно как бы поднапрячься, надо токсичный твит по расписанию вставить. Ну, короче, да, потом в работу превращается.
Хорошо. Ну, просто, чтобы было понятно, ребят, про курсор. Вот курсор, по-моему, на днях выпустил третью версию. У меня сейчас идёт как раз курс, где нас там больше 100 человек, ребята одновременно пилят проект на разных системах. Это, кстати, ещё для нас классный социальный эксперимент, прикинь. Ну, где-то такое видишь, что у тебя все одновременно идут по одному курсу, есть проект и каждый делает на своём стеке с это взаимосвязь моделей, агентов и так далее. И у меня просто вот каждый день перед глазами там типа я проект сделал столько-то часов, столько-то сжёг, такая модель, такими-то пользовался штуками. Очень круто. Я даже хочу немножко, знаешь, это вытаскивать как некие, ну, не бенчмарки, но сам понимаешь, что-то полезное вытащть можно. Изageмоделей. Представь, у тебя есть просто некая задача, она не тривиальная, она там многоэтапная, там фронтбк надо задеплоить, причём, используяшки, у тебя надо сделать там-тесты на плейрайте, тебе нужно сияйку докер и всё полностью мы говорим без кода. То есть мы только генерируем там через спеку и всё такое. И, соответственно, по дефолту мы Open CД раздали, но с купленым там же KMI. Но при этом у каждого свои есть э уже купленные какие-то подписки. Кто-то пробует бесплатные модели, у кого-то курсор, у кого-то VS-код, у кого-то ещё что-то. И вот мы на больше там примерно 150 человек, на которых мы видим, грубо говоря, как они каждый делают. И там каждый отчитывается. Я там сделал проект. Это это ученики, да, получается? Да, это ученики. Каждый пишет: "Я, например, там пошёл таким путём, такая-то модель меня загнала в жопу, я свичнулся эту модель заданию". На одной задаче 150 человек. Это это это очень это, кстати, полезная информация очень сильно, на самом де. Дадада. Поэтому я в этом плане прям меня прямо прёт. Я такой думаю, ёлки-палки, у меня сейчас такой есть статистическая история на тему того, кто где как лучше работает. Я её хочу понемножку оттуда вытаскивать. Я просто к чему это стал рассказывать, помимо того, что приходите все на мой курс, там есть конкретно мм история с курсором три. То есть люди, которые его попробовали, по-моему, три человека как минимум написали, то есть ещё не все закончили, да, но три человека написали, что их он впечатлил. То есть вот новый курсор, им очень понравился, там что-то встроенный браузер, я сам просто не пользовался. Так что мы как бы с одной стороны, видишь, накидываем, с другой стороны есть конкретный инструмент, которым можно пользоваться, и люди оценивают его очень высоко.
Да. Не, ну я ж я ж я ж никогда не накидываю на то, что люди продают, там зарабатывают и так далее. То есть как бы, ну вот клодко, ну все видели, какое говнище ко клод-код, как CL приложение постоянно у тебя что-то куда-то наезжает друг на друга. Ну ты же ты же ты же знаешь, что он пользоваться. Вот, ну вот смотрите, человек ушёл оттуда, но по факту это же самое, ну, как бизнес, это самое просто, ну, я бы хотел работать над клодкодом, я бы с удовольствием был бы программистом вмаде Клодкода. И опильхивайте меня говном этим 300.000 раз. Просто как бы с одной тут, да, действительно, есть вот эта вот инженерная такая вот эта такая дедовскость такая. О, господи, у них тут они бенчмарки неправильно сделали, у них тут ассемблер не используется. С другой стороны, ну и пожалуйста, то есть вот люди пользуются, миллиарды зарабатываются. С другой стороны, ну попробуй сделать лучше, да? То есть как бы моя задача - это попробовать сделать что-то лучше, чтобы как бы вот эти недостатки подсветить и себе копеечку в карман поиметь. То есть вот такая такая задача. Пытаюсь, пытаюсь.
Это хорошая задача, да? Хорошая. А давай про OpenCД тогда копнём дальше в демонов Openкода. И самый, наверное, такой - это бан. Вообще у меня Twitter, я думаю, у тебя тоже. Просто для тех, кто там особо не общается, хочется сказать, Twitter - это какое-то ощущение, что там все боты. Потому что когда у тебя выходит новая версия бана, новая версия чего-то, у тебя просто вот открываешь, что там люди пишут: "А, боже мой, мир рухнул, всё, теперь не надо, этих отменяем, тех убираем, ставим полностью эту систему. Мир не будет больше прежним". И я где-то, кстати, прочитал, что на самом деле действительно большинство вот этих вот всех сообщений - это прямо купленные аккаунты. То есть это часть марке. Можешь прямо увидеть даже о них вот эти, которые начинают репостить, они такие длинные статьи начинают писать в таки таким текстом, который ты как бы невольно начинаешь сам читать, нажимать вот этот read more, да? Ну то есть типа антропик только что выпустили новый clудис и это что наливают воды каким-то таким текстом специфическим, которые реально, ну, по дефолту ты пытаешься прочитать полностью дальше тебе интересно.
Ну о'кей. Это кажется так. Но бан, да. И вот бан. Он у меня постоянно, я им не пользуюсь, но я, как человек, прошедший через расщепление ноды, когда Айо появился, и я знал, что это не закончится добром, и Аё потом снова слили, и всё равно все в конце концов на ноде оказались. Я теперь на все эти штуки очень скептично смотрю в плане того, что кардинально ничего не поменяют. И поэтому про бан я почему начал говорить про Twitter. Единственное место, где я его вижу, где у меня просто, а, новый бан, мы тут быстрее, мы тут лучше, мы тут круче, тра-та-та-та-та. Потом выясняется, что куча проектов типа Опенкода внезапно начинает с бана съезжать, потому что сифолты. Да, сикфолты. Э, там есть много проблем, но дай я сейчас скажу одну вещь. Бан меня забанил в твиттере, как их сил. Всё, я всё понятно. Теперь история такая. История такая. Люди почему-то, которые просто пишут на джаваскрипте, они не знают вообще о том, что бан не запускает JavaScript. Они думают, что бан - это прямо движок джаваскрипта, который прямо встроенный. Я просто написал твит, что бан, вообще-то, не запускает JavaScript. Бан использует JSCore, но Бан, как бы, когда ему нужна Garbage Collection, он может вызвать JSCore в этом. И как-то почему-то Джарет сам, наверное, на меня очень сильно обиделся и забанил меня и и с основного аккаунта, и с аккаунта бана, с тем, что мы с ним за за несколько месяцев до это очень мило общались на митапе в Сан-Франциско. Господи, бан. бан.
Мне кажется, мне кажется, это очень интересная технология. То есть в чём, например, бан хорош, очень хорош локально запускаться у тебя на клиенте. Почему? Во-первых, например, в ноде у тебя все твои обвесы файловой системы, ну, к примеру, тот же Глоб, да? То есть глоб, который у тебя, например, твои иишки вызывают по тысяче раз в день, а, а то и больше. Они все имплементированы в Джаваскрипте. То есть у тебя файловая система имплементирована в ноде, но они тебе возвращают список файлов, а потом JavaScript у тебя этот файлы фильтрует, apply вот эти вот Wild Card темплейты, да, со звёздочками. В бане нет. В бане они всё это встроили, написали на ZК и сделали очень эффективно. Ну не у меня есть библиотека, которая эффективнее, называется злоб, но они написали эффективный алгоритм, который я смотрел на него. С этой точки зрения и таких вещей много. Вот те, которые запускаются локально, их очень-очень много вещей, которые реально делают твою жизнь быстрее, и они прямо встроенные в систему.
Вторая огромнейшая проблема ноды - это FFI. То есть у тебя есть, к примеру, FF, моя библиотечка сишная либо. Что я могу сделать в бане? Я могу просто взять либо тоo, либо точка, ну, короче, неважно, файл самой библиотечки, дилельку на винде и прямо загрузить в бан и прямо из бана вызвать конкретные методы в этой библиотечке и протипизировать их. И оно просто работает. И это просто божественно. Это очень классно. То есть тебе не нужно писать никакие напии. Это вот эти нод какие-то специальные их модули, которые компилируются как бы в контексте ноды и потом вызываются как модуль из джаваскрипта, но они на самом деле нативные, но скомпилированы они через либо нодную, либо C++. И тебе нужно отдельный специальный билд для этого всего. И это всё жутко неудобно и ужасно, что приводит к тому, что у меня есть другой проект для сравнивания картинок. Так вот, вместо того, чтобы всем этим париться, я просто написал сервер, э, который бинарный. То есть у тебя бинарник запускается локально, и потом у тебя сервер через RPC идёт туда-сюда. Так просто проще, но это ужасно неэффективно и очень сложно это всё поддерживать. Поэтому с точки зрения любых клиентских приложений Бан реально лучше работает.
Но как всегда, но он написан на Zigг. Азик ZК - это язык, в котором нет вообще вообще практически нет меoryменеджмента. Точнее, он есть, там есть The Fury, но если ты что-то отдаёшь в Blackбокс, а потом достаёшь из БОкса, у тебя возникают проблемы с памятью. И бан реально бывает крашится. Бан реально бывает крашится. А, во-вторых, из-за того, что они взяли и прыгнули на миллиарды просто нативных имплементаций, естественно, страдает Windows, потому что у Windows миллион проблем. И как только у тебя начинается, мы заимплементировали по SQL клиент, мы заимплементировали SQL client, мы сделали файловую систему, мы сделали виртуальную файловую систему, мы написали оптимизацию NTFS, мы сделали кучу всего, потом где-то в комбинаторике из двух этих опишек у тебя у тебя случается просто краш из-за того, что в данной конкретной операционной системе это Windows. А Windows, например, оналочит файлы, если они заткрыты для чтения в memory mapping, да, и всё, у тебя залочен файл, он не может тут его прочитать, у тебя seкfold и всё. И это большая проблема для проектов таких как Open Code, потому что OpenCode у них очень много пользователей и очень много пользователей, которые пользуются бесплатными openсорсными системами, они на Windows сидят или они, например, хотят использовать электрон. А электрон - это нода. А есть, конечно, бан какой-то там электрон, но он просто не работает. Точнее, там куча проблем и своих недочётов. Поэтому, что сделали сейчас JS? Что сделает OpenC? Они переписали все нативные интерфейсы, которые используются с бана на ноду. Нативно они запускаются через бан. То есть, если ты используешь Нкод, они всё ещё используют бан. Но на винде и в электроне они используют ноду и активно спонсируют сейчас разработку FФаев специально, чтобы нативные зависимости можно было в носка, так же, как в бане. Вот. Потому что это большая попоболь сейчас.
Именно об этом я и говорю, потому что когда у тебя вот нода всё-таки это очень сильная история и Сайоже ровно то же самое было. Классно, что являются такие конкуренты, которые показывают, как можно было бы сделать, помнишь, те же самые импорты модулей, да, которые сначала они отникивали, что можно сделать универсально, потом в итоге сделали, теперь можно там, короче, с обратной совместимостью были проблемы, когда Е6 модуле внедряли. И я просто знал, ну, как бы у меня была очень высокая уверенность, что фич, то есть само концепция бана, что давай внедрим всё, тебе не нужны сторонние инструменты, это, в принципе, безумие, потому что поддерживать всё это и сделать работоспособным очень тяжело, особенно когда LEC начнёт накапливаться. Я думаю, это любой раз это классно продаётся, но это плохо работает со временем. А вот то, что ты рассказываешь про FFI, видишь, в итоге решение-то какое? Всё-таки давайте вложимся в ноду, и в какой-то момент бан просто станет, ну, не нужен. И сколько такого было в нашей жизни. И кофе скрипт был, который пытался это сделать. Кстати, из таких, мне кажется, самая успешная штука, которая на чём-то построена, выжила и зажила своей жизнью. Мне мне кажется, котлин как будто, наверное, самый успешный пример. Котлин. Ну да, ну котлин он же как бы изначально позиционировал. Он жалу хотел исправить. Исправить Джаву. Я имею в виду похожая концепция, похожая история, когда типа оно устарело. Да, согласен.
Ну, смотри, мне кажется, что бан он сам по себе бан имеет много хороших идей, которые, возможно, сейчас, когда они им не нужно бежать и думать про ревею, потому что у меня есть хороший друг, который работал в бане, когда они ещё были баном отдельным от антропиков. И мы с ним общались как-то, то есть, ну, у них были инвестиции, но бан заработал за всё своё время 2 доллара. э, продали стикеры где-то, я не знаю. Это был официальный ревеннию бана. И они абсолют, то есть они вот до конца, когда их покупили, они не знали, на чём бабки делать. То есть потому что что им надо было делать? Либо деплоймент платформу, как Vercе, но только конкретно под бан за зафиксировану, но уже есть Cloud Flir, есть Vercell и есть AWS. То есть там нужно было набрать какую-то критическую массу проектов, которые были как бы готовы на сервере запускаться бы на бане, но их просто нет, потому что некуда деплоить везде. Ну, если Версель, то проще на ноде деплоить, а самому на сервере, ну я то, ну, честно говоря, я не знаю ни одного проекта, который бы использовал бан на сервере. Вообще ни одного. Ну, ты знаешь хоть кого-то? Честно, как я тебе говорил, для меня вот эта история с баном, шевеление, которое я знаю, что в конце концов либо уйдёт, либо очень низкую займёт нишу.
С другой стороны, меня вообще раздражает то, что вот эти все сейчас код-коды, open-коды, они все написаны на Джаваскрипте. Тот же Пай агента, да? То есть я понимаю, это очень удобно писать экстенжены. Ну то есть вот тот же кодекс, он на расте написан, да, и все говорят, что он гораздо более стабилен. Во-вторых, он работает быстрее, в-третьих, он как бы менее забогованный. Но сегодня же так много лмок. Ну возьмите, ну напишите вы на нормальном языке программирования, который скомпилируется у тебя в бинарничек нативный, который не будет там у тебя засирать. Ну а всё, всё надо на джавоскрипте писать. Ну честно, вот вот за что обидно, так за это обидно, потому что мне хочется нормальный, чтобы решили проблемы. возмо. Ну, то есть возьмите, сделайте какой-то Open CД на, ну, я не говорю про OpenCД, возьмите, сделайте там какой-нибудь код на Расте, возьмите, решите проблему плагинов, сделайте какой-то ВАСМ локальный через ВАЗИ, да, сделайте так имплементацию плагинов. Ну нет.
Кстати, интересно, посмотрим, потому что мне сложно говорить, во что это выльется, потому что всё-таки насколько там много реалтаймового, насколько там вообще сложные будут интерфейсы, потому что в целом, как бы, они как будто бы не очень сложные, то есть там очень много функций, там очень много всего, но в конечном итоге только текст, поэтому вполне возможно Typeesрипт выживет. Ты, по крайней мере, таким образом можешь привлекать сторонних разработчиков. Сам понимаешь, как бы, какой объём. И вопрос скорее в том, упрутся ли они реально. Количество багов. Учитывая, если ты Typeesрипт нормально используешь, я не думаю, что раз тебя сильно больше там защитит, честно скажу. Но с точки зрения возможностей быстро привлекать людей, может быть вопросом, кстати, вот чисто умозрительное заключение, вот наблюдение. Кодекс обновляется намного реже, чем OpenC и Clot и все остальные, кто не на расте написано. Я каждый день запускаю апдейт, он обновляется реже. Вот. Но может быть он победит, в конце концов. Концептс разста может быть победит. Мне кй его знает. Ну э, скажем так, э, тут больше проблема в том, чтобы обновить нативный бинарник, тебе нужно скачать целый бинарник заново. В то же время как Хотя же, ну, может быть, вполне себе может быть.
Слушай, мы, кстати, обсуждали эту тему с недавно тоже на подкасте, что если у тебя раньше установка НПМ воспринималась скорее как, ну, типа есть вот там бандл в Ruub, в PHP, там своя фигня, короче, в каждом языке своя фигня, да, а вот есть типа языки, которые позволяют, там, не знаю, ты берёшь стль, как правило, бинарник сразу запихнули это в брю какой-нибудь и типа поставил. Но в реальности, знаешь, что оказалось, что НПМ сейчас как будто бы стал средством дистрибуции вообще всего, что угодно. То есть, если раньше это была проблема, что тебе как будто бы нужна нода и вообще НПМ, то сейчас ни у кого не возникает вопросов. То есть даже если ты вообще никак не связан с нодой, у тебя скорее всего есть локальный НПМ, и ты им пользуешься. Даже возьми те же самые скилы Skills Саш, ты же помнишь, там у тебя все эти NPX, Skills и стал. И ты, кстати, даже ничего, тебе кроме нода ничего не локально не нужно. То есть тебе не надо сначала поставить пакет этого скил. Ты просто живёшь в этом мире. Тут очень много программистов, которые знать не знают и вообще не хотят знать про Много. Ну, это не мои слова были. Просто, к слову, это были слова другого человека. Он говорит, что сейчас вот есть тренд в том, что НПМ становится системой дистрибуции.
Я согласен. Но у меня другое мнение. У меня мнение, что мы все переходим вот этот вот ужасный несекьюрный мир установок через курлу, потому что сейчас, ну, мне лично, я не сильно беспокоюсь про свой, у меня отдельный workstation, который я готов убить, если что-то будет не так, но я всё устанавлю через то есть, если мне нужно clД-код установить, есть Cloud SH, и я устанавливаю через Open Code я устанавливаю через мои бинарники я устанавливаю тоже через который просто пайпится в башрипt и скачивает тебе зависи сти бинарники прямо с гитхаба. Почему не npm? Я думаю, что всё-таки вот эти недавние новости про компромисс секюрити в NPM даже с тем, что я вообще вот с Аксиусом, ты помнишь, что было, да, недавно? Конечно, конечно. Вот, то есть как-то каким-то образом они его раскрутили на то, что установили malicious File, взяли доступ к его, а оказалось, что каким-то образом для него npm не требовал двухфакторной аутентификации почему-то, хотя он вроде бы как это вообще-то, ну, уже была необходимая вещь для всех. То есть я не могу запаблишить npm пакет.
без телефона своего. Как они вообще провернули это? То есть мне всё-таки кажется, что вопрос секюрити и trust через npm гораздо меньше, чем через официальный даже домен clouди.sh и устанавливает. Мне так кажется, потому что, чтобы, чтобы подменить тот же домен, тебе нужно иметь доступ к доменным настройкам ДНС, чтобы вот этот скрипт куда-то ушёл. И ты всегда можешь его запайпить в какой-нибудь дополнительный клод тот же проверить на редфлаге, к примеру.
Мне, знаешь, просто тоже хочу своим мнением поделиться по этому поводу. Я думаю, что одна из причин, почему НПМ чаще ломают, чем других - это, в первую очередь, популярность. Потому что ты за сам знаешь, как работает секьюрити. Ты секьюрити у тебя классно не потому, что ты там классно секьюрити делаешь, а потому, что у тебя постоянно происходит вот эта история, что надо думать об этом, что происходят взломы, и ты улучшаешься. Поэтому, во-первых, я думаю, что если за остальных также возьмутся, там тоже найдут всякие приколы. Это первое.
А второе, как правило, жизнь показывает, вот знаешь, бывает такое, что-то произошло, и все начинают бояться. Вот мой жизненный опыт касаемо всего вообще в этой жизни, что если произошла это и вот с детьми на улице и какие-то, знаешь, там косяки, у тебя там кран упал, у тебя, как правило, если такая фигня происходит, это означает, что всех затрахуют до смерти вот именно в этой части там в округе. И это значит, что теперь там 100% безопасность будет уровнем выше, чем во всех местах рядышком.
Может быть, но смотри, условно говоря, npm у него по дефолту, то есть есть такая штука, как пост скрипты, да? Пост install >> PNPM там нету в PNPM, ты знаешь как сделано, >> да? Ну, а их не таргетят. То есть в том-то и прикол, что у PNPМА нет, но ума они не могут сломать это backward compatibility. Вот этот Axius скачивает 10 млн человек в там в час. И всё, что им нужно - это просто туда запихнуть Malicious версию и всё. Если бы этой изначально вот этой вот, скажем так, открытой калитки не было бы, ну как, ну скачал бы ты Malicious JavaScript файлы, да, ничего бы никто бы нигде бы не выполнил, потому что ты знаешь, что оно, ну вот creates i ты не можешь ничего нигде выполнить на постнстале. Ну скачаешь ты бинарный файл, который плохой. Ну удалишь ты его потом. Что же by design, да? >> Вот. То есть by design всё-таки всё-таки есть проблема. Ну, тут надо ломать обратную совместимость, но опять же, просто выпуская новую там мажорную версию, где у тебя появляется такая опция. Опять же повторюсь, это происходило тыся раз, когда они говорили: "Нет, невозможно, мы не будем". Рядом появляется что-то, люди начинают отказываться и только тогда начинают шевелиться. Так что я уверен, что это произойдёт так или иначе, потому что, ну, просто, ну, не то место.
А так, да, мы, кстати, по этой причине, ну, не по этой причине, мы на ПНПМ по многим причинам перешли. Но вообще мы не про ноду сегодня, но поскольку большинство их на ноде написано, это довольно важный аспект про это поговорить. И тут, собственно, в чём история-то? Короче, когда я всё это про бан посмотрел, по-моему, кто-то ещё с бана ушёл. Я не помню кто, но мне почему-то показалось, что это уже такой, ну, если не закат, то, по крайней мере, общее направление, что сейчас в конечном итоге, в общем, тот же Open CД возвращается на ноду, в неё начинают ещё больше из этого вкладывать денег, >> да, >> и она побеждает. Ещё просто скажу то, что бан выкупили антропик, а антропик мы знаем, что это компания, которая не славится своим. Мы сделаем мир лучше, да? То есть любовью, да. Поэтому, как бы, даже для тех же OpenCД, которые как бы уже как бы компания, ну, всё-таки свою критическую инфраструктуру закладывать на что-то, чем владеет антропик, ну, это тоже тоже своя свой вопрос возникает такой, знаешь, легальный с тем, как антропик любит DMCA раскидывать или помнишь, что Open Claw, который изначально они же не дали ему назваться в честь, правильно? Ну, то есть это ж вообще они они любят вот эту всю легальную тему вывозить. Интересно, да? Да, понятно. Там акулы сидят, конечно, наверху и решают вопросики своими методами.
>> Так, про бан поговорили. Вот по интерфейсам давай немножко по интерфейсам мы уже начинали, но я просто пару слов скажу. Я так понял, что для Онкода прямо специальную либу написали, чтобы TUI делать. Терминальный UI >> Open to. Да. Вот это вот. >> Да. И во-первых, там есть бесячий вот этот косяк, про который все знают, да? И про это Ишусы много пишут о том, что Ctrl C нажимаешь и у тебя он закрывается. Это, конечно, наркоманы, которые никогда не пользовались терминальными утилитами. Они всех бесят. Это причина, по которой я реально не могу им пользоваться нормально. Но >> дело в том, что все, кто делает кокод, они все, скорее всего, сидят на маке. На Макее. У тебя просто нет Ctrl C - это не копировать, это, ну, у тебя Ctrl C - это конкретно выход из терминальных приложений, поэтому на Маке это чувствуется нормально. >> Вот. Нет, я на Маке же сижу. То есть у тебя как раз-таки на Маке Ctrl C, если в Виме, ты же сам знаешь, у тебя всплывающее окошко как бы закрывается, но у тебя само приложение никогда не закрывается. >> И поэтому получается, что у тебя опять же все остальные как работают? У тебя это прерывание и второе, соответственно, закрытие. То есть у тебя двойной Ctrl C - это стандартное поведение. Поэтому >> я согласен. Я писал. Я, кстати, после твоего сообщения я написал им в чат. Я ничего нет реагировали. Я могу ещё раз попробовать, если для тебя это боль. Я думаю, для кого-то точно это боль. Да, ещё съесть там прямо, знаешь, там прямо очень многие пишут. Ну реально, я случайно в день его закрываю по пять-7 раз, если я им целый день пользуюсь. И там тоже люди то же самое пишут, что это одна из самых бесячих штук.
Но я не только про это хотел поговорить, про UI в целом, знаешь, какое есть ощущение? Вот изначально, кстати, в кодекс, наверное, единственный, кто остался ещё в этой концепции, у которого просто тупо экран мотается, да? То есть вот ты запускаешь его и у тебя экран, ну, как бы у тебя нет выделенной полоски, оно просто вот вверх бежит, как обычный терминал. И с точки зрения скроллинга оно воспринимается как обычный терминал. А клоды всякие, копийт сейчас вот это сделал, Дмини, точнее, в эту сторону идёт. А в Openкоде вообще изначально это было. У тебя, в принципе, сразу он идёт не просто как терминальный формат, а у тебя он идёт скорее как такое некое приложение. >> Alternate Screen это называется, >> да? И знаешь, в чём проблема? Я не понимаю, что не так. Но, например, для меня очень важное значение имеет скроллинг, когда ты вот по этой штуке мотаешь. Так вот, скроллинг в кодексе и в нормальном терминале, он отличается от скроллинга в этих штуках. И я не понимаю, что не так, почему это так плохо. >> Есть прикол. А недавно Open Open toи они добавили возможность в сролбк рисовать. То есть у тебя будет нативный скроллинг. >> Скоро это появится, да? >> Это, по-моему, уже доступно даже как опция, по-моему. Не, не, не берусь с этого, но я точно видел это. Поэтому, если ты помнишь, там сверху такой есть хедер. Видел раньше такой хедер был, где бабки написано, сколько ты потратил. Его его больше нет, чтобы можно было скролить. >> Угу. >> Короче, почему? Что как это работает? Мм, если у тебя нативный скролбк, у тебя, а, твой терминал, у него есть встроенный буфер линий, то есть буфер с scroollлback, он так и называется, буфер line. Это твоё приложениечко буквально хранит вот эти терм-коды на количество линий, которые там заданы. Там, например, в Ките это 100.000 строчек, да? И если там какое-то твоё, ты просто работаешь, пишешь текст, у тебя всё, все вот эти вот твои команды, они там хранятся, да? Ты можешь про них скролить нативно. То есть ты скролишь с помощью нативных инструментов, а, оптимизированных на ГПУ, которые встроены в твой терминал. когда приложение устанавливает alternate screen, да, то есть, к примеру, Vim, да, он устанавливает alternate сreн, то есть он у тебя занимает полностью весь скрин и дальше он как бы внутри себя менеджет срол. В Виме тоже скролл отвратительный, если ты им пользуешься через мышку. Проблема в том, что никто мышкой не пользуется. Все пользуются клавиатурой, акодом ты, наверное, пользуешься мышкой. И с тем, что это всё подписывается на глобальные системные ивенты скролла мышки и всё это обрабатывается ещё ко всему джаваскриптом. Это всё выглядит очень сильно как бы заторможенно. Меня это ужасно раздражало. Поэтому как я запускаю OpenCД? Я запускаю его с помощью плагина в неовиме. Что это значит? Что у меня Vim и здесь OpenCд открывается как бы в сплите. >> Угу. >> Но из-за того, что плагин, который открывает этот Vim, я туда сконтрибьютил возможность с помощью стандарныхбиндингов Ctrl K, Ctrl U, я с помощью клавиатуры его скролю. Я перевожу курсор на Open CД, ввожу его в нормальный мод и просто скролю с помощью Ctrl D и Ctrl U. Боже, это тяжело вспомнить. Ctrl, не знаю, короче, ну, которые спрыгают на полэкрана. >> Дада. Да, стандартные, да, ком. >> Вот стандартные эти. И всё. И эта проблема решается, потому что мышкой пользоваться действительно это удовольствие нехорошее. В клодкоде, что мне нравилось раньше, что если ты делаешь то же самое и выходишь в normal mode в виде, то есть где ты можешь крусор передвигать, ты можешь всю эту историю смотреть с помощью всех твоих этих стандартных биндингов. Можешь искать в ней. можешь, например, если у тебя есть кийбиндинг, например, для того, чтобы вот у меня есть для моего файлового поиска, у меня есть кийбиндинг, просто нажимаешь две буквы, и он сразу тебе находит файл, если у тебя есть локация установлена, то есть у тебя файл name двоеточие 15, двоеточие 12. Если он видит вот такой паттерн, он тебе сразу его откроет. Если он не видит, если он не может найти этот файл, он тебе откроет поиск и подскажет, что тебе нужно найти. Это очень удобно. Я этим раньше постоянно пользовался в скролбеках этого клодкода. Это очень удобно. Поэтому как только они это Я, кстати, сам не пробовал. Надо попробовать вот этот скролбк для Опенкода, потому что это гораздо более приятный мод лично для меня. Ну да, это такой трейф, но проблема в том, что этот скролбк для того, чтобы его поддерживать, а в внутри терминал UI апа, тебе нужно буквально хранить весь этот стейт самостоятельно. То есть это может хранить для за тебя твой терминал, если ты просто в истории сидишь. Но если ты запускаешь TUI, да, то есть терминальные приложения не внутри альтернет скрина, тебе нужно всю эту историю хранить самому. И когда ты это всё хранишь самому, то есть тебе нужно это всё как-то ещё компактировать. И, видимо, Клод изначально очень плохо с этим справлялся. Из-за этого все мы знаем про вот эти фликеры, про вот эти проблемы с тем, что он сжёвывает линии, что он дублирует линии и очень вообще плохо всё рисует, особенно если это проскролило туда-назад. Ну вот, скажем так, не смогли антропик написать такую модель, которая починит этот.
>> Это вообще казалось бы, просто терминал, но люди, которые знают, как он там внутри работает, это очень сложная, чёрт побери, задача, чтобы заставить всё это правильно рисоваться, скролиться и работать. Капец вообще. >> Да. Дело в том, что это же все вот эти линии специальные, это ж всё термкоды, то есть каждый подсвеченный текст, ну, то есть это ж не просто ты как бы нарисовал текст зелёным, тебе нужно специально его выделить. написать, какой текст этот текст может быть в то есть это целое искусство делать терминальные приложения. И то, что они такие быстрые, на самом-то деле, это ну смешно, потому что нормальное гуи приложения должно быть гораздо быстрее, но их нет.
>> Слушай, и глядя вот на это всё добро, что думаешь, куда всё идёт, что будет? Open cд всех победит? >> Нет, >> непонятно. Я, честно говоря, думаю, что всё будет залочено. Смотри, я нахожусь в Сан-Франциско. Здесь все просто повёрнуты на просто на голову на этих клод-кодах. И я не знаю, как у вас, но у каждого человека здесь >> что >> у нас, говорю, океан, мы плаваем. >> Да, у нас тоже океан холодный. Плавате, >> но мы не плаваем. А у вас, кстати, акулов нет там. Акулов есть? Есть, есть, >> есть. Ну ладно, я видел раза. >> Короче, э в чём проблема? Проблема в том, что антропик просто всех покупает. Ну, условно говоря. Ну я не знаю, я не знаю ни одной компании здесь, в Сан-Франциско, у которой не было бы у каждого человека бесплатный, а, enterprise доступ к клод-коду с безлимитными токенами. То есть у всех есть бесплатный клод-код. Люди могут пользоваться сколько хотят, э, вот именно там антропиком. Кто-то сидит на Open AI, у кого-то соглашение с Open Ai и они пользуются кодексом. То есть мне всё-таки кажется, что большие энтерпрайзы они всё-таки победят, потому что у них столько ресурсов, сколько там у них уже триллионы, по-моему, наверное, эваэшна, там 380 млрд у них инвестиций. То есть OpenCД - это очень классно и очень правильно. И я его обожаю просто потому, что, ну, там мой код, а потому что я как бы, ну, я реально, получается, ну, говорю, ну, хрен антропик возьмут мой мой файловый поиск. Ну, вот, ну, хрен, да. То есть я даже если туда как-то устроюсь работать, пройду эти миллионы собеседований с надписанием своих собственных ЛРУ, кшей и так далее, всё равно они не будут использовать мой код, они на веб-код что-то своё, а здесь я реально могу как-то повлиять, что-то сделать для себя. То же самое мне очень нравится P agent, да? То есть там вообще можно свои экстенжены написать и не париться. То есть это очень прикольно. Но всё-таки я думаю, что победят большие дядечки и вряд ли, наверное, ну, вот курсор пытается присоединиться, да, как лаборатория новая, новый Aab. Ну, честно говоря, может быть, конечно, это моё какой-то прекондиition, как я как как я сказал, мой какое-то такое, знаешь, предчувствие, но они как пытаются сделать вид, что они тоже классная лаборатория, но по факту это больше маркетинг, мне кажется. Но вот Open AI и Clят. И с тем, как Клод делает маркетинг, мне почему-то кажется, что Клод - это де-факто будет стандарт, что, наверное, не очень хорошо.
Ну, в данном случае 100% альтернативы будут. Мне, знаешь, тоже кажется, вот курсор скорее просто сама концепция, что у тебя есть отдельный редактор, я знаешь что замечаю, и мы вот потому что курсы делаем, что мы замечаем, что он становится популярен даже скорее среди вот больше вайп-кодеров и не программистов. Потому что сначала же было вот эта история, когда вайп-кодим вообще, ну вот вообще технического уровня нет, то есть вот был и так далее, но как и всегда такие вещи становятся очень узко специализированными и скорее начинают быть не про всё, а про что-то конкретное. То есть они там начинают ниши искать. И вот как будто бы вот мо я сейчас вангую, может быть это всё так не будет, как будто курсор движется в сторону того, что скорее всего он всё-таки программисты будут сидеть на своих редакторах и вс-коде в том числе, где просто всё плагинами будет решаться нормальными, а курсор, скорее всего, пойдёт в сторону менее такого программерского, более вот для всех остальных, потому что им, >> ну, уже ж это видно, они Я не пользовался им, они же переделали интерфейс, у них теперь просто текстбокс, правильно? Вот это всё. Дадада. Да. И получается, что это больше вот продукты будут ими пользоваться, менеджеры просто все подряд. И это хорошая ниша, потому что действительно в этой нише ничего нет. Антигравити ещё >> продакты сидят в клодкоде. Ну вот эти все бизнесовые люди, они все в клод-кодах сидят. Они им не надо смотреть на код. Они на они сделали, кстати, очень странное странное ощущение, когда твой CEO такой сидит в клад-коде и говорит: "Вот я хочу такую фичу". Боже мой, это же это как-то не очень прикольно э звучит. Ну, то есть всё-таки я не знаю, курсор очень странная тема. Это вскодовский форк, куда они по сути добавили, что, ну, что у них раньше был тапка, ну, если так разобрать бизнес-модель, я просто поражаюсь, как они наплаву до сих пор. То есть у них же был вот этот таблиш, который лучше был, чем вс-коде, правильно? Которого долго там не было, который был на кону в 2025 году, правильно? >> Ты никогда за за счёт таких фич не выиграешь, ты же сам знаешь. Это всегда просто потом к тебе перейдёт, да? Ну нет, ну как бы изначально их бизнес-модель была вся на вот этом построена, на табе. То есть у них единственное, что было, это были табы. Они, по сути, в эти агенты вдались только в конце 2025 года. Вот в начале вот вот недавно, да. То есть это по сути э всё это время я не знаю, ну, может быть, конечно, я не прав, я не пользовался курсором, я не знаю, в чём была категорически хорошая там, я не знаю, advantage курсора против VS-кода плюс клод-код всё это время. до вот 2026 года, когда они там добавили какой-то композер туда и так далее. Но сейчас они активно, наверное, ищут, как бы так показать, что они лучше, чем курс, чем бесплатный VS-код и бесплатный clotдко. Ээ, ну, платный, естественно. Но мы-то знаем, что лучше всего Neovim плюс Open CД, >> опять же, смотря на что мы смотрим, потому что вот я даже по своей компании смотрю, по ребятам, которые у меня работают, они смещаются, знаешь, по какой причине? в курсор. Он действительно старается вот для ребят, которым нужно, знаешь, из одного места всё получить. Ну, допустим, даже если ты ставишь клод, даже если ты пользуешься, а, кодексом или опен-кодом, э, например, тебе надо что-то в браузере смотреть, ты лендинг накидываешь в браузере, да, м, тебе надо MCPшку поставить, тебе надо проинсталлить этот def tools, Chrome там или что-нибудь ещё. В клоде тебе нужно extension в браузер поставить, а у них это прямо внутри. И именно поэтому я и говорю, что я пользуюсь. Кстати, кстати, классная тема. Если ты agents Browser от Верселя, они сделали Cйку, которая у тебя как демон запускает браузер и просто в терминале ты на любой операционной системе прямо скриншоты на тебе даёт всё. Очень удобная тема. Так, чисто мне прямо понравилось. >> А, по-моему, даже вот Chrome же Death Tool свой сделал, да, который ставится ещё как MCPшко и тоже работает. И я вот им пользуюсь в основном. Ну, тоже там и скриншоты, всё, что хочешь. Но, насколько я понял, они какое-то время назад ещё выпустили аля web что-то там какой-то протокол, который ещё как-то лучше позволяет работать, делая гораздо меньше тратя гораздо меньше токенов. Ты не помнишь веб, что-то там он называется. >> Не, не помню. >> Это что-то типа, знаешь, как вот есть ACP для взаимодействия между агентами. >> А, Chrome death Tools протокол. >> Нене, нет. Chrome death Tools - это просто как бы это конкретно для хрома было, чтобы MCшку подрубить. Это когда вот playрай был, а потом они все такие: "О, а можно Chrome напрямую? А сейчас они говорят: "О, а мы ещё придумали некий универсальный аля протокол, который позволяет с браузером как-то более эффективно работать". А знаешь, в чём там прикол? Потому что сейчас с браузером там какая работа, грубо говоря, ты всю страничку к себе загрузил и вот пошёл там её, собственно, парсить, там, изучать и так далее. Ладно, не буду никого сейчас вводить в заблуждение. Я скорее это видел и хотел просто думал, ты просто про это знаешь, что куда идёт. О'кей, >> помню, >> про это посмотрим.
Вот поэтому просто видишь ещё, что происходит. Я почему про это спрашиваю. Сейчас вот есть такая тенденция, они же многие начинали, то есть курсор начинал с визуального такого гуишного, да, а эти все с терминальных в основном. И видно, как они все начинают таки: "О, а мы апу выпустили". Ну тот же кодекс пытается тебя заставить на апу перейти, говорит: "Я там лимиты". Они постоянно тебе дают эти лимиты. Я вот как Вимер особенно, я не понимаю, зачем мне это надо. То есть почему они толкают людей туда и какое это даёт преимущество, ну, кроме возможных гуишных фишек каких-то? Мне кажется, что, во-первых, отрисовать картиночки тебе. Всё-таки в терминале есть свои какие-то ограничения, например, с тем, что вставить картинку, например, ты не можешь так просто. А дропнуть картинку ты не То есть, например, очень многие люди не знают, я вот до сих пор, да, в 2026 году 10 апреля, я утверждаю, что очень многие люди не знают, что через Ctrl V можно вставлять картинки в Open CД и Clotкод. Я вот прям 100% это гарантирую, что они просто не знают об этом. и с гуишными приложениями таким людям, которые не сильно вдаются вот в эти вот активные вещи, типа проще будет, то есть как бы Но с другой стороны, с другой стороны терминал он всё-таки терминал, то есть ты из приложения из гуишного ты суда не запустишь команду. Ну, точнее, запустишь, конечно, но через всплывающий пасворд. То есть это, мне кажется, это просто, знаешь, больше как бы в сторону м >> народа. >> Народа, да. А мы идём в сторону народа. То есть программистов они всех завоевали уже. Мы идём в сторону народа, а народу сказать, что мы в терминале сидим и тут мы будем работать всё это время. На самом деле я не вижу в этом никаких проблем. Просто почему-то, наверное, мне кажется, это просто больше такой баяс, да, то есть они такие: "А почему бы нам не сделать ап? У нас же бесконечные кредиты, бесконечные лимиты на нашу же Open модель сделаем. Сейчас я почему это вызывает удивление у меня, я до сих пор не понимаю. А, наверное, может быть, они где-то явно этот ответ говорят, и наши слушатели это знают и напишут мне в комментариях: "Дак они же всё написали". Но почему меня вот удивление вызывает? Потому что, ну, всё-таки, если ты программист и ты пользуешься не терминалом, а, допустим, войско-кодом почти наверняка, то тогда вообще возникает вопрос: "Ну, а плагина же тебе будет достаточно, зачем ещё ап?" Ну, это скорее так вопрос в пустоту, а потому что я, например, ответ на него не знаю, потому что раньше просто такого не было. Раньше либо ты в терминале, либо в редакторе, а теперь ещё появляется новый концепт. А это отдельные апы, которые вообще без редактора, поэтому это что-то новое, на самом деле.
>> Без редактора, ну, без редактора, да. Это вот это, кстати, обидно, потому что я всё-таки считаю, что в некоторых моментах, ну, как бы я не писал хорошо код промт на английском языке, если ты прямо знаешь, как как ты хочешь, чтобы код выглядел, ты его напишешь быстрее, чем напишет тебе его лмка. То есть в некоторых определённых моментах алгоритмических или там каких-то лоулевельных такое часто встречается. И когда люди вообще это выбрасывают, мне, честно говоря, немножко по-дедовски обидно. Как же вы мои перфокарты перфока? Ладно, >> да. Да, >> ну опять же вот рефакторинг какой-то встроенный. Я ренеame, например, не буду лмки делать просить, потому что я не просто быстрее сделаю. Это будет же максимально простая операция, там переименовать, что-то такое вот сделать, да. Ну, я так понимаю, что основная задача всех вот этих вот больших лабораторий - это заставить всех думать, в том числе твоего босса. Я знаю, что у тебя нет босса. Ну, типа твоего босса заставит думать, что если ты >> если ты сидишь и пишешь скобочку в руками, то ты пещерный человек и что ты, вообще-то, должен попросить эту скобочку написать >> написать лэмку, что возможно хорошо, возможно даже и плохо. Но у меня есть такой момент, что я мне кажется, что VS-код стал потихонечку умирать. То есть я вот раньше люди такие были всекод, новая версия ВСС-кода по всему Твиттеру. Я вообще не видел новых версий ВС-кода в Твиттере уже кто его знает сколько лет. По-моему люди людям стало немножко плевать на него.
>> Ну, комдитис в каком-то смысле. Плюс, опять же, может быть, вот то, что ты видел, новый VS-код, а это ещё и маркетинг был, который, ну, знаешь, просто когда видят, что интереса нет, остановили. Хотя на самом деле с точки зрения развития ничего не произошло, они точно так же развиваются. Знаешь, что ещё хотел сказать? Мм, вот я не знаю, выстрелит это у них или нет, но вообще-то Jet Brain кое-что ещё сделали. Они выпустили Air. Короче, они, насмотревшись на всех, поняли, что недостаточно просто улучшать джинтбрайновские сами идэшки. Надо выпустить именно мультикодинг агент систему, которая там вот всё может. Она может одновременно со всеми того, да, >> и она называется Air. И я вижу, что популярности у неё пока огромной нет, но некоторые ребята, которые ею пользовались, говорят: "Слушайте, я типа ей пользовался, я могу сказать следующее, что всё-таки видно то, что JТ Брейс, в отличие от всех остальных в редакторах понимает и что эта штука типа классно работает. Там и Work 3 есть, и всё это подрубить можно, и там типа куча разных фишек. А я не то, что там рекламирую, они мне не платили, но интересно посмотреть. Я на самом деле перед собой тоже поставил такую цель: надо потыкать этот продукт, что он из себя представляет. Но я так понимаю, что это похоже вот на то, все апы делают, только у них он такой мультик, как бы, то есть он позволяет внутри себя соединять многих агентов, а не просто там порано. Все, все ссутся по кондактору сейчас, насколько я понимаю. Это, наверное, альтернатива, но, скажешь, вот, честно говоря, если так затронуть Jet Brains, включу свою свою токсичность чуть-чуть. Это единственная компания, которая всю жизнь пыталась нам продать идею, что за то, что будет писать код, тебе нужно платить за возможность писать код. То есть, ну, подписки, да, на редакторы. То есть всегда хейтили их только за это, правильно? И сейчас, когда все все как бы, ну, о'кей, за редакторы нужно писать код, и они такие: "Пук-пук-пук". У них нет на никаких ээ встроенных лэмок, они не продают тебе за подписку никаких дополнительных вещей. Я вообще, честно говоря, ну, мне, конечно, их жалко, но как бы я реально не понимаю а бизнес-модель сейчас Джетбйс и кто ими пользуется. Ну вот честно, ты знаешь таких людей?
>> Ну, конечно, да. Нет, слушай, много и, конечно, огромное количество корпоратов покупает, и это мир Джавы. Но, знаешь, я тебе так скажу, я подозреваю, что всё-таки вот если ты на этот Air.df зайдёшь, сейчас же все пошли в то, что давайте через нас, мы продаём вам всем доступы, через нас идите, все модели, мы там оптимизируем и так далее. Я уверен, что оно в эту сторону будет развиваться, будет идти и, возможно, не просто нишу свою найдёт, а, знаешь, как бывает часто компании там известные, популя, ну, такие большие, но, может быть, не поворотливые, они в конце концов, знаешь, медленно, медленно, медленно забирают. Так что вполне возможно, у них это получится. В этом плане всё равно желаю ребятам успеха. Хотя вот >> не Я тоже желаю им успеха. Очень много классных инженеров там работает. Просто вот иногда я так думаю, куда всё это движется. И >> надо будет потыкать, да. Ну что ж, посмотрим. Теперь классно. И можно каждый год встречаться. И знаешь, как будто заново эта тема, типа, а что произошло, куда мы двинулись, какие изменения на этом рынке. Но вот пока всё равно апдейты каждый день летят, каждый день новые задачи с поиском. То, что ты рассказал, это, конечно, фантастика, потому что, знаешь, как вот тут бывают моменты, когда вот вроде всё такое в стабильность приходит, вдруг оказывается, что привычные нам вещи, можно смотреть на них совершенно по-другому. И >> самое обидное, что вообще вот именно файловые поиски его никто не трогал. Я не знаю, ну, годами никто не трогал. И тут вот буквально за 3 месяца реально, как все накинулись, какие-то поиски, какие-то коды DB там люди экспериментируют с триситер парсера, с триситером. То есть они делают индекс на основе триситра, чтобы на основе как бы идентификаторов уже как бы делать парсер и находить именно кусочки не просто как бы мм по индексу находить не файлы, а именно кусочки текста, где он находится. То есть там ну много интересных идей возникают и непонятно вот реально интересные времена. И самое обидное, что я был первый и они сейчас все сами это начинают делать. Тропик начали сами вайпкодить. Ну возьмите вы мой мой проект. Ну что вам жалко что ли? Ладно, >> да, первопроходцев всегда такая судьба. Пока пока на коне лови лучи славы, потом забудут, снова встретимся. Я знаю, что ты что-нибудь придумаешь снова и снова захватишь Twitter своими постами. Да, >> Дим, тебе большое спасибо, что ты пришёл. Видишь, вот целый про поиск можно было так долго говорить. Ну, мы не только сегодня его зацепили. Ребят, поставьте лайк, если вам понравилось. Подпишитесь обязательно на Диму в Твиттере, посмотрите, как надо правильно такси сети разводить, чтобы чтобы собирать все сливки, про вас говорили и вас приглашали в Open CД внедрять какие-то вещи. Дим, спасибо, что пришёл. Не последний раз. Думаю, ещё как-нибудь с тобой поболтать. >> Спасибо большое. Очень приятно было прийти. Спасибо, Кирилл. И всем пока. >> Пока.