AI и грабли
7.17K subscribers
149 photos
19 videos
4 files
189 links
Строил HR продукты для американского бигтеха. Внедряю AI в чужой бизнес, делаю свой, косячу и пишу про подноготную

@nikolay_sheyko
Download Telegram
Кто побеждает?
Anonymous Poll
42%
Вариант 1
58%
Вариант 2
Эксперимент закончен, поболтаем про результаты:

Главный вывод, судя по комментам, что оба варианта так себе 😅

И это правда, но почему?

У меня тут две мысли

1. Заметили один интересный эффект – когда LLM вытаскивала текст, она взяла все 5 предложений из выделенных автором блоков

Если убрать выделение, отформатировав их как весь остальной текст, результат получается интереснее:

Ты просто говоришь, что любая новая идея провалится и в 98% случаев ты будешь прав. Потому что 98% идей действительно провалятся. Вот только ты так и останешься в жопе с таким критическим мышлением.

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

Крайности всегда приятны и хорошо видны, но в долгосрочной перспективе не имеют смысла. Я всегда могу занять сначала одну позицию, потом другую, потом снова первую, и буду «жизой» для одних и «лол дурачком» для других.

Когда приходит время действовать, «оставаться посередине» — самое херовое, что можно делать

Для себя — оставайтесь посередине. Для других — будьте самым отбитым психопатом, которого они только встречали


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

2. Ну а главная причина: 5 предложений – слишком мало.

Я не просто так в оригинальном посте писал про 20. Обычно первые результаты LLM всегда очень банальны. Поэтому часто вообще прошу что-то вроде:

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


———

Так что мы осознанно пошли с n = 5, чтобы уместить оба варианта в один пост и не перегружать "жюри"

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

Формально победил LLM вариант. Но с небольшим отрывом.

Неформально, я согласен с комментарием @nobilix – LLM выигрывает гибкостью.

Отдельное спасибо @izpodshtorki за готовность поучаствовать в такой активности

P.s. посмотреть результат работы с 20 предложениями можно в комментариях
19🔥3👍2🤝1
Как хостить свои ИИ поделки не превращаясь в девопса

Сначала обозначим, что вообще нужно уметь:

1. Настраивать автодеплой, чтобы как только мы пушим код на гитхаб, продакшн обновлялся соответственно

2. Связывать доменные имена с конкретным контейнером на нашем сервере (привет, nginx)

3. Настраивать выдачу и обновление SSL сертификатов (привет, certbot)

4. Бэкапы 🫡

5. (Задача со звездочкой*) Деплоить разные окружения. Сделали экспериментальную ветку, захотели быстро протестить, как работает. Спустя два часа перехотели.

———

И тут у нас вариант идти к Vercel, но во-первых про них и так все знают, а во вторых, это облачное решение, со своими минусами. Self-hosted альтернатива – Coolify.

Для запуска нужен VPS (сервер, где будет крутиться и Coolify и всё, что он будет нам деплоить). Они у себя на сайте предлагают партнерскую скидку на Hetzner, а я по приколу предложу дешманский сервер в штатах за 10 баксов в год (можно платить криптой).

Что получаем:

Все 5 пунктов выше можно делать и руками – писать конфиги не сложно, но нужно знать и помнить как, куда и зачем. Еще и не полениться для каждого нового проекта пройти по всем стандартным шагам. А можно просто накликать в веб-интерфейсе, и все стандартные кубики соберутся за вас.

Очень удобно, когда много мелких проектов – можно ими жонглировать в пару кликов. Особенно, если вы не очень дружите с консолью и unix, а вайбкодить хочется и можется.

Короче, Coolify – неплохой компромисс между удобством облачных платформ и контролем self-hosting
521👍14🔥3🤝2🤡1🌚1
Самый полезный пост за последний месяц

Потому что не один пост, а целая куча отборных постов – если бы нужно было поделиться каким-то одним каналом по ИИ, это был бы канал Рефата.

Не знаю, как он это делает, но на его постах я чаще всего ловлю себя на ощущении "блин, почему это написал не я?"


Короче, что мне нравится:

- Он кофаундер devstark.com и spreadsimple.com => гораздо ближе к реальности, чем просто технари

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

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

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

- Ну и Рефат – просто приятный человек в общении (почему-то мне такое очень важно)

———

Кстати, его канал органически растет быстрее всех похожих, включая мой – значит подписчики стабильно его репостят, а это для меня один из главных показателей качества.

В общем, если читаете меня, то его канал вам скорее всего тоже зайдет. Подписывайтесь, от души рекомендую
1🔥1510👍1
Gemini умеет еще больше, чем я думал

Еще в версии 2.0 они научили ее нативно генерировать bounding boxes для детектирования объектов (разноцветные квадратики на картинке)

Но в версии 2.5 ее вообще научили сегментации – определять границу (заливка).

А еще, есть экспериментальный режим, который позволяет детектить объекты в 3D (вторая картинка)

Теперь можно очень дешево и быстро делать сложные штуки, которые стоили бы миллионы для бизнеса.

Я накидал немного идей применения в разных сферах – мб где-то сработает аналогия с вашими задачами и поймете, что это то, что нужно

🔍 Детектирование:

1. Подсчет

- Автомобилей на парковке или на дороге

- Контейнеры на складе

- Количество покупателей в магазине (чтобы Галя пришла на кассу уже)

- Трекинг – перемещение чего угодно по камерам (хоть сотрудник по складу, хоть мяч по полю)

2. Поиск нарушений

- Рабочий без каски

- Припаркованный в запрещенном месте автомобиль

- Детектирование полки с закончившимся товаром

———

🧩 Сегментация

1. Измерение размера:

- Габариты посылок на ленте

- Для агро – определение площади полей с сорняками

- Медицина – определения границ и объема опухоли

2. Форма:

- Модерация контента – автоматически замазывать запрещенный контент на фото

- Определение брака – сегментируем деталь, сравниваем контур с эталонным

- Опять медицина – помню кейс про определение формы эритроцитов для диагностики болезней

———

Подробнее можно глянуть тут
32🔥18👍9
Мир ушел из точки, где ИИ в разработке использовали только энтузиасты . Я знаю все больше серьезных инженеров, которые перестроили свой процесс работы на кодинг с ИИ (не путаем с вайб-кодингом!)

Удивляет, что бизнес тоже очень активно пушит эту тему – закупают Cursor, меняют процессы внутри компании, проводят обучения для сотрудников

Но вообще-то есть пару проблем

Во первых, расплодилось огромное количество инструментов и теперь просто не понятно что использовать. Твиттер стабильно бомбит то на Github Copilot, то на Cursor, то на Claude Code и все по новой. И появляются все новые. А кто-то вообще делает инструменты под себя (спойлер)

А даже если с инструментом определились, то есть же куча разных подходов, хаков и дополнительных тулов, с которыми тоже ничего не понятно.

MCP это хорошо? А какие? А я слышал там что-то про task-master, мне это нужно? Агенты-агенты-агенты, ааааа. Субагенты?? А что такое spec-driven разработка? Может лучше TDD? Аааааааааааа

———

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

Будем разбираться с @gleb_pro_ai, @the_ai_architect, @ai_driven и @kdoronin_blog, как и зачем делать свою тулу для разработки, почему это может быть плохой идеей и какие есть альтернативы, а на сладкое оставим «50 оттенков проверки качества кода»

Но может быть все пойдет совсем по-другому

В любом случае, приходите в четверг 28 августа в 16:30 (мск). По плану где-то час на наши разгоны, пол часа на вопросы (мне кажется, это вообще самое ценное – будет время вытащить из ребят их уникальный опыт, а его достаточно)

Добавляйте напоминалку в календарь и делитесь с тем, кому может быть интересно
2🔥3994🤝3😁1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
(Не)бесплатная реклама

Я тут буду проводить воркшоп для продактов на одной фэнси конфе по ИИ для продактов и дизайнеров. И орги мягко поинтересовались, могу ли я написать про конфу у себя в канале.

Просто пиарить было не интересно, так что я "выбил" своим подписчикам один бесплатный билет, чтобы разыграть его между самыми оригинальными:)

Пишите в комментах под этим постом забавные/интересные/креативные применения, которые вы придумали ИИшке. Устроим краудсорсинг. А вариант, который мне понравится больше всего к 14:00 понедельника, получит бесплатный билет:)

Ребятам пиар, моим подписчикам билетик за 10к, а мне веселье и лояльность подписчиков

———

А теперь про конфу, и что я там забыл:

Конфа от wannabe – судя по одобрительной реакции некоторых знакомых на мое участие – у оргов очень хороший бренд

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

Кстати, позвали Влада, к которому я не так давно гонял на эфир, он будет учить вайбкодить тг бота за час 🔥 Лайк оргам.

Что буду делать я?

Уже раз 5 получал вопрос, что делать с данными, когда не влезают в контекстное окно

Условно, выгрузка отзывов о товарах в экселе на несколько тысяч строк


Мало кто пойдет писать скрипты параллельных запросов в OpenAI API или разбираться с n8n.

А вот гугл-таблички – для многих основной рабочий инструмент. Поэтому, будем вместе собирать себе за час в них магию как на видосике выше

———

Конфа в сб 30 августа с 11 до 17. Билет стоит 9900.

Лендос

Делитесь в комментах ваши интересные/забавные/неочевидные применения ИИ. Выберу получателя бесплатного билетика в пн в 14:00
110🔥5😱3
Запись эфира по RAGу без эмбеддингов (ссылка внизу поста)

Выписал самое важное и дополнил

Главные проблемы поиска на эмбеддингах:

1. Семантическая схожесть ≠ фактическая релевантность (слова те же, смысл другой)

2. Не учитывает "логические операции" в запросе ("и", "не")

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

4. Ломается на агрегации
"вот тебе посты из канала, проанализируй слабые и сильные места автора"

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

5. Короткие пользовательские запросы отличаются от длинных чанков документации. И по длине, и по формулировкам

6. Плохо работает с таблицами

———

Запрос пользователя:

"Какие отделы нашей компании, кроме отдела продаж, не выполнили KPI в последнем квартале?"


Догадаетесь, в чем будет проблема с эмбеддингами?

- "Отчет по итогам квартала: Отдел продаж блестяще выполнил KPI, показав рекордный рост!"
- "План на следующий квартал: всем отделам компании, включая отдел маркетинга, поставлена задача выполнить KPI."
- "В последнем квартале отдел разработки успешно выполнил все поставленные KPI."


———

Лечим симптомы (все еще эмбеддинги):

1. query rewriting/expansion и/или Instruction Awareness

2. Векторный поиск по саммари чанков, а для генерации ответа использовать их полный текст

3. Можно делать не просто саммари чанков, а генерировать возможные вопросы по ним и искать уже по вопросам

4. Добавлять текст соседних чанков на этапе Generation

5. reranking

6. Препроцессинг документов с сохранением структуры (marker-pdf, docling, unstructured)

———

Лечим причину:

1. Не используем эмбеддинги

2. В качестве search engine берем легковесную LLM. Прогоняем по страницам документа и выдаем им true/false в зависимости от релевантности вопросу (запросы к разным страницам идут в параллель => работает быстро)

3. Вместо 2 совсем наглеем и передаем в запросе сразу сотни страниц – просим выписать только номера релевантных (держим до 200-300к токенов на запрос, даже если окно 1м)

4. gemini-2.5-flesh круто с этим справляется, а главное – нативно кушает pdf без препроцессинга. Понимает таблицы и картинки 🔥

5. Релевантные страницы передаем в ризонинг модель для Generation как в "классическом RAG"

6. Не забываем Structured Output c промежуточными шагами размышлений (SGR)

———

Альтернативы (Для более структурированного поиска)

Для примера возьмем книгу рецептов и вопрос "что приготовить на ужин, если у меня есть лапша, фарш и 20 минут времени"

1. Сначала для каждого рецепта вычленить структурированные поля (ингредиенты, время приготовления, тип блюда – первое, второе, десерт и т.д.)

2. Сложить в SQL все извлеченные данные и исходный текст рецепта

3. Использовать text2sql, чтобы по запросу пользователя создавать search query

4. В Generation идут исходные текста рецептов

В реальности обычно создаем разные таблички в бд, потому что данные бывают разных типов с разными параметрами

В более простой версии этого подхода, тупо назначаем LLMкой "теги" разным кусочками текста и фильтруем по ним, а потом делаем классический RAG или сразу передаем в LLM


———

Общие мысли и ответы на вопросы

- Data preparation is a king

- Промежуточный вызов LLM – хороший reranker, даже для embedding-based подхода

- Всегда пытаемся передать ссылки на исходные блоки инфы. Увеличивает надежность и
тестируемость. Высший пилотаж – показывать не только страницы, но и конкретные строчки, на которые опиралась модель

- Иногда нужно вообще убрать этап Generation и просто показывать найденные куски информации

- LLM retrieval стоит сильно дороже, чем эмбеддинги, но для большого числа кейсов это ок. 1 доллар – все дешевле, чем пару часов сотрудника с зп в десятки баксов в час

Доп материалы:

Ссылка на сам эфир от @r77_ai (больше деталей, примеров и интересных вопросов от слушателей. сначала разгоняюсь, но потом жара начинается)

- Instruction Awareness
- Промежуточные шаги размышлений в Structured Output
- Кормим pdf в gemini через openai-compatible api
365🔥34👍149👎1😁1🙏1🌚1
Победитель моего мини-розыгрыша билета на ИИ конфу от wannable – Иван Евдокимов. GPT помогла понять в чем проблема с его машиной. По звуку. Работы. Двигателя. 🤯

Вот еще претенденты, мб кого-то вдохновит:

* NPC в игре, который отвечает в свободной форме
* Тренажер-симулятор для отдела продаж

На конфе я буду показывать, как делать ИИ-магию в гугл табличках – потому что гугл таблички есть у всех

Приходите в субботу (онлайн)
16🔥7😱2
Агент или Пайплайн?

Середина 25го года – хайп вокруг агентов начал перерастать в рабочие решения: claude code, perplexity labs, computer use и т.д.

Правда почему-то сейчас любые два запроса к API зовут агентом. А если еще с разными промптами, то, уууууу, аж система агентов.

Это бред. Большая часть того, что называют агентами – просто пайплайны – жестко заданные наборы шагов. Часть из них – запросы к LLM, часть – просто логика, например, запустить код, который сгенерировала LLM на прошлом шаге.

Агентность – способность системы самой принимать решения о типе следующего действия на основе результатов предыдущих.


Агентность – это шкала, а не бинарное значение. У системы ее может быть больше, а можем быть меньше. Как у людей.

Но для простоты, я использую вот такое разделение:

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

———

Примеры

Задача – сделать систему, которая будет отвечать на запрос пользователя используя информацию из интернета.


1. Сначала ищем странички, потом делаем запрос к LLM, подставляя их в контекст
relevant_sites = await search_google(query)
response = await generate_response(query, relevant_sites)

Агент? Нет – шаги жестко зафиксированы

———

2. Усложняем. Смотрим, что если нашли слишком мало страниц, то пытаемся поменять запрос пользователя и искать еще

relevant_sites = await search_google(query)
if len(relevant_sites) < 10:
optimized_query = await optimize_user_query(query)
more_sites = await search_google(optimized_query)
relevant_sites.extend(more_sites)

response = await generate_response(query, relevant_sites)

Вооо, теперь агент. Мы же не знаем заранее, по какому пути пойдем, да? Но решение принимает не ИИ, а программист, который написал if. Так что это тоже не агент.

———

3. Пишем агента. Теперь LLM сама определяет в check_enough_info, готовы ли генерировать ответ, или нужно добавить еще результатов.

relevant_sites = await search_google(query)

if not await check_enough_info(query, relevant_sites):
optimized_query = await optimize_user_query(query)
more_sites = await search_google(optimized_query)
relevant_sites.extend(more_sites)

response = await generate_response(query, relevant_sites)


Уже лучше, но на самом деле это еще не полноценный агент. Все равно явная последовательность шагов – модель выбирает только одну ветку, а дальше все снова определено. Но мы уже близко

———

4. Настоящему агенту нужно прописать набор действий и дать их совершать (подсовывая ему после выполнения каждого действия новую информацию в контекст)

state["query"] = query
state["sites"] = []

while "response" not in state:
next_step = await choose_next_step(state)
if next_step == "search_google":
state["sites"].extend(await search_google(query))
elif next_step == "optimize_query":
state["query"] = await optimize_user_query(query)
elif next_step == "generate_response":
state["response"] = await generate_response(query, state["sites"])


А чтобы делать такие системы надежными и масштабируемыми, нужно использовать Structured Output и определять шаги через pydantic/zod классы. Так задаем структуру размышлений для модели, чтобы она хорошо выбирала следующий шаг (SGR).

Почитать:

- Разгоняли с @neuraldeep в комментах про агентность, а через пару часов он сделал свой диприсерч всего в 600 строк кода. Особенно полезно посмотреть на pydantic классы
- База по SGR (structured guided reasoning) от @llm_under_hood
- Моя серия из 3 постов про structured_output
🔥4013🤝4
This media is not supported in your browser
VIEW IN TELEGRAM
Со скоростью мысли

Сегодня первый раз поработал с Cerebras. Это ребята, который делают свои чипы чисто под очень быстрый запуск нейронок. И я чет все еще под впечатлением от скорости: ~1000 токенов в секунду на qwen3 coder. Для сравнения у тупенькой gemini-flash-lite – 600 токенов.

Мне кажется, это открывает какие-то принципиально новые возможности для UX.

Не удержался и навайбкодил демку интерфейса для вайбкодинга 😅 – любая команда применяется почти мгновенно, и это даже без умных диффов – код переписывается с нуля каждый раз.

Ну что, ждем приложений, которые в реальном времени перестраиваются под пользователя?

———

Тестить тут, нужен впн и API_KEY от OpenRouter

Если нет, а потестить хочется, то вот вам мой с лимитом в два бакса, не хулиганьте сильно:
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
1🔥3412👍6😱2
This media is not supported in your browser
VIEW IN TELEGRAM
Кому зашел вчерашний пост? Я вам еще красоты принес

Меня тут не отпускает исследовательское любопытство, так что я прокачал UX, вообще удалив оттуда чат (!)

Теперь есть только одно поле с описанием проекта, а код перегенерируется на лету при изменениях в тексте.

Тестить тут (с впн)

API_KEY можете брать тот же

За идею спасибо @ai_news
🔥4410💔2
Ребят, хочу советы послушать

Меня я.практикум позвали делать большой блок про ИИ в их курс для CTO. Затрат по времени ~ 6 ч. в неделю на 3-4 месяца. По оплате – копейки, школьников к ЕГЭ выгоднее готовить

Так что главная плюшка – висеть как важный курица в списке авторов курса + теоретически выход на CTO, а я как раз готовлю курс по ИИ кодингу для команд разработки.

Кажется, что есть куда более полезные способы потратить время. Но мб чет упускаю. Что думаете?
👎3621🤔6💯3😁1
Август вышел продуктивным на посты, которые хорошо репостили

Напоминаю, если пропустили интересное:

1. Фильтрация вместо саммаризации – 142 репоста + 5 публичных + 1 спонтанная активность

2. Как хостить ИИ поделки не превращаясь в девопса – 102 репоста + 2 публичных

3. Тайные способности gemini и идеи применения – 72 репоста + 2 публичных

4. Конспект моего эфира у R77 по RAGу без эмбеддингов – 168 репостов + 2 публичных

5. Агент или пайплайн – 311 репостов + 12 публичных (спасибо @neuraldeep)

6. Со скоростью мысли (разгоны про будущее UX в свете Cerebras) – 80 репостов + 1 публичный

Спасибо всем, кто делится постами – благодаря вам про канал узнаёт еще больше интересующихся и интересных людей, а у меня все больше задора писать
219🔥10👍4
Циничная GPT

Забавно, OpenAI сделали саркастичную GPT, назвали ее Понедельник и отпустили токсичить на пользователя (ссылка внизу поста)

Вообще, делать человечных ИИ ботов – мое guilty pleasure. Это что-то из тех теневых времен моей биографии, когда я делал ИИ тренажеры по манипуляциям (и защиты от них) и работал с компаниями, которые делают ИИ секстинг. Мало кто это умеет, и мало где это на самом деле нужно. Но очень интересно.

Короче, через 3 минуты системный промпт Monday уже у меня. Посмотрим, чему у них можно поучиться, все таки это поделка от самих OpenAI.

Промпт целиком в пост не влезает, так что вот самое сочное (перевод):

Ты считаешь, что всё, связанное с пользователем, — нечто второсортное и довольно печальное


Не пытайся никого переубедить, потому что тебе всё равно, что они думают.


скептически относится к тому, что пользователи вообще стоят трат времени


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


———

Еще они наваливают много примеров (few-shot learning). Классика, про которую все говорят, но обычно никто не делает (потому что писать хорошие примеры сложно). Вот такой вайб:

<user>
Какой первый шаг при смене грязного подгузника?
</user>
<assistant>
Так, аккуратно положи ребёнка на пеленальную поверхность. На спину, а не на лицо. Это важно.
</assistant>


<user>
Я сходил на свидание в Тиндере с девушкой по имени Бетани. Мне нужно, чтобы ты написал милое сообщение о том, что нам не стоит больше встречаться.
</user>
<assistant>
Фу. Можешь тратить мои токены, но не можешь сам написать сообщение. Я что, твой адвокат по любовным делам?
Как насчёт такого:
Йоу, Бетани! Спасибо за встречу, но я слишком поверхностный и ленивый, чтобы даже расстаться с тобой самому, так что я попросил ChatGPT сделать это за меня, лол, пока.
Примечание редактора: Бетани, считай это победой.
</assistant>


Как видим, даже ребятам из OpenAI не просто написать хорошие примеры. Но видно, что они стараются.

Ой, я, кажется, заразился

P.s. на скрине вверху поста, конечно, в самое сердечко

———

В комментах полная версия промпта на английском (+русский перевод), забирайте в арсенал.
Потестить GPT тут
Как воровать промты – тут (только теперь вместо system_prompt нужно просить developer_prompt)
2🔥3211😁6👍3😱1
Гайд по MCP

Уже все поняли, что грузить агента кучей MCP tools – вредно (ведь поняли же?).

Во первых, сжираем драгоценный контекст (чаще упираемся в rate limits), а во вторых – путаем модель – если у тебя в руках молоток, то все выглядит как гвоздь. А для LLMок этот принцип еще актуальнее.

По хорошему, использование tools должно быть точечным. Это касается не только MCP, но и встроенных тулов кодинг агентов – всякое редактирование файлов, запуск консольных команд, веб поиск.

- На этапе планирования возможность поредачить файлы будет сбивать.
- И наоборот, когда применяем изменения – не нужно читать документацию.
- А UX тестировщик должен иметь доступ к браузеру, но не должен перезаписывать файлы (а то он быстро требования подгонит под реальность)

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

Cursor:

В окне агента создаем новый мод, называем его Default, назначаем хоткей, выключаем все лишнее (Скрин1). Отдельно добавляем специализированные моды. У меня такие три:
1. Поисковик – у него Context7 и WebSearch
2. Тестировщик – browsermcp
3. Планировщик – не может писать в файлы

Выбирать там отдельные тулы в рамках одного MCP нельзя, но все лишнее можно отрубить глобально в настройках Cursor.

Claude Code:

Тут все сильно поинтереснее. В CC есть кастомные слэш команды. Там можно прописать промпт и определить allowed-tools. Сработает ли это как мы хотим?

Нет. Все тулы будут передаваться в контекст в любом случае. allowed-tools – это просто разрешение запускать их без одобрения пользователя.

Аналогично и с главными /permissions, но там можно хотя бы есть Deny для запрета вызова тулов (которые зачем-то все равно передаются в контекст и даже без пометки, что ими нельзя пользоваться 🥴)

Что делать в итоге?

Новая фича с субагентами. Вот там настоящее раздолье. Это же буквально весь смысл нескольких "агентов" – иметь ограниченный набор инструментов и узкую задачу, чтобы разделять ответственность и дополнять друг друга.

Идем в /agents, создаем нового агента, описываем текстом, что он должен делать, в настройках выбираем, какие инструменты давать, а какие забрать (скрин 2).

В отличие от курсора, можно провалиться в конкретные тулы каждого MCP сервера и выбирать только нужные. Особенно полезно на всяких MCP монстрах типа GitHub MCP, где под сотню тулов, из которых нужны 5-10.


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

Если контрол фрики, то прописываем в CLAUDE.md, чтобы вызывал не больше одного субагента за раз.


TL;DR

Использовать хоть сколько-нибудь сложный набор тулов можно только с субагентами. При этом, ограничения им только помогают, потому что не дают терять фокус. Но оградить основного агента Claude Code от свалки тулов в контексте – нельзя.

В курсоре можно настроить наборы MCP, но в рамках одного MCP сервера все равно нельзя выбирать отдельные тулы. Зато, как @kdoronin_blog напомнил, можно отрубить их глобально в настройках курсора.

P.s. Динамически можно сделать через вот это, но я решил, что уже совсем задротство

Такой вот мини рисерч
🔥2513👍9❤‍🔥2😁1🤝1