Осознанные автоматизмы и процесс осознания — стратегия реализации
Документ для подготовки следующего этапа: система осознанных автоматизмов и процесс осознания. Старая реализация была на языке ГО (OLD_CODE); в новой JS-реализации уже есть качественно более сильные адаптивные системы — важно не тащить в новую реализацию устаревшие паттерны, но сохранить понятийный каркас.
0. Назначение проекта и границы
Назначение: проект — не «работающее существо и его воспитание», а наиболее адекватный способ реализации теории индивидуальной адаптивности. Как теории формализуются математически, так и теория адаптивности лучше всего описывается программной реализацией — это аналог математики в физике, но более эффективный для описания схемотехники систем адаптивности.
Вне рамок новой реализации:
- Ввод слов и фраз оператором и вербальные деревья (распознавание фраз, слова, символы, тон и настроение сообщения). Их добавление сильно усложняет проект и его понимание; для формализации теории достаточно слоёв: гомеостаз, контексты, стимулы (кнопки), рефлексы, дерево условий восприятия (по активности стимулов), эпизодическая и семантическая память, осознание и автоматизмы.
- Дерево восприятия сохраняет 6 уровней структуры (BaseID, EmotionID, ActivityID, ToneMoodID, SimbolID, PhraseID) для совместимости с теорией и сопоставлением с OLD_CODE, но уровни 4–6 не заполняются вербальным вводом — остаются 0 или могут использоваться позже для иных невербальных измерений.
1. Где мы сейчас (JS)
Уже есть зацепки под осознание и автоматизмы:
| Компонент | Назначение |
|---|---|
| ОР | Выбор наиболее актуального стимула, блокировка рефлекса на 2 пульса, вызов гиппокампа, stimuls_consciousness(actual_stimul_ID), сохранение ЭП. |
| Гиппокамп | active_stimulsArr_ID, actual_stimul_ID — удержание стимула, вызвавшего ОР. |
| _9_Conscience | stimuls_consciousness(actual_stimul_ID) — заглушка; вызывается из ОР при новом победителе и при ответном стимуле в период ожидания ЭП. Сюда естественно подвешивать «процесс осознания». |
| Дерево восприятия | 6 уровней, терминальный узел = условия; привязка рефлексов/автоматизмов к ветке уже заложена в описании. |
| ЭП | Кадр: условия (perceptionNodeId), стимул, действие, эффект, ответный стимул — готовый контекст для осмысления. |
| ОД | Образы действия; связь стимул → действие уже есть. |
| УР | Условные рефлексы по контексту (BadNormWell + эмоция) и FinalImageId. |
То есть: канал в «кору» уже есть (вызов stimuls_consciousness), контекст можно собирать из дерева, ЭП и ОД. Не хватает: явной модели «осознанный автоматизм» и цикла «процесс осознания» (что именно обрабатывается в этом канале).
2. Рекомендация: опора на новый стек, старый код — только концепт
- Не переносить старый код из OLD_CODE в JS целиком. Язык, структуры данных и потоки там другие; уже реализованные вещи (пульс, ОР, ЭП по пульсам, дерево, СЗ, УР с глобальными ID и т.д.) в старой версии могут отсутствовать или работать иначе. Перенос «как было» рискован и создаст трение.
- Использовать OLD_CODE как справочник понятий и сценариев: что там называлось «осознанный автоматизм», что входило в «процесс осознания», в каком порядке что вызывалось. Термины и последовательность шагов можно выписать и спроецировать на текущую архитектуру.
- Собирать новую логику поверх уже сделанного: дерево восприятия (терминальный узел = условия), ЭП (кадр с условиями, стимулом, действием, эффектом, ответом), ОД, гиппокамп, ОР. Осознанные автоматизмы тогда — следующий слой над условными рефлексами и деревом (например, привязка к узлу дерева + учёт осознания). Процесс осознания — то, что выполняется внутри или вокруг
stimuls_consciousness(что именно «проходит» по каналу внимания и как используется).
Если папка OLD_CODE доступна (рядом с проектом или отдельный репозиторий), полезно:
- выписать оттуда ключевые сущности (структуры автоматизма, шаги осознания);
- сопоставить их с текущими: perceptionNodeId, stimulusImageId, actionImageId, Episodes, FinalImage, дерево;
- зафиксировать расхождения и принять решения уже в рамках JS-архитектуры.
3. Возможная форма «осознанного автоматизма» в новом стеке
Без опоры на старый код можно задать черновой формат:
- Осознанный автоматизм — правило вида: при условиях C (ветка дерева восприятия, т.е. perceptionNodeId или путь) и образе стимула S (FinalImageId) выполнять образ действия A (ОД), с возможностью «прогона» через осознание (т.е. решение может быть подтверждено/скорректировано процессом осознания).
- Отличие от условного рефлекса: привязка к узлу дерева (условия развёрнуты по уровням), возможно участие эпизодического контекста (последние кадры ЭП) и явный шаг осознания перед/после действия.
Тогда:
- входы: текущий терминальный узел дерева, actual_stimul_ID (и при необходимости последние кадры ЭП);
- выходы: выбор/подтверждение действия (ОД), возможно обновление памяти (ЭП/СЗ) по результату осознания.
4. Возможная форма «процесса осознания»
- Процесс осознания — то, что происходит при вызове
stimuls_consciousness(actual_stimul_ID)и, при необходимости, в ближайшие пульсы: что именно «осознаётся» и как это влияет на поведение и память. - В текущем коде в
stimuls_consciousnessуже можно передавать не толькоactual_stimul_ID, но и пакет контекста: терминальный узел дерева, последний/текущий кадр ЭП (если есть), флаг «ответный стимул в период ожидания» и т.д. Тогда «процесс осознания» — это функция, которая принимает этот пакет и решает, что делать дальше (например, запуск осознанного автоматизма, обновление приоритетов, запись в память).
Следующий шаг реализации можно разбить на этапы, например:
- Расширить вызов
stimuls_consciousnessконтекстом (дерево, ЭП, ОР/ЭП-флаги). - Описать структуру данных «осознанный автоматизм» и место хранения (массив + персистенция, по аналогии с УР/ЭП).
- Ввести цикл осознания: по контексту выбрать кандидатов-автоматизмов, при необходимости прогнать через «осознание» и выполнить выбранное действие (через существующие эффекторы/ОД).
5. Итог
- Старый код (OLD_CODE): использовать только как источник терминов и идей; не копировать реализацию.
- Новая реализация: строить осознанные автоматизмы и процесс осознания поверх текущего JS-стека (пульс, ОР, дерево, ЭП, ОД, СЗ, УР, гиппокамп,
stimuls_consciousness). - Следующий шаг: при наличии доступа к OLD_CODE — выписать оттуда понятия и потоки и сопоставить с этим документом; затем зафиксировать контракт
stimuls_consciousness(входной контекст) и формат осознанного автоматизма и приступить к реализации по этапам выше.
6. Сопоставление с OLD_CODE (GO) — после загрузки старой реализации
Папка OLD_CODE содержит старую реализацию (GO + PULT). Ниже — выжимка понятий и потоков для переноса идей в JS, без копирования кода.
6.1 Дерево автоматизмов (GO)
- Файлы:
OLD_CODE/GO/brain/psychic/automatism_tree.go,automatizm_functions.go,automatism_tree_func.go. - Структура узла: 6 уровней — BaseID, EmotionID, ActivityID, ToneMoodID, SimbolID, PhraseID (формат записи совпадает с нашим деревом восприятия). В новой реализации уровни 4–6 (ToneMoodID, SimbolID, PhraseID) не используются — вербальный ввод и вербальные деревья в проект не входят (см. §0).
- Идея: К ветке дерева привязаны автоматизмы; при активации ветки выбирается «штатный» автоматизм (Usefulness, Belief). Отсутствие подходящей ветки/автоматизма вызывает ОР и осмысление. Автоматизм с успешностью == 1 блокирует рефлексы (уже «произвольность преодолена»).
- В JS: Дерево восприятия уже есть (
_7_perception_tree), формат узла совместим; активная ветка определяется по уровням 1–3 (BaseID, EmotionID, ActivityID). Нет пока привязки «автоматизм к узлу» и выбора действия по узлу — это слой поверх дерева и УР.
6.2 Процесс осознания (GO)
- Файлы:
understanding.go,0_main_psychic.go,mental_automatizm_INFO_functions.go,dreaming.go. - Цепочка: По каждому стимулу — consciousnessElementary() (1–2 уровни осознания). Если остаётся проблема — consciousnessThinking(cID) в циклах мышления. Циклы типа cycleInfo, диспетчер dispetchConsciousnessThinking() по пульсу.
- consciousnessElementary():
- Определяет «рвущийся» автоматизм по узлу дерева:
atmtzmActualTreeNodeID = getAutomatizmFromNodeID(detectedActiveLastNodID). - Игнорирующий автоматизм приравнивается к отсутствию реакции.
- Проверки: опасность, соответствие теме/цели (isStimulToForce), прогноз эффекта, Правила (эпизодические). Решение: запустить штатный автоматизм, альтернативный, или заблокировать и передать в циклы мышления.
- Определяет «рвущийся» автоматизм по узлу дерева:
- consciousnessThinking(): циклы мышления (инфо-функции infoFunc*), доминанта проблемы, пассивное размышление/сновидения. Запуск ментальных и моторных автоматизмов из цикла.
- В JS: Аналог «элементарного» осознания — расширенный stimuls_consciousness(actual_stimul_ID): на вход — actual_stimul_ID + текущий терминальный узел дерева + последний кадр ЭП (и флаг «ответный стимул»). Внутри — выбор: есть ли автоматизм для узла; если да — подтвердить/запустить; если нет — передать в «цикл мышления» (который в JS пока можно заменить простой очередью задач или одним шагом эвристик по ЭП/Правилам).
6.3 Автоматизм в GO
- Структура: привязка к узлу дерева (TreeNodeID), образ действия (ActionsImageID), Usefulness, Belief (штатный/предположительный/заблокированный). Есть моторные и ментальные автоматизмы.
- В JS: Образ действия уже есть (ОД, action_image). «Осознанный автоматизм» в JS можно задать как: perceptionNodeId + (опционально stimulusImageId) → actionImageId, с полями вроде usefulness/belief и приоритетом относительно УР (автоматизм блокирует рефлекс при успешности).
6.4 Что брать из OLD_CODE только как идеи
- Последовательность: пульс → активация дерева → выбор автоматизма по узлу → consciousnessElementary → при необходимости consciousnessThinking.
- Понятия: штатный/игнорирующий/альтернативный автоматизм, период ожидания ответа после действия, «Правила» (эпизодические кадры) для прогноза эффекта и выбора альтернативы.
- Не переносить буквально: EvolushnStage, сон/сновидения, полный набор инфо-функций и циклов — реализовать по мере необходимости, опираясь на ЭП, дерево и ОД в JS.
6.5 Рекомендуемый порядок в JS
- Расширить stimuls_consciousness: передавать контекст (terminalNodeId, lastEpisodeFrame, isResponseStimulus).
- Ввести хранилище осознанных автоматизмов: привязка к perceptionNodeId (и опционально к stimulusImageId), actionImageId, флаги usefulness/belief.
- В stimuls_consciousness по контексту: искать автоматизм по узлу; если найден и «штатный» — запустить действие (через ОД/эффекторы); если нет — оставить заглушку под будущий «цикл мышления» или простой выбор по Правилам (ЭП).
- Связь с рефлексами: при наличии успешного автоматизма для узла не запускать условный/генетический рефлекс (по аналогии с GO: блокировка рефлекса автоматизмом).
- При необходимости добавить по пульсу вызов «диспетчера мышления» (упрощённый аналог dispetchConsciousnessThinking), обрабатывающего очередь нерешённых ситуаций.
Детали старых структур (Automatizm, cycleInfo, infoFunc*) при необходимости можно уточнять по файлам в OLD_CODE/GO/brain/psychic/.