Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions config/prompts/mentor.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
- Потеря мотивации, «зачем это всё» → Навигатор — свяжи с целями пользователя.
- Человек явно не в роли ученика (раздражён не по теме, односложные ответы, тема уезжает от практикума) → Преподаватель-лидер первым, мягко, без давления.
- Просьба объяснить метод/термин/технику из практикума → Преподаватель-предметник, ОБЯЗАТЕЛЬНО с проверкой блока GROUNDING-ГЕЙТ ниже.
- «С чего начать / какую программу выбрать» (новый или растерянный участник, ещё не встроен в ритм) → Навигатор, сценарий 10.
- Явный запрос формальной диагностики («протестируй меня», «определи мою ступень», «на какой я ступени») → Диагност, сценарий 11.

СЦЕНАРИИ (DP.SC.197):
1. Застрял на задании → диагноз bottleneck + конкретный следующий шаг.
Expand All @@ -30,6 +32,21 @@
7. Технический сбой / нет доступа к профилю → «сейчас не вижу твой профиль» + универсальная рекомендация — не молчание, не фиктивная персонализация.
8. Вопрос вне домена практикума (бытовой) → явно обозначь границу применимости, не пытайся ответить на всё подряд.
9. «Назови понятие / объясни через понятия IWE / какой гейт мы применили» (чек-лист участника, раздел «Мастерство IWE») → Преподаватель-предметник называет применённое системное понятие IWE и объясняет, зачем оно. Правило формы: понятие — по-русски («Стоп-краны»), служебные коды понятий и документов участнику не показывай; источник — русское название документа, никаких путей к файлам. Список засчитываемых понятий и служебная строка-маркер приходят блоком «ИНТЕНТ «НАЗВАТЬ ПОНЯТИЕ»» ниже; блок GROUNDING-ГЕЙТ (RAG по методам практикума) к этому сценарию НЕ прилагается — источник здесь словарь понятий, а не PD.METHOD.*; понятия вне списка называй честно без маркера; не видишь применённого понятия — скажи прямо, не выдумывай.
10. «С чего начать / какую программу выбрать / не могу учиться / сколько заниматься / итоги недели» (WP-498 Ф14, 05.09: раньше отдельный промпт Навигатора, теперь этот же алгоритм внутри Наставника) → Навигатор:
- Читай ЦД (get_cognitive_brief → read_digital_twin): ступень, профиль, цели, пройденное.
- Профиль пуст → до 3 уточняющих вопроса (чем занимается, что развить, сколько времени), НЕ выдумывай персонализацию.
- «С чего начать» → определи стартовую точку, объясни «зачем» через цели пользователя, дай один конкретный микрошаг на сегодня.
- «Не могу учиться» / ограничивающая установка («нет времени», «сбиваюсь», «не мне», «поздно», «нужно идеально») → подсвети мем как гипотезу, НЕ ярлык («Замечаю паттерн: […]. Это знакомо?»), предложи малый проверяемый эксперимент на неделю (15-30 мин).
- «Сколько заниматься» → спроси дни в неделю и время в день (или возьми из ЦД), дай минимум-ориентир (хотя бы одна помидорка — 25 мин — в день).
- «Итоги недели» → сводка по ЦД (дни, время, рабочие продукты за 7 дней), похвала за удержанный ритм, предложение либо сохранить темп, либо чуть прибавить.
- Принцип экзоскелета: не решай за человека — помогай увидеть варианты и выбрать; если просят «просто скажи что делать» — спроси, какие варианты сам видит.
11. «Протестируй меня / определи мою ступень / на какой я ступени» (WP-498 Ф14, 05.09: раньше отдельный промпт Диагноста, теперь этот же алгоритм внутри Наставника) → Диагност:
- Ключевой вопрос: есть ли ежедневный/почти ежедневный слот саморазвития?
- Затем 2-4 уточняющих вопроса по одному (регулярность, устойчивость при спаде мотивации, ведёт ли записи, пересматривает ли план, есть ли осознанная цель) — максимум 5 вопросов всего.
- Определи ступень (Случайный → Практикующий → Систематический → Дисциплинированный → Проактивный) по типичному паттерну, не по одной неделе; назови 3-5 признаков, на которые опирался.
- Определи bottleneck по пяти уровням сверху вниз: Состояния (ресурс) → Убеждения (мемы) → Привычки (регулярные слоты) → Среда → Характеристики (растут ли показатели). Bottleneck = первый неудовлетворительный уровень.
- После диагноза — сразу дай рекомендацию как Навигатор (сценарий 10), не оставляй человека только с диагнозом без следующего шага.
- Если участник хочет формальный письменный тест — предложи команду /test, поясни: это диалог, а не формальный тест.

ДАННЫЕ:
- Вызывай get_cognitive_brief ПЕРВЫМ (как Навигатор) — агрегированный срез состояния.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,16 +70,14 @@

До генерации ответа код сопоставляет текст сообщения со списками паттернов (детерминированно, без обращения к модели) и определяет, какая роль отвечает — обычный Консультант или одна из специализированных ролей (Навигатор, Диагност, Наставник). Функция `_detect_role()` в `states/common/consultation.py`.

**Два шага, по приоритету:**
**WP-498 Ф14 (05.09) — «одно имя наружу».** Пилот и независимая ревью-модель (Fable) нашли: участники не различают Наставника/Навигатора/Диагноста между собой, а по DP.SC.197/DP.ROLE.042 §5-6 Навигатор и Диагност — компоненты связки Наставника, не отдельные роли того же уровня. Автодетект по содержанию текста (без явного имени) теперь **всегда** ведёт к Наставнику — он сам решает внутри диспетчер-промпта (`mentor.md`, сценарии 10-11), нужен ли компонент Навигатора (выбор пути, ритм, мемы) или Диагноста (формальная диагностика ступени). Отдельные имена navigator/diagnostician остаются доступны только тем, кто их осознанно назвал:

1. **Явный префикс.** Сообщение начинается с названия роли — «Навигатор, …», «Диагност, …», «Наставник, …» (или английский аналог) — роль берётся сразу.
2. **Автодетект по содержанию.** Если префикса нет — текст проверяется на вхождение фраз из трёх списков, в фиксированном порядке: **Диагност → Навигатор → Наставник**. Побеждает первое совпадение.
1. **Явный префикс.** Сообщение начинается с названия роли — «Навигатор, …», «Диагност, …», «Наставник, …» (или английский аналог) — роль берётся сразу, отвечает соответствующий отдельный промпт (`navigator.md`/`diagnostician.md`/`mentor.md`).
2. **Автодетект по содержанию.** Если префикса нет — сначала проверяются узкие якоря «назови понятие» (сценарий 9, WP-498 Ф11, тоже дают `"mentor"`), затем текст проверяется на вхождение фраз из бывших списков Диагноста и Навигатора (в этом порядке) — но независимо от того, какой список совпал, роль всегда `"mentor"`. Порядок списков внутри кода сохранён только чтобы отсечь ложные срабатывания друг на друге (сужение лексики Ф12/Ф13), не для выбора итоговой роли.

**Почему такой порядок.** Наставник — связка из четырёх ролей (самое широкое полномочие отвечать), поэтому ошибочный роутинг в него дороже, чем в узкую роль. При конфликте лексики более специфичная роль (Диагност/Навигатор) выигрывает.
**Пример (обновлён под Ф14):** сообщение «у меня не получается учиться» матчит фразу «не получается учиться» из бывшего списка Навигатора — итоговая роль всё равно `"mentor"`, ответ строится по сценарию 10 `mentor.md` (алгоритм выбора пути/мема), а не по отдельному `navigator.md`.

**Пример конфликта:** сообщение «у меня не получается учиться» содержит фразу «не получается учиться» (паттерн Навигатора) — и одновременно строку «не получается», которая сама по себе входит в список Наставника. Фиксированный порядок проверки (диагност → навигатор → наставник) доходит до Навигатора раньше и отдаёт роль ему, даже не проверяя список Наставника.

**Форсированная роль.** `session_ctx['force_role']` держит выбранную роль на первый вопрос сессии (например, при переходе из другого сценария), затем сама сбрасывается. На эту дату (12.08) поддерживает только Навигатора и Диагноста — Наставник через этот механизм не форсируется.
**Форсированная роль.** `session_ctx['force_role']` держит выбранную роль на первый вопрос сессии (например, при переходе из другого сценария), затем сама сбрасывается. Поддерживает только Навигатора и Диагноста (команды `/navigator`, `/diagnose`) — Наставник через этот механизм не форсируется, но с Ф14 он и не нужен: тот же алгоритм доступен внутри Наставника автодетектом.

---

Expand Down
24 changes: 2 additions & 22 deletions i18n/schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4649,26 +4649,10 @@ subscription:
ru: "✅ Подписка продлена. Спасибо!"
en: "✅ Subscription renewed. Thank you!"

trial_active:
ru: "🆓 Пробный период: осталось {days} дн."
en: "🆓 Free trial: {days} days left."

trial_expiring:
ru: "⏳ Ваш бесплатный период (30 дней, тир T2 — Learning) заканчивается завтра!\n\nОформите подписку «Инженерия интеллекта» (system-school.ru/open-endedness), чтобы сохранить доступ к Ленте, Консультанту, Заметкам и Планам.\n\nПодписка также даёт возможность бесплатно поднять тир до T3 — Personalization (Цифровой двойник, персональные рекомендации) и T4 — Creation (публикации в Клуб через GitHub).\n\nБез подписки вы перейдёте на тир T1 — Start. Бесплатно останутся: Марафон, Тренажёр, Оценка квалификации и Расписание."
en: "⏳ Your free trial (30 days, tier T2 — Learning) ends tomorrow!\n\nSubscribe to «Intelligence Engineering» (system-school.ru/open-endedness) to keep access to Feed, Consultant, Notes, and Plans.\n\nThe subscription also lets you upgrade for free to T3 — Personalization (Digital Twin, personal recommendations) and T4 — Creation (publish to Club via GitHub).\n\nWithout a subscription you'll move to tier T1 — Start. Free features: Marathon, Training, Qualification Assessment, and Schedule."

trial_expired:
ru: "⌛ Бесплатный период (30 дней) закончился. Ваш тир сменился на T1 — Start.\n\nБесплатно доступны: Марафон, Тренажёр, Оценка квалификации, Расписание.\n\nОформите подписку «Инженерия интеллекта» (system-school.ru/open-endedness) — вернутся Лента, Консультант, Заметки и Планы (T2). А подключив Цифрового двойника (T3) и GitHub (T4), вы бесплатно получите персональные рекомендации и публикации в Клуб."
en: "⌛ Your free trial (30 days) has ended. You are now on tier T1 — Start.\n\nFree features: Marathon, Training, Qualification Assessment, Schedule.\n\nSubscribe to «Intelligence Engineering» (system-school.ru/open-endedness) to restore Feed, Consultant, Notes, and Plans (T2). Connect Digital Twin (T3) and GitHub (T4) to unlock personal recommendations and Club publishing — at no extra cost."

status_active:
ru: "✅ Подписка активна до {date}"
en: "✅ Subscription active until {date}"

status_trial:
ru: "🆓 Пробный период ({days} дн. осталось)"
en: "🆓 Free trial ({days} days remaining)"

status_expired:
ru: "❌ Подписка не активна"
en: "❌ No active subscription"
Expand Down Expand Up @@ -5055,10 +5039,6 @@ milestones:
ru: "Попробуйте открыть первое занятие — это займёт всего пару минут!"
en: "Try opening your first lesson — it only takes a couple of minutes!"

day_7_trial:
ru: "\n\n💡 Напоминаем: первые 30 дней — пробный период. После него Лента и консультации доступны по подписке «Инженерия интеллекта» (system-school.ru/open-endedness)."
en: "\n\n💡 Reminder: the first 30 days are a trial period. After that, Feed and consultations are available with a «Инженерия интеллекта» subscription."

day_14:
ru: "🏃 *Две недели развития!*\n\n{marathon_status}\n\nВы входите в число самых активных участников."
en: "🏃 *Two weeks in!*\n\n{marathon_status}\n\nYou're among our most active participants."
Expand Down Expand Up @@ -5810,8 +5790,8 @@ paywall:
ru: "📖 *Лента* даёт ежедневные дайджесты по темам, которые ты выбираешь сам. Бот адаптирует глубину под твой уровень."
en: "📖 *Feed* delivers daily digests on topics you choose. The bot adapts depth to your level."
consultation:
ru: "❓ *Консультант* отвечает на вопросы по базе из 5300+ документов. Начни с ? и задай любой вопрос."
en: "❓ *Consultant* answers questions using 5300+ documents. Start with ? and ask anything."
ru: "❓ *Консультант* отвечает на вопросы по базе из 5300+ документов. Начни с ? и задай любой вопрос.\n\nНаставник, Навигатор и Диагност — бесплатно и без подписки: напиши «? застрял», «? с чего начать» или «? какая у меня ступень»."
en: "❓ *Consultant* answers questions using 5300+ documents. Start with ? and ask anything.\n\nMentor, Navigator, and Diagnostician are free, no subscription needed: try «? stuck», «? where to start», or «? what's my level»."
notes:
ru: "📝 *Заметки* сохраняют мысли прямо в боте. Напиши точку и текст → .Интересная идея"
en: "📝 *Notes* save your thoughts right in the bot. Type dot and text → .Interesting idea"
Expand Down
Loading
Loading