📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Воркшоп: «Используем Codex не только для разработки. Часть 2: Строим Агентную ОС»

Codex Town Club57:43

Transcription

Ну что, всем привет. А пятница у нас очередной воркшоп, и мы продолжаем развивать тему, которую открыли в прошлую пятницу, а именно локальная работа с агентами и то, что файлик Agents MD может сделать, а для того, чтобы прокачать, скажем так, ваш вайпкодинг.

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

Всё это можно сделать с локальной средой для разработки, плагином Open AI CodeК и файликом AgentMD, в котором мы расписываем ту логику, которая нам нужна для решения конкретной задачи. В прошлый раз мы познакомились с тем, как создавать, ну, скажем так, статичные истории, а, под решение одной конкретной задачи. А сегодня я хочу развить эту тему, потому что, собственно, та идея, которую мы обсуждали в прошлый раз, она появилась чуть-чуть раньше, и с тех пор я, а потратил некоторое количество времени на то, чтобы эту идею, скажем так, развить до чуть более универсального формата, чуть более универсального фреймворка.

И, собственно, сегодня я хочу поделиться с вами тем, что получилось, а поделиться ээ вот детищем, так сказать, а которым, между прочим, последние 2 недели пользуюсь практически непрерывно. То есть все те проекты, которые сейчас параллельно у меня идут, так или иначе потихоньку переползли на этот фреймворк, а и сильно упростили жизнь, скажем так.

Ну что, э, я думаю, не будем задерживаться. Я сейчас расшарю просто экран и дальше, а, наша сегодняшняя встреча будет, э, исключительно практической. Пройдём весь путь от загрузки непосредственно редактора вплоть до использования самого фреймворка. Ну и всё, что нам понадобится - это, на самом деле, просто браузер и, как мы уже знаем, аккаунт подписка плюс на чат GPT. Это, пожалуй, единственное ограничение, которое а сегодня есть. То есть 20 баксов, к сожалению, придётся отдать, но, э, повторюсь, преимущество, которые, надеюсь, вы сегодня увидите, на мой взгляд, того стоит.

А, ну и, собственно, э главный а виновник нашей сегодняшней встречи - это, аэ, репозиторий Кодекн Кокф, а, собственно, маленький фреймворк, который появился, как я уже сказал, как развитие той самой идеи. И по сути я попытался просто ответить на один вопрос. А что, если вот в Agents MD зашить не а конкретного агента, который будет исполнять какую-то историю, а зашить чуть более пространную, чуть более абстрактную штуку, которая будет создавать агентов э тогда, когда, ну, под конкретную задачу, скажем так.

А, ну и, собственно, давайте посмотрим, что из этого вышло. А, собственно, самая главная здесь часть - это файлик Agents MD, который структурирован точно так же, как мы с вами уже говорили. Здесь нет ничего нового, но здесь есть несколько любопытных вещей, о которых нам надо поговорить. Ну, во-первых, здесь есть чёткое описание контекста, где мы, во-первых, говорим, э, агенту о том, где он, собственно, находится, что у него происходит. Аа и дальше как раз немножко настроек. А самая главная история здесь нет, здесь есть описание одного единственного верхнеуровневого агента, но как вы могли видеть в анонсе, речь пойдёт о мультиагентной системе.

И прелесть здесь в том, то что внутри одного файла Agmd мы можем давать ссылки на другие файлы. И здесь у нас есть специальная подпапочка agents, в которой лежит наш агентный рой. То есть несколько агентов со своими ролями. Мы чуть попозже коснёмся того, как эти агенты выглядят. Ну, а дальше у нас есть универсальные правила. Собственно, мы объясняем, где у нас лежат эти агенты, а каким образом они должны взаимодействовать с файлами. А и самое главное, то, что у нас здесь не просто агентный рой.

То есть в чём вообще основная задача этого фреймворка? Потому что у каждого может возникнуть вопрос: "А а что, что мне мешает там типа через курсор это делать? Что мне мешает это делать через сайт и тому подобное?" Да, ничего по факту не мешает. А задача этого фреймворка поставить условно общение с чаat GPT на очень-очень жёсткие, очень контролируемые, э, рельсы, которые позволят ему очень аккуратно, скажем так, взаимодействовать с нашим локальным контент контентом и выполнять те задачи, которые мы перед ним поставим.

Вот при этом агенты не просто так здесь существуют. Они взаимодействуют между собой. У них есть единая, как и у любой хорошей команды, у них есть свой, а, своя доска задач. А здесь, в этой роли, выступает файлик под названием tasks.jonjon. А он является как бы единственным источником истины, и каждый из агентов имеет право в этот файлик писать. Аа также мы уже говорили о том, что Git - это сила. И здесь каждое, э, рабочее пространство - это тоже Git-репозиторий. Соответственно, любые изменения, которые агенты сюда вносят, мы можем попросить их не просто сохранять как файлы, а сохранять как полноценные точки в гите, к которым мы сможем в будущем вернуться. При этом, опять же, мы можем написать, чтобы они это делали с комментариями, с подробным описанием и так далее и тому подобное.

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

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

Как я сказал, у нас единственный источник истины - это файлик с задачами tasks.jon. Причём это не просто абы какой файлик, это файлик с очень чётким форматом, где, как я сказал, у нас у каждого из задачи есть свой идентификатор, есть заголовок, есть описание, есть, естественно, статус, как и у любой там канбан доски, где мы перекладываем карточки, есть теги для облегчения навигации и есть, собственно, комментарии, которые агенты могут там оставлять. А причём, как сейчас мы пройдёмся до конца, до самого главного агента, который у нас, собственно, выступает в качестве такого прожект-менеджера или прораба, а потом чуть-чуть вернёмся про сам workкфлоу этих агентов поговорим.

А, собственно, здесь у нас, как я говорил, есть только самый верхнеуровневый проjectт-менеджер или агент-оркестратор, как мы его называем. Это тот агент, с которым, собственно, начинается наше общение. Ээ, что делает оркестратор, мы сейчас коснёмся. Но до этого вот как раз как у нас эти агенты работают, что дополнительные агенты, которые не являются оркестратором, хранятся в подпапке агенты. А опять же формат каждого агента строго унифицированный, представляет собой тоже JSONфайл. А перед началом работы мы также говорим, что наш Open AI кодекс должен прочитать всю подпапку агентов, загрузить всех агентов, которые там находятся, разобраться, что что а каждый из них делает, и дальше повзаимодействовать с нашей задачей, которую мы ему, а, собственно, сообщили. и декомпозировав эту задачу, выбрать как раз, ну, во-первых, составить список, а, заполнить этот Task jonлей из как раз-таки списка наших задач.

Причём здесь вот как раз начинается, а, любопытная магия, что в том случае, если подходящего исполнителя нету, ну, вот даём мы какую-то там специфическую задачу, под которую, а, нашего стандартного там агента-разработчика и агента документации может не хватить. В этом случае у нас есть другой агент, так называемый метаагент, агент-создатель крейтор, которому как раз и будет поставлена задача для того, чтобы создать нового агента, сохранить его в папочке agent JSON и для использовать для выполнения уже дальнейших задач. А причём точно также можно попросить принудительно создать агента под какую-то конкретную специфическую задачу, если у вас есть чёткое понимание того, как он должен работать.

А дальше как раз про формат. Каждый агент, как я сказал, это просто джейсонка со своим айдишником, со своей ролью, описанием и дальше четырьмя ээ разделами, которые описывают, ну, условно, что подаётся на вход, что нужно получить на выход, куда, с чем агенту разрешено работать и, собственно, что он должен делать. Собственно, этому посвящены как раз input - это чёткое описание того, что мы принимаем, output, что агент должен сохранить. Permissions, а, условно, любой наш проект - это структура папок. Где-то мы можем разрешить агенту только читать какие-то данные, где-то мы можем разрешить ему читать и писать. То, что мы здесь жёстко напишем, он будет принимать как абсолютные данные. Ну и workflлоow - это буквально шаг за шагом описанный workкфлоу того, что каждый конкретный агент у нас должен сделать. Например, вот у нас есть агент планировщик, который включается тогда, когда ему попадает верхнеуровневая задача. И дальше он должен как раз, а, повзаимодействовать с Tasks Jon, со списком задач и м сформировать новые задачи.

как раз вот дальше здесь как раз вот описано, каким образом происходит это создание агентов э по выбору. Ну, и дальше как раз описание вот этого нашего корневого агента. Здесь оно не в формате JON. JSON только для дочерних агентов. Здесь есть полноценное как раз описание. То есть это агент с ID оркестратора, а агент по умолчанию, задачей которого является создание верхнеуровневого плана, а который включает в себя как раз описание различных задач. И он должен как раз пользователю кинуть этот верхнеувневый план с одной с одним единственным вопросом, типа, а либо подтверди, либо дай комментарии, который позволит этот план отредактировать, и дальше, собственно, он передаёт его на исполнение. Ну и здесь то же самое написано: входы, выходы и поведение этого агента, где чётко написано, по каким шагам он должен двигаться, кому передавать свои данные и тому подобное.

Причём здесь, что ещё любопытно, есть несколько вспомогательных как раз скриптов. Здесь пока что он один, но а прелесть как раз этого фреймворка в том, что агенты могут создавать себе собственные инструменты. А вот, как я сказал выше, task jon файл, выглядящий вот таким образом. Здесь он заполнен, потому что как бы фреймворк сам по себе разрабатывается и при этом отлично работает для того, чтобы улучшать самого себя. Эти же агенты прекрасно можно использовать для того, чтобы сам фреймворк изучать. Ну, и вот, собственно, как бы список задач выглядит, а, ровно по тому формату, по которому мы и говорили. Здесь можно отследить всю историю изменений, как она происходила. А от, собственно, момента создания до текущих дней. Причём здесь ещё можно отследить, как менялся формат. То есть, если сначала это была достаточно простая история, то потом появились, а, автоматизированные, опять же, указания на конкретный комит с хээшем конкретного комита. Причём он пишется только после того, как, а, данные синхронизируются с Гитхабом.

Ну и дальше вот мы можем смотреть, что со временем из этих файлов там вырастают целые диалоги, где агенты могут между собой взаимодействовать и так далее. Но, естественно, для человека это не самый удобный формат представления. И именно для этого в подпапке scripts есть, э, файлик tasks.pi, то есть питоновский файл, который просто при забирает на вход этот task jon превращает его в более удобный и более человекочитаемый Markдаунфайл, который мы прямо отсюда же можем посмотреть. Ну, и здесь ровно то же самое, просто в более удобном виде. Интересно будет тогда, когда мы будем непосредственно работать со всей этой историей. А-а вот.

Ну и теперь посмотрим на самих агентов перед тем, как перейти непосредственно к практике. А, собственно, первый агент, куда которому у нас что-то попадает - это агент-планировщик. И как мы видим, опять же, то есть описание роли, а занимается описанием бэклога и взаимодействует с файлом Task Jon. А превращает пользовательские описания в чёткие, приоритизированные задачи для локального воркспейса. Ну, и, а, собственно, является таким единственным, аэ, ответственным лицом по работе со списком задач. Ну, и дальше, как бы, здесь всё понятно. Высокоуровневые таски принимает, а, обновляет task jon, перегенерирует статусбор с помощью нашего скрипта и отдаёт каждый типа task ID, с которым он повзаимодействовал. Вот как Permissions пишется. То есть Task Jon. А всё остальное по умолчанию он только читает. И вот статус борд он может перегенерировать после каждого взаимодействия. Ну, и дальше действительно пошаговый workкфлоу, как этот агент должен работать, а с этим самым статус а сообщением.

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

А дальше ещё один агент из основного поставки. Это агент, который занимается поддержкой документации. То есть один у нас занимается созданием кода и основных каких-то артефактов, другой это всё старательно документирует, сохраняет, обновляет Redmi, комментирует внутри кода, ну, и так далее. А дальше, после того, как задача завершена, это всё, все эти результаты передаются агенту, который, э, должен эту задачу закрыть, то есть агенту ревьюеру. Он является как раз вот финальным ответственным лицом. И в его задаче является сверить то, что у нас описано в таск-листе с тем, что, собственно, натворили непосредственно сами агенты. В него же включаются всякие дополнительные проверки и тому подобное. И самым главным, что он должен сделать - это закрыть список задач и отправить комит на сервер, который позволит как раз э в будущем при необходимости отследить, что у нас тут а происходит.

И, наконец, последний агент. Агент, который не участвует в основном пайплайне, но важен с точки зрения как бы самого процесса работы - это агент апдейта. Он нужен для того, чтобы, например, вызвать его отдельно и попросить обновить какого-то другого агента, например, того же разработчика или агента для документации. Ну, например, с учётом каких-то изменений или с учётом специфики нашего текущего workкфлоу. Можно, в принципе, просто его вызвать, сказать: "Обнови всех агентов с учётом, как бы об а текущего контекста, а текущих файлов". И он тоже это сделает. Причём сделает он это не абы какк, а точно так же, как мы уже говорили. То есть сначала с вами утвердят верхнеуровневый план, потом этот план будет разбит на задачи, которые будут зафиксированы в таск-листе, и только после этого специализированные агенты последовательно начнут эти задачи выполнять, а, проверять, то есть до тех пор, пока задача не будет полноценно как бы выполнена, и после этого как бы фиксировать её в гитхабе.

При этом, а что любопытно, если мы посмотрим на вот историю, как это, э, выглядит, сейчас открою оригинал я, а, то это выглядит вот в таком э формате. Естественно, я ни один из этих комитов не писал сам. Это всё агенты публикуют в автоматическом виде. И как мы, собственно, видим, это достаточно как бы информативная история с отсылкой конкретной задачи. И, соответственно, теперь, если мы в таск-листе эту задачу найдём и откроем, мы узнаем, что там более подробно было сделано. Аа вот такая история, вот с такими возможностями. Давайте дальше перейдём непосредственно к тому, чтобы её попробовать. А ссылочку можно пробовать прямо совместно со мной, можно скачать её себе. А, в общем, всё, что от нас требуется для того, чтобы этий этой прекрасной вещью воспользоваться - это зайти на сайт GitHub. И, в принципе, даже не регистрируясь, нам достаточно нажать на большую зелёную кнопку и дальше нажать кнопку скачать zip архив. А, в принципе, это всё, что нам нужно. А если вы не хотите помочь в разработке самого фреймворка и там комитить какие-то изменения непосредственно в саму эту историю, то для того, чтобы воспользоваться, достаточно просто скачать zapрхив. Кстати, ещё не поленитесь почитать. Здесь есть редмишка, где довольно подробно, кстати, описано и как эта штука работает. Ну, собственно, всё то, что о чём я а уже поговорил, и то, как её, собственно, быстро взять и запустить.

А вот что нам ещё нужно? Нам нужен редактор. Подойдёт любой, у которого есть доступный э плагинкодекс для собственно на сегодняшний день таких редакторов три. Это Visual Studio Code, курсор Winurf, ну, две версии Visual Studio кода и, а, собственно, курсор с Винсрфом. Вот ссылочка на сам плагин. Это вот та единственная история, которая здесь представляет ограничения для нас. тоже скину на неё ссылку. И нам нужен сам редактор, например, курсор Visual Studio. Мы попробуем сейчас воспользоваться Visual Studio кодом. Собственно, заходим на сайт, нажимаем кнопочку скачать, скачиваем а подходящую версию. Я уже заранее об этом позаботился. Э, открываем её. И всё, что нам нужно будет после этого сделать - это в открывшемся меню открыть вот иконочку с кубиками и в списке расширений ввести Open AI кодекс. Собственно, первая ссылка. Удостоверьте то, что это действительно плагин от Open AI. А, и дальше всё, что нам нужно сделать - это нажать на кнопочку install. Через, а, пару минут сам плагин появится в левой левой панели. Собственно, вот он у нас и появился. Да. Дальше, э, здесь он у меня уже залогинен, но у вас здесь появится окошечко с предложением залогиниться через любой стандартный аккаунт Open AI. И после того, как вы это сделаете, увидите ровно такую же историю.

Аа дальше маленькая полезняшка. Заходим в настройки, а в поиске вводим горизонтальный. И вот здесь переходим на настройки Workbench. А нам нужна вот эта горизонтальная настройка. Но перед этим откроем правую панельку, где у нас есть стандартный чат, и перенесём руками наш, а кодекс на правую полоску. После этого можно оставить workbench либо горизонтальным, тогда у вас появятся здесь иконки, либо наоборот сделать вертикальным. И тогда, ээ, после того, как настройки будут сохранены, ээ, а вы перезапустите Visual Studio, у вас вот эти иконочки, они переползут наверх. Ну, собственно, нам здесь это особо не нужно. А кодекс у нас уже установлен. И, в принципе, всё. База для того, чтобы в дальнейшем работать с нашим фреймворком, у нас уже есть и достаточно.

Возвращаемся на GitHub. Ещё раз напоминаю, нажимаем кнопочку код Download ZIP. И после этого а-а полученный архив распаковываем, сохраняем как папочку, ну, переименуем его в какое-то там, а-э, удобное для нас название. Ну, то есть уже сейчас можем адаптировать это под наш наш нашу будущую задачу. И перетаскиваем на саму иконку. Всё. Аа, всё, что сейчас момент, куда у меня пропал кодекс? Вот он. А-а, дальше мы можем уже непосредственно работать с нашими агентами. А всё необходимое для этого у нас уже есть. Единственное, что нам ещё нужно сделать, здесь, повторюсь, как бы сам фреймворк в том состоянии, в котором он как бы предназначен для разработки. Для того, чтобы нам решать свои задачи, нам а часть из этих файлов здесь не нужна. Но для этого у нас есть файлик под названием clean.sh. А вызовем его в встроенном терминале, и он удалит нам все ненужные файлы, которые как раз не относятся к, ну, не нужны для локальной разработки. Запустим его, и через секунду у нас всё удалится. Вуаля. Э, ещё что нам у нас сделал эт скрипт - это а удалил и заново создал git repositorй. То есть теперь мы можем, например, сохранить аа текущие текущее его состояние. А-а и даже не обязательно его сейчас отправлять на сервер. Пока что можем работать локально, нам это совершенно неважно. Откатиться мы всё равно можем в любой момент времени. Соответственно, что у нас осталось из файлов? У нас остался корневой agent MD универсальный. У нас остались все базовые агенты и у нас остался скрипт для того, чтобы компилировать файлик с тасками. Причём, обратите внимание, самого файла с тасказками у нас не оказалось.

Дальше. А в прошлый раз мы обсуждали, что самое главное, с чего мы должны начать, а, любую работу с вот таким роем агентов - это подумать над тем, как раз, а, что у нас подаётся на вход, что у нас подаётся на выход. Причём не только в формате самой самих данных, но и в формате структуры. То есть самая обычная история - это просто создать здесь какую-нибудь папочку in, а создать папочку out и с этими папочками дальше работать. А если мы, например, работаем с какими-то внешними данными. А если это не внешние данные, то мы можем просто попросить нашего агента-оркестратора что-то сделать. Ну, например, а либо можете сейчас предложить какую-нибудь задачу в чате, либо я попробую какую-нибудь самую самую базовую историю придумать. Причём, опять же, нам здесь никто не мешает тоже воспользоваться с помощью цифрового повелителя. И, например, если у нас есть задача там создать какой-нибудь, например, э веб-сайт, какую-нибудь страницу визитку, то, естественно, сюда можно загрузить, а, уже достаточно подробное описание того, что нам нужно. Но давайте поступим попроще, потому что нам важно понять, как работает сам фреймворк. И я попрошу его, а создать мне домашнюю страницу. Ну, достаточно. То есть, ещё раз, здесь задача может быть совершенно любая. Я просто сейчас из головы взял, но опять же, чем более, а, корректно, чем более конкретно ваше техническое задание здесь будет звучать, тем будет лучше. Но опять же нам здесь это неважно.

Да, ещё важная вещь, о которой не сказали. После того, как кодекс будет установлен, у вас здесь внизу будет четыре кнопочки. Это, собственно, настройки работы. В первой кнопке у нас должно быть выбрано локальный режим. Ровно потому, что мы с ним работаем. А, причём, да, в будущем мы ещё потом поговорим, как со всем этим работать на сервере. Это всё ещё можно делать онлайн и практически буквально с телефона. Но пока сегодня наша тема локальная часть. А дальше у нас есть три режима работы с агентом. Базовый чат, собственно, такой же, как у нас есть на сайте, режим агента, где у нас у агента есть возможность работать с локальными файлами, но он спрашивает о любом своём действии. И, наконец, у нас есть режим, скажем так, полной автоматизации, когда агент сам решает о том, нужно ли ему нас спрашивать или нет. Стоит этот режим включать с опаской, потому что агент может унести. И как раз вот задача всей этой истории, чтом в то в том, чтобы а его не уносило далеко в сторону. Я честно скажу, я вот как раз те недели, который всей этой историей пользуюсь, пользуюсь роутом в формате автоматического агента, потому что зачастую просто попросить что-то поправить, а и и продолжить работу проще, чем зачастую проверять, что он делает.

Дальше выбор самой модели. Здесь, на самом деле, можем выбрать всё, что угодно. Нам доступны все четыре, начиная от мини до макса. Я пробовал и обычный 5.1 кодекс, и потом долгое время сидел на кодекс Mini. И, честно, они вполне себе достаточно для большого количества задач. Опять же, может быть, здесь работает вот этот история с жёсткими рамками, но 51 minплохо. Ну, и дальше формат ризонинга. Здесь каждый выбирает для себя, сколько у него есть времени, потому что ещё одна вещь, которую здесь нужно учитывать, что аа чем больше там условно палок в колёса мы ставим нашему агенту, чем в более жёсткие рамки мы его загоняем, тем медленнее он работает. И это нужно учитывать здесь, опять же, так как у нас множество задач может быть включено, и зачастую агент как раз может работать над какой-то задачей до тех пор, пока она как бы не будет решена. и там раз за разом, используя разные подходы, здесь иногда он там может и по там несколько минут, там до получаса работать над какими-то вещами.

Но опять же, что у нас здесь произошло? Давайте посмотрим. Мы дали верхнеуровневую задачу. Дальше посмотрим, что происходило. А, собственно, создан план по регистрации, как эту задачу будет раскидано. Потом он посмотрел, что у нас находится в самой папочке, обратил вничитал, что у нас внутри нашей, аэ, структуры происходит. На текущий момент у нас ничего нету. Но если бы у нас вын, например, лежала какая-нибудь там моя собственная переписка с пожеланиями и там рассуждениями о цветах, он бы её тоже принял бы к сведению. Аа дальше а он попытался найти файлик а с задачами. А ни одного, ни другого не оказалось. Ну, и дальше, собственно, сам процесс заключался в том, что был вызван файлик

Planner Jonвщиком, был создан план по регистрации задач. И дальше вот мы тоже когда-то говорили про то, что в процессе превращения вот этого чат GPT в собственного кофундера и такого когнитивного партнёра работает история с масками. То есть мы создаём разные профили для нашего ассистента и дальше, меняя эти маски, можем по сути заставить его играть разные роли. Здесь ровно это и происходит. То есть по сути это один поток, это один ассистент, который использует эти JSON файлы для того, чтобы себе, а, менять поведение.

Ну и чем всё закончилось, собственно, основная задача - это как раз, а, список верхнеуровневый. Что у нас появилось? У нас агент-планировщик займётся тем, то, что создаст или обновит файлик Task Jon, построит с помощью скрипта, потом перерегенерит, а, человекочитаемую версию и передаст дальше всё это другому агенту. Ну, на самом деле, ещё раз, то есть наш чат GPT, который здесь в плагине присутствует, просто наденет другую маску, наденет маску разработчика и создаст уже непосредственно саму э страничку там в том виде, в котором она была создана. И дальше эта задача будет не показана нам, она будет передана агентуюеру для того, чтобы он проверил, насколько выполненная задача соответствует непосредственно самому Таску. Ну и только после этого э как бы поставит эту задачу э как выполненную.

Здесь же от нас требуется, собственно, тритри три варианта ответа. Мы можем отменить всё, что он нам придумал. Мы можем поправить его, дав какие-то дополнительные данные. И мы можем просто принять, а что он нам предлагает. Давайте это и сделаем, и посмотрим, что будет происходить дальше. А будет довольно любопытная история, потому что а сейчас в момент выполнения он как раз э начнёт строить всю эту структуру, и через секунду мы увидим, что у нас появилась одна, а может быть несколько задач. Скорее всего, под такую простую задачку он не будет большой тасклист делать. Но, ээ, если задача глобальная или мы просим его напрямую про эту декомпозицию, он его, а, естественно, разобьёт на подзадачке. M. Да.

Посмотрим, что вот как раз, а в чём заключался его процесс. Он увидел, что у него не хватает этой структуры, и решил её создать сам. Причём не просто создать, а мгновенно создать под неё ещё и человекочитаемую версию. Давайте на неё и посмотрим, что произошло. А две задачки у него появилось. А, собственно, одна из задач - это single page landing. Э, с, ну, она действительно достаточно простая, причём, да, обратите внимание ещё, как он это делает. То есть здесь в комментарии ээ задачка от создателя по сути, которая пришла на вход. А дальше по мере того, как агенты будут, э, с этими тасками взаимодействовать, здесь будут появляться комментарии. То есть это будет полно вот хоба у нас появилось а комментарии от разработчика, что типа вот он придумал там GitHub, придумал почту, кстати, и реальную почту, и реальный GitHub угадал. Ну и дальше вот теперь у нас эти агенты будут взаимодействовать дру, ну, то есть ещё раз переодевать маски, конечно же. Но а для нас, как для стороннего наблюдателя, это всё будет выглядеть как полноценная работа такого небольшого IT-отдела с полноценной системой контроля версий, с полноценной системой управления задач. И причём мы из одной точки можем постоянно видеть, как эти агенты ещё эти задачи выполняют и как они между собой взаимодействуют. Причём, опять же повторюсь, здесь у нас самая базовая задача по тому, чтобы он на выходе получил просто HTML-страничку.

У меня опыт пока максимум того, что я делал, ээ, заключался в создании, тоже тема для одного из будущих воркшопов, заключалась в разработке давно ещё придуманной истории про, а, специфический универсальный слой памяти для её агентов, который работает с графовой базой данных, который работает с внешней лмкой, который, по сути, перехватывает запросы пользователей и сохраняет их в виде а вот этой графовые цепочки рассуждений, ну и так далее и тому подобное. В общем, по сути, полноценный проект вот по а слою памяти для агентов, который создан там на а Pon, докер, э постгрес, графовая база и так далее и тому подобное. Ну то есть эта штука звучит гораздо дальше, чем базовый MVP, о котором можно как бы мечтать. сделал. Причём оно работает. Оно работает хорошо. Оно работает ровно так, как я себе и предполагал.

А как в курсоре перенести чат? Ровно так же. Ровно так же. Заходим в настройки, выбираем настройки воркбенча, ставим ему вертикальное положение, как вот здесь. И после этого можно просто мышкой перенести кодекс в правую часть. После этого либо сохраняем, либо э оставляем как есть. Ну, в результате у нас кодекс перемещается направо. Ну и вот дальше посмотрим, что наши агенты делают дальше. Как мы видим, он ээ активно работает. Активно работает. Причём у нас в корне появился файлик index.html. А, и здесь мы видим, что агенты что-то сделали и отправили промежуточные результаты. Зайдём в вкладку с системой контроля версии и увидим, что у нас появилось два Майлстоуна, которым мы при желании можем вернуться. Собственно, вот добавились задачи для домашней странички и дальше, собственно, сама страничка была реализована. Здесь мы видим, что у нас появился комментарий ещё как раз вот агента ревюера, который посмотрел, что сейчас момент, да, то, что у нас обе задачи оказались выполнены, причём выполнены все с финальным комментарием от ревюера. То, что он проверил, что домашняя страница работает, там анимированный градиент, высококонтрастная типографика, био и ссылки на GitHub. Ну и точно также вторая задача по обзору и там финализации этой странички тоже оказалась завершена.

Давайте посмотрим, что он нам написал. Ну, как бы, естественно, ждать, э, особо изысков с такого ваншота здесь, э, не стоит, но я ему давал до этого сделать красивый сайт, он его сделал в похожем стиле, но на самом-то деле довольно неплохо. А если теперь попросить его что-то поменять, он, э, это всё сделает, это всё сохранит. Но причём, а что любопытно, если мы сейчас сюда вернёмся и вот, да, посмотрим, он завершил работу и отдаёт нам отчёт, что сделал минималистичную домашнюю страничку. Тактактактактак. Вот три комита. А четыре комита, проверим, да, уже четыре комита, где он как бы сделал обзор и дальше засинкил вот эту финализированную домашнюю страничку. То есть, да, это одна из, а, таких сложностей. ну, не сложностей, э, вещей, которыми приходится платить, потому что скорость выполнения здесь падает. Падает именно из-за того, что он перестраховывается постоянно как бы обращается к списку задач, комитит этот список задач. То есть работает не так, ну, не супербыстро, но две важные вещи. Всё-таки, а то, что у нас здесь есть жёсткие рамки, невероятно помогает. Попробуйте сами на чуть более сложных задачах увидите, аа, как это работает. Потому что самая гласная штука, которая здесь есть, - это то, что мы можем взять, например, огромный документ, с которым никакой чат GPT работать не будет, который точно не будет сохранять а консистентность по мере работы над этим документом. А, а здесь этот документ будет лежать у нас локально, и агент будет последовательно, как надо, с ним работать и вносить изменения ровно в тех местах, где это нужно.

А что мы можем сделать дальше? Дальше мы можем попробовать работать с продолжить работать с этими агентами. Там посмотрим, что у нас а есть. Ну, например, да, попросим его просто перевести на русский. M. А и агент возвращает нам ровно ту же самую историю. верхнеуровневый план, состоящий из работы нескольких участников, которые аэ будут мучить эту задачу до тех пор, пока она не окажется выполнена. Теперь у нас агенты работают чуть-чуть быстрее, потому что Task Jon у нас уже создан. Они сразу же знают о том, что у нас а происходит. И теперь можем как раз смотреть, как он продолжает работать. У нас добавилась новая задача с русской версией. А причём даже Да, да, две задачи. То есть одна задача с реализацией и другая задача с проверкой. А причём опять же мы можем а вот сейчас я по сути работаю с тем кодом, который он сделал. А агенты - это такой же код. Я могу попросить его писать эти задачи на другом языке и внести изменения, сохранить внутри фреймворка. Я могу попросить его там декомпозировать задачи чуть-чуть по-другому. Я могу вносить любые изменения в эту логику так, как мне заблагорассудится. Вот мы видим, что какой-то агент под вот агент-разработчик подцепил себе задачку с высоким приоритетом, перенёс её в inпроgress и теперь, собственно, занимается тем, то что её реализовывает. В общем, одно удовольствие смотреть за тем, как они перебрасываются этими задачами. А, и ещё одна важная история. То есть это выглядит как классный бустер для вайп-кодинга. Именно этим оно и на самом деле является. То есть, если у вас как бы давно не доходили руки реализовать какую-то историю или не хватало, например, достаточных знаний для того, чтобы, а, попробовать это сделать до определённого, как бы, уровня, которого вы хотели, возможно, сейчас самое время это попробовать. Потому что, повторюсь, качество а весьма и весьма неплохое. А и самое главное, что не только-то как раз для разработчиков, а эта история отлично расширяется. На прошлой неделе я пробовал её для генерации и текстов, и переводов. На этой неделе я, собственно, продолжил это делать. А работает, работает просто прекрасно и позволяет очень широкий круг задач решать. Ну, то есть практически любая аа работа, результатом которой должен стать контент в любом виде, с помощью этой истории очень неплохо бустится. Ээ потому что, ну, как минимум даёт возможность ту часть вот, которую как раз можно на какого-нибудь стажёра или джуна скинуть, идеально. Вот. Ну, досмотрим дальше. Вот он спланировал эти изменения, добавил этот исправление и посмотрим, на самом деле, что он сделал.

Должно работать, если не хочу использовать гит, я рискую только потерей данных или что-то ещё не будет работать. А-а, ну давайте под гитом всё-таки две сущности понимать. Одна - это локальные репозиторий, которой не пользоваться, честно говоря, нет никакого смысла, потому что, а-а, ну агенты будут работать без неё, они просто не будут не сохранять эти комиты, у него там будут ошибки или, скорее всего, он этот локальный репозиторий просто заново инициализирует. А, и вот здесь как бы эти версии, они останутся. Нужно ли при этом как бы регистрироваться на гитхабе и обеспечивать себе вторую часть этого процесса? Нет, не обязательно. А просто GitHub - это, ну, считайте, универсальное, удалённое хранилище кода. И вы вот в любой момент можете, находясь там с новым ноутбуком, с чем угодно, просто зайти из любого места, скачать курсор, скачать Open AI, залогиниться под своим аккаунтом и из любого места синхронизироваться с этой историей. То есть, ещё раз, смотрите на это как на удалённую память, как на удалённый сервер, где ваш код всегда хранится. Причём, как бы, для себя это здесь публичный репозиторий. Для себя вы можете хранить его как совершенно приватный и ни с кем, кроме, а там в данном случае, например, Microsoft не делиться. Ну и опять же, вы можете у себя там хоть GitLab какой-нибудь поставить и пользоваться любой вещью. Но, повторюсь, совершенно необязательно. Аа как бы локальный репозиторий не накладывает на вас никаких обязательств по использованию Гитхаба. Можете совершенно спокойно этим не пользоваться.

Ну а мы обратим пока внимание на то, что у нас здесь произошло. А и наш список задач обновился. А обновился он как раз новым INDК js Давайте его и проверим. У нас появилась переключалка, которая, обратите внимание, прекрасно работает. Мм, по поводу клода. А, так, а давайте сначала по поводу клода. Можно запустить параллельно клод, можно даже клоду попробовать скормить ту же самую папочку. Объясню две вещи, почему конкретно здесь кодекс. А потому что удивительным образом кодекс специфически работает с agнemd. Clotд, насколько я знаю, не всегда настолько чётко подцепляет эти данные, а кодекс прямо вот себе в промт их забирает. И по сути Agence MDE - это замена системного промтагента, с которым мы здесь работаем. Но хорошая тема, надо будет попробовать. Я, честно, вот так, чтобы лицо лицом к лицу сталкивать между собой не занимался. Единственное, с чем сталки сравнивал, это сравнивал с антигравити. А там поговорим отдельно, когда будем говорить про антигравити. Вот. А дальше по поводу того, нужно ли этот фреймворк загружать для новой задачи. А, ну смотрите, в принципе, как бы эта история достаточно верхнеуровневая. Вы можете здесь сделать, например, папочку проекты, внутри этой папочки проекты делать сколь угодно сложную систему папок, и эти агенты будут со всем этим работать. Причём, как бы, преимущество подхода из одной папки в том, что вы можете создавать всё большее и большее количество агентов, которые будут конкретно под ваши задачи, а, специализированы. И вот такой рой агентов будет работать а над всеми вашими задачами одновременно. Это может быть удобно, если вы, например, строите какую-нибудь историю для ээ персональной операционной системы агентной. Например, тут можно создать агента, который будет, например, работать с моей удалённой почтой. Любая почта позволяет подключаться к ней удалённо через а сервисы, которые уже есть на вашем компьютере. Всё, что нужно сделать - это дать возможность этому агенту написать коннектор, например, для того же Gmail. А только единственная важная штука, не давайте агентам, собственно, сами пароли от Gmail. Мы там в будущих воркшопах поговорим, как эти поизолировать приватные данные и тому подобное. А-а, по пока что так глубоко закапываться не будем. Вот, а-а, сравнение по качеству с клодом займусь, сделаю, покажу. А пока что работает, вот, сравнивая с антигравити, работает очень-очень вровень, пожалуй, из-за того, что как раз здесь есть вот эти жёсткие, а, ограничения, которые как раз загоняют в очень-очень чёткие рамки. А вот вот такая вот история.

Что дальше? А, ну дальше давайте, ну, на самом деле, как бы основная задача всей этой истории, чтобы каждый из вас просто загрузил такие этот вот зипархив из гита и попробовал пообщаться с этими агентами, потому что, повторюсь, штука раскрывается в тот момент, когда вы ей ставите конкретную необходимую задачу, и тогда это прямо пушка-ракета. А что ещё можем сделать? Давайте покажу, как апдейтер работает, например, аа, как я говорил, агент Update, он не запускается самостоятельно, его не вызывает оркестратор. Его можно вызвать только принудительно, и он нужен для того, чтобы адаптировать существующих или там созданных вами агентов под конкретную как бы структуру. А, соответственно, я ему дал очень простую задачу просто под в сайта одностраничники адаптироваться. Но на самом деле как бы здесь можно достаточно сложные вещи делать. А, и опять же, вот мы видим, что у нас получилось. У нас получилось четыре задачки. планировщик создаст расширенный список, апдейтер, собственно, просмотрит агентов, которые у нас есть, сфокусируясь на улучшении агента разработчика для разработки сайтов. Ну и дальше, собственно, сам агент-разработчик эти изменения внесёт, и ревьюер потом у нас всё это сделает. А, отправим этот approve-план и посмотрим, на какие задачи он это, собственно, раскинет. А, пардон, мысль потерял.

Как раз мы же говорили про преимущество и недостатки подхода с одной папкой или с несколькими папками. Собственно, про преимущество подхода из одной папки я рассказал. Недостатком этого подхода является то, что по мере того, как вся эта история будет разрастаться, по мере того, как будут появляться всё новые и новые агенты, у вас будет снижаться окно контекста. Причём здесь надо учитывать, что на самом деле окно контекста у кодекса достаточно жирное. Мы можем, кстати, всегда ознакомиться, сколько у нас осталось места из конкретного диалога и сколько у нас осталось, в принципе, как бы возможности с цифровым повелителем пообщаться. Вот здесь мы видим, что здесь у нас 13% от контекстного окна только занято, что довольно немного. То есть мы можем ещё как минимум десяток таких агентов а легко создать, и это ни в кое мере наше контекстное окно не замусорит. -э с чем большим количеством данных работаем, опять же, здесь это совершенно неважно, потому что они будут это итеративно, а, работать над любым количеством файлов. И единственное, чем вы здесь как бы рискуете- это тем, что рано или поздно можете впилиться в глобальные ограничения Open AI. А потому что как бы ограничение по токенам - это одна история, а можно ещё вылезти просто за ограничение как бы по объёму работы. Я вот на одну неделю, когда этим занимался, меня выкинуло, и это всё заблокировалось на несколько дней. Ну, точнее, пришлось просто openй платить 40 баксов за то, чтобы они количество кредитов увеличили. Аа но я очень много занимался для того, чтобы в это ограничение воткнуться. То есть как бы следующая неделя, которая проходит, она гораздо гораздо проще, как бы со всем этим делом. И пока что ни в какие ограничения я не втаскивался. Вот.

Соответственно, преимуществом того, что если вы под каждую отдельную задачу как бы создаёте отдельный тестовый полигон, отдельную папочку, а он удобнее ровно тем, что вы можете адаптировать в таком случае агентов более конкретно под каждую конкретную задачу. Я для себя ответил на этот вопрос следующим образом. То есть, как-то у меня возникает большая работа с, например, разработкой, я под это создаю одну историю и внутри одной папки могу как бы несколько задач решить. Но обычно стараюсь всё-таки, что одна папка, один набор агентов под одну какую-нибудь там атомарную, ну не атомарную, под одну задачу. То есть там разработка документации - это разработка документации под конкретный проект - это один набор агентов. Разработка документации под другой проект - это другой набор агентов. Но ничего не мешает вам этих агентов шерить между собой, потому что, ну, опять же, это обычная Джейсонка, а, и в принципе сюда просится какая-нибудь история, которая позволит эти этими агентами меняться под какие-то конкретные вещи. А-а, что ещё здесь важно? Это всё-таки достаточно высокий уровень автономности. То есть, как мы видим, он всё это исправляет. Я вообще не вмешиваюсь в то, что он делает. А при этом всё, как мы видим, достаточно аккуратно ложится в изначально поставленную задачу. И всё-таки вот этот тасклист жёстко держит их всё-таки в рамках, давая возможность, ну, как раз повысить наш качество нашей задачи. Ну, и вот, как мы видим, здесь довольно много уже, как бы, они попередавали между собой контекста, много майлстоунов закрыли. А сейчас посмотрим. Вот он должен, э, обновить нам нашего агента. Можем посмотреть, собственно, что у нас меняется, как он, а, в режиме реального времени эти изменения вносят, что как раз он довольно чётко меняет как бы задачки. Посмотрим, что он у нас здесь поменял. Ну, вот как раз какие-то конкретные таски вот под там анимации, градиенты. чётко следи за перфомансом и так далее. А вернёмся на Task MD. Ну и да, здесь вот у нас как бы уже полноценная как бы доска с задачами, с обсуждением, а прошло только 5 минут. А вот сейчас дадим ему время закончить, посмотрим, а чем это изменится.

Промери банк можете поподробнее ээ прокомментировать. Ну то есть сорян, не очень понял вопрос просто. Упс. Вот так что у нас закончились наши задачи. Вот. Да, смотрите, если у меня гитхаба нету, у меня просто это лежит в локальном виде. Я точно также могу продолжать работать. Я точно также могу откатиться на вот любую из предыдущих версий. Дальше нам как бы совершенно не обязательно нажимать на кнопочку паблиish. Посмотрим, что у нас произошло. Аа, собственно, наш изначальный план был реализован. Последовательно наши агенты работали, передавали друг другу. И вот что у нас в результате. А, да, обновили разработчика для того, чтобы он зафиксировался на single page сайте. и тому подобное. Вот, собственно, задачи, которые были сделаны, таски, которые были закрыты, и вот наш агент-разработчик, который был в который были внесены изменения. Задачи зафиксированы, комментарии зафиксированы, а разработчик сохранённый теперь в следующей задаче будет использовать уже его будет реализовывать уже его улучшенная версия. Ну, пардон. И дальше мы можем продолжать это улучшать, улучшать, адаптировать, а, под наши, собственно, конкретные задачи. А про курсор Memory BН спасибо за ссылку. А, надо будет изучить. Я, честно скажу, не про БВУ, но да, выглядит довольно интересно. Выглядит, кстати, на самом деле очень а-э похоже, что как раз кастомные ээ режимы и тому подобное. Клёво. Спасибо за интересную штуку. Изучу в одном из следующих воркшопов. Тогда либо с ней попробуем работать, либо расскажу про конкретное сравнение. Вот.

Ну что, а у нас уже час подошёл к концу. Я очень надеюсь, что это было полезно. Я правда вот здесь очень сильно рекомендую всем, кто смотрит, попробуйте. Правда, круто. Действительно сильно меняет а формат взаимодействия с чаat GPT и действительно сильно меняет подход к задачам, делает ну сильно упрощает. По сути, у каждого из вас может появиться буквально ценой одного месяца платного чат GPT свой собственный мини рой агентов с памятью в виде локальной папки и с возможностью использования любых локальных инструментов и самое главное использование этих данных в качестве памяти, в качестве контекста для реализации практически любых задач. Вот. Ну что, тогда на этом у меня всё. Если у кого-то есть ещё вопросы, с удовольствием их услышу. А, да, полезно. Спасибо. Пару месяцев назад трое агентов делал через веб-версию. Геморройно было, да? А, ну про веб-версию мы поговорим в будущем. Пока что здесь вот правда она раскрывается именно когда ты её локально запускаешь и пробуешь на каких-то самых разных задачах. Вот. А-а, повторю ещё раз ссылку. Codeк Town, а, Codexworm. А, заходите на GitHub, скачивайте, пробуйте. А-а, через пару недель поговорим о результатах. Делитесь результатами. А, в общем, вот. Надеюсь, было полезно. Всем хороших выходных. Это вступайте в сообщество Кодектаун, смотрите наши видео, продолжайте изучать искусственный интеллект с нами по отдельности. А, всем наступающей сингулярности, хороших выходных и до новых встреч. Да, по поводу каких-то взаимодействий пишите в личку, с удовольствием пообщаемся, конечно. Всем пока-пока.