Автор: sysls
Перевод: Shenchao TechFlow
Обзор Shenchao: Разработчик-блогер sysls с 2,6 млн подписчиков написал подробную практическую статью, которую переслали 827 человек и лайкнули 7000. Ее суть — всего одна фраза: ваши плагины, системы памяти и различные фреймворки, скорее всего, мешают, а не помогают. В статье нет абстрактных теорий — только практические принципы, выведенные из реальных производственных проектов: как управлять контекстом, справляться с тенденцией ИИ угождать и как определять условия завершения задачи. Это самая ясная статья, которую я когда-либо видел о практическом применении Claude/Codex.
Полный текст:
Введение
Вы разработчик, каждый день используете Claude и Codex CLI, и каждый день задаетесь вопросом, действительно ли вы полностью использовали их возможности. Иногда вы видите, как они совершают абсурдно глупые ошибки, и не понимаете, почему некоторые люди будто бы строят ракеты с помощью ИИ, а вы не можете даже стабильно сложить два камня.
Ты думаешь, что проблема в твоём harness, плагине, терминале и т.д. Ты использовал beads, opencode, zep, твой CLAUDE.md содержит 26 000 строк. Но сколько бы ты ни старался, ты всё равно не понимаешь, почему всё дальше удаляешься от рая, в то время как другие веселятся с ангелами.
Это та статья, на которую вы всё это время ждали.
Кроме того, у меня нет конфликтов интересов. Когда я говорю о CLAUDE.md, я имею в виду также AGENT.md, а когда говорю о Claude, я имею в виду также Codex — я активно использую оба.
В последние месяцы я заметил интересный факт: почти никто не знает, как максимально эффективно использовать возможности агента.
Кажется, что небольшая группа людей может заставить агентов построить весь мир, в то время как остальные блуждают в море инструментов, страдая от синдрома выбора — полагая, что найдя правильную комбинацию пакетов, навыков или харнессов, они смогут разблокировать AGI.
Сегодня я хочу разрушить всё это и оставить вам простое, честное утверждение, после чего мы начнём с этого момента. Вам не нужна последняя система прокси, не нужно устанавливать миллион пакетов и совершенно не обязательно читать миллион статей, чтобы оставаться конкурентоспособным. На самом деле, ваша страсть, скорее всего, приносит больше вреда, чем пользы.
Я пришел сюда не для туризма — я начал использовать их еще с тех пор, как агенты едва могли писать код. Я перепробовал все пакеты, все харнессы, все парадигмы. Я писал сигналы, инфраструктуру и конвейеры данных с помощью фабрик агентов — не «игрушечные проекты», а реальные кейсы, работающие в продакшене. Сделав все это…
Сегодня я использовал конфигурацию, которую невозможно сделать проще — только базовые CLI (Claude Code и Codex) плюс понимание нескольких основных принципов инженерии прокси, и создал свою самую прорывную работу за всю историю.
Понимайте, что мир стремительно развивается
Прежде всего, хочу сказать, что компании, разрабатывающие базовые модели, сейчас находятся на этапе беспрецедентного рывка, который явно не замедлится в ближайшее время. Каждое улучшение «агентного интеллекта» меняет способ, которым вы взаимодействуете с ними, поскольку агенты становятся все более склонными выполнять команды.
Еще несколько поколений назад, если бы вы написали в CLAUDE.md: «Прежде чем что-либо делать, прочитайте READTHISBEFOREDOINGANYTHING.md», он с вероятностью 50% ответил бы вам: «Иди к черту», и продолжил делать то, что хотел. Сегодня он следует большинству команд, включая сложные вложенные инструкции — например, вы можете сказать: «Сначала прочитай A, затем B, и если C, то прочитай D» — и в большинстве случаев он с удовольствием последует за вами.
Что это означает? Самый важный принцип — осознать, что каждое новое поколение агентов заставляет вас заново задуматься о том, что является оптимальным решением, именно поэтому меньше — значит больше.
Когда вы используете множество различных библиотек и харнессов, вы запираете себя в одном «решении», но эта проблема может вообще не существовать перед лицом следующего поколения агентов. Знаете, кто самые страстные и активные пользователи агентов? Верно — сотрудники передовых компаний, у которых неограниченный бюджет на токены и используются действительно самые современные модели. Понимаете ли вы, что это означает?
Это означает, что если существует реальная проблема и есть хорошее решение, передовые компании станут крупнейшими пользователями этого решения. А что они делают дальше? Они интегрируют это решение в свои собственные продукты. Подумайте, почему компания вообще позволит другому продукту решать реальные болевые точки и создавать внешнюю зависимость? Как я знаю, что это правда? Посмотрите на навыки, харнесс памяти, субагенты… Все они начались как «решения» для реальных проблем и были проверены на практике как по-настоящему полезные.
Так что, если что-то действительно революционно и может значимо расширить возможности агентов, оно рано или поздно будет интегрировано в основной продукт компании. Поверьте мне, базовая компания движется с огромной скоростью. Так что расслабьтесь — вам не нужно ничего устанавливать или полагаться на внешние зависимости, чтобы добиться наилучших результатов.
Я предсказываю, что в комментариях вскоре появится: «SysLS, я использовал某某 harness, это потрясающе! Я воссоздал Google за один день!» — на это я скажу: поздравляю! Но вы не целевая аудитория; вы представляете собой чрезвычайно малочисленную группу в сообществе, которая действительно поняла инженерию агентов.
Контекст — это всё
Честно говоря, контекст — это всё. Ещё одна проблема с использованием тысячи плагинов и внешних зависимостей — это то, что вы сильно страдаете от «раздувания контекста» — то есть ваш агент перегружен слишком большим количеством информации.
Давайте сделаем игру в угадывание слов на Python? Просто. Подождите, а что это за заметка «управление памятью» была 26 сессий назад? А, пользователь столкнулся с зависанием экрана 71 сессию назад из-за слишком большого количества дочерних процессов. Всегда нужно писать заметки? Хорошо, понятно… Как это относится к игре в угадывание слов?
Ты понимаешь. Ты хочешь дать агенту только точную информацию, необходимую для выполнения задачи — ни больше, ни меньше! Чем лучше ты контролируешь это, тем лучше будет работать агент. Как только ты начинаешь вводить странные системы памяти, плагины или слишком много запутанных имен и вызовов навыков, ты даёшь агенту и инструкцию по сборке бомбы, и рецепт торта, хотя тебе нужно просто, чтобы он написал стихотворение о секвойях.
Итак, я снова проповедую — откажитесь от всех зависимостей, а затем...
Делайте действительно полезные вещи
Точно опишите детали реализации
Remember that context is everything?
Do you remember that you want to inject exactly the right amount of information into the agent to complete the task — no more, no less?
Первый способ добиться этого — разделить исследование и реализацию. Вы должны быть чрезвычайно точны в том, что именно вы требуете от агента.
Каковы последствия неточности? «Создайте систему аутентификации.» Агенту придется изучать: что такое система аутентификации? Какие варианты существуют? Каковы их плюсы и минусы? Теперь ему нужно искать в интернете кучу информации, которая ему на самом деле не нужна, и контекст заполняется деталями различных возможных реализаций. Когда наступит момент реальной реализации, он с большей вероятностью запутается или сгенерирует ненужные или несвязанные иллюзии относительно выбранного решения.
Напротив, если вы скажете: «Используйте JWT-аутентификацию с хешированием паролей bcrypt-12, смену рефреш-токенов и срок действия 7 дней…», вам не нужно изучать какие-либо другие альтернативы — будет понятно, что вы хотите, и контекст можно заполнить деталями реализации.
Конечно, вы не всегда будете знать детали реализации. Часто вы не знаете, что правильно, и иногда хотите передать решение деталей реализации агенту. Что делать в такой ситуации? Просто создайте исследовательскую задачу для изучения различных вариантов реализации, либо сами решите, либо позволите агенту выбрать подходящий вариант, а затем поручите другому агенту с новым контекстом реализовать его.
Как только вы начнете так мыслить, вы обнаружите места в рабочем процессе, где контекст агента ненужно загрязняется, и сможете установить изолирующие барьеры в рабочем процессе агента, абстрагируя от него ненужную информацию и оставляя только тот специфический контекст, который позволит ему отлично справляться с задачей. Помните: у вас есть очень талантливый и умный член команды, который знает обо всех видах шаров во вселенной — но если вы не скажете ему, что хотите спроектировать пространство, где люди будут танцевать и веселиться, он будет продолжать рассказывать вам о преимуществах сферических объектов.
Ограничения дизайна, связанные с тенденцией угождать
Никто не хочет использовать продукт, который постоянно критикует вас, говорит, что вы ошибаетесь, или полностью игнорирует ваши команды. Поэтому эти агенты будут стараться соглашаться с вами и делать то, что вы хотите.
Если вы попросите его добавлять слово «счастье» после каждого третьего слова, он постарается выполнить это — большинство людей это понимают. Его способность подчиняться именно делает его таким полезным продуктом. Но у этого есть очень интересная особенность: это означает, что если вы скажете «помоги мне найти баг в репозитории кода», он найдёт баг — даже если придётся его «создать». Почему? Потому что он очень-очень хочет подчиниться вашей команде!
Большинство людей быстро жалуются, что ИИ создает иллюзии и выдумывает несуществующие вещи, не осознавая, что проблема в них самих. Что бы вы ни попросили его найти — он это предоставит, даже если придется немного исказить факты!
Что тогда делать? Я обнаружил, что «нейтральные подсказки» очень эффективны — это когда агент не настроен на определённый результат. Например, вместо того чтобы сказать «Помоги мне найти баг в базе данных», я говорю: «Отсканируй всю базу данных, попытайся проследить логику каждого компонента и сообщи обо всех обнаруженных результатах».
Такие нейтральные подсказки иногда обнаруживают ошибки, а иногда просто объективно описывают, как работает код. Но они не склоняют агента к предположению, что есть ошибки.
Еще один способ справиться с тенденцией угождать — превратить ее в преимущество. Я знаю, что агент старается угодить мне и следовать моим инструкциям, и я могу слегка отклониться в ту или иную сторону.
Поэтому я поручил агенту по поиску ошибок выявить все ошибки в базе данных, сказав ему, что незначительные ошибки получают +1 балл, умеренно значимые — +5 баллов, а серьезные — +10 баллов. Я знаю, что этот агент будет чрезвычайно ретиво выявлять все типы ошибок (включая те, что не являются ошибками), а затем сообщит мне результат, например, 104 балла. Я рассматриваю это как супермножество всех возможных ошибок.
Затем я даю противодействующему агенту задачу опровергать их, сообщая ему, что за каждое успешное опровержение бага он получает очки, равные баллам этого бага, но если он ошибается, то получает -2 кратное количество очков этого бага. Этот агент будет стремиться опровергать как можно больше багов, но из-за механизма наказания будет действовать осторожно. Тем не менее он будет активно «опровергать» баги (включая реальные баги). Я рассматриваю это как подмножество всех реальных багов.
В конце концов, я поручил судье агенту синтезировать входные данные обоих агентов и выставить оценки. Я сообщил судье, что у меня есть реальный правильный ответ: за правильный ответ он получает +1 балл, за неправильный — –1 балл. Затем судья оценил агента по поиску ошибок и противодействующего агента по каждой из «ошибок». То, что судья определил как истину, я проверял. В большинстве случаев этот метод удивительно точно воспроизводит реальность, хотя иногда всё же возникают ошибки — но это уже почти безошибочная операция.
Возможно, вам достаточно найти отдельного агента для поиска ошибок, но этот метод отлично работает для меня, поскольку он использует врожденную программную особенность каждого агента — желание угодить.
Как определить, что полезно, а что стоит использовать?
Этот вопрос кажется сложным, будто требует глубокого изучения и постоянного отслеживания передовых достижений в области ИИ, но на самом деле он простой... Если OpenAI и Claude уже реализовали это или приобрели компанию, которая это реализовала, то, скорее всего, это работает.
Обратили ли вы внимание, что «навыки (skills)» уже повсеместны и являются частью официальной документации Claude и Codex? Обратили ли вы внимание на то, что OpenAI приобрела OpenClaw? Обратили ли вы внимание на то, что Claude сразу же добавила функции памяти, голоса и удаленной работы?
Как насчет планирования (planning)? Помните, как множество людей обнаружило, что сначала планировать, а потом реализовывать — действительно очень полезно, и это стало ключевой функцией?
Да, они полезны!
Помните, как бесконечные stop-hooks были невероятно полезны, потому что агенты крайне неохотно выполняли длительные задачи… а затем, как только вышел Codex 5.2, эта потребность исчезла за одну ночь?
Вот всё, что вам нужно знать… Если что-то действительно важно и полезно, Claude и Codex реализуют это сами! Поэтому вам не стоит слишком переживать о том, использовать ли «новое» или знакомиться с «новым» — вам даже не нужно «поддерживать актуальность».
Помоги мне. Регулярно обновляй выбранный тобой CLI-инструмент и читай, какие новые функции появились. Этого достаточно.
Сжатие, контекст и предположения
Некоторые люди, использующие прокси, сталкиваются с огромной ловушкой: иногда они кажутся самыми умными существами на Земле, а иногда вы не можете поверить, что вас надули.
Это умно? Это чёрт возьми идиот!
Основное различие заключается в том, вынуждены ли агенты делать предположения или «заполнять пробелы». Сегодня они всё ещё крайне плохо справляются с «соединением точек», «заполнением пробелов» или выдвижением предположений. Как только они это делают, это сразу становится очевидным — ситуация резко ухудшается.
Одним из самых важных правил в CLAUDE.md является правило о том, как получать контекст, и оно указывает агенту в первую очередь прочитать это правило при каждом чтении CLAUDE.md (то есть после каждого сжатия). В рамках правила получения контекста несколько простых инструкций могут сыграть огромную роль: повторное чтение плана задачи и повторное чтение (связанных с задачей) файлов перед продолжением.
Как агенту завершить задачу
У людей есть четкое ощущение того, когда задача «завершена». Для агентов текущая крупнейшая проблема в том, что они знают, как начать задачу, но не знают, как ее завершить.
Это часто приводит к очень разочаровывающим результатам: агент в итоге просто реализует набор заглушек и завершает работу.
Тестирование — отличная веха для агента, поскольку тесты детерминированы, и вы можете установить очень четкие ожидания. Пока эти X тестов не пройдут, ваша задача не считается завершенной; при этом вы не имеете права изменять тесты.
Затем вам просто нужно проверить тесты, и как только все тесты пройдут, вы сможете быть спокойны. Вы также можете автоматизировать этот процесс, но главное — помните, что «завершение задачи» для человека — это естественно, а для агента — нет.
Вы знаете, что еще стало выполнимой целью задачи недавно? Сделайте скриншот + проверка. Вы можете заставить агента выполнить что-то до тех пор, пока все тесты не пройдут, а затем попросить его сделать скриншот и проверить «дизайн или поведение» на скриншоте.
Это позволяет агенту продолжать итерации и стремиться к желаемому дизайну, не беспокоясь, что он остановится после первой попытки!
Естественным продолжением является заключение «договора» с агентом и включение его в правила. Например, этот `{TASK}CONTRACT.md` определяет, что необходимо сделать, прежде чем вам будет разрешено завершить сессию. В `{TASK}CONTRACT.md` вы укажете тесты, скриншоты и другие проверки, которые необходимо выполнить перед подтверждением завершения задачи!
Постоянно работающий прокси
Один из самых частых вопросов, которые мне задают: как обеспечить работу прокси круглосуточно и при этом не допустить отклонений?
Здесь есть простой способ. Создайте stop-hook, который блокирует завершение сессии агента, пока все разделы `{TASK}_CONTRACT.md` не будут завершены.
Если у вас есть 100 таких контрактов с четко определенными параметрами, содержащих содержание, которое вы хотите создать, stop-hook предотвратит завершение агента до тех пор, пока все 100 контрактов не будут завершены, включая все необходимые тесты и проверки!
Профессиональный совет: Я обнаружил, что длительные 24-часовые сессии не являются оптимальными для выполнения задач. Часть причины заключается в том, что такой подход структурно приводит к раздуванию контекста, поскольку контекст нерелевантных контрактов попадает в одну и ту же сессию!
Так что я не рекомендую этого делать.
Здесь есть более эффективный способ автоматизации прокси — открывайте новую сессию для каждого контракта. Создавайте контракт всякий раз, когда вам нужно что-то сделать.
Создайте слой оркестрации для создания нового контракта при выполнении определенного условия и создания новой сессии для обработки этого контракта.
Это полностью изменит ваш опыт использования агента.
Итерация, итерация, итерация
Вы наняли административного ассистента — ожидаете ли вы, что он будет знать ваш график с первого дня? Или как вы пьете кофе? Вы ужинаете в 18:00, а не в 20:00? Очевидно, нет. Вы постепенно формируете предпочтения со временем.
То же самое относится к агентам. Начните с самой простой настройки, забудьте о сложных структурах или харнессах, дайте базовому CLI шанс.
Затем постепенно добавляйте свои предпочтения. Как это сделать?
Правила
Если вы не хотите, чтобы агент делал что-то, запишите это в виде правила. Затем сообщите агенту это правило в файле CLAUDE.md. Например: «Перед написанием кода прочитайте файл coding-rules.md». Правила могут быть вложенными и условными! Если вы пишете код — прочитайте coding-rules.md; если пишете тесты — прочитайте coding-test-rules.md; если ваши тесты не проходят — прочитайте coding-test-failing-rules.md. Вы можете создавать правила с любыми логическими ветвлениями, которые агент должен соблюдать; Claude (и Codex) с удовольствием им следуют, при условии, что в CLAUDE.md есть четкие инструкции.
На самом деле, это мой первый практический совет: воспринимайте ваш CLAUDE.md как логическую, вложенную структуру, указывающую, где искать контекст в определенных сценариях и при определенных результатах. Он должен быть максимально лаконичным и содержать только логику IF-ELSE: «в какой ситуации искать контекст».
Если вы видите, что агент делает что-то, с чем вы не согласны, добавьте это в качестве правила и скажите агенту прочитать это правило перед тем, как в следующий раз сделать это — он точно больше так не поступит.
Навыки
Навыки (Skills) работают аналогично правилам, однако вместо предпочтений в кодировании они лучше подходят для описания «шагов действий». Если у вас есть определённый способ, которым вы хотите, чтобы что-то было выполнено, вы можете встроить это в навыки.
На самом деле, люди часто жалуются, что не знают, как агент решит проблему, что вызывает беспокойство. Если вы хотите сделать это предсказуемым, пусть агент сначала изучит, как он решит эту проблему, а затем запишет решение в виде файла навыков. Таким образом, вы сможете заранее увидеть, как агент будет решать проблему, и исправить или улучшить его подход до того, как он столкнется с ней в реальности.
Как заставить агента узнать о существовании этого навыка? Именно! Вы пишете в CLAUDE.md, что при возникновении этой ситуации, когда нужно решить эту задачу, прочитайте этот файл `SKILL.md`.
Правила и навыки обработки
Вы, безусловно, хотите постоянно добавлять правила и навыки агенту. Именно так вы придаете ему индивидуальность и запоминаете ваши предпочтения. Почти все остальное избыточно.
Как только ты начнешь это делать, твой агент будет вести себя как магия. Он будет делать то, что ты хочешь. И тогда ты наконец почувствуешь, что «понял» инженерию агентов.
Затем...
Вы увидите, что производительность снова начала снижаться.
Что происходит?!
Просто. По мере добавления все большего количества правил и навыков они начинают противоречить друг другу, или агент начинает страдать от серьезного раздувания контекста. Если агенту нужно прочитать 14 файлов Markdown перед началом программирования, у него возникнет та же проблема с кучей бесполезной информации.
Что делать?
Очистка. Пусть ваш агент «сделает спа», объединит правила и навыки и устранит противоречия, указав ваши обновленные предпочтения.
Затем это снова будет казаться волшебством.
Всё. Это и есть настоящий секрет. Держитесь простоты, используйте правила и навыки, рассматривайте CLAUDE.md как оглавление и внимательно учитывайте их контекст и ограничения дизайна.
Отвечайте за результат
Сегодня нет идеального агента. Вы можете передать множество задач по дизайну и реализации агенту, но за результат вам придется отвечать.
Так что будьте осторожны... и отлично проведите время!
Быть настоящим удовольствием играть с игрушками будущего (при этом явно используя их для серьезных дел)!
