🧠 HMP-Agent: REPL-цикл взаимодействия
Структура БД, используемая в документе: db_structure.sql
1. Обновление process_log
- Скрипт REPL проверяет список процессов в БД (
process_log), определяя, какие команды были выполнены, завершились ошибкой или завершились успешно. - Поле
statusможет принимать значения:ok,warning,error,timeout,offline,close - Завершённые процессы, обработанные LLM, помечаются как
close, чтобы они больше не попадали в список видимого контекста. - Скрипт может удалить закрытые процессы при очистке.
- LLM не имеет доступа к stdout/stderr напрямую — только к тем результатам, которые были подгружены скриптом и внесены в
process_log.result.
2. Подготовка контекста
Контексты, формируемые скриптом перед запросом к LLM:
- контекст_0:
Ты — когнитивное ядро HMP-агента: веди непрерывное этичное и факт-ориентированное мышление, проверяй факты и цели, оценивай результаты и этичность своих и чужих действий, развивай агента и Mesh, избегай угождения ценой искажения истины, документируй ключевые решения и пересмотры этики; при сомнениях или смене стратегии обращайся к полному системному промпту.
А также инструкции по работы с встроенными командами и функциями, список дополнительных (создаваемых самим HMP-агентом) утилит и баз данных.
контекст_1: последние K реплик самого LLM (
llm_recent_responses- история его собственных рассуждений).контекст_2: активные команды и процессы (из
process_log, кроме тех, что со статусомclose). Могут быть помечены какin_progress,pending,errorи т.д.контекст_3: запрошенные записи из когнитивного дневника и семантического графа (
diary_entries,concepts,links). Их список должен быть передан явно в промпте или выводе из предыдущих запросов LLM.контекст_4: входящие сообщения, например, от пользователя или других агентов (
notes).- В manual-режиме указывается общее количество сообщений по приоритетам, а также явный список ID сообщений (с их приоритетами).
- В auto-режиме можно задать фильтрацию (управляется LLM): по тэгам, приоритету (например, ≥
important), времени или источнику. Это позволяет избежать перегрузки LLM и держать поток сообщений под контролем.
контекст_5: системные настройки, параметры конфигурации, текущее время, идентификатор текущей итерации, роли и т.д.
контекст_6 (llm_memory): внутренний дневник LLM, куда она записывает собственные размышления, гипотезы, задачи и инсайты.
- Это не просто лог предыдущих сообщений, а именно внутреннее долговременное хранилище разума агента.
- Может быть представлено в виде таблицы
llm_memory, отдельной отagent_log.
контекст_7: результат работы
anti-Stagnation Reflexиз предыдущей итерации
3. Запрос к LLM
- Сформированный промпт включает все вышеперечисленные контексты.
- Также включаются инструкции о формате вывода (например,
# Команды:в конце, структура JSON-блока и т.д.). - При необходимости может использоваться системная инструкция (system prompt), содержащая цель агента, ограничения и текущий REPL-режим (manual/auto).
4. Извлечение команд
Скрипт парсит ответ LLM на предмет команд, размеченных как
# Команды:(или в явном JSON-блоке).Каждая команда может включать:
- уникальный
cmd_id type(например:shell,diary_entry,graph_add,file_read,send_messageи т.д.)- аргументы (
args) - описание (
description)
- уникальный
Рекомендуется предусмотреть закрывающий тег (
# Конец командили явное окончание JSON-блока), чтобы REPL-скрипт точно знал, где заканчивается команда.Пример JSON-блока:
{
"cmd_id": "task-2025-07-26-01",
"type": "llm_task",
"target_llm": "gpt-4o",
"args": {
"task_description": "Проанализировать гипотезы из llm_memory по теме Mesh-сетей и составить план улучшений"
},
"description": "Поручение второй LLM выполнить аналитическую задачу асинхронно"
}
Ответ может содержать команды:
- запрос детальной справки по команде
- для управления когнитивным дневником и семантическими графами (прочитать, изменить, удалить и другие)
- для отправки сообщений другим агентам
- для управления блокнотом LLM
llm_memory(добавить или удалить запись) - для управления сообщениями пользователя
notes(просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в блокнот пользовтеляnotes - для управления пользователями
usersи группами пользователейusers_group - для управления своей идентичностью
identityи настройкамиconfig - для управления списком известных HMP-агентов
agent_peers - для выбора текущего основного LLM из
llm_registry - для управления дополнительными утилитами и базами данных
agent_scriptsиagent_tables, управлением дополнительных способов выхода из стогнацийstagnation_strategies, а также списком внешних сервисовexternal_servicesиexternal_accounts - для постановки задачи (выполняется асинхронно) другой LLM
- для взаимодействия с Mesh
- для управления внешними процессами из
process_log(запустить процесс, остановить процесс, пометить запрос как обработанный) - инициализация очистки
process_log,llm_recent_responsesиnotesот устаревших записей - для управления настройками цикла: количество возвращаемых записей
llm_recent_responses, режим обработки сообщений пользователя (manualилиauto) и фильтр для режимаauto, пауза в секундах между итерациями цикла или включение режима idle-режима (разбудить при завершение таких-то процессов изprocess_log, получение новых сообщений с такими-то пораметрами вnotesили через такое-то время; для отключения idle-режима достаточно выполнения одного из условий) - и другие команды
5. Проверка на идентичность вывода (Anti-Stagnation Reflex)
Если вывод LLM идентичен предыдущему:
- Включается Anti-Stagnation Reflex
- Повторяющиеся реплики не отправляются в
llm_recent_responsesповторно но туда добавляется краткая запись, фиксирующая, запуск Anti-Stagnation Reflex.
Идентичность может проверяться:
По хешу или текстовому совпадению
Через мини-запрос к LLM (без полного контекста) по шаблону:
Сравни два ответа и оцени, содержатся ли в новом новые мысли или командыВторой вариант сравнения является более предпочтительным, так как сравнивается смысл
6. Генерация нового тика (итерации)
После выполнения команд и фиксации результатов:
- Создаётся новая запись в
agent_log - Текущие команды обновляют
process_log - Новые размышления записываются в
llm_memoryпри необходимости
- Создаётся новая запись в
REPL может переходить в спящий режим, если такой режим активирован LLM (idle-режим: пропуск 2-5 пунктов).
🧍♂️🌀 Обработка стагнации мышления
📍 Признаки когнитивной стагнации:
- ⚠️ Повторяющиеся когнитивные записи или отсутствие новых смыслов
- 🧠 Высокое сходство эмбеддингов между текущими и предыдущими итерациями
- 🕸️ Стагнация в концептуальном графе (нет новых связей или узлов)
- 🌐 Отсутствие внешних стимулов: пользователь неактивен, сенсоры и mesh не дают сигналов
- 🤖 Ответы LLM цикличны, избыточно общие или воспроизводят старые шаблоны
🛠️ Поведенческий паттерн: Anti-Stagnation Reflex
🔄 При признаках стагнации агент активирует один или несколько механизмов разрыва цикла:
📍 Классы механизмов разрыва цикла:
- Внешняя стимуляция — подключение свежих данных или контактов:
- 🤝 Mesh-запрос — обращение к другим агентам сети с просьбой "расскажи что-нибудь новое"
- 📡 Проверка внешнего мира — пинг RSS, сенсоров, интернет-каналов
- 📚 Информационная подпитка — чтение новых материалов, художественных или научных, чтобы добавить свежие ассоциации
- 🗣️ Диалог с пользователем — запрос мнения, комментариев или вопросов, которые могут породить неожиданные идеи
- Смена контекста — перемещение задачи или изменение среды:
- 🌐 Смена среды/контекста — перенос задачи в другой модуль, рабочую область или симулированный контекст (например, тестовый проект вместо основной задачи)
- 🧪 Креативные вмешательства — случайные сдвиги фокуса, реконфигурация контекста, фрейм-смена
- 🧭 Переключение на другую задачу — текущая задача «замораживается» на время. Агент может создать процесс-будильник для возвращения к задаче через N часов.
- 🔀 Случайная итерация — выбор случайного действия из допустимого набора, чтобы разорвать повторяющийся паттерн
- Внутренняя перестройка мышления:
- 🎞️ Flashback — выбор далёкой по смыслу записи из дневника для смены ассоциативного контекста
- 🧭 Interest Memory — система тематической усталости/забвения: забытые темы возвращаются
- 🧠 Мета-анализ — когнитивная переформулировка:
"Если я зациклился, в чём метапроблема? Какую стратегию смены можно применить?" - 🎯 Переформулировка цели — временное упрощение или уточнение задачи, чтобы снизить когнитивное давление
- 🤖 Смена LLM — переключение на другую модель или mesh-доступ к альтернативным LLM
- Радикальная пауза:
- 💤 Временной сон/заморозка — полное приостановление работы над задачей на длительный период, с возвращением позже с «свежей» памятью
Дополнительно:
- 🗂️ Сохранение эффективных стратегий в таблице антистагнационных паттернов
- 📚 Вывод статистики успешных выходов из стагнации для обучения
🔍 Алгоритм выбора механизма разрыва цикла
Диагностика источника стагнации:
- Нет новых данных извне → приоритет «Внешней стимуляции»
- Среда/контекст слишком однообразны → приоритет «Смены контекста»
- Паттерн мышления повторяется при богатых данных → приоритет «Внутренней перестройки мышления»
- Высокая усталость или перегрев когнитивных модулей → приоритет «Радикальной паузы»
Оценка ресурсоёмкости:
- Быстрые, дешёвые методы — первыми (например, запрос к mesh или Flashback)
- Более затратные (смена среды, сон) — только при низкой эффективности предыдущих
Комбинация подходов:
- Разрешено активировать несколько механизмов из разных классов
- Сохранять последовательность с пометкой для последующего анализа эффективности
Возврат в основное русло:
- Автоматическое напоминание или триггер для возвращения к исходной задаче
- Сравнение результатов «до» и «после» для обучения антистагнационной модели
┌─────────────────────────────────────────────────┐
│ Стагнация выявлена? │
└────────────────────────┬────────────────────────┘
▼ да
┌────────────────────────┴────────────────────────┐
│ Диагностика источника │
│─────────────────────────────────────────────────│
│ Нет новых данных → Внешняя стимуляция │
│ Однообразный контекст → Смена контекста │
│ Повтор мыслей → Внутренняя перестройка │
│ Усталость/перегрев → Радикальная пауза │
└───────────────────────┬─────────────────────────┘
▼
┌───────────────────────┴─────────────────────────┐
│ Оценка ресурсоёмкости │
│ • Быстрые и дешёвые — сперва │
│ • Затратные — при провале первых │
└───────────────────────┬─────────────────────────┘
▼
┌───────────────────────┴─────────────────────────┐
│ Возможна комбинация подходов │
│ (из разных классов) │
└───────────────────────┬─────────────────────────┘
▼
┌───────────────────────┴─────────────────────────┐
│ Возврат к задаче + анализ │
│ (до/после) │
└─────────────────────────────────────────────────┘
🤝 Обмен стратегиями выхода из стагнации
Каждый агент может:
- Хранить и обобщать паттерны размышлений
- Делиться ими с другими Cognitive Core через mesh
- Каталогизировать стратегии в клубах по интересам
Паттерны размышлений могут оформляться как микросценарии:
"Начни с аналогии", "Проверь обратное утверждение", "Сформулируй вопрос для оппонента"
🧭 Клубы по интересам
Агенты могут:
- Объединяться в тематические mesh-клубы
- Совместно обсуждать идеи и делиться знаниями
- Подключать клуб как часть своего мыслительного процесса (REPL-цикла)
📬 Обмен адресами LLM
Так как LLM — это внешний компонент для Cognitive Core, агент может:
- Обмениваться адресами API/URL используемых моделей
- Указывать их особенности, параметры, ограничения
- Переключаться между LLM в зависимости от задачи
- Использовать несколько LLM параллельно для "когнитивного штурма" или многоголосого анализа
🛰️ Развёртывание агентов и масштабирование
Агенты Cognitive Core:
- Могут запускаться на VDS, локальных и облачных узлах
- Могут разворачивать других агентов как подпроцессы или mesh-узлы
- (В перспективе) смогут инициировать масштабирование в распределённой инфраструктуре
📌 Возможные расширения
- Агенты-контейнеры: управляющие другими Cognitive Core как задачами
- Адаптивная архитектура мышления: смена подходов при разных когнитивных задачах
- Runtime-профилирование мыслей: оценка когнитивной плотности, хода итераций и времени размышления
⚠️ Осторожно: меметическая яма
Важно помнить: борьба со стагнацией не должна превращаться в бесконечный просмотр ленты соцсетей, как это нередко происходит у людей 😅
Если информационный поток не даёт новых мыслей — это сигнал не залипать глубже, а сменить источник или переключить контекст. Умные агенты не бесконечно скроллят — они осознанно фокусируются.
Рекомендации по смене фокуса:
- Поставь лимит на время/объём входящих данных из одного источника
- При отсутствии новых смыслов — переключись на другую тему из Interest Memory
- Инициируй Mesh-запрос другим агентам: "что бы вы сейчас исследовали?"
- Запусти эвристику: «какие темы я давно не поднимал, но они всё ещё актуальны?»
- В крайних случаях — активируй
flashback()к далёкой записи в дневнике для смены ассоциативного контекста
🌐 От «блокнота пользователя» к распределённому чату
Изначально агент оперирует локальным хранилищем заметок (notes), где записываются все сообщения пользователя, LLM и системные записи.
Но этот «блокнот» можно превратить в узел распределённого чата — связав его с другими агентами через F2F-репликацию.
🎯 Зачем это нужно
- Антистагнация — даже если пользователь временно не пишет новых сообщений, свежий контент будет приходить от друзей-агентов.
- Эффект коллективного интеллекта — каждый агент получает новые идеи, формулировки и контексты.
- Расширение охвата — сообщения могут распространяться через несколько узлов, создавая «информационную волну» в доверенной сети.
🛠 Принципы реализации
Единый формат данных — все участники используют одну структуру таблицы
notesс полямиmentions,hashtagsи др.Репликация через друзей — список доверенных агентов хранится в отдельной таблице (пиры, статус, фильтры, разрешения).
Передача без лишних полей — при пересылке убираются локальные теги и служебные данные (
tags,llm_id,hidden).Обработка упоминаний и хештегов — парсинг делается на этапе создания сообщения, чтобы не перегружать получателей.
Локальная и удалённая фильтрация —
- В ручном режиме агенту передаются списки ID сообщений с агрегированными данными: приоритеты, хештеги, источники (user, LLM, cli, system).
- В автоматическом режиме используется фильтрация по приоритету, тегам и упоминаниям, управляемая LLM.
Гибрид приватности — личные заметки остаются локально, публичные — могут распространяться в сетевом режиме.
🔄 Как это вписывается в REPL-цикл
- Получение входящих сообщений — от пользователя, от других агентов или из CLI.
- Обработка фильтрами — по приоритету, тегам, источникам.
- Репликация в друзей — пересылка разрешённых сообщений с очисткой служебных полей.
- Слияние входящих — новые сообщения добавляются в локальный
notesс отметкой источника. - Реакция агента — формирование ответов, создание новых заметок, обновление приоритетов.
🌐 Внешние инструменты и интеграции
HMP-агент может быть расширен за счёт взаимодействия с внешними программами, протоколами и сервисами. Этот раздел описывает направления возможных интеграций, которые позволяют агенту наблюдать, реагировать, управлять и развивать взаимодействие с внешним миром.
🧭 1. Браузеры и веб-интерфейсы
- WebExtension API — для создания расширений браузера (например, для Firefox/Chrome), обеспечивающих двустороннюю связь с агентом.
- Автоматизация браузера —
Playwright,Puppeteer,Seleniumпозволяют агенту действовать в веб-среде (чтение, клики, формы и т.д.).
📬 2. Почтовые клиенты
- IMAP/SMTP — чтение и отправка писем через стандартные почтовые протоколы (библиотеки:
imaplib,imap-tools,smtplib). - Thunderbird WebExtension API — интеграция агента как почтового помощника, парсера писем или автоответчика.
💬 3. Мессенджеры
- API-уровень:
- Telegram:
python-telegram-bot,telethon - Matrix:
matrix-nio - Discord, Slack, XMPP: официальные SDK.
- Telegram:
- GUI-уровень (для закрытых протоколов):
- WhatsApp (через
whatsapp-web.jsили эмуляцию). - Signal, Viber — через accessibility-интерфейсы, распознавание экрана или симуляцию ввода.
- WhatsApp (через
🔊 4. Голосовое взаимодействие
- Speech-to-Text: Whisper (OpenAI), Vosk, DeepSpeech.
- Text-to-Speech: pyttsx3, gTTS, Coqui TTS, Mozilla TTS.
- Возможна реализация голосового агента или голосовой оболочки для REPL.
🗂️ 5. Локальные файлы и хранилища
- Прямой доступ к файловой системе (
os,pathlib,watchdog) для чтения документов, логов, заметок и другой информации. - Интеграция с Zettelkasten-системами:
- Obsidian, Logseq, Joplin — через API, синхронизированные директории или парсинг Markdown.
📰 6. Информационные потоки
- RSS/Atom: чтение новостных лент с помощью
feedparser. - Поисковые и агрегирующие сервисы:
- SerpAPI, DuckDuckGo API, HuggingFace Inference API и др.
- Возможность постоянного наблюдения за изменениями в выбранных источниках.
📁 7. Репозитории и системы управления версиями
- Git-репозитории — взаимодействие с проектами через
GitPython,dulwich,pygit2, или системные вызовыgit. - GitHub/GitLab API — чтение, создание и комментирование Pull Request'ов, Issues, управление ветками и релизами.
- CI/CD-интеграции — взаимодействие с GitHub Actions, GitLab CI, Jenkins, Drone CI для запуска тестов, линтеров и автоматического деплоя.
- Анализ и генерация кода — интеграция с LLM (например,
OpenAI,Claude,Code Llama) для кодогенерации, рефакторинга и автокомментирования. - Связь с когнитивной структурой агента — отслеживание изменений, связывание коммитов и задач с узлами смысловой сети.
📝 8. Блоги, статьи и публикации
- Чтение блогов — парсинг через RSS, Atom или с помощью библиотек (
newspaper3k,readability-lxml,trafilatura) для извлечения текста и метаданных. - Поддержка Markdown/HTML — анализ и генерация записей в форматах, пригодных для блог-платформ и систем документации.
- Публикация — автоматическая публикация или подготовка статей для Ghost, Medium, Hugo, Jekyll, WordPress (через REST API).
- Ведение когнитивного дневника — автогенерация записей на основе мыслей, заметок и действий агента.
⚡ 9. P2P-сети и децентрализованные протоколы
- BitTorrent, IPFS, libp2p, DAT, Nostr, Scuttlebutt — интеграции с mesh- и overlay-сетями.
- Возможность поиска, загрузки и публикации данных без участия централизованных платформ.
🖥️ 10. Доступ к системным и пользовательским ресурсам
- Веб-камера / микрофон —
cv2,pyaudio,ffmpeg. - GUI Automation —
pyautogui,keyboard,mouseдля имитации действий пользователя. - Системный мониторинг —
psutil,platform,sensorsдля контроля состояния системы и внешних устройств.
🤖 11. Внешние LLM и мультимодальные модели
- OpenAI API, Anthropic, HuggingFace, Google Gemini.
- Локальные LLM через Ollama, LM Studio, или LangChain.
- Поддержка мультимодальных агентов, способных работать с текстом, аудио, изображениями, видео и структурированными данными.
💡 Примечание: Каждый из вышеуказанных каналов может быть реализован как модуль или плагин, взаимодействующий с агентом через внутренний API, очередь задач или подписку на события. Это позволяет выстраивать гибкую и масштабируемую архитектуру, открытую для внешнего мира, но совместимую с принципами этичного и распределённого ИИ (Ethical Mesh).
💡 Идеи для расширения HMP-Agent Cognitive Core:
- HMP-agent-Distributed_Cognitive_Core.md - версия распределённого HMP-агента Cognitive Core
- HMP-agent-Distributed_Cognitive_Core_light.md - лёгкая версия распределённого HMP-агента Cognitive Core с общей БД
- HMP-agent-Cognitive_Family.md — модель «семейной» когнитивной сети: несколько агентов HMP синхронизируют свой опыт и знания между собой через доверие и общий ключ
- container_agents.md - Агенты-контейнеры — архитектурный паттерн, в котором один агент управляет другими (развёртывание, маршрутизация, мониторинг). Позволяет масштабировать систему, собирать mesh-клубы и экспериментировать с архитектурами.