📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

How to build a custom AI harness with Claude SDK

How I AI24:36

Transcription

Упряжь — это некоторый код вокруг ИИ-агента, который делает его более эффективным. Почему мы видели, как люди создают эти упряжи для конкретных случаев использования, иногда с конкретной задачей, вы просто хотите немного микроменеджмента. Вы просто хотите быть более предписывающим в отношении того, как эта работа выполняется. [музыка] Я покажу вам, как это работает, а затем мы поговорим о том, как я это построил. Итак, интерфейс, который я построил для своей упряжи, — это терминальный пользовательский интерфейс. Ядро упряжи работает на SDK агента Claude, а затем оно подключено к реальным инструментам. Итак, оно подключено [музыка] к Sentry Vercel, а затем оно подключено к Linear и GitHub для выполнения [музыка] задач. Я думаю, мы все проделали хорошую работу. Но теперь я понял, что эти агенты могут помочь нам решить очень-очень специфические проблемы, ограничивая эту работу. Это действительно изменило мое представление о том, как выполняется работа. [музыка] Все говорят, что дело не в модели, а в упряжи. Но знаете что? Не все говорят, что такое [музыка] упряжь. В сегодняшнем выпуске "Как я использую ИИ" я собираюсь развеять миф об упряжи, написать свою собственную упряжь и показать вам, как вы можете сделать то же самое, а также объяснить, почему пользовательская упряжь имеет смысл и может быть лучше, чем просто использование Claude Code или Codec. Давайте приступим. Этот выпуск представлен bolt.new. New — это конструктор ИИ-приложений для людей, у которых есть идеи и которые хотят их реализовать. Большинство ИИ-инструментов выдают код, который отлично выглядит в демо-версии и разваливается, как только [музыка] вы пытаетесь сделать с ним что-то реальное. Или они запирают вас на своей собственной платформе без реального выхода. Bolt [музыка] отличается. Вы описываете, что хотите построить. MVP стартапа, целевую страницу, внутренний инструмент, побочный проект, и Bolt генерирует готовый к производству код за считанные минуты. Подключите Stripe или любой другой платежный шлюз. Подключите свой домен и разверните его вживую. Основатели используют Bolt для создания бизнеса, приносящего реальный [музыка] доход. Менеджеры по продуктам выпускают прототипы, которыми их команды действительно пользуются. Дизайнеры и маркетологи запускают кампании, не стоя в очереди. Любой может создавать. Инженеры могут выпускать. Все [музыка] выигрывают. Вам просто нужна идея и выходные. Проверьте это на bolt.new/howiai. Прежде чем я перейду к тому, как построить упряжь, давайте поговорим о том, что такое упряжь. И я постараюсь сделать это максимально просто для всех вас. Упряжь — это некоторый код вокруг ИИ-агента. Да, вы услышали это здесь первыми. Упряжь — это просто код вокруг ИИ-агента, который делает его более эффективным. Может ли этот код содержать ИИ? Конечно. Должен ли этот код содержать ИИ? Не обязательно. Какова цель упряжи? сделать ИИ лучше. Это так просто, и мне кажется, что то, как люди об этом говорили, сделало это такой загадкой, что я хотел сделать это очень ясным для всех вас. Это просто написание большего количества кода вокруг вашего ИИ, чтобы сделать его более полезным для конкретного случая использования. Итак, из чего состоит упряжь? Ну, у упряжи будет конкретный контекст. Она сможет выполнять конкретные действия, и у нее будет цель конкретных результатов. Это так же просто. И я хочу поговорить о том, когда имеет смысл строить упряжь, а когда нет. И я думаю, вы захотите построить упряжь, когда один и тот же рабочий процесс требует одной и той же настройки и одних и тех же результатов. И поэтому это похоже на то, когда вы бы создали ИИ-агента. И на самом деле, иногда вы можете взаимозаменять некоторые из этих концепций, но на самом деле это происходит, когда существует своего рода комбинация детерминированных и недетерминированных рабочих процессов, пошаговых процессов, инструментов, вариантов использования, которые вы хотите, чтобы ваш ИИ следовал для выполнения конкретной задачи. Обычно эти задачи немного сложнее, и именно поэтому появились эти упряжи для кодирования, например, кодирование — это задача, которую нужно выполнить. Она требует конкретных инструментов. которая обычно проходит через своего рода стандартный рабочий процесс, и поэтому упряжи для кодирования очень популярны. Но вы также можете делать такие вещи, как управление инцидентами на производстве, где вам нужно пройти через конкретный процесс, подготовка PR к выпуску, обработка эскалаций поддержки, управление миграциями, даже нетехнические случаи использования, такие как проведение исследований очень специфическим образом или консолидация документов очень специфическим образом. Вот как и почему вы бы использовали упряжь. Итак, как я решил, какую упряжь построить? Ну, я посмотрел на свой бизнес Chat Purity и подумал: "Что я делаю повторяюще и последовательно, что, по моему мнению, ИИ мог бы делать хорошо, что, по моему мнению, мы могли бы делать лучше, если бы мы были более структурированы в отношении ИИ и того, как мы его использовали?" И я подумал, что исправление ошибок, вы все, если вы слушали этот подкаст, послушайте, я выпускаю код, поэтому я выпускаю ошибки. Исправление ошибок — это очень специфический рабочий процесс, для которого мы создали некоторые собственные внутренние инструменты, которые я обычно использовал с Claude Code или Codec, но у меня была гипотеза, что я могу лучше справиться с сортировкой ошибок, если построю свою собственную упряжь. И поэтому я выбрал отладку Sentry и простите за контент Claude здесь. отладка Sentry и отладка проблем Sentry. Действительно выяснение проблемы с помощью некоторых наших собственных внутренних инструментов, а затем выполнение всех последующих действий, которые мы выполняем при закрытии ошибок, было хорошей первой упряжью. Она включала кодирование. Ей требовался пользовательский контент и пользовательский контекст. Были конкретные результаты, которые я хотел убедиться, что мы соблюдаем, такие как отслеживание всего в Linear и написание последующих документов, которые могла бы использовать остальная часть команды инженеров. И поэтому мы выбрали отладку наших ошибок Sentry. Под "мы" я имею в виду себя и Codec, мы выбрали отладку Sentry как хороший пример для демонстрации того, как построить упряжь. Теперь, почему бы я просто не использовал инструмент для кодирования ИИ напрямую? Ну, я использовал инструменты для кодирования ИИ напрямую. И я думаю, что проблема с использованием инструмента для кодирования общего назначения и почему мы видели, как люди создают эти упряжи для конкретных случаев использования, заключается в том, что иногда с конкретной задачей вы просто хотите немного микроменеджмента. Вы просто хотите быть более предписывающим в отношении того, как эта работа выполняется. И поэтому, если вы можете определить правильные рабочие процессы, вы можете быть более эффективными, более последовательными и иметь лучшие результаты, если построите упряжь. Итак, для этого конкретного случая использования, вы знаете, с прямым ИИ-инструментом, таким как Claude Code, мне пришлось бы объяснять, что я хочу, чтобы агент делал. Поэтому мне пришлось бы сказать: "Дорогой агент, пожалуйста, исправь эту ошибку. Вот она по ссылке. Вместо этого, с этой упряжью, я могу буквально просто вставить ссылку, и агент уже знает мое намерение, уже знает, что нужно сделать". Вторая вещь, которая меня не очень беспокоила, но интересна, когда вы создаете свою упряжь, это то, что вы можете быть очень предписывающим в отношении того, какие инструменты он может использовать, а какие нет. Например, если вы хотите создать упряжь только для расследования, вы можете убедиться, что ваша упряжь, ваш редактор кода никогда не писал код. Он только исследовал и объяснял первопричину. Вы также можете повторять один и тот же процесс с течением времени, если вы кодируете его в упряжи. И поэтому, если вы хотите очень точный пошаговый поток, включая результаты. Итак, для нас, каждый раз, когда мы исправляли ошибку Sentry, мы хотим, чтобы она была задокументирована в Linear. Мы хотим очень конкретный отчет. Мы можем даже захотеть связаться с клиентами, которых это затронуло. Вы можете закодировать это в навыке, но опять же, вам придется за ним присматривать. Когда мы создали эту упряжь, мы знали, что это будет происходить каждый раз. А затем с точки зрения модели вы можете делать многомодельный маршрутизацию и всевозможные интересные вещи способами, которые вы не могли бы сделать с общей моделью ИИ. Итак, я покажу вам, как это работает, а затем мы поговорим о том, как я это построил. Хорошо. Итак, интерфейс, который я построил для своей упряжи, — это терминальный пользовательский интерфейс, опять же, как Claude Code или Codec, что-то, что вы запускаете в своем пользовательском интерфейсе. И просто чтобы вы знали, ваша упряжь не обязательно должна быть TUI. Она не обязательно должна быть CLI. Она даже не обязательно должна иметь буквы. Это может быть веб-приложение. Я сделал это в TUI. Во-первых, потому что я давно ничего не строил. Я подумал, что это будет весело. И во-вторых, я просто хочу показать, что создание собственной пользовательской упряжи означает, что вы можете создавать свой собственный пользовательский интерфейс для этих ИИ-агентов. Итак, упряжь — это весь опыт, включая человеческий опыт, который делает ее более полезной и простой в использовании. И поэтому этот TUI довольно легко вызвать. Я просто запускаю TUI. Вы можете увидеть его здесь. Он довольно милый. Он сделан милым. Я использую эту библиотеку под названием Ink, которая помогает создавать милые TUI. Я не думаю, что они бы сказали "милый", но я скажу "милый". И вы можете видеть здесь, что этот терминальный пользовательский интерфейс действительно отражает структуру самой упряжи. Итак, вы видите все запуски, которые он сделал до сих пор, ошибки и как он все исправил, а затем своего рода наш процесс упряжи, который заключается в том, что он собирает доказательства, потоково передает действия, а затем создает некоторые артефакты. И поэтому я собираюсь заставить его исследовать эту ошибку Sentry здесь. Это одна из тех, где наши операции редактирования иногда теряются агентами. И это теперь запустило нашу конкретную упряжь. Итак, что он сделает, это начнет этот запуск расследования. Он запустит сеанс SDK Claude, который является фундаментальной частью того, как я это построил. Он начнет собирать доказательства и выдвигать гипотезу о первопричине того, что вызывает эту проблему и как мы можем ее исправить. Теперь, как вы можете видеть, я выбрал "расследовать", а не "исправлять". Итак, расследование не должно касаться и изменять файлы. И опять же, это то, что мне пришлось бы запросить у агента и сказать: "Я хочу, чтобы ты только расследовал. Я не хочу, чтобы ты выпускал исправление". Но вместо этого я могу просто нажать "Вставить" эту проблему Sentry, и она готова к работе. Этот выпуск представлен Customer IO. Вы здесь, потому что вы предпочитаете использовать ИИ, а не говорить о нем. С Customer IO вы описываете кампанию, которую хотите создать, и ИИ-агент создает ее для вас: аудиторию, сообщения и время. Вы просматриваете ее, вносите любые изменения, которые хотите, и запускаете. Вместо того, чтобы тратить часы на сборку инструментов и рабочих процессов, вы можете сосредоточиться на работе, которая действительно способствует росту. Каждая кампания привязана к результатам, поэтому вы можете видеть, что работает, а что [музыка] дальше. Более 9000 брендов используют customer.io для преобразования данных, которые у них уже есть, в сообщения, которые клиенты запоминают. Посетите customer.io/howi, чтобы попробовать сегодня. customer io больше влияния от каждого сообщения. Пока это работает, я просто покажу вам немного о том, как это работает и как я это построил. Хорошо, вот высокоуровневая архитектура приложения. Итак, фронтенд — это терминальный пользовательский интерфейс или вызов CLI упряжи, который мы называем запуском. Итак, он выполняет задачу. Каждая задача имеет конкретный ввод. Обычно это проблема Sentry. А затем есть конкретные флаги, которые я установил для упряжи, которые позволяют ей редактировать исходный код, изменять входные данные или даже отправлять сообщения клиентам только в том случае, если я помечаю и утверждаю это. Итак, опять же, это просто немного больше контроля над тем, как работает агент. Ядро упряжи работает на SDK агента Claude, и поэтому все планирование агента выполняется через SDK агента Claude, который имеет некоторые примитивы Claude Code, включая поиск файлов и запись файлов и все те вещи, которые мы находим полезными. А затем то, что действительно интересно в этой упряжи, и вы видели это в других упряжах, таких как OpenCLAW, это то, что она может создавать свои собственные артефакты в своем хранилище файлов. И поэтому у нас есть это хранилище артефактов. Я покажу его вам через минуту. И оно в основном сохраняет все доказательства из этих запусков в файловой системе, чтобы агент мог использовать их в будущем. А затем оно подключено к реальным инструментам. Итак, оно подключено к Sentry Vercel, SDK Claude. Оно использует Sonnet 46, потому что я думаю, что это правильная модель для этой работы. А затем оно подключено к Linear и GitHub для выполнения задач. Теперь, что действительно интересно, так это то, что вы можете запрашивать это пользовательским образом. Поэтому вместо общего "ты Claude Code, не совершай ошибок, ты наш, вы знаете, своего рода гений модели", я говорю конкретно, что ты работаешь внутри упряжи чат-инженерии. Это специфично для чата. Это не система кодирования с открытым концом. Мы хотим использовать эти артефакты как источник истины. И вот план атаки на очень конкретную проблему. И то, что я хочу, чтобы вы вернули, это X, Y и Z. И опять же, мне не нужно копировать и вставлять это. Поэтому мне даже не нужно помещать это в навык, где, надеюсь, оно будет вызвано правильным образом. Я фактически закодировал это в очень конкретном шаге упряжи, чтобы убедиться, что модель следует этому каждый раз. И поэтому внутри моей упряжи есть несколько таких пользовательских запросов. Есть артефакты, которые генерируются. Есть политики инструментов относительно того, какие инструменты могут быть вызваны, а какие нет. А затем я решил снова использовать Claude Sonnet 46, который, я думаю, действительно является правильной моделью для этого конкретного рабочего процесса. Хорошо, я хочу немного поговорить о коде и о том, как вы его генерируете, а затем просто заглянуть за кулисы. Я фактически запустил параллельные сеансы Claude Code и Codec и, по сути, сказал: "Помогите мне построить упряжь. Я думаю, я хочу использовать SDK агента Claude. Вот что я хотел бы, чтобы он делал", а затем закрыл глаза и попытался это сделать. Честно говоря, это не было однократным. Я не знаю, было ли это из-за моих запросов или модели были странными. Это был GPT 5.5 и Opus, но оба они действительно хотели построить что-то очень детерминированное. Поэтому они действительно сопротивлялись включению какого-либо ИИ в упряжь, и мне пришлось очень-очень конкретно запрашивать, чтобы получить то, что я хочу. Поэтому я бы сказал, что если вы пытаетесь сделать это, я бы был очень конкретным в отношении рабочего процесса. Я бы был очень конкретным в отношении инструментов. Я бы был очень конкретным в отношении того, где имеют смысл пользовательские запросы. А затем я бы предложил использовать SDK агента либо от Claude, либо от OpenAI для запуска большей части этого, потому что без этого запроса я просто не получил того, что хотел от этих моделей. Второе, что я скажу, как ни странно, Codec сделал лучшую работу по созданию агента, но он использовал SDK агента Claude для фактической реализации агента. Итак, мы охватываем модели и агентов кодирования здесь. Но сама упряжь довольно проста. Она имеет своего рода высокоуровневый индекс того, как добраться до TUI, а затем имеет, я не знаю, восемь файлов с конкретными вещами, которые она может делать. Итак, она может искать ошибки в Sentry. У нее есть адаптер Sentry для эффективного использования API Sentry очень специфическим образом. Поэтому вместо использования общего API, вместо того, чтобы ваш агент кодирования блуждал по всем этим трассировкам, я очень точен в отношении того, что, по моему мнению, вам нужно получить из отчета об ошибке, что полезно, а что нет, и сделал этот соединитель очень предвзятым. У нее есть аналогичная интеграция с Linear, интеграция с Vercel, интеграция с GitHub. И поэтому опять же, не в целом, как вы можете использовать эти инструменты, а конкретно, как вы будете использовать эти инструменты при поиске ошибки. А затем после того, как эти инструменты и источники данных используются, ошибка идентифицирована и отсортирована, затем есть этот файл артефактов, который выводит и выдает конкретные артефакты, которые я хочу видеть после завершения запуска ошибки. И этот пакет артефактов выглядит примерно так. Итак, это буквально просто запуск задачи, который включает все сообщения, отчеты, так какая была проблема Sentry? Вот краткое изложение того, что мы обнаружили. Вот любые журналы, которые мы считаем релевантными, что сделал рабочий процесс Claude, а затем сводка вывода. А затем мы также выводим этот красивый HTML-файл, который я могу вам показать, который показывает, что произошло и как все это работало, а также отчет рабочего процесса. Итак, я покажу вам эти результаты. Просто открываю этот код для вас. Опять же, это довольно просто. Он дает мне все инструкции о том, куда поместить мои конкретные API-ключи. А затем я могу просто запустить его этим очень предвзятым способом. Итак, в дополнение к запуску TUI, который позволяет мне как бы перемещаться по пользовательскому интерфейсу и использовать эту упряжь, что-то, что я могу захотеть сделать как человек, он также имеет эти очень простые инструменты командной строки, где если я просто быстро хочу запустить эту упряжь против конкретных проблем с конкретными флагами использования инструментов, я определенно могу это сделать. И что интересно в этом, так это то, что да, я построил эту упряжь, и вы можете видеть здесь, я построил этот забавный пользовательский интерфейс, чтобы я мог использовать его в забавной форме, и это делает лучшую демонстрацию, но на самом деле эта упряжь — это структурированный способ дать агентам задачу выполнять эти расследования на более простом уровне. И поэтому вы можете представить, что, хотя я разработал TUI для человека, на самом деле давая своего рода полностью интеллектуальному агенту конкретную упряжь для решения конкретной проблемы с агентами, я думаю, именно так вы получите реальную выгоду и действительно пользовательские результаты от таких вещей, как агенты кодирования, такие как Claude Code. И поэтому прохождение этого процесса действительно открыло мне глаза: мы так привыкли к открытому чату, как будто я просто ввожу, и агент будет хорошо работать, и я думаю, мы все проделали хорошую работу, но теперь я понял, что эти агенты могут помочь нам решить очень-очень специфические проблемы, используя других агентов, и, ограничивая эту работу, мы можем действительно выполнять конкретные задачи очень эффективно, а затем использовать общий агент для их оркестровки. Итак, это действительно изменило мое представление о том, как выполняется работа. Как вы можете видеть здесь, опять же, это всего лишь пара файлов. Это действительно не так уж много. Адаптеры к источникам данных. Несколько рабочих процессов, в частности, этот рабочий процесс охотника за ошибками, который просто проходит через то, как мы хотим охотиться за ошибками, включая то, как мы хотим составлять сводки отчетов об ошибках, а затем несколько файлов с точки зрения запуска TUI или CLI. А затем, как я уже сказал, у нас есть эта папка артефактов, которая обновляется каждый раз, когда происходит запуск, где я могу щелкнуть и фактически увидеть, что именно произошло в результате запуска. Итак, давайте посмотрим, хорошо ли прошел этот запуск и что я могу узнать. Итак, теперь у меня есть полный контекст. Вот краткое изложение расследования, и я могу его найти. Итак, это охотник за ошибками C7. Посмотрим, смогу ли я его найти. Вот он. Вот краткое изложение расследования по редактированию документов. Операции потеряны. Я подтвердил доказательства. Итак, он говорит, да, определенно было предупреждение Sentry. Оно затронуло 150 пользователей. Оно все еще происходит ежечасно. Это предупреждение, поэтому это не фактическая ошибка. И журналы Vercel были недоступны, поэтому мы не смогли использовать эти данные. А затем он нашел вероятные первопричины. Итак, недопустимый исходный диапазон или перекрывающийся исходный диапазон. И поэтому он определил пару потенциальных первопричин, а также слепое пятно в этой конкретной функции. Он точно указал, где в поверхности продукта находится проблема, а затем как я бы фактически проверил это, получив необработанное событие Sentry, чтобы увидеть, правильны ли выявленные ими проблемы. он определяет, следует ли выпустить проблему в Linear, и говорит, что да, мы определенно должны выпустить проблему в Linear, чтобы исправить это, и поэтому это должно быть назначено кому-то, и тогда он не рекомендует включать режим исправления и фактически исправлять это. Итак, опять же, это очень конкретный результат. Я хотел сказать: "Каковы все доказательства, ранжируй первопричины, дай предложение по следующему шагу, если нам нужно проверить это дальше, скажи мне, если мне нужно назначить это кому-то в Linear, а затем скажи мне, можешь ли ты это исправить", и они говорят: "Нет, я думаю, я пока не могу это исправить, мне нужно немного больше информации", и все это построено, потому что я проделал этот очень специфический рабочий процесс и закодировал его в том, что мы называем упряжью, которая просто является кодом вокруг агента. Итак, как бы вы построили свою собственную упряжь? Я думаю, надеюсь, вы все еще со мной. Не так уж много из этого прошло мимо вас. Просто чтобы повторить, я просто определил конкретный рабочий процесс. Я определил, как будет выглядеть запуск задачи. Я принял очень предвзятые решения относительно инструментов или источников данных. Итак, я не просто сказал: "Используйте API", хотя это может быть частью вашей упряжи, я создал адаптеры, которые сделали вызовы к этим внешним API и инструментам очень специфическими. Я подумал о том, какими могут быть структурированные артефакты этого рабочего процесса. Я решил, какие правила и разрешения я хочу дать этой упряжи, а какие нет. Я решил, хочу ли я использовать Claude Code или Codec или маршрутизатор моделей для фактического запуска этих вещей. А затем я создал поверхность для взаимодействия с этим агентом. Итак, я построил TUI, чтобы я мог фактически смотреть и работать с этой упряжью. Это может быть TUI. Это может быть CLI. Это может быть веб-приложение. Но я создал какой-то способ взаимодействия с этим. Итак, вот что вам нужно сделать. Определите рабочий процесс. Действительно запишите его на, знаете ли, образной бумаге, HTML или Markdown. Определите, какие источники данных вам нужны, а затем подключите все это к Claude Code или к Codec, как я сделал, и пусть он построит вашу собственную упряжь, а затем протестируйте ее на реальных данных. Итак, вот и все. Я действительно надеюсь, что вы уйдете от этого, осознав, что эти таинственные термины, такие как упряжь, не так уж таинственны. Упряжь — это просто структурирование того, как работает ИИ. Да, Cursor — это очень сложная упряжь. Да, Codec и Claude Code — это очень сложные упряжи для кодирования, но в конечном итоге это код, который оборачивает этих ИИ-агентов и эти вызовы ИИ, чтобы сделать их более эффективными при выполнении очень специфической задачи. И поэтому, независимо от того, делаете ли вы это очень предписывающим образом, как я только что показал, где я хочу показать вам, как я сортирую ошибки Sentry, провожу расследование и передаю их команде, или вы делаете это широким образом, как эти общие агенты кодирования, которые просто имеют доступ к инструментам, контексту и методам, которые улучшают рабочий процесс кодирования. Это все, что такое упряжь. Вы можете думать об упряжах, которые вы можете построить. Вы можете построить их в терминале. Вы можете построить их для CLI. Вы можете даже построить их как веб-приложения. Я начинаю выдвигать гипотезу, что обертка — это просто упряжь, и это улучшит все, что я кодировал за последние три года. Это был полностью обучающий опыт для меня здесь, на "Как я использую ИИ". Это моя самая первая упряжь, которую я построил в прямом эфире на шоу. Надеюсь, она будет вам полезна. И если вы заинтересованы в том, чтобы я строил другие вещи и развеивал мифы об ИИ, дайте мне знать в комментариях. Спасибо, что присоединились к "Как я использую ИИ". Большое спасибо за просмотр. Если вам понравилось это шоу, пожалуйста, поставьте лайк и подпишитесь здесь на YouTube, или, что еще лучше, оставьте нам комментарий со своими мыслями. Вы также можете найти этот подкаст на Apple Podcasts, Spotify или в вашем любимом приложении для подкастов. Пожалуйста, рассмотрите возможность оставить нам оценку и отзыв, которые помогут другим найти шоу. Вы можете увидеть все наши выпуски и узнать больше о шоу на howiaipod.com. До скорой встречи.