Я ненавидел всех AI-агентов для кодинга, поэтому создал своего — Марио Зехнер (Pi)

MMastra
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00[МУЗЫКА]
00:00:02Привет, меня зовут Марио.
00:00:04Я родом из страны Арнольда Шварценеггера,
00:00:06что вы, вероятно, еще не заметили
00:00:09судя по моему очень хорошему английскому.
00:00:12Я хочу начать с того, что мы
00:00:13весь день бегали с нашим четырехлетним ребенком
00:00:16по Лондону.
00:00:17Мы смотрели динозавров, мумий, зашли в Nandos, конечно,
00:00:24и еще кучу всего, что я уже забыл.
00:00:26Я очень, очень устал.
00:00:28И если вы не поймете ничего из того, что я говорю,
00:00:31просто поднимите руку и скажите: «Дедуля, проснись».
00:00:36Причина, по которой я здесь, на самом деле другой человек,
00:00:39который сегодня здесь, в Кокнивилле.
00:00:40Назовем его Штетер Пайнбургер.
00:00:44Еще в 2025 году, кажется, где-то в апреле,
00:00:53он сказал мне и Армину Ронахеру, которого вы также можете знать
00:00:58по Flask и Sentry: «Чувак, эти кодинг-агенты,»
00:01:02«они реально работают».
00:01:04А я такой: «Ой, да заткнись ты».
00:01:06Извините, я еще и ругаюсь.
00:01:09Совсем нет.
00:01:10А через месяц мы собрались в этой квартире на 24 часа
00:01:13на всю ночь и просто позволили себе погрузиться в этих железных парней,
00:01:19в этот вайб-код и вайб-шлак.
00:01:21И с тех пор никто из нас толком...
00:01:23...мы больше не спим, в общем-то.
00:01:27Мы создавали кучу вещей, многое из которых
00:01:32мы на самом деле никогда не использовали, потому что это фишка 2025-го,
00:01:3626-го года.
00:01:37Мы создаем много всего, но мы не создаем много того,
00:01:39чем реально пользуемся.
00:01:40Мы написали много кода.
00:01:42И в конце концов это привело меня к мысли:
00:01:46«Эй, я ненавижу все существующие кодинг-агенты или среды».
00:01:50«Насколько сложно написать такой самому?»
00:01:53А Питер такой: «О, я просто хочу сделать одну штуку».
00:01:56«Никто о ней, вероятно, не услышит».
00:01:58«И это будет персональный ассистент,»
00:02:01«потому что я всегда хотел такого иметь».
00:02:03Большинство из вас, вероятно, знают, чем закончилась его история.
00:02:05Так что сегодня я расскажу вам свою гораздо менее впечатляющую историю.
00:02:08Но я надеюсь, что смогу передать пару уроков,
00:02:11как говорят в индустрии, которые мне удалось извлечь
00:02:16за последние пару месяцев.
00:02:17Итак, Pi.
00:02:19В начале был Cloud Code.
00:02:21На самом деле, было копирование и вставка из ChatGPT.
00:02:25Мы все делали это в начале, в 2023-м.
00:02:27Затем появился... кто помнит оригинальный GitHub Copilot?
00:02:32Да, кстати, сколько из вас инженеры?
00:02:35Сколько из вас используют кодинг-агенты,
00:02:37вроде Cursor, Cloud Code?
00:02:39Окей.
00:02:40Конкурс популярности: Cloud Code?
00:02:43Codex CLI?
00:02:45Cursor?
00:02:48Open—
00:02:48[НЕРАЗБОРЧИВО]
00:02:49Да.
00:02:50Open code?
00:02:50Anti-gravity.
00:02:51О, не так много.
00:02:52Кто-нибудь пользуется этим?
00:02:55Вы мне нравитесь.
00:02:56Мы выпьем по пиву позже.
00:02:58В общем, это то, что происходило в 2025 году
00:03:03и раньше.
00:03:04Начиналось с копипаста из ChatGPT.
00:03:06Все это в основном работало криво.
00:03:07В основном это были отдельные функции, которые лень писать.
00:03:10Затем появился GitHub Copilot прямо в Visual Studio
00:03:13Code, где вы просто жмете Tab, Tab, Tab до посинения,
00:03:15что иногда работало, но чаще — нет.
00:03:17Иногда он также просто выдавал куски GPL-кода,
00:03:22вроде инвертированного квадратного корня Джона Кармака
00:03:25и тому подобное, что было довольно забавно.
00:03:29А потом появился Adir.
00:03:30Кто-нибудь помнит Adir?
00:03:31Да.
00:03:32Старички.
00:03:33Привет.
00:03:33Ага.
00:03:37У вас седые волосы.
00:03:37Вы явно знаете Adir.
00:03:41Был еще AutoGPT.
00:03:43Вероятно, не многие.
00:03:44Да, окей.
00:03:45Он знает вообще все.
00:03:48И вот в конце концов появился Cloud Code.
00:03:51Думаю, они выпустили его в ноябре,
00:03:52как бету в 2024-м.
00:03:55Но реально его стали использовать больше... что вы сказали?
00:03:59Только в феврале.
00:04:01Да, февраль, март, где-то так, 2025-го.
00:04:03И я такой: «Мне нравится».
00:04:05Это круто.
00:04:06Команда Cloud тоже крутая.
00:04:07Они есть в соцсетях.
00:04:08Они все очень хорошие и талантливые люди.
00:04:13И они, по сути, создали целый жанр.
00:04:15Я знаю, что были предшественники вроде Adir и AutoGPT,
00:04:18но ничего подобного не было.
00:04:20И это, по сути, была вся эта тема с агентным поиском.
00:04:22Вместо того чтобы, как Cursor, лезть в вашу кодовую базу,
00:04:25индексировать всё, строить AST и индексировать их тоже.
00:04:29И это как-то не особо работало.
00:04:31Они просто сказали: «Э-э».
00:04:33«Мы обучили наши модели с подкреплением»
00:04:35«просто использовать файловые инструменты, bash-инструменты,»
00:04:37«чтобы исследовать ваш код на лету и находить места, которые»
00:04:41«нужно понять, чтобы потом изменить этот код».
00:04:44И это сработало так хорошо, что, да, мы
00:04:46перестали спать, потому что внезапно
00:04:48смогли выдавать гораздо больше кода, чем раньше вручную.
00:04:52Тогда всё было просто и предсказуемо,
00:04:54и это идеально вписывалось в мой рабочий процесс.
00:04:57Отлично.
00:04:58Но затем они попали в ловушку, в которую большинство из нас,
00:05:05вероятно, попадает.
00:05:06Машины могут писать так много кода.
00:05:08Почему бы не позволить им написать все фичи, которые только
00:05:11можно вообразить, верно?
00:05:11Разве это не здорово?
00:05:12Давайте добавим эту фичу, и ту фичу,
00:05:14и эту, и вон ту.
00:05:15И в итоге вы получаете нечто вроде машины Гомера Симпсона —
00:05:18я даже не знаю, как это назвать.
00:05:20Я называю это космическим кораблем.
00:05:21И Cloud Code теперь — это космический корабль.
00:05:23Он делает столько всего, что вы, скорее всего, используете
00:05:26от силы 5% того, что он предлагает.
00:05:28Знаете вы в общей сложности около 10%.
00:05:30А остальное, оставшиеся 90% —
00:05:33это своего рода темная материя ИИ и агентов.
00:05:36Никто не знает, что он там на самом деле делает.
00:05:37И лично я нахожу это не очень полезным,
00:05:40потому что я всё еще считаю, что вам нужно
00:05:43понимать, что делает агент.
00:05:45Этот парень может в какой-то степени не согласиться.
00:05:49И мы здесь, на TESOL, и они тоже
00:05:51любят управление контекстом или проектирование контекста,
00:05:54как мы это называли.
00:05:55И в итоге я обнаружил, что Cloud Code не был
00:05:58хорошим инструментом в плане наблюдаемости
00:06:01и реального управления вашим контекстом.
00:06:04А еще было вот это.
00:06:06Кому нравится в Cloud Code вот это
00:06:09бесконечное, необъяснимое мерцание?
00:06:10Ну, вообще-то я знаю, как это объяснить и почему это происходит,
00:06:13но они до сих пор это не исправили.
00:06:15Вот Тарик.
00:06:16Он действительно классный.
00:06:16Я его обожаю.
00:06:17Он их DevRel, в основном в Твиттере, и он потрясающий.
00:06:21Но иногда он также говорит сомнительные вещи,
00:06:24вроде: «Наш терминальный интерфейс теперь — это игровой движок».
00:06:27Ну, вы должны знать, что у меня бэкграунд в разработке игр.
00:06:30Это то, откуда я пришел.
00:06:31И когда я читаю нечто подобное,
00:06:32это меня немного задевает,
00:06:34потому что это, блин, просто терминальный интерфейс, чувак.
00:06:37Это не игровой движок.
00:06:38Поверь мне.
00:06:39Единственная причина, по которой ты думаешь, что это движок,
00:06:41это потому, что вы используете React в терминале,
00:06:44и требуется целых 12 миллисекунд,
00:06:45чтобы перестроить весь граф вашего интерфейса.
00:06:49Просто не делай так, парень.
00:06:51Это не игровой движок, окей?
00:06:54И вот Митчелл, который пишет Ghosty,
00:06:56сказал: «Чувак, это оскорбительно».
00:06:59«Не сваливай всё на Ghosty или любой другой терминал».
00:07:02«Твой код — мусор».
00:07:04«Терминалы могут рендерить на скорости в сотни»
00:07:05«кадров в секунду, меньше миллисекунды на кадр».
00:07:09Так что не надо ля-ля, ясно?
00:07:12В итоге мерцание они исправили.
00:07:15Но потом началось другое.
00:07:16Они будто полностью поддались этому «вайб-кодингу».
00:07:20И вы чувствуете это каждый день, когда используете Cloud Code.
00:07:23Опять же, я не хочу умалять их усилия
00:07:27и их результаты.
00:07:28Cloud Code по-прежнему лидер категории по веской причине.
00:07:30Они изобрели эту штуку, и они отлично справляются.
00:07:32Просто я лично — старый человек,
00:07:34который любит предсказуемые и простые инструменты.
00:07:37А это просто перестало отвечать моим задачам и потребностям.
00:07:41Так что да.
00:07:42Кроме того, они делают много вещей в фоновом режиме,
00:07:44манипулируя вашим контекстом.
00:07:46Летом 2025 года я собрал несколько инструментов,
00:07:50которые позволяли мне перехватывать запросы,
00:07:52идущие к их бэкенду из Cloud Code, и выяснять,
00:07:55какой именно дополнительный текст
00:07:58впрыскивается в ваш контекст за вашей спиной.
00:08:00И всё это было очень вредно,
00:08:01а еще постоянно менялось.
00:08:04Буквально каждые день-два выходил новый релиз,
00:08:06каждый день или через день выходил
00:08:08новый релиз, где менялось то, что внедряется в какой момент,
00:08:11что, по сути, ломало ваши существующие рабочие процессы.
00:08:13Это был просто нестабильный инструмент.
00:08:14И теперь я понимаю это с их точки зрения.
00:08:16Им нужно экспериментировать.
00:08:17И у них огромная пользовательская база.
00:08:18А экспериментировать очень сложно,
00:08:19когда у тебя огромная аудитория.
00:08:21Но им было все равно.
00:08:23Так что всем нам пришлось страдать.
00:08:25Вы работаете с этим новым инструментом.
00:08:27Вы пытаетесь создать предсказуемые рабочие процессы.
00:08:31А затем поставщик инструмента меняет крошечную деталь
00:08:35«под капотом», из-за чего LLM начинает
00:08:36творить безумие в ваших налаженных процессах.
00:08:38Это просто неприемлемо в долгосрочной перспективе.
00:08:39Мне нужен контроль над этим.
00:08:40Я не могу полагаться на то, что они обеспечат стабильность.
00:08:46Поэтому я считаю, что вследствие дизайна интерфейса
00:08:52им приходится ограничивать вашу видимость процессов.
00:08:54Лично мне это не очень нравится.
00:08:56Но это лишь мои предпочтения.
00:08:57Я понимаю, что большинство людей
00:08:58будет довольно тем объемом информации,
00:09:00который предоставляет Cloud Code.
00:09:03Выбора моделей здесь, очевидно, ноль,
00:09:06так как это, так сказать, родной инструмент Anthropic.
00:09:09Это не то чтобы минус, потому что модели Claude—
00:09:12они мне нравятся.
00:09:13Они действительно хороши.
00:09:15И расширяемость здесь практически нулевая.
00:09:17Вам это может показаться забавным, ведь у них
00:09:19есть целая система хуков и все такое.
00:09:21Но если сравнить это с возможностями Pi,
00:09:25интеграция здесь не такая глубокая.
00:09:28Все в основном базируется на запуске процесса,
00:09:32когда срабатывает событие хука, что очень затратно,
00:09:36если приходится перезапускать процесс снова и снова.
00:09:40В итоге я разочаровался в Cloud Code,
00:09:42не потому что он был ужасен.
00:09:44Просто он перестал мне подходить.
00:09:47Зато за этот период он стал подходить гораздо большему числу людей.
00:09:50Очевидно, они все делают правильно, но не для меня,
00:09:54потому что я «старой закалки».
00:09:56И тогда я начал искать другие варианты.
00:09:59Был Codex CLI, который мне совсем не понравился.
00:10:01Поначалу претензии были и к интерфейсу, и к модели,
00:10:05но ситуация изменилась, по крайней мере, в плане модели.
00:10:08Codex сейчас действительно весьма неплох.
00:10:10Затем появился AMP.
00:10:12Команда, стоящая за ним, раньше работала в Sourcegraph.
00:10:15Они отделились от Sourcegraph.
00:10:20И они супер-инженеры.
00:10:21Им удалось создать коммерческую среду для кодинга,
00:10:25в которой они убирают функции вместо того, чтобы их добавлять.
00:10:28И большинство их решений кажутся мне очень логичными.
00:10:33Так что, если ищете коммерческую среду для разработки,
00:10:36я бы определенно рекомендовал AMP, он хорош.
00:10:39Factory Troye — примерно та же история, тоже отличный,
00:10:44хотя они не так склонны к экспериментам, как AMP.
00:10:47И еще есть OpenCode — это опенсорсная среда,
00:10:50которую используют многие.
00:10:53У меня большой опыт в опенсорсе.
00:10:55Я занимаюсь открытым ПО уже, ну, 17 лет.
00:11:00Я управлял и крупными, и мелкими опенсорс-проектами.
00:11:04Так что эта тема мне очень близка.
00:11:05И я подумал: дам шанс OpenCode,
00:11:08раз это мне так близко по духу.
00:11:12И, наряду с AMP, у них одна из самых приземленных
00:11:15и прагматичных команд в этой сфере.
00:11:16Они не пытаются пустить пыль в глаза функциями,
00:11:18которыми вы, скорее всего, никогда не воспользуетесь.
00:11:20Они стараются поддерживать «путь наименьшего сопротивления»,
00:11:23который при этом очень стабилен.
00:11:26У них также есть здравые мысли о том,
00:11:27что значат ИИ-агенты для кодинга для нашей
00:11:29профессии, и мне это лично импонирует.
00:11:32Проблема с OpenCode в том, что он тоже не очень хорош
00:11:37в управлении вашим контекстом.
00:11:38Например, на каждом шаге он вызывает sessionCompaction.prune,
00:11:44который делает следующее.
00:11:46Он обрезает все результаты до последних 40 000 токенов.
00:11:52Кстати, кто здесь знает, что такое кэширование промптов?
00:11:56Что это делает с вашим кэшем промптов?
00:11:58У OpenCode и Anthropic была интересная история.
00:12:05В итоге Anthropic, по моему мнению, совершенно справедливо
00:12:11заявили: ребята, так дело не пойдет.
00:12:14Публично об этом никогда не объявлялось,
00:12:17но Тарек объясняет это здесь.
00:12:19Если вы приходите в спортзал, ведете себя неподобающе
00:12:22и злоупотребляете инвентарем — вас забанят.
00:12:25И я думаю—
00:12:27у меня нет прямых доказательств,
00:12:28но я полагаю, что именно в этом причина
00:12:30неприязни между Anthropic и OpenCode.
00:12:33И я полностью согласен, ну, или по крайней мере
00:12:36считаю, что Anthropic здесь абсолютно правы.
00:12:39Не нужно портить инфраструктуру.
00:12:42Есть и другие моменты, например, OpenCode
00:12:44поставляется с поддержкой LSP (Language Server Protocol)
00:12:46прямо из коробки.
00:12:48Возвращаясь к инженерии контекста,
00:12:51допустим, вы даете агенту задачу
00:12:53изменить несколько файлов.
00:12:55Что это означает на практике?
00:12:57Он будет вносить правки одну за другой
00:13:02в целый ряд файлов.
00:13:03Какова вероятность, что после первой правки из десяти,
00:13:09так сказать, код скомпилируется?
00:13:12Что происходит, когда вы меняете код построчно?
00:13:15Сколько времени нужно, чтобы он снова стабилизировался
00:13:17и начал чисто компилироваться?
00:13:19Этого не случится сразу.
00:13:20Он не скомпилируется после первой правки, и вероятно,
00:13:22не скомпилируется после второй, и так далее.
00:13:24И если вы после этого спросите: «Дорогой LSP-сервер,
00:13:28я только что изменил одну строку в этом файле.
00:13:30Все сломалось?»
00:13:31То LSP-сервер ответит: «Да, всё окончательно сломано».
00:13:34И эта функция делает вот что: она
00:13:36внедряет эту ошибку сразу после вызова
00:13:39инструмента как обратную связь для модели.
00:13:43Мол: «То, что ты сделал — неверно».
00:13:45А модель в недоумении: «Какого черта, чувак?»
00:13:47Я еще не закончил редактирование.
00:13:49Зачем ты мне это говоришь?
00:13:50Очевидно, что все еще в процессе.
00:13:51Но если делать так часто, модель просто сдастся.
00:13:54И это ведет к очень плохим результатам.
00:13:58Так что я не фанат использования LSP в таком ключе.
00:13:59Я считаю, что это ужасная идея — держать его включенным.
00:14:02Есть естественные точки синхронизации,
00:14:03где вам нужны линтинг и проверка типов
00:14:06и все прочее.
00:14:07Это происходит, когда агент считает, что он закончил. Только тогда.
00:14:10Недавно кое-что изменилось.
00:14:14Вот пример одной сессии OpenCode, где каждое сообщение
00:14:20становится отдельным JSON-файлом.
00:14:22Каждое гребаное сообщение — отдельный JSON на диске.
00:14:26Для меня это признак того, что архитектуре
00:14:29всего проекта не уделили достаточно внимания.
00:14:31И если я теряю доверие к базе,
00:14:33я больше не хочу пользоваться этим инструментом.
00:14:35Повторюсь, я считаю команду действительно талантливой.
00:14:37Думаю, они итерировались очень быстро
00:14:39и создали нечто супер-полезное для многих,
00:14:42это очевидно.
00:14:43Просто определенные решения, которые я бы не принял,
00:14:46заставили меня задуматься о создании своего решения.
00:14:50Затем был еще такой момент.
00:14:51OpenCode по умолчанию поставляется с сервером.
00:14:54То есть в основе архитектуры лежит сервер.
00:14:56А клиенты к нему подключаются.
00:14:57Терминальный интерфейс — лишь один из клиентов.
00:15:00Есть еще десктопный интерфейс.
00:15:01И я не знаю...
00:15:03Это обернулось уязвимостью в безопасности,
00:15:05удаленное выполнение кода было вшито по умолчанию.
00:15:09И это тоже... если вы так гордитесь своей
00:15:12серверной инфраструктурой или архитектурой,
00:15:15то я предполагаю, что вы взрослые инженеры,
00:15:18которые подумали и о безопасности тоже.
00:15:20Но, видимо, этого не произошло.
00:15:21И это оставалось открытым долгое время.
00:15:23Опять же, я никого не виню.
00:15:25Такое случается, если вы работаете
00:15:27в индустрии, которая несется на таких скоростях,
00:15:31которых мы раньше никогда не видели.
00:15:33Просто я не хочу пользоваться инструментом с такими проблемами.
00:15:36Таковы были мои наблюдения касательно существующих
00:15:42решений для кодинга.
00:15:42AMP и Droid могли бы стать тем, что я бы использовал.
00:15:45Но снова — нет контроля.
00:15:47В случае с AMP они даже решают, какие модели вам использовать.
00:15:50И это всегда одна модель для конкретного типа задач.
00:15:53А мне это не подходит.
00:15:55Что касается Droid, он кажется чуть более открытым.
00:15:58Но в то время, когда я его пробовал,
00:16:00он просто не—
00:16:02я не увидел в нем большого преимущества перед Cloud Code.
00:16:07Затем я заглянул в бенчмарки совсем по другой причине
00:16:10и наткнулся на Terminal Bench.
00:16:12Кто знает, что такое Terminal Bench?
00:16:15Окей, вкратце: это среда для оценки
00:16:20агентов или кодинга, в которой есть набор задач по использованию ПК
00:16:24и программированию—
00:16:24простите, я старый и устал, потому что у меня 4-летний ребенок.
00:16:31Там есть ряд задач по управлению компьютером и кодингу,
00:16:35которые агент или LLM внутри оболочки агента
00:16:39должны выполнить.
00:16:40Их там около 82 штук.
00:16:43И они очень разнообразны.
00:16:44От «исправь мои настройки окон» до «напиши мне
00:16:48симуляцию Монте-Карло» или что-то в этом роде.
00:16:51И у них есть таблица лидеров.
00:16:52В этой таблице вы видите комбинацию
00:16:54оболочки ИИ-агента и модели.
00:16:57И у них есть собственный агент под названием Terminus.
00:17:03И я считаю его гениальным, потому что это
00:17:06один из самых эффективных каркасов в бенчмарке.
00:17:09Мы увидим это чуть позже.
00:17:11Что именно он делает?
00:17:12Что ж, всё, что получает модель, — это сессия TMUX.
00:17:17И всё, что она может делать, — это отправлять нажатия клавиш
00:17:19и считывать обратно последовательности кодов VT.
00:17:23Так что это своего рода самый маленький, минимальный интерфейс,
00:17:27который модель может иметь для вашего компьютера.
00:17:31И это показывает лучшие результаты во всей таблице лидеров.
00:17:36Так что же это говорит нам о существующих каркасах кодинг-агентов?
00:17:39Нужны ли нам все эти функции, чтобы модели
00:17:41действительно работали эффективно?
00:17:43Для меня лично дело не только в том, что модель
00:17:48на самом деле хороша.
00:17:49Дело также во мне как пользователе, человеке,
00:17:51имеющем способ взаимодействия с моим агентом, с моделью.
00:17:54И Terminus — это, очевидно, не тот пользовательский или
00:17:58разработческий опыт, который я хочу.
00:18:00Но это говорит нам о том, что все эти функции, которые есть
00:18:03в каркасах для кодинга, возможно, не нужны,
00:18:08чтобы получать хорошие результаты от агентов.
00:18:10Никаких файловых инструментов, субагентов, веб-поиска, ничего.
00:18:13На основе всех этих выводов есть два тезиса.
00:18:16Мы находимся на стадии «экспериментируем и смотрим, что выйдет».
00:18:18И никто не имеет ни малейшего представления о том, как должен
00:18:21выглядеть идеальный кодинг-агент или идеальный каркас.
00:18:23Мы пробуем и минимализм, и полноценные «рои космических кораблей»,
00:18:27команды агентов, отсутствие контроля, полную автономию
00:18:30и всё остальное.
00:18:31Я думаю, что этот этап еще не завершен.
00:18:33Мы еще не ответили на вопрос, как это
00:18:35должно выглядеть в идеале и что станет отраслевым
00:18:37стандартом.
00:18:38И второе — нам нужны лучшие способы
00:18:40экспериментировать с кодинг-агентами.
00:18:42То есть нам нужно, чтобы они могли самомодифицироваться
00:18:47и становиться гибкими.
00:18:48Чтобы мы могли быстро проверять идеи
00:18:50и смотреть, можно ли сделать это чем-то вроде индустриального
00:18:53стандарта, новым рабочим процессом, который мы все примем.
00:18:58Итак, основная идея была —
00:18:59и она очень проста, это не высшая математика —
00:19:01отсечь всё лишнее и создать минимальное расширяемое ядро.
00:19:05Есть некоторые удобства.
00:19:06Это не чистый лист.
00:19:09Это Py.
00:19:10И общий девиз: адаптируйте своего кодинг-агента
00:19:13под свои нужды, а не наоборот.
00:19:16Он поставляется с четырьмя пакетами: пакетом ИИ,
00:19:21который является просто простой абстракцией над провайдерами,
00:19:24использующими разные протоколы передачи.
00:19:27Так что очень легко общаться со всеми провайдерами
00:19:29и переключаться между ними в одном контексте или сессии.
00:19:34Ядро агента, которое является обобщенным циклом
00:19:36агента с вызовами инструментов, верификацией
00:19:38и так далее.
00:19:39А также стриминг, терминальный интерфейс,
00:19:42в котором около 600 строк кода, и он на удивление
00:19:47хорошо работает, хотя и не был написан ИИ-«кленкером».
00:19:51И сам кодинг-агент, который является одновременно и SDK,
00:19:54который вы можете использовать в фоновом режиме,
00:19:57или полноценным кодинг-агентом с терминальным интерфейсом.
00:20:02Это весь системный промпт.
00:20:05В нем нет ничего лишнего по сравнению с системными
00:20:08промптами других кодинг-агентов.
00:20:10Это в токенах.
00:20:13Оказывается, топовые модели обучены с подкреплением знать,
00:20:16что такое кодинг-агент.
00:20:18Так зачем вы продолжаете твердить им, что они кодинг-агенты,
00:20:21и объяснять, как им выполнять задачи по кодингу?
00:20:27YOLO по умолчанию, почему так?
00:20:30У большинства каркасов сейчас есть два режима.
00:20:33Либо агент может делать всё, что захочет,
00:20:36либо он должен спрашивать вас: «Вы действительно
00:20:40хотите удалить этот файл?»,
00:20:41«Вы точно хотите вывести список файлов в этой директории?»
00:20:44и так далее.
00:20:44Здесь есть разные оттенки серого.
00:20:47Но в конечном итоге всё сводится к тому, что пользователь
00:20:49должен одобрять каждое действие агента.
00:20:52И тогда мы в безопасности.
00:20:53Я считаю, это неправильно, потому что это ведет к усталости.
00:20:55И люди либо отключат это вовсе (режим YOLO),
00:20:58либо будут просто жать Enter, ничего не читая.
00:21:01Так что я не думаю, что это решение.
00:21:02Контейнеризация — тоже не выход,
00:21:04если вы беспокоитесь об утечке данных
00:21:06и инъекциях в промпты.
00:21:07Но я думаю, это единственное, что...
00:21:10Я считаю это лучшей основой по сравнению с барьерами
00:21:14вроде подтверждений или диалогов.
00:21:17Здесь всего четыре инструмента: чтение, запись,
00:21:19редактирование файла и Bash.
00:21:21Bash — это всё, что вам нужно.
00:21:22Чего там нет?
00:21:23Нет MCP, субагентов, планирования, фонового
00:21:25Bash, встроенных списков дел.
00:21:26Вот что вы можете использовать вместо этого.
00:21:28Для MCP используйте CLI-инструменты плюс навыки
00:21:30или создайте расширение, которое мы скоро увидим.
00:21:34Почему нет субагентов?
00:21:35Потому что они не поддаются наблюдению.
00:21:36Вместо этого используйте tmux и запустите агента снова.
00:21:41У вас будет полный контроль над выводом и вводом агента,
00:21:44и вы сможете видеть всё, что происходит в субагенте.
00:21:48Интересно, что режим командной работы
00:21:50в code spawn теперь делает практически то же самое.
00:21:55Нет режима планирования — просто создайте файл plan.md.
00:21:57У вас будет сохраненный артефакт вместо
00:21:59какого-то корявого интерфейса, который не особо
00:22:02вписывается в окно вашего терминала.
00:22:04И вы сможете использовать его в нескольких сессиях.
00:22:07Нет фонового Bash — он не нужен, у нас есть tmux.
00:22:09Это одно и то же.
00:22:11Нет встроенных списков дел — заведите todo.md.
00:22:13То же самое.
00:22:14Или создайте всё это сами так, как вам нравится.
00:22:17И именно это позволяет Py, будучи супер-расширяемым.
00:22:21Вы можете создавать кастомные инструменты.
00:22:22Вы можете давать LLM инструменты, которые сами определите.
00:22:26Я думаю, ни один другой каркас кодинг-агентов
00:22:28сейчас этого не предлагает, если только не форкнуть open code.
00:22:31Здесь этого делать не нужно.
00:22:32Вы просто пишете простой TypeScript-файл,
00:22:34и он загружается автоматически.
00:22:37Вы также можете написать кастомный интерфейс.
00:22:39Навыки — это, очевидно, шаблоны промптов и темы.
00:22:43Всё это можно упаковать, выложить в NPM или Git
00:22:46и установить одной командой, что очень удобно.
00:22:49И всё обновляется «на лету» (hot reload).
00:22:51Я разрабатывал собственные расширения,
00:22:53специфичные для проекта или задачи, прямо внутри проекта в Py.
00:22:59И как только агент модифицирует расширение, я просто перезагружаю его.
00:23:05И он немедленно обновляет весь запущенный код,
00:23:10что очень круто.
00:23:11На практике это означает, что вы можете делать свою очистку контекста.
00:23:14Я думаю, это одна из вещей, с которыми людям стоит
00:23:16экспериментировать больше, так как текущие реализации
00:23:19сжатия контекста пока не очень хороши.
00:23:21Шлюзы разрешений — их легко реализовать
00:23:23в 50 строках кода и покрыть то,
00:23:24что делают другие каркасы, если вам это нужно.
00:23:27Кастомные провайдеры — регистрируйте прокси самохостинг-моделей.
00:23:31Мне всё равно.
00:23:32Вам не нужно, чтобы я делал это за вас.
00:23:33Вы можете сделать это сами, или ваш ИИ-помощник поможет.
00:23:37Или переопределите любой встроенный инструмент.
00:23:38Измените работу функций read, write, edit и bash.
00:23:41Без проблем.
00:23:42У меня есть версия этих инструментов,
00:23:43которая работает через SSH на удаленной машине.
00:23:47У меня это заняло пять минут, но оно работает.
00:23:51И у вас есть полный доступ к TUI, так что вы можете
00:23:54писать совершенно кастомные интерфейсы в кодинг-агенте.
00:23:58Кстати, Cloud Code был выпущен, и кому-то потребовалось
00:24:02всего пять минут, чтобы повторить его в Py с большими функциями.
00:24:05PyMessenger — я понятия не имею, что он делает,
00:24:07но, похоже, это чат-комната для нескольких агентов Py,
00:24:10которые общаются между собой в кастомном интерфейсе.
00:24:13Мы можем посмотреть, что они делают, и да, это просто работает.
00:24:18Или PyMess — если вам скучно, просто поиграйте в игру,
00:24:23пока агент работает, верно?
00:24:24Вы можете это сделать.
00:24:25Или PyAnnotate — откройте веб-сайт,
00:24:28над которым сейчас работаете, делайте пометки прямо во фронтенде
00:24:31и давайте обратную связь агенту прямо в контексте.
00:24:35Передайте это обратно в контекст, и пусть он всё исправит.
00:24:39Или то, что использую я — File Switch It.
00:24:42Я не хочу переключаться в IDE или редактор.
00:24:43Я просто хочу быстро взглянуть на измененный файл.
00:24:46Всё это — расширения.
00:24:48Ничего из этого не встроено, и у людей уходит
00:24:50от пары минут до одного вечера,
00:24:52чтобы собрать всё это так, как им хочется.
00:24:56PyWavic — тоже не знаю, что это.
00:25:00Py также поставляется с древовидной структурой.
00:25:01Не буду сейчас это объяснять.
00:25:03Просто загляните на py.dev.
00:25:04Ваша сессия — это дерево, а не линейный список чатов.
00:25:07Так что вы можете имитировать субагентов:
00:25:09прочитать все файлы в директории,
00:25:11резюмировать их, вернуться в корень бесебы,
00:25:14взять это резюме с собой и делать основную работу.
00:25:19Ничего не вбрасывается за вашей спиной.
00:25:22Агенты, навыки, полное отслеживание затрат.
00:25:24Многие каркасы этого не делают.
00:25:26Open code делает это не лучшим образом.
00:25:29Экспорт в HTML, формат JSON, безголовый поток JSON и прочее.
00:25:33А это вообще работает?
00:25:34Ну вот, terminal bench.
00:25:35Позвольте мне увеличить масштаб.
00:25:36Не могу.
00:25:37Это потрясающе.
00:25:38Вот Py идет сразу за Terminus 2, используя Claude Opus 4.5.
00:25:45Это было в октябре, когда в Py даже не было сжатия контекста.
00:25:49Время демо, пропускаем это. Выступление против «кленкеров»,
00:25:51потому что они ломают опенсорс.
00:25:54Если вы связаны с проектом этого парня,
00:25:56то к вам в репозиторий придут сотни людей из OpenClaw
00:26:02и завалят вас мусором от ИИ-ботов.
00:26:06Так что мне пришлось придумать пару мер.
00:26:09Я изобрел «OSS vacation» (отпуск от опенсорса).
00:26:11Я просто закрыл все тикеты и PR на пару недель
00:26:14и работал над вещами самостоятельно.
00:26:16Всё важное в любом случае сообщат позже
00:26:20или напишут в Discord.
00:26:21Затем я также внедрил кастомную схему доступа,
00:26:26где у меня есть markdown-файл в репозитории.
00:26:28Если кто-то открывает PR, а его имени
00:26:32нет в этом markdown-файле, PR автоматически закрывается.
00:26:34Мне всё равно.
00:26:35Сначала представьтесь человеческим голосом в тикете.
00:26:39Напишите тикет, который не выглядит как спам,
00:26:42потому что всё остальное, скорее всего, написано ботом.
00:26:45И как только вы это сделаете, я с радостью вас одобрю.
00:26:47Вы попадете в этот файл и сможете отправлять PR
00:26:50в репозиторий.
00:26:51Всё, о чем я прошу, — это подтверждение личности человека.
00:26:53И Митчелл из Ghosty взял это и создал
00:26:57проект под названием Vouch, который легче применить
00:27:00к вашим собственным открытым репозиториям.
00:27:02И это был Py.
00:27:03Идите и пробуйте его.
00:27:05На этом у меня всё.
00:27:06[АПЛОДИСМЕНТЫ]
00:27:07[ИГРАЕТ МУЗЫКА]

Key Takeaway

Создание кастомного ИИ-агента Pi с открытым исходным кодом доказывает, что минималистичное ядро с прямой передачей Bash-команд превосходит перегруженные функциями коммерческие платформы по эффективности и управляемости контекстом.

Highlights

Минималистичный агент Terminus 2 занял второе место в бенчмарке Terminal Bench, используя только сессию TMUX и Claude Opus 4.5 без сложных инструментов.

Интерфейс Pi состоит из четырех базовых инструментов: чтение, запись, редактирование файлов и доступ к Bash, что исключает избыточность коммерческих аналогов.

Архитектура расширений позволяет загружать кастомные инструменты на TypeScript с поддержкой hot reload для мгновенного обновления логики агента без перезапуска сессии.

Механизм Vouch предотвращает спам в open-source репозиториях, автоматически закрывая PR от пользователей, чьи имена не внесены в специальный белый список в формате Markdown.

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

Timeline

Критика современных ИИ-агентов для программирования

  • Популярные инструменты вроде Cursor и Cloud Code перегружены функциями, из которых рядовой пользователь задействует не более 5%.
  • Метод агентного поиска через Bash-инструменты в реальном времени оказался эффективнее предварительного индексирования всей кодовой базы.
  • Чрезмерная автоматизация генерации кода приводит к созданию избыточных функций, которыми никто не пользуется.

Существующие решения превратились в сложные системы, где 90% функционала остается скрытой «темной материей». Разработчики часто тратят время на создание инструментов, которые не находят практического применения в их ежедневных задачах. Переход от простого копирования кода из ChatGPT к сложным агентам не всегда гарантирует предсказуемость результата.

Проблемы стабильности и наблюдаемости в Cloud Code и OpenCode

  • Скрытые манипуляции с контекстом и частые обновления бэкенда ломают устоявшиеся рабочие процессы разработчиков.
  • Использование протокола LSP для немедленной проверки промежуточного кода дезориентирует языковую модель во время многоэтапного редактирования.
  • Архитектурные ошибки в OpenCode приводят к сохранению каждого сообщения в виде отдельного JSON-файла на диске и уязвимостям в безопасности.

Разработчики сталкиваются с эффектом «мерцания» интерфейса и непредсказуемым поведением моделей из-за впрыскивания скрытого текста в промпты. Принудительная очистка контекста до 40 000 токенов в некоторых инструментах нарушает работу кэширования Anthropic. Отсутствие контроля над выбором моделей ограничивает профессиональных пользователей, привыкших к стабильным инструментам.

Результаты Terminal Bench и философия минимализма

  • Бенчмарк Terminal Bench из 82 задач показал, что простейшие интерфейсы демонстрируют лучшие результаты.
  • Агенту не требуются специализированные файловые инструменты или субагенты для эффективного решения задач программирования.
  • Текущий этап развития ИИ-агентов характеризуется отсутствием единого отраслевого стандарта и необходимостью в гибких экспериментах.

Агент Terminus доказал, что для управления компьютером достаточно передачи нажатий клавиш и чтения VT-последовательностей. Это ставит под сомнение необходимость сложных надстроек и субагентов, которые снижают наблюдаемость процессов. Индустрия находится в поиске баланса между полной автономией и жестким контролем со стороны человека.

Архитектура и возможности расширения агента Pi

  • Ядро Pi состоит из четырех базовых пакетов: абстракции провайдеров ИИ, цикла агента, терминального интерфейса и SDK.
  • Системный промпт минимизирован, так как современные модели уже обучены выполнять роль кодинг-агентов через обучение с подкреплением.
  • Расширяемость позволяет заменять встроенные инструменты на кастомные версии, например, для работы через SSH.

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

Защита open-source проектов от ИИ-спама

  • Массовое использование ИИ-ботов приводит к заспамленности репозиториев низкокачественными тикетами и PR.
  • Метод «отпуска от опенсорса» помогает авторам сфокусироваться на разработке, временно игнорируя автоматизированные запросы.
  • Проверка личности через текстовое подтверждение в тикете эффективно отсеивает ботов.

Для борьбы с наплывом мусорного кода внедрена система Vouch, требующая от контрибьюторов представиться «человеческим голосом» перед подачей PR. Это позволяет поддерживать качество кода и экономить время мейнтейнеров на проверку правок. Проект призывает к ответственному использованию ИИ в сообществе свободного ПО.

Community Posts

View all posts