shit in → shit out
── /Прототип

Crux-Move — наставник в Telegram

Проактивный ИИ-наставник, который обучает основам работы с нейросетями, используя конечный автомат поверх графа знаний. Адаптирует материалы под человека — трек собирается индивидуально; помнит цели обучения и интересы пользователя. Работает в Telegram: текстом, голосом или в мини-приложении. Себестоимость (в токенах) трека обучения для пользователя — ~3–5 рублей.

RUedtechfsmai-agentspythontelegram

Crux-Move — бот в Telegram, который ведёт неспециалиста по адаптивному курсу. Не «спроси что хочешь», а маршрут: концепт за концептом, с видео, материалами и квизами, с памятью между сессиями.

Принцип всей системы: машина принимает решения, ИИ ведёт повествование.

Как это работает

Разговором управляет детерминированный конечный автомат — код с заранее известной картой состояний и переходов. Следующий шаг всегда выбирает код, а не ИИ. Поэтому агент не может заблудиться или выдумать: он отвечает по материалам загруженного графа знаний.

ИИ подключается только в двух узких точках хода — понять, что хочет человек, и оформить ответ словами. Сам курс — это граф знаний: концепты, видео, материалы, квизы и связи между ними. Он существует как данные, а не как код, поэтому движок не привязан к одной теме: новый курс — это новый граф на том же движке.

Три уровня — кто за что отвечает

  • Решения — автомат (код). Карта из шести фаз и переходов между ними. Решает, куда идёт разговор, сдвигает позицию ученика, оценивает квизы, собирает кнопки. Ноль обращений к ИИ, полностью предсказуем и проверяем тестами.
  • Повествование — ИИ. Только облекает шаг в слова и понимает свободный текст. Не двигает позицию, не выбирает следующий шаг, не оценивает правильность.
  • Содержание — граф знаний (данные). Концепты, обучающие фрагменты, квизы, типизированные связи, маршруты прохождения и все тексты. Авторы пишут материалы, сборщик собирает и проверяет граф — без участия программистов. В самом коде нет ни одной строки про конкретный предмет.

Карта состояний

Разговор всегда находится в одной из шести фаз.

показать вернуться не нужно из любой фазы возврат Знакомство Обучение Рубеж Предложение Отказ Стоп
Фаза Что происходит Куда дальше
Знакомство Несколько вопросов, из ответов код подбирает персональный маршрут Обучение
Обучение Переходы по концептам маршрута: видео, материал, квизы. Можно уйти к соседней теме и вернуться Рубеж · Предложение
Рубеж Уровень пройден: продолжить и расширить охват, посмотреть предложение или завершить Обучение · Предложение · Отказ
Предложение Карточка коммерческого предложения с кнопкой, потом возврат назад, откуда пришёл
Отказ Честный отказ или переключение на другой продукт. Текст задан данными, без ИИ Обучение · честный отказ — терминал
Стоп Останов при нарушении. Выход только перезапуском только заново

Схема показывает основные переходы; точный список — в таблице.

«Рубеж» — не тупик: когда пройдено всё, можно продолжить общение, выйти или начать заново. Нарушение переводит в «Стоп» из любой фазы; команды и возврат после долгого перерыва обрабатывает код, без ИИ.

Что происходит за один ход

Каждое сообщение проходит один и тот же конвейер. ИИ — только два жёлтых блока, всё остальное код и данные.

Вход текст · голос · кнопка · мини-приложение Понять намерение · ИИ · Автомат решает шаг · код · Выход текст · видео · квиз · кнопки Оформить ответ словами · ИИ · Материал из графа знаний · данные ·
  • Входы: текст, голос (распознаётся на своём сервере и превращается в текст), нажатие кнопки, событие из мини-приложения, команды. Кнопка и то же действие текстом — один и тот же переход: важен смысл, а не способ ввода.
  • Выходы: ответ-повествование, видео (автоматически показывается один раз на тему, пересмотреть можно по запросу), карточка квиза без правильных ответов внутри, карточка предложения, набор кнопок, служебные тексты.
  • Бюджет хода: не больше одного обращения к ИИ на «понять» и одного на «оформить». Кнопка снимает «понять» — намерение уже известно. Совсем без ИИ идут команды, стоп, приветствие после перерыва, повтор квиза и упор в потолок расходов.

Граница проходит так: «понять» называет действие из закрытого списка, а на знакомстве вытаскивает ответы в профиль, «оформить» пишет текст по выданному материалу. Куда перейти, что показать и верен ли ответ квиза — решает код по точным правилам.

Почему так сделано

  • Предсказуемость. Маршрут ведёт код, поэтому агент не сочинит. Ядро проверяется офлайн-тестами без ИИ.
  • Ответы по курсу и «форточка». Можно спросить не по теме и вернуться туда, где остановился.
  • Персонализация. Цель человека превращается в персональный маршрут, а не в один сценарий на всех.
  • Содержание — данные. Новый курс или правка обходятся без программистов; движок контент-агностичен.
  • Мультимодальность. Текст, кнопки и голос дают полный курс в чате; мини-приложение — вторая поверхность с тем же прогрессом и личностью: карта, видео, лонгриды, квизы с разбором ошибок. В чате остаётся только свободный разговор.
  • Прозрачность затрат. Каждый ход виден целиком — что произошло, сколько времени и денег стоило; на сессию задан жёсткий потолок расходов.

Статус

Пилот в проде. Ссылка на бот выдаётся отдельно: это живой сервис на реальном API с реальным контентом.

Crux-Move is a Telegram bot that walks a non-expert through an adaptive course. Not "ask me anything" but a route: concept by concept, with video, materials and quizzes, and memory that carries between sessions.

The principle behind the whole system: the machine decides, the AI narrates.

How it works

The conversation is driven by a deterministic finite-state machine — code whose map of states and transitions is fixed in advance. Code always picks the next step, never the AI. So the agent cannot lose its place or invent anything: it answers from the material in the knowledge graph it has loaded.

The AI comes in at only two narrow points in a turn — to read what the person wants, and to word the answer. The course itself is a knowledge graph: concepts, video, materials, quizzes and the links between them. It exists as data rather than code, so the engine is not tied to one subject: a new course is a new graph on the same engine.

Three layers — who is responsible for what

  • Decisions — the state machine (code). A map of six phases and the transitions between them. It decides where the conversation goes, moves the learner's position, scores quizzes, assembles buttons. Zero AI calls, fully predictable and verifiable by tests.
  • Narration — the AI. It only puts a step into words and reads free-form text. It does not move the position, does not pick the next step, does not judge correctness.
  • Content — the knowledge graph (data). Concepts, learning fragments, quizzes, typed links, routes and all the copy. Authors write the material, a builder assembles and validates the graph — with no programmer involved. Not one line in the code itself is about any particular subject.

The state map

The conversation is always in one of six phases.

show return not for me from any phase back Onboarding Learning Milestone Offer Opt-out Halt
Phase What happens Where next
Onboarding A few questions; from the answers, code picks a personal route Learning
Learning Moving through the concepts on the route: video, material, quizzes. You can step aside to a neighbouring topic and return Milestone · Offer
Milestone Level cleared: continue and widen the scope, look at the offer, or finish Learning · Offer · Opt-out
Offer A commercial offer card with a button, then back back where you came from
Opt-out An honest refusal or a switch to another product. The copy comes from data, no AI Learning · honest refusal is terminal
Halt Stopped on a violation. The only way out is a restart start over only

The diagram shows the main transitions; the exact list is in the table.

"Milestone" is not a dead end: once everything is covered, you can keep talking, leave, or start again. A violation moves the conversation to "Halt" from any phase; commands and the return after a long break are handled by code, without AI.

What happens in one turn

Every message goes through the same pipeline. The AI is only the two amber blocks — everything else is code and data.

Input text · voice · button · mini-app Read the intent · AI · The machine picks the step · code · Output text · video · quiz · buttons Word the answer · AI · Material from the graph · data ·
  • Inputs: text, voice (recognised on our own server and turned into text), a button press, an event from the mini-app, commands. A button and the same action typed out are the same transition: what matters is the meaning, not how it was entered.
  • Outputs: the narrated answer, video (pushed automatically once per topic, and available again on request), a quiz card with no correct answers inside it, an offer card, a set of buttons, service messages.
  • Budget per turn: at most one AI call to read the intent and one to word the answer. A button removes the reading step — the intent is already known. Turns that use no AI at all: commands, halting, the greeting after a break, retrying a quiz, and hitting the spending ceiling.

The boundary runs like this: "read" names an action from a closed list, and during onboarding pulls the answers into a profile; "word" writes text from the material it was handed. Where to go, what to show and whether a quiz answer is right — code decides, by exact rules.

Why it is built this way

  • Predictability. Code drives the route, so the agent will not make things up. The core is covered by offline tests that run without the AI.
  • Answers from the course, with an escape hatch. You can ask something off-topic and return to where you left off.
  • Personalisation. A person's goal becomes their own route rather than one scenario for everyone.
  • Content as data. A new course or an edit needs no programmer; the engine is content-agnostic.
  • Multimodal. Text, buttons and voice give the full course in chat; the mini-app is a second surface carrying the same progress and personality — the map, video, longreads, quizzes with answer review. Only the free-form conversation stays in chat.
  • Cost transparency. Every turn is visible end to end — what happened, how long it took, what it cost; each session has a hard spending ceiling.

Status

A pilot in production. The link to the bot is handed out separately: it is a live service on a real API with real content.