# Пульт управления Beast — руководство для оператора

1Документ описывает интерфейс «Существо Beast, пульт связи» в `index.html`: назначение зон экрана, индикацию состояния, вывод сообщений и все элементы управления стимулами. Поведение привязано к коду в `beast/` (см. также `manuals/Mad_programmer_manual.md`).

---

## Введение: что такое Beast и как он «живёт»

**Beast** — браузерная модель существа с дискретным временем **пульса** (≈1 с): каждый пульс обновляются виталы, базовые контексты поведения, дерево восприятия, диспетчер циклов осмысления (ФО), эпизодическая и семантическая память, рефлексы и автоматизмы.

- **Жизнь** измеряется счётчиком пульсов `Cur_puls_val` (сохраняется в `localStorage` и может входить в файл памяти).
- **Развитие** — это накопление опыта: образцы семантики по стимулам, ветки дерева восприятия, эпизоды, абстракции, моторные и ментальные автоматизмы, цели, гештальты; с ростом опыта меняется готовность к **ориентировочному рефлексу (ОР)**, работа уровней сознания (2–4) и доступность сценариев (игра, обучение, сон, сновидения).

Пульт — это **канал связи оператора с моделью**: вы задаёте стимулы и режимы, читаете виталы, контексты, инфокартину и логи циклов, сохраняете и загружаете память.

---

## 1. Назначение и возможности пульта

**Назначение**

- Задать **внешнюю ситуацию** через мотивирующие, позитивные, негативные и нейтральные стимулы (в том числе режимы «Играть» / «Учить»).
- Наблюдать **соматическое состояние** (виталы), **эмоционально-контекстное** (базовые контексты, Плохо/Норма/Хорошо), **когнитивный контекст** (дерево восприятия, инфокартина, активность Beast).
- Управлять **удержанием базового состояния** (B / W), измерять **diff** значимости, включать **сон** с ограничением стимулов.
- Работать с **памятью**: сохранение/загрузка JSON на диск (пульс, виталы, семантика, дерево, эпизоды, рефлексы и др. — реестр `BEAST.persistentModules` в `beast/date/saving_ui.js`).
- Для отладки и обучения: сброс условных рефлексов и семантики (**Ух**, **Sx**), тест прерывания осмысления (**Тест**), режим тестирования эпизодической памяти (**т**), просмотр модели понимания стимула (**i** на кнопке).

**Возможности ограничены дизайном сна**: в режиме сна кликабельны только заранее разрешённые стимулы (см. раздел про сон).

---

## 2. Как индицируется состояние и другие показатели

### 2.1. Верхняя строка

| Элемент | Смысл |
|--------|--------|
| **Зелёный кружок + число** | Пульс жизни: мигающий круг (`pulseCircle`) и счётчик `pulseCounter` = число пульсов. |
| **Синяя точка у «Сохранить»** (`saveIndicator`) | Идёт запись в IndexedDB и/или на диск; кратковременное отображение (не менее ~300 ms). |
| **Сохранить / Загрузить** | Экспорт/импорт памяти в выбранную папку (File System Access API). |

### 2.2. Жизненные параметры (виталы)

- Ряд индикаторов **0–100%**: цвет от светло-зелёного (0) к красному (100).
- Подписи: краткое **name** и развёрнутый **title** во всплывающей подсказке.
- **Щелчок по виталу** — диалог задать **value** и **shift** (скорость дрейфа за пульс).
- Кнопка **×** у заголовка — сброс виталов к умолчаниям (с подтверждением).

Имена виталов (Id 1–10): Раны, Удушье, Жажда, Жара, Холод, Голод, Стресс, Гон, Общение, Интерес (см. `beast/_1_Genetic_vitals/vitals.js`).

### 2.3. Базовые контексты поведения

- Заголовок: **«Состояние базовых контекстов поведения»** + подпись **Плохо / Норма / Хорошо** + текст **«стало лучше/хуже на …»** по `DiffZnacher`.
- **Индикаторы** — прямоугольники с именем контекста: неактивные серые, активные — светло-зелёные со свечением.
- **Рамка блока**: при Плохо — розовая, при Хорошо — зелёная; при **удержании контекстов** (жёлтый фон) — счётчик пульсов по центру экрана сверху и жёлтый фон заголовка/ряда.
- **Кнопки** (справа в заголовке): **Сон**, **B** (удержание Плохо), **W** (удержание Хорошо), **diff** — см. разделы 4 и 6.
- **Счётчик** над B/W: оставшиеся пульсы удержания Плохо или Хорошо.

### 2.4. Полоса ожидания ответа

Тонкая синяя полоса (`epWaitingProgressFill` в `epWaitingProgressWrap`) — прогресс периода **ожидания ответа оператора** после эпизодического кадра (`response_waiting_period`). Подсказка у обёртки в `title`.

### 2.5. Блок активной ветки дерева восприятия

- Текст ветки (`perceptionTreeActiveBranchText`), кнопка **т** — режим тестирования формирования эпизодической памяти (подсветка активного состояния).
- Строка эпизодов (`perceptionTreeEpisodesLine`), кнопка **✕** — очистка всей эпизодической памяти (показывается не всегда — по логике UI).
- **`epTotalCountLabel`** — суммарный счётчик эпизодов (если заполняется кодом).
- **📋** — копирование содержимого блока в буфер обмена.

### 2.6. Активность Beast

Серый блок с текстом текущей активности (многострочный). Справа: **📋** (копировать), **Ух** (сброс всех условных рефлексов), **Sx** (сброс всей семантической памяти). Рамка блока согласована с Плохо/Хорошо у строки контекстов.

### 2.7. Информационная картина (расширенная строка)

Под заголовком **«Информационная картина»**:

- **Синяя лампочка** (`infoThinkingIndicator`) — кратковременно (≈0,5 с) при событиях осмысления (`Info_thinkingFlash`).
- **Главный цикл ID** — идентификатор текущего главного цикла сознания.
- **Чисто фоновых процессов** — число фоновых циклов.
- **очередь прерываний** — длина LIFO очереди прерванных главных циклов.
- Кликабельные счётчики: **фон:** — список фоновых циклов; **авто:** / **м-авто:** / **абстр:** / **цели:** / **ситуации:** — с уточняющими диалогами; у первых четырёх с **×** — очистка соответствующих структур (моторные/ментальные автоматизмы, абстракции, цели жизненного опыта, образы ситуаций).
- **гешт:** — гештальты; **фант:** — сюжет фантазма (детализация по клику).

### 2.8. Таблица ячеек инфокартины

Ячейки с подписью; **жёлтый фон** (`info-cell-active`) — значимое/активное значение. **Щелчок** открывает детализацию (`Info_showDetail(...)`): режим, тема, ситуация, сюжет фантазма, проблема, шаг, стимул, Base, эмоция, активность, а также **детекторы** (критический витал, важная проблема, реагирование по правилу, шок, резкое ухудшение, игра, обучение, негативные эффекты автоматизмов, «плохо», стимул с пульта, поиск, учитель, игнор оператора, неудовлетворённость, непонимание, сомнение, защита, страх, агрессия, важный объект, настроение, новизна, семантика, трудная проблема, эффекты действий, ожидание ответа, серии без эффекта, полезность автоматизма, найденный автоматизм и т.д.).

См. структуру `InfoPicture` в `beast/_9_Conscience/informing.js`.

---

## 3. Как выводятся сообщения

### 3.1. Статические (в интерфейсе страницы)

- Текст в **«Активность Beast»**, обновляемый логикой сознания и вспомогательных модулей.
- Подписи, счётчики, **title** у кнопок и ячеек (всплывающие подсказки браузера).
- **Информационная картина** и её ячейки — постоянное отражение `InfoPicture` после `Info_updateView()`.

### 3.2. Всплывающие (модальные диалоги)

Модуль `beast/sys/alerts/alerts.js`:

| Функция | Назначение |
|---------|------------|
| `show_alert(message, timeShow, options)` | HTML-сообщение; `timeShow > 0` — авто закрытие через N ms; `timeShow === 0` — кнопка «Закрыть». |
| `show_confirm(message, callback)` | Да / Нет → `callback('OK' \| 'NO')`. |
| `show_prompt(message, callback)` | Ввод текста → `callback(value)`. |
| `close_alert()` | Закрыть активный диалог. |

Особый тип **`dialogType: 'cyclelog'`** — окно **лога главного цикла** (последние строки `debugLog`), обновляется по мере записи; закрытие пользователем помечает лог как подавленный для этого цикла. Не перекрывает другие модалки произвольного типа.

Дополнительные примеры содержимого алертов:

- Щелчок по **Плохо/Норма/Хорошо** в заголовке контекстов — `DiffZnacher`, интергальная значимость.
- **diff** — старое/новое значение и приведённая разница.
- **i** на стимуле — **модель понимания** (семантика): сводка или кадр по клику на числа **z**.

---

## 4. Все види кнопок и стимулов

Ниже — поведение по коду (`stimuls.js`, `stimuls_ui.js`, `genetic_reflexes.js`, `genetic_reflexes_engine.js`, `sleep_mode.js`).

### 4.1. Общие правила строк стимулов

- У каждой строки заголовок и кнопка **×** у заголовка: сброс **всех** активных стимулов **этой** строки.
- **Двойной щелчок по любой кнопке стимула** (любой строки) — **сброс всех стимулов всех четырёх рядов** (`clearAllStimuli`), кроме режима сна (в сне блокируется).
- **Активная** кнопка: более насыщенный фон и цветное свечение (`box-shadow`).
- **Готовность к ОР**: рамка **2px** и подсказка «Участвует в ориентировочном рефлексе», если для связанного `FinalImage` число оставшихся активаций до порога = 0; иначе показывается число оставшихся активаций (или «неизвестно» на ранних пульсах).
- При **запуске ОР/ФО** на кнопке — краткая **вспышка** свечения сверху/снизу на один пульс.
- **Режим сна**: неразрешённые кнопки полупрозрачны и не кликаются; разрешённые подсвечены outline. Разрешённые пары: мотивация **Наказание** (Id 8); негативные **Вопль** (8), **Сирена** (10), **Рычание** (13), **Огонь** (20). Первый клик по разрешённому стимулу **выводит из сна**, затем обрабатывается как обычно.

### 4.2. Глобальные идентификаторы стимулов

Чтобы не путать одинаковые номера в разных массивах, в памяти используются **глобальные Id**: `type * 1000 + localId`, где type: 1 — мотивация, 2 — позитив, 3 — негатив, 4 — нейтраль (`stimulus_global_id.js`).

### 4.3. Мотивирующие стимулы (`stimulsRow`)

Поле **bg** в данных: **1** — розовый базовый фон, **2** — белый/нейтральный, **3** — светло-зелёный. Каждая запись связана с **vitalID** и величиной **shift** в данных (для длительного воздействия через движок рефлексов — см. `genetic_reflexes_engine.js`).

| Id | Имя | vitalID | shift (в таблице) | Примечание |
|----|-----|---------|-------------------|------------|
| 1 | Еда | 6 | 0 | Эффекты при активации: стресс −20, SetWellForHolding; сброс кэша автоматизмов по веткам при активации с Едой/Водой. |
| 2 | Вода | 3 | 0 | Аналогично Еде. |
| 3 | Тепло | 4 | −1 | |
| 4 | Холод | 5 | −1 | |
| 5 | Воздух | 2 | −2 | |
| 6 | Лечение | 1 | −0.5 | |
| 7 | Поощрение | 7 | 0 | Сильное снижение стресса + удержание Хорошо. |
| 8 | Наказание | 7 | 0 | Рост стресса + удержание Плохо. |
| 9 | Приятно | 7 | 0 | Стресс −30 + в таблице эффектов также указан vitalID 17 (если витал не существует в массиве, дельта может не применяться). |
| 10 | Неприятно | 7 | 0 | Стресс +30. |
| 11 | Успокоить | 7 | 0 | |
| 12 | Понятно | 7 | 0 | |
| 13 | Непонятно | 7 | 0 | |
| 14 | Простить | 7 | 0 | |
| 15 | Смех | 7 | 0 | |
| 16 | Радость | 7 | 0 | |
| 17 | Краш | 8 | 2 | |
| 18 | Игнорировать | 7 | 0 | |
| 19 | Играть | 11 | 0 | Не через `ActiveMotivationStimuls`: переключает **isGameMode**, взаимоисключает **Учить**; при включении — эффект 103. |
| 20 | Учить | 12 | 0 | **isAuthoritarianEducation**, взаимоисключает **Играть**; эффект 104. |

При **активации** мотивирующего стимула (кроме переключения Играть/Учить) вызываются **разовые** эффекты из `StimulMotivarion_EffectsToBContexts` (дельты виталов 1–10, коды 101–104: удержание Хорошо/Плохо, игровой/учебный режим).

### 4.4. Позитивные стимулы (`stimulsRowPositiv`)

Фон: светло-зелёный; активные — усиленное зелёное свечение. При активации подмешиваются **контексты** по `StimulPositiv_EffectsToBContexts` (числа 1–20 — id базовых контекстов на период удержания; 101–104 — как у мотивации).

| Id | Имя |
|----|-----|
| 1 | Улыбка |
| 2 | Ребенок |
| 3 | Щенок |
| 4 | Цветок |
| 5 | Солнце |
| 6 | Бабочка |
| 7 | Ягода |
| 8 | Колокольчик |
| 9 | Смех |
| 10 | Пение |
| 11 | Мелодия |
| 12 | Шелест |
| 13 | Мурлыкание |
| 14 | Сладость |
| 15 | Аромат |
| 16 | Тепло |
| 17 | Ветерок |
| 18 | Прохлада |
| 19 | Прикосновение |
| 20 | Ласка |

### 4.5. Негативные стимулы (`stimulsRowNegative`)

Фон: розовый; активные — усиленное розовое свечение. Контексты: `StimulNegative_EffectsToBContexts` (в т.ч. 102 = SetBadForHolding для отдельных кнопок).

| Id | Имя |
|----|-----|
| 1 | Злоба |
| 2 | Кровь |
| 3 | Разруха |
| 4 | Паук |
| 5 | Змея |
| 6 | Гриб |
| 7 | Гниль |
| 8 | Вопль |
| 9 | Стон |
| 10 | Сирена |
| 11 | Писк |
| 12 | Скрип |
| 13 | Рычание |
| 14 | Осколки |
| 15 | Молния |
| 16 | Кинжал |
| 17 | Горечь |
| 18 | Кислятина |
| 19 | Вонь |
| 20 | Огонь |

**Кнопка «Тест»** (красная, после ряда): вызывает `runTestNegativeInterrupt()` — жёсткий тест прерывания цикла осмысления максимально негативной значимостью; в сне не работает.

### 4.6. Нейтральные стимулы (`stimulsRowNeutral`)

Серый фон; при активации **не** вызывают `StimulPositiv/Negative_EffectsToBContexts` (только накопление активного набора в `ActiveNeutralStimuls` для образа и ОР).

| Id | Имя |
|----|-----|
| 1–9 | Коричневое … Белое (цвета) |
| 10–18 | Круг … Треугольник (формы) |
| 19–23 | Шум | Свист | Гул | Звон | Вибрация |
| 24–31 | Книга | Стол | Стул | Кровать | Лампочка | Растение | Животное | Человек |

### 4.7. Значок «i» на стимулах

Маленькая **i** в углу кнопки: открывает диалог с **моделью понимания** стимула (семантические кадры, z, число эпизодов); клик по числам **z** открывает детализацию кадра.

### 4.8. Прочие кнопки интерфейса (не строки стимулов)

| Кнопка | Действие |
|--------|----------|
| **Сон** | Переключение `SleepMode_toggle`; фон страницы серый; контекст только «Сон» (id 15); авто-вход возможен при большом числе «финовых» циклов (`ConsciousnessFinCyclesTotal` > 100). |
| **B** | `SetBadForHolding` — удержание Плохо; перевод инфокартины в целевой режим и вспышка «лампочки» мысли. |
| **W** | `SetWellForHolding` — удержание Хорошо. |
| **diff** | `getDiffImportance()` и показ разниц в алерте. |
| **Сохранить / Загрузить** | См. §2.1. |

---

## 5. Как развитие отражается на интерфейсе

- **Новые стимулы** — добавление записей в `StimulMotivarion` / `StimulPositiv` / `StimulNegative` / `StimulNeutral` и при необходимости строк в `Stimul* _EffectsToBContexts` / `StimulMotivarion_EffectsToBContexts`; UI пересобирается при загрузке (`stimuls_ui.js`).
- **Готовность к ОР** — по мере накопления семантики у кнопок меняются рамка и подсказки; после первого цикла может показываться **лог главного цикла** в модальном окне.
- **Инфокартина** — при появлении новых детекторов в `InfoPicture` добавляются ячейки в `index.html` и ветки в `Info_updateView` / `Info_showDetail` (`informing.js`).
- **Уровни сознания 2–4**, гештальт, абстракции — новые счётчики (**гешт:**, **фант:**, ментальные автоматизмы и т.д.) и поведение алертов по клику.
- **Сон и сновидения** — отдельная ветка: кнопка «Сон», ограничение стимулов, сценарии `sleep_dream_process.js`.

---

## 6. Как развивать Beast: последовательность и внимание

Рекомендуемый порядок для **оператора-исследователя** (без правки кода):

1. **Понять пульс и виталы** — задайте сценарии Плохо/Хорошо, понаблюдайте контексты и `DiffZnacher`.
2. **Освоить стимулы** — начните с мотивации и нейтрали, затем позитив/негатив; смотрите готовность к ОР и модель понимания (**i**).
3. **Следить за деревом и инфокартиной** — как связаны Base, эмоция, активность, шаг, стимул.
4. **Эпизодическая память** — используйте **т** для тестов, смотрите полосу ожидания, закрывайте кадры ответами; изучайте `about_episodic_memory*.md`.
5. **Сон** — используйте осознанно для сценариев сновидений; помните про ограниченный набор стимулов.
6. **Сохранения** — регулярно сохраняйте память в файл перед экспериментами; **Sx** и **Ух** необратимы в рамках сессии без загрузки.

Для **разработчика** кода:

- Соблюдать **порядок скриптов** в `index.html` (комментарий в конце файла обязателен).
- Новые персистентные данные — одна запись в `BEAST.persistentModules`.
- Менять `about_*.md` и при необходимости `PROJECT_STATE_FOR_NEW_CHAT.md` вместе с логикой.
- Подробные архитектурные принципы — **`manuals/Mad_programmer_manual.md`**.

---

*Документ соответствует состоянию кода проекта BEAST; при расхождении UI и поведения приоритет у реализации в репозитории.*
