Как развить AI product sense

Секрет — в использовании Cursor для нетехнической работы (внутри: 75 бесплатных дней Cursor Pro, чтобы попробовать!)

👋 Привет, я Lenny. Каждую неделю я отвечаю на вопросы читателей о создании продуктов, росте и карьере. Подробнее: Lenny's Podcast | How I AI | Lennybot | Lenny's Reads | Любимые курсы по AI и PM | Любимый курс по публичным выступлениям

*P.S. Подписчики Insider получают бесплатный год Lovable, Manus, Replit, Gamma, n8n, Canva, ElevenLabs, Amp, Factory, Devin, Bolt, Wispr Flow, Linear, PostHog, Framer, Railway, Granola, Warp, Perplexity, Magic Patterns, Mobbin, ChatPRD и Stripe Atlas. Да, это серьёзно. Подробнее.


Пост, который ты сейчас читаешь, создавался больше 100 часов. Потому что это не просто пост — это интерактивный опыт с открытым исходным кодом, который поможет тебе развить AI product sense. Tal и Aman провели десятки сессий по юзабилити, написали оценочные тесты (evals), оптимизировали каждый промпт ниже и даже договорились с Cursor о бесплатных кредитах (см. ниже!), чтобы ты мог попробовать всё это дома. Я никогда раньше не видел ничего подобного тому, что они собрали, и рад поделиться этим с тобой.

На следующей неделе, во второй части этой серии, ты узнаешь, как применить только что обретённую AI-интуицию к собственному продукту.

Больше материалов от Tal и Aman — в их подробном воркшопе Build AI Product Sense (начинается на следующей неделе, скидка 15% по этой ссылке) и в бесплатном Lightning Lesson How to Know What AI Products to Build совместно с одним из моих любимых коллаборейторов — Hilary Gridley. Ты также можешь заказать у Tal и Aman build sprint для своей команды.


Ты на встрече по продукту, кто-то упоминает «субагентов», «context engineering» или «agent memory». Ты киваешь. Ты знаешь, что означают эти термины... просто надеешься, что никто не попросит использовать их в предложении.

Ты смотрел видеообъяснения, добавлял инфографики в закладки, вайб-кодил приложения и даже запустил AI-фичу. Почему же по-прежнему кажется, что до настоящего понимания всего этого — ещё далеко?

Мы (Tal и Aman) оба проходили через это — снова и снова, пока строили AI-продукты для десятков тысяч клиентов. Дело не в тебе. Дело в «AI-хайп-машине». Большинство AI-контента создаётся, чтобы вызвать FOMO, а не чему-то научить: посты «эта модель НЕВЕРОЯТНА», демо, скрывающие грязную реальность, и диаграммы, которые запутывают больше, чем объясняют.

Мы обнаружили, что самой преобразующей привычкой для усвоения важных AI-концепций оказался отказ от потребительских интерфейсов (ChatGPT, Granola, Lovable) в пользу более мощных AI-агентов для кодинга — Cursor и Claude Code. Работа руками с агентами-кодерами помогла нам развить «AI product sense» — способность правильно предугадывать, что действительно окажется ценным для пользователей и что реально реализуемо с помощью AI.

AI product sense — это когда видишь тикеты поддержки о том, что AI «забывает» факты, и распознаёшь в этом context rot. Или наблюдаешь, как пользователь мучается с рабочим процессом, и уверенно говоришь, что здесь поможет agent memory, — и знаешь, как перестроить этот опыт.

За последние три месяца, используя Cursor для повседневных нетехнических задач, мы узнали о реальной работе AI-продуктов больше, чем за три года с ChatGPT. Это потому, что агенты-кодеры прозрачно показывают свою работу. Можно читать рассуждения AI, изучать вызовы инструментов и наблюдать, как заполняется контекстное окно. Ты натыкаешься на те же стены, что и инженеры, строящие AI-приложения, интуитивно находишь собственные решения и начинаешь предугадывать тренды и отраслевые анонсы.

Теперь мы проводим дни в Cursor и Claude Code для повседневной работы: стратегия, приоритизация, принятие решений, анализ данных и продуктивность. Они служат нам партнёрами по мышлению и личной операционной системой.

В этом посте мы проведём тебя через использование AI-агентов для нетехнической работы с продуктом:

Ты уйдёшь с уверенностью предугадывать технологии, а не гнаться за ними, и — в качестве бонуса — с личной AI-операционной системой. Вместе мы прокачаем наш AI product sense.

Шаг 1: Скачай Cursor

Cursor — безусловно лучший агент для кодинга, чтобы максимально быстро прокачать AI product sense.

Ты, наверное, везде слышишь про Claude Code, и мы его любим за делегирование долгих самостоятельных задач вроде вайб-кодинга. Cursor по-прежнему наш любимый инструмент для совместной работы с AI и возможности наблюдать за агентом в действии.

Cursor — это визуальный, кликабельный интерфейс, который работает с различными провайдерами AI-моделей, включая OpenAI и Anthropic. Это значит, что ты скорее всего сможешь использовать его на работе.

Скачать Cursor займёт две минуты. Сделай это прямо сейчас!

1. Скачай и установи Cursor. Для этого поста обязательно скачай и установи десктопное приложение, а не веб-версию Cursor.

Шаг 2: Создай новый проект

Открой Cursor, зарегистрируйся, пройди онбординг и нажми «Open project».

Если ты уже использовал Cursor раньше, нажми File > New Window, чтобы попасть на этот экран и открыть новый проект.

Нажми «New Folder»:

Назови папку «Build AI Product Sense» и нажми «Create»:

И наконец, нажми «Open» (да, непривычно нажимать Open на пустой папке, но просто сделай это — всё сработает):

Шаг 3: Продолжи этот пост внутри Cursor

Пристегнись, потому что дальше ты продолжишь знакомство прямо внутри Cursor — по мотивам детского научного шоу The Magic School Bus.

Если у тебя сейчас нет времени прокатиться на Magic School Bus, можешь продолжить читать ниже. Однако для прокачки AI product sense рекомендуем вернуться и попробовать продолжить пост внутри Cursor, используя промпт ниже.

Убедись, что ты в режиме «Agent». Это позволяет Cursor совершать действия (например, загружать этот пост из интернета).

В выпадающем меню «model» отключи «auto» и выбери Opus 4.5 🧠:

🎁 Небольшое отступление: мы дарим тебе бесплатные кредиты Cursor 🎁

Чтобы ты мог в полной мере ощутить возможности этого туториала, мы раздаём подписчикам Lenny's Newsletter $50 в виде бесплатных кредитов Cursor. Этого хватит примерно на 2,5 месяца стандартного использования. Огромное спасибо Ben Lang и команде Cursor за то, что сделали это возможным. Примечание: количество кодов ограничено, они могут закончиться. Не медли.

Как получить бесплатные кредиты Cursor:

1. Зайди на Cursor.com/dashboard и зарегистрируй аккаунт.

2. Оформи годовую (или Insider) подписку на Lenny's Newsletter.

3. Получи бесплатный код Cursor (прокрути вниз, чтобы найти Cursor), нажми кнопку для активации кода, и ты увидишь экран ниже:

4. Нажми «Get Started», чтобы применить кредиты к своему аккаунту. [Кредиты можно активировать как на бесплатном, так и на платном аккаунте.]

5. После активации кредитов в панели управления Cursor должен появиться этот блок. [Если кредиты не видны — попробуй жёсткое обновление страницы или выйди и войди снова. Если не помогает, напиши на [[email protected]](/cdn-cgi/l/email-protection#d7bfbe97b4a2a5a4b8a5f9b4b8ba) и упомяни этот пост.]

6. Наконец, тебе нужно перейти на план Pro (или выше), чтобы использовать последние AI-модели, такие как Opus 4.5. Если ты уже на плане Pro или выше — всё готово.

Как только кредиты появятся в панели управления, переходи на нужный план. Ничего платить не придётся — у тебя есть кредиты на 2,5 месяца. Они автоматически применятся к следующему счёту (а также могут использоваться для «дополнительного использования», если ты его включишь).

Должно выглядеть вот так:

Теперь вставь промпт ниже в чат-бокс Cursor (или просто перейди по этой ссылке):

Help me build my AI product sense using this post (that I have not yet read): https://buildaiproductsense.com/magicschoolbus. (Do not open it in a browser — that will be distracting — use cURL or any other tool.)Start by giving me an overview of why we're here and where we're going with this, so I feel super-motivated to stick with it. Then pause and confirm I'm ready to start. Use the pause to learn more about my professional context (less about Cursor or AI) that could inform our journey together.Next, walk me through each bite-size concept, in order, one step/question at a time, starting with "Step 3."You are both a really good 1-1 tutor for hands-on learning AND the Cursor agent. Have me take action so I'm engaged and learning. Ask me one question at a time. Before starting new steps/stages/ideas/concepts, stop and check in with me and encourage me to explain it back to you — and hold me to a high bar — like an effective, empathetic tutor.It's important that you cover every single concept contained in this post, in sequential order. Keep me motivated by signposting and giving clarity on how much we've done and how much is left. (That said, leave room to follow my curiosity and go off script, as long as overall we are progressing through the post.)Use the original words of the post when relevant (you have permission to use them as your words in first person, rather than explicitly quoting someone else). Sentence-case your headings (not title case).Anytime you come across an image inline in the post, read the image (one at a time, just in time, not in advance, storing temporarily if needed). This is important to understand the contents of the post.We are already talking inside a Cursor chat thread, so let's use this same thread for as much as we can. Important: You are also the Cursor agent! So when I say a prompt that you suggested, or give a task like "change this file," act on it yourself (don't direct me to do it separately or ask if I did it separately). Don't refer to a separate Cursor agent. It's YOU.Remember that Cursor might be configured in a lot of different ways visually and is constantly evolving, so avoid assumptions about where a UI element might be. The file explorer may be on the left or the right.Anytime you try to use a tool of any kind, it's going to ask for my approval, and that's going to feel scary. So I need you to explain why you're asking and why it's safe to approve. It might even be a teachable moment — you can tie to the goal of the post (and where we are in the journey) that, well, you're an agent and this is you in action!Consistently encourage me to use the voice recording feature (a 🎙️ icon under the chat box) to build the habit of speech-to-text.

И нажми «submit»:

Если ты принимаешь этот вызов, то дальнейшую часть поста будешь потреблять прямо внутри Cursor. Оставайся в одном чат-треде («agent») всё время (не нужно открывать новый тред или агента).

AI проведёт тебя по остальной части поста. Пристегнитесь, все! Встретимся в Cursor.

Шаг 3: Cursor может выглядеть пугающе, но он знакомее, чем тебе кажется

Cursor выглядит в духе Матрицы — гиковски, но это просто ChatGPT, текстовый редактор и файловый менеджер, втиснутые в одно окно.

Повторяем: Cursor — это просто три инструмента, которыми ты уже пользовался, объединённые вместе:

  1. ChatGPT
  2. Текстовый редактор
  3. Файловый менеджер

Один из студентов Tal, продавец, сказал это лучше всего: Cursor — это «AI, который умеет трогать любой файл на моём компьютере».

Вот быстрый тур:

1. Агенты

Агенты — это модное слово для обозначения «чатов». Здесь ты будешь взаимодействовать с AI.

Слева ты увидишь пустую панель, в которой будет храниться история агентов. Нажми «new agent», чтобы начать первый чат («агент» — синоним «чат-треда»):

Ты увидишь знакомый чат-бокс. Нажми на выпадающее меню в нижнем левом углу. Можно выбрать между режимами «Ask» и «Agent» (остальные опции — Plan и Debug — пока игнорируй).

Режим «Ask» — это использование Cursor как классического ChatGPT: для разговора без каких-либо изменений. Это отлично подходит для брейнсторминга или вопросов перед тем, как предпринять действие. Можешь сразу начать использовать его вместо обычного ChatGPT/Claude.

Режим «Agent» — для случаев, когда мы хотим, чтобы Cursor изменял файлы в нашем проекте. Мы воспользуемся им совместно уже через минуту.

2. Редактор

Мы будем использовать эту панель для просмотра и ручного редактирования текстовых файлов. Это то же самое, что TextEdit на Mac или Блокнот в Windows. Чтобы увидеть текстовый редактор, возможно, придётся создать новый файл или дважды кликнуть на существующий.

3. Файловый менеджер

Файловый менеджер показывает все файлы и папки в твоём проекте. Это то же самое, что Finder на Mac или Проводник в Windows; он может располагаться справа или слева от Cursor в зависимости от версии. Чтобы развернуть его, возможно, придётся кликнуть на маленький значок вверху окна. (Всегда можно использовать Ctrl + B в Windows или Cmd + B на Mac.)

Даже если Cursor поначалу кажется пугающим, основные концепции те же, что и в любом другом LLM, который ты уже использовал. В Cursor просто чуть больше настроек, опций и возможностей для игры. Это твоя песочница для развития интуиции.

Cursor — наш выбор для реальной работы, а не только для изучения AI-концепций

Если ты уже создал своего AI-партнёра по мышлению внутри ChatGPT или проектов Claude, ты, вероятно, задаёшься вопросом: стоит ли переходить на Cursor? Важно сказать: вне зависимости от понимания технических концепций, мы теперь проводим большую часть дня в агентах-кодерах — для нетехнических задач.

Так в чём практическая разница и почему мы перешли? Во-первых, Cursor по сути — та же идея, что и ChatGPT Projects: файлы как знания, чат как интерфейс, инструкции, которые всегда применяются.

Два небольших различия в форм-факторе меняют всё:

Это создаёт плотную петлю, в которой каждый чат автоматически улучшает базу знаний проекта (но только когда ты говоришь агенту это делать). В проектах ChatGPT история и результаты живут в длинных чатах. Ты вручную копируешь всё обратно в базу знаний. В Cursor результаты живут в документах, а чаты становятся одноразовыми, потому что ценность — в документах, а не в истории переписки.

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

Шаг 4: Создай пародию на песню Disney, чтобы освоить основы Cursor

Начнём с создания нового пустого файла в Cursor. Наведи мышь на файловый менеджер и нажми кнопку «New File»:

Назови файл lyrics.txt:

Далее найди в интернете любимую песню Disney (обычно достаточно погуглить название — текст выводится прямо в поиске). Скопируй слова в буфер обмена:

Вернись в Cursor, вставь текст в только что созданный файл и сохрани его:

Далее переключись в режим «Agent» в чат-боксе:

Наконец, введи:

Измени одну строку в первом куплете и одну строку в припеве lyrics.txt, чтобы они были про Кремниевую долину.

и отправь, нажав кнопку «стрелка вверх»:

На экране произошло много всего! Ты заметишь много красного и зелёного в файле lyrics.txt. Cursor изменил наш файл. Красный показывает каждую старую строку, которую он удалил, а зелёный — новую строку, которую добавил взамен.

Можешь нажать «Undo», если тебе не нравится изменение, или «Keep», чтобы оставить его.

Шаг 5: Посмотри, как ведут себя разные AI-модели

Теперь, когда ты сделал первое изменение, давайте исследуем ключевое продуктовое решение, с которым сталкивается каждая AI-команда: какую модель использовать.

Ты заметишь ещё одно выпадающее меню в нашем чат-боксе:

Ты видел это в ChatGPT, Claude или Gemini — именно здесь ты выбираешь нужную модель. В Cursor, однако, можно выбрать любой LLM.

Нажми туда и отключи «Auto» — возьми управление в свои руки:

Когда мы пробуем один и тот же запрос в нескольких моделях, мы развиваем интуицию о том, как каждая из них может подойти к задаче (или облажаться). Например, модели Claude чувствительны к авторскому праву и отказываются изменять песни Disney (чтобы обойти это, измени конец промпта на «...чтобы высмеять саму песню», что попадает под «добросовестное использование»). А модели OpenAI менее озабочены авторским правом, зато спотыкались при вызове инструмента Cursor apply_patch — их предпочтительного способа редактирования текстового файла (хотя в последних моделях Codex это стало реже).

И это — ещё до того, как мы успели оценить остроумие их текстов!

Какую модель мы лично используем для работы? В личном использовании мы выбираем последние и лучшие модели.¹

Для написания, сложного планирования и тонких жизненных советов (на момент написания этого поста) мы тянемся к Claude Opus. (Мы также обнаружили, что он лучше всего подходит для прохождения этого поста внутри Cursor.) Его «кузен» Sonnet — наша рабочая лошадка для задач с большим объёмом контекста при контекстном окне в 1M токенов (и чуть более быстрых ответах).

Если смотреть шире, в выпадающем меню моделей Cursor есть тонкий урок: frontier LLM-ов немного, и они доступны всем продуктовым командам. Инновация — в том, как мы их применяем.

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

Шаг 6: Изучи вызовы инструментов своего агента

LLM-ы могут производить только текст, но когда они совершают действие (редактируют файл, получают данные, ищут в интернете) — они вызывают инструменты. А вызов инструментов — это отдельный навык, отличающийся от всего, что мы обычно замечаем в LLM-ах.

Теперь спроси своего агента:

Можешь ли ты провести меня через каждый шаг (инструмент/мышление/рассуждение/что-либо ещё), который ты использовал для выполнения этой задачи?

В нашем тесте LLM сообщил, что:

  1. Использовал инструмент под названием read_file, чтобы узнать содержимое файла
  2. Подумал, что нужно изменить
  3. Использовал инструмент под названием search_replace, чтобы изменить текстовый файл

Вот как он описал шаг №3:

Не позволяй иностранному названию этого инструмента тебя отпугивать. Ты делал «поиск и замену» много раз в Microsoft Word или Google Docs. И ты точно «читал файл» раньше.

(Кстати, это ещё одно место, где модели различаются в подходе! Gemini стабильно выполнял эту задачу за три вызова инструментов, а Opus — за два. Попробуй сам и убедись.)

Агенты-кодеры выполняют большую часть работы с небольшим набором инструментов для навигации по файлам и редактирования текста. Чтобы увидеть полный набор, спроси его:

Перечисли все доступные тебе инструменты.

У большинства этих инструментов знакомые имена; ты точно когда-то просматривал содержимое директории и удалял файлы. Другие, например read_lints и run_terminal_cmd, чаще встречаются в разработке программного обеспечения (хотя агенты-кодеры могут использовать их и для нетехнических задач).

Как LLM на самом деле вызывает инструмент? LLM не может выполнять команды на твоём компьютере, поэтому он полагается на Cursor. Думай об этом как о найме мастера на все руки. LLM описывает, что нужно сделать, но не может держать молоток. Cursor — это мастер: он слышит запрос LLM, использует инструмент и возвращает результат, чтобы тот мог решить, что делать дальше.

Cursor распознаёт, когда LLM печатает название инструмента (как выше), и выполняет этот инструмент на твоём компьютере. После завершения работы инструмента Cursor возвращает результат LLM (то есть успешный результат или сообщение об ошибке), чтобы тот мог решить, что делать дальше. (Если ты слышал термины «MCP client» или «agent harness» — оба описывают роль Cursor здесь.)

То, как LLM взаимодействует с инструментами, до жути похоже на то, как он взаимодействует с людьми. Если рассматривать «классический ChatGPT» как личную переписку между LLM и человеком, то AI-агенты — это трёхсторонний групповой чат между LLM, человеком и инструментами.

Теперь, когда кто-то спрашивает: «Может ли наш агент сделать X?» — ты инстинктивно подумаешь: «Какие инструменты ему для этого нужны и насколько хорошо наша модель умеет их вызывать?» Это также связывается с выбором модели: дело не только в том, чтобы выбрать «самую умную». Вызов инструментов — это отдельное поведение, отличное от рассуждений или качества письма.

Стоп, а что такое «MCP», о котором я постоянно слышу?

Для большинства организаций самые ценные данные живут не в локальных текстовых файлах, а во внешних SaaS-сервисах. Чтобы LLM мог взаимодействовать с Linear, Figma, Notion, Snowflake, BigQuery, Amplitude или Mixpanel, эти сервисы должны предоставить LLM кастомные инструменты.

Обычно каждая SaaS-компания должна была бы создавать отдельную интеграцию для каждого LLM. Чтобы избежать этого хаоса, индустрия приняла стандарт под названием Model Context Protocol (MCP). Теперь каждой SaaS-компании достаточно создать один коннектор, который работает везде.

Если это напоминает USB или Bluetooth — аналогия верная. Продолжая сравнение: большинство инструментов агентов — не MCP, точно так же как большинство электрических проводов не имеют форму USB-штекеров. Для простоты: MCP — это просто ещё один инструмент, который может использовать агент, со стандартизированным интерфейсом.

Шаг 7: Применяем всё на практике — строим личную ОС внутри Cursor

Теперь, когда мы понимаем, как агенты работают в целом, давайте создадим персонализированного AI-агента для себя, чтобы увидеть, как компоненты Cursor собираются вместе.

Мы собираемся построить очень лёгкую, минималистичную личную систему продуктивности, которая организует контакты из разных сфер нашей жизни — заметки, транскрипты и неструктурированные мысли, а также задачи, которые нужно выполнить. (Это позволяет временно игнорировать дистрибуцию, обнаружение и ценообразование. Мы сосредоточимся на том, что технически возможно.)

К концу этого упражнения ты сможешь просить Cursor создавать задачи из своего бэклога и приступать к ним на основе контекста, который ты предоставил в базе знаний и целях. В процессе мы познакомимся с RAG, памятью и context engineering и создадим ключевые части продуктового мышления.

Для начала скопируй и вставь следующий промпт в Cursor (убедись, что ты в режиме «Agent»):

Create a minimal personal productivity system:

## Structure
├── Knowledge/ # Notes, research, thinking
├── Tasks/ # Action items as Markdown files
├── GOALS.md # Goals and priorities
└── AGENTS.md # AI assistant instructions

## AGENTS.md should instruct the AI to:
- Be a productivity assistant for goals and tasks
- Never write code — only Markdown
- Keep tasks tied to goals
- Suggest max. 3 daily priorities when asked
- Be direct and concise

## After creating:
1. Say: "Created your workspace with Knowledge/, Tasks/, GOALS.md, and AGENTS.md"
2. Ask: "What are your current goals? Once you share them, I'll add them to GOALS.md"
3. Ask: "What tasks are you working on? I'll create initial task files in Tasks/ linked to your goals"
4. Populate GOALS.md and Tasks/ from answers

(Опционально, ты можешь склонировать личную ОС. Подсказка: можешь скопировать и вставить ссылку в чат Cursor и попросить его склонировать репозиторий.)

Cursor должен создать две директории (папки): Tasks и Knowledge. Он также создаст файл GOALS.md, в котором должны быть твои личные цели. В этот момент Cursor задаст несколько уточняющих вопросов, чтобы начать наполнять твою личную ОС контекстом — например: «Каковы твои цели?» и «Над чем ты работаешь?»

Поздравляю! Теперь ты PM своего собственного AI-продукта. В следующих разделах мы используем его, чтобы на практике ощутить RAG, память агента и context engineering. Только теперь ты будешь чувствовать их, а не просто читать о них.

Шаг 8: Тестируем retrieval augmented generation (RAG) с личной ОС

Когда AI-продукт даёт неверные ответы, первый порыв — обвинить модель. Прежде чем тянуться к более крупной модели или дорогому fine-tuning, спроси себя: а есть ли у агента вообще нужная информация?

Давайте спросим Cursor: «Что в этом репозитории? Объясни мне как продуктовому менеджеру» — и посмотрим, что он ответит.

💡 Этот промпт невероятно мощный практически для любого репозитория или папки, которые ты открываешь в Cursor и Claude Code. Рекомендуем начинать с него при открытии любой новой кодовой базы.

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

В нашем случае агент будет искать по твоим файлам и папкам, чтобы предоставить контекст LLM. Существует много разных способов, которыми LLM-ы могут искать файлы в кодовой базе или даже находить данные из интернета для использования в ответе. В конечном счёте, будь то Perplexity, Google AI Mode, Claude Code, Cursor или что-либо другое с термином «RAG» — это некий механизм, который извлекает документы и начинает чат с этими документами.

Также можно тегировать конкретные файлы в Cursor с помощью символа @, если хочешь, чтобы агент ссылался на конкретные части контекста.

RAG заполняет контекстное окно тем, что актуально прямо сейчас. Но некоторый контекст (кто ты, как ты любишь работать) должен присутствовать каждый раз. Вот здесь в игру вступает память.

Шаг 9: Добавляем память агента с AGENTS.md

LLM-ы не имеют состояния, поэтому мы любим представлять их как гениев Mensa с кратковременной памятью хомяка. Каждый новый чат-тред — чистый лист, поэтому, если хочешь непрерывности, нужно её спроектировать. Как PM-ы, мы должны задаться вопросом: что должно сохраняться и как?

Одна из форм контекста, о которой ты, возможно, слышал применительно к AI-агентам, — это память. Память может включать факты о нас, а также предпочтения относительно того, как мы хотим, чтобы наши LLM-ы вели себя и взаимодействовали с нами. Мы также можем быть более намеренными и проактивными в том, как мы курируем память AI.

Все агенты-кодеры сегодня следуют соглашению под названием AGENTS.md. Это Markdown-файл, который при обнаружении в любой директории автоматически добавляется в начало каждого чат-треда.

(Быстрое уточнение: AGENTS.md — это не «субагенты». Субагенты — это когда один чат-тред порождает другой чат-тред для выполнения подзадачи. AGENTS.md — это просто инструкции, он ничего не порождает. Думай об AGENTS.md как о «стикере на каждом разговоре», а о субагентах — как о «делегировании коллеге».)

Дай этому осесть: память — это просто текстовый файл, добавляемый в начало каждого разговора. Никакой магии. Но это также означает, что память имеет стоимость — всё, что ты помещаешь в AGENTS.md, занимает место в контекстном окне каждого чата. Слишком много памяти — и для всего остального остаётся меньше места. Поэтому важно намеренно решать, что идёт в память (постоянное, всегда актуальное) в сравнении с тем, что ты извлекаешь по требованию с помощью RAG (специфичное для задачи).

Примеры того, что можно найти в AGENTS.md партнёра по мышлению:

Курируя собственный AGENTS.md, ты начинаешь чувствовать, что действительно полезно, а что — шум. И это именно та интуиция, которая нужна тебе при проектировании памяти для своих пользователей.

Память, RAG, определения инструментов, история разговора — всё это занимает контекст. Теперь, когда ты понимаешь, что делает каждый из них, следующий вопрос: как уместить всё в ограниченное окно? Это и есть context engineering.

Шаг 10: Context engineering для личной ОС

Всякий раз, когда ты перетаскивал файл в ChatGPT, говорил что-то, что становилось частью его памяти, начинал разговор с глубоким исследованием или создавал проект со специальными инструкциями и базой знаний, ты занимался context engineering.

Даже используя Cursor вместо ChatGPT, ты всё равно будешь начинать каждый тред с вопроса: «Какой контекст нужен этому разговору?» Например, написание PRD может начинаться с перетаскивания в окно Cursor любого из следующего:

Попробуй сам: перетащи несколько PDF, Markdown-файлов из Google Docs или Word-документов, над которыми ты работаешь, в папку Knowledge в Cursor, и попроси Cursor развернуть одну из тем или задать тебе вопросы перед тем, как приступить к работе.

Собирая всё вместе, ты можешь начать чат-тред в Cursor примерно так:

Промпт для Cursor:

Я хочу, чтобы ты развернул тему по этому @file (замени на свой реальный файл, например, этот пост). Я хочу, чтобы ты был партнёром для меня и задавал мне по одному вопросу за раз, пока мы приходим к подходу. Мне было бы здорово, если бы ты поискал что-нибудь ещё, актуальное для этого документа. Можешь также создать несколько идей для дальнейшего изучения и превратить их в файлы tasks.md в папке Tasks, основываясь на нашей дискуссии.

Context engineering в Cursor происходит двумя способами: (1) то, что ты выбираешь включить при каждом запуске чата (перетаскивание файлов, включение инструментов), и (2) то, что автоматически включается каждый раз (например, AGENTS.md, MCP или инструменты). Это очень много контекста!

Контекст — ограниченный ресурс: LLM-ы имеют жёсткий лимит на объём текста (то есть токенов), с которым они могут работать. Это называется «контекстным окном».

В разговорном чат-боте на базе LLM (как ChatGPT или Claude) контекст растёт с каждым ходом разговора: последний ответ LLM становится частью входных данных следующего хода. Если ты когда-либо получал уведомление о достижении лимита чата — ты, скорее всего, упирался в контекстное окно:

https://platform.openai.com/docs/guides/conversation-state

Агенты-кодеры восхитительно прозрачны в вопросе того, сколько ты использовал контекстного окна. В Cursor наведи мышь на маленькую круговую диаграмму прямо под чат-боксом (возможно, придётся увеличить ширину панели чата, чтобы её увидеть).

Мы следим за ней, как за уровнем топлива в машине. Это помогает интуитивно понять, как ощущается контекстное окно в 200K или 1M токенов и насколько быстро оно на самом деле заканчивается. Лучший способ понять расход топлива конкретной машины — поездить на ней.

В агентном LLM-приложении контекстное окно может содержать значительно больше:

https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents

Диаграмма Anthropic теперь кажется знакомой? Несмотря на то что она про AI-приложения, она удивительно похожа на наш более ранний пример с написанием PRD. Правда здорово?

Когда ты настраиваешь AI делать всё возможное в рамках ограниченного контекстного окна — ты занимаешься «context engineering».


Определения инструментов, RAG, память, цели — всё это конкурирует за одно ограниченное контекстное окно. То, как ты заполняешь это окно, определяет качество работы агента. Это тот же компромисс, с которым сталкивается каждая команда AI-инженеров при создании продакшн-приложений — только теперь ты ощущаешь эту проблему изнутри. Нет идеальной формулы для этого.² Что включить — зависит от задачи, модели и того, чего ты хочешь достичь. Интуиция развивается через опыт (и регулярное использование личной ОС).

Осторожно: «context rot»

По мере использования всё большего количества контекста ты заметишь, что твои треды могут становиться тупее и забывчивее задолго до приближения к максимуму. Этот эффект называется context rot. Если коротко: производительность модели ухудшается по мере того, как ты набиваешь в контекстное окно всё больше токенов.

Context rot — размытое явление. Насколько сильно ты его ощутишь, зависит от задачи и особенностей обучения конкретной модели. Ты почувствуешь context rot (и деградацию качества) меньше в задачах вроде творческого брейнсторминга и больше — в задачах, требующих точности: финансовых расчётах, кодинге или анализе данных.

Лучший способ почувствовать context rot — использовать LLM для задач, которые тебе действительно важны. Старайся следить за счётчиком токенов Cursor и, по мере его заполнения, обращай внимание на качество вывода. Когда в треде больше контекста, агент становится лучше или хуже? А что если попробовать новый тред? Мы обнаружили, что это забавная, захватывающая игра — чем-то похожая на езду в гибридном автомобиле, когда замечаешь, как он переключается с батареи на бензин. По пути ты строишь интуицию, которая уходит дальше любых академических графиков.

Заключение

Для нас сдвиг к настоящему, истинному пониманию AI-продуктов произошёл, когда мы день за днём наблюдали за работой агентов. Cursor позволил нам следить за тем, как AI-модель блуждает по задаче: читает наш контекст, выполняет RAG, пробует вызов инструмента, натыкается на ошибку, рассуждает, пробует другой инструмент...

Вот тогда всё встало на свои места: Cursor — это просто AI-продукт, как и любой другой, состоящий из текста, инструментов и результатов, перетекающих обратно в текст, — только Cursor работает локально на нашем компьютере, поэтому мы можем наблюдать за ним в работе и учиться. Как только мы смогли разложить любой AI-продукт на те же строительные блоки, наш AI product sense пришёл естественно. Теперь, прочитав этот пост, ты можешь тоже.

Когда появляется что-то впечатляющее, ты можешь теперь сделать вдох и разложить это на части. Агент, играющий в Settlers of Catan 75 минут. Пугающе персонализированный итог года от Granola. Тематический по омарам Claude Code с полным контролем твоего компьютера, который может настроить любой желающий. Можно просто спросить себя: как воспроизвести это внутри Cursor? Если бы мне пришлось «сыграть Волшебника» на своём компьютере, какие знакомые части я бы собрал? Магия по-прежнему восхищает — просто уже без мистики и FOMO.

Лучшие идеи рождаются, когда интуиция в отношении людей и технологий сосуществует в одном мозгу. Когда ты ежедневно используешь агентов-кодеров, начинаешь чувствовать, что легко, что сложно и что только что стало осуществимым. Словами Paul Buchheit: когда ты по-настоящему понимаешь AI-продукты, ты будешь «жить в будущем».

Спасибо, Tal и Aman! Больше материалов — в их подробном воркшопе Build AI Product Sense (начинается на следующей неделе, скидка 15% по этой ссылке) и в бесплатном Lightning Lesson How to Know What AI Products to Build совместно с одним из моих любимых коллаборейторов — Hilary Gridley. Ты также можешь заказать у Tal и Aman build sprint для своей команды.

Продуктивной и насыщенной тебе недели 🙏


Если этот newsletter приносит тебе пользу, поделись им с другом и подумай о подписке, если ещё не оформил её. Доступны групповые скидки, подарочные варианты и реферальные бонусы.

Искренне твой,

Lenny 👋

Думая о построении AI-продуктов в масштабе, мы стараемся держать руку на пульсе того, на что способны небольшие, дешёвые и быстрые модели. Время от времени мы перезапускаем задачу в Claude Haiku, Gemini Flash или GPT mini, чтобы почувствовать их скорость, навыки вызова инструментов, суждение и характер. Переключение моделей для задач, которые нам действительно важны, помогает замечать важные нюансы и учит нас больше, чем любые бенчмарки или хайп.

Чтобы не набивать всё в контекстное окно заранее, AI-инженеры постоянно придумывают разные творческие решения. Вот лишь несколько:

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