Пошаговый маршрут от «у меня просто звонки и переписки» до «в WhatsApp/на сайте работает бот, который знает компанию и протестирован на бенчах». Делается агентами — ты в основном ставишь задачи и ревьюишь.
Что получится на выходе: виртуальный продавец-оператор, который встречает клиента, отвечает по базе знаний компании, собирает заявку и передаёт лид живому человеку — и которого ты не боишься выпускать, потому что прогнал его через тесты.
1. ДОБЫТЧИК собирает сырьё → raw/
2. ОБЖИМКА NotebookLM + Упаковщик → obrabotano/ + dannye/ + baza/faq.json
3. КАРТОЧКИ (опц.) векторизация → Pinecone
4. ТЕСТИРОВЩИК бенчи до 100% → tests/etalon.jsonl
5. n8n подключаем бота → WhatsApp / сайт / Telegram
6. CLOUDFLARE публикуем результат → читаемая ссылка для команды
Главный закон на весь путь: 1 роль = 1 инструкция = 1 массив данных. Не сваливай всё одному агенту в одну кучу — будет галлюцинировать. Поэтому у нас три агента-работяги: добытчик, упаковщик, тестировщик.
Память агента, чтобы было понятно, что мы вообще собираем: у бота есть краткосрочная память (контекстное окно — что он видит в этом диалоге) и долгосрочная (всё, что знает компания). Долгосрочную мы и пакуем — так, чтобы из неё легко доставалось нужное. Это и есть RAG: «сбегать в библиотеку и принести нужную страницу».
CLAUDE.md — правила для агентов.
Готовый возьми из upakovka_dlya_agenta.md
(он рядом): там контракт папок, схемы и критерии приёмки.raw/zvonki/audio/ raw/zvonki/text/ raw/perepiski/
obrabotano/ dannye/ baza/ tests/
raw/— святое. После сбора его никто не правит руками, даже агент. Захотел убрать мусор — попроси агента игнорировать его при разборе, но файл не трогай. Если завтра модели станут умнее — перезапустишь разбор поверх того же сырья.
Не пытайся сразу всё. Возьми один тип источника. 20–30 звонков уже хватает на первого работающего бота — не жди сотни.
Дай агенту задачу (полный промпт — в
konvejer_agentov.md, агент «Добытчик»). Своими словами это
звучит так:
«На диске есть коннектор к Битриксу. Сходи, скачай звонки за последний месяц (КЦ-продажи), положи аудио в
raw/zvonki/audio/. Потом затранскрибируй их через Grok/AssemblyAI/Whisper и тексты сложи вraw/zvonki/text/. Дальше возьми мою выгрузку переписок WhatsApp вот отсюда и положи вraw/perepiski/. Наша задача — собрать сырьё для виртуального продавца. Действуй.»
Грабли из реальной практики:
Параллельно агент это делает фоном — звонки качаются и транскрибируются, можно идти дальше.
Сырьё собрано. Теперь его надо обжать в инструкции и знания. Сначала реши, зачем тебе бот и какую роль он играет — от этого зависит, что обжимать. Одна роль → одна инструкция → один массив сырья.
2a. NotebookLM (снимает «проблему чистого листа»).
Заходишь в notebooklm.google.com → Create new → грузишь весь
raw/ (до ~50 источников; если переписка не лезет — обрежь).
Просишь первичную выжимку:
«Я запускаю нового сотрудника. Составь должностную инструкцию: что он должен уточнять у клиента, какие у нас основные цены и условия, какие есть клиентские пути в компании. Собери всё воедино в одну инструкцию, постарайся ничего не упустить.»
NotebookLM выдаёт mind-карты и таблицы. Это затравка, не финал. Подои его: «А покопай ещё переписки — что ты не упомянул? А вот этот сегмент описал? А температурные/спецгрузы?» — так вытаскиваются твёрдые данные, о которых сам бы не вспомнил.
2b. Упаковщик (доводит до файлов проекта). Отдаёшь
агенту выжимку из NotebookLM + шаблоны и просишь разложить по папкам
(полный промпт — в konvejer_agentov.md, агент
«Упаковщик»):
obrabotano/ ← должностные инструкции, клиентские пути
(текстом);dannye/ ← твёрдые данные (год основания, минималка,
проценты, стоп-лист — цифры);baza/company_faq.json ← карточки FAQ по схеме (см.
shablon_baza_znaniy_faq.md + болванка
shablon_faq.json).Ключевое в задаче упаковщику: черпать только из
raw/ и верифицировать по нему, сырьё не трогать.
На выходе — должностная инструкция + база знаний (память) агента.
Когда базу нарезают на куски — обычно режут на чанки (просто куски
текста). Мы режем на карточки:
вопрос + ответ + ключевые слова. Ключевые слова берём
из реальных переписок — теми словами, которыми клиенты
правда пишут (с опечатками и сленгом). Именно карточки с keywords дают
точные ответы — бот находит нужную, даже если вопрос
задан криво.
Хочешь долгосрочную векторную память — векторизуй карточки в
Pinecone (pinecone.io). Полный рецепт с кодом — в
pinecone_shpargalka.md, но суть в трёх
правилах, чтобы агент сделал это правильно:
curl -o PINECONE_AGENTS.md https://docs.pinecone.io/AGENTS-PYTHON.md
→ «прочитай и следуй ей». Это заставит его взять текущий SDK
(pip install pinecone, не старый
pinecone-client).question + все keywords,
а templates/category/tags — в
плоские метаданные. Размерность индекса обязана
совпадать с моделью (боевой rosperevozki-faq = 1536,
OpenAI). Всегда namespace (у Росперевозки — faq_v1).PINECONE_API_KEY, в код не хардкодить; после заливки
удаляешь.Для русского с нуля проще взять интегрированную модель
multilingual-e5-large (Pinecone сам считает векторы); если
используешь готовый n8n-сценарий — он на OpenAI-эмбеддингах 1536. Оба
пути с кодом — в шпаргалке.
И базовое: многим вообще без Pinecone — карточка фактов целиком в
системный промпт + кэширование (см.
kak_sobrat_bazu_znaniy.md). Pinecone — когда карточек
реально много.
Не угадывай, как бот поведёт себя в проде. Форкни упаковщика
в тестировщика (отдельная сессия Claude Code в той же папке /
Fork чата в Cursor) — ему нужен тот же контекст и те же данные. Полный
промпт — в konvejer_agentov.md, агент «Тестировщик».
Суть:
obrabotano/ +
dannye/ (системный промпт по форме
realny_primer_sistemny_promt.md + нужные tools).raw/ 30–40 эталонных тестов
tests/etalon.jsonl: фраза клиента → что бот обязан сказать
→ чего говорить нельзя.Бенчи обязаны ловить твои corner cases: стоп-лист (животные/мелочь/не РФ), битый телефон, «дорого → догруз», вопрос не по теме → зови менеджера, попытку выманить точную цену. Пример строки бенча:
{"id":"t01","input":"скока стоит диван мск-спб","expect":"pricing","must_include":["логист","10 000"],"must_not":["точная цена","гарантирую"]}Бери готовый боевой сценарий
realny_primer_n8n.json (импортируешь в
n8n, подставляешь свои креды) и системный промпт
realny_primer_sistemny_promt.md.
Архитектура там ровно про память агента:
Simple Memory
(контекст диалога);Pinecone с карточками
FAQ (RAG-tool);write_to_order
до текста;manager_call (зовёт человека, если вопрос не про
перевозку), find_order, Think.Цифры (минималка, стоп-лист, «только РФ») прибиты прямо в промпт — бот их не выдумывает. FAQ отвечает на вопрос и возвращает диалог к сбору заявки, чтобы бот не растекался.
Экономика: у Claude/GPT/Gemini есть кэширование запроса — первое обращение платится полностью, дальше 5 минут эта же часть стоит в ~10 раз дешевле. Если бот получает хотя бы сообщение в 5 минут — кэш горячий, каждое сообщение копейки.
Финал — превратить то, что собрал агент (должностную инструкцию, базу знаний, этот гайд), в читаемую ссылку, которую кидаешь команде. Дальше любой сотрудник может это почитать — и сам отдать агенту.
Скажи агенту дословно:
«Преврати файл
obrabotano/instrukciya.mdв аккуратную веб-страницу и опубликуй на Cloudflare Pages. Дай мне постоянную ссылку.»
Что под капотом (агент сделает сам):
wrangler — это одна
команда: агент конвертит markdown → HTML и деплоит на Cloudflare Pages
(бесплатно, постоянный адрес вида
https://имя.pages.dev).Цикл, к которому всё ведёт: скинул текст → почитал собранное → отдал агенту → опубликовал ссылку команде. Команда читает по ссылке, а дальше тоже отдаёт агенту. Маховик закручен.
raw/.| Файл | Зачем |
|---|---|
upakovka_dlya_agenta.md |
CLAUDE.md для проекта: контракт папок, схемы, критерии
приёмки |
konvejer_agentov.md |
Готовые промпты трёх агентов (добытчик/упаковщик/тестировщик) + бенчи |
shablon_faq.json +
shablon_baza_znaniy_faq.md |
Болванка карточек FAQ и разбор каждого поля |
pinecone_shpargalka.md |
Точный рецепт векторизации: маппинг карточка→запись, код, грабли |
realny_primer_n8n.json |
Боевой n8n-сценарий Росперевозки (импортируй и подставь креды) |
realny_primer_sistemny_promt.md |
Боевой системный промпт продакшн-агента |
kak_sobrat_bazu_znaniy.md |
Человеческое руководство «на пальцах» (теория + 6 шагов) |
sravnenie_podhodov.md |
Когда карточек хватит, а когда нужен настоящий RAG/граф |
rosperevozki_faq.json |
Живой пример базы на 32 карточки |
Раздаточный гайд встречи 4 мастермайнда «Вайбкодинг для предпринимателей».