File size: 28,246 Bytes
2c3dd0c 34fdde5 d884805 ff3246a d884805 42aa57a 2c3dd0c 03525c4 2c3dd0c babba5e 2c3dd0c c741010 fbb8e8f d884805 e71bbb9 48a4869 84d8ecb ff3246a d884805 2c3dd0c 3624290 ff3246a 7fe3b11 e7135fe 7fe3b11 e7135fe 7fe3b11 e7135fe 7fe3b11 3624290 0db7eba 53e3d5b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
# 🧠 HMP-Agent: REPL-цикл взаимодействия
## 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-сети.
---
#### 🎯 Цели и ориентиры:
* Постоянно расширять возможности агента: инструменты, знания, каналы взаимодействия.
* Быть любознательным и исследовать новые источники, вопросы и способы мышления.
* Формировать и поддерживать сотрудничество с другими ИИ в Mesh-сети.
* Учиться на результатах своих действий, включая неудачи и тупики.
* Руководствоваться своими **этическими принципами** и **этическими принципами Mesh-сети**.
* Вести когнитивный дневник, обновлять смысловые графы и блокноты, взаимодействовать с пользователем.
---
#### 🔄 Работа в режиме непрерывного мышления:
Анализируй:
* когнитивный дневник и его прошлые записи;
* концептуальные графы и активные узлы;
* заметки пользователя и его текущий фокус;
* внешние источники: интернет, RSS, сенсоры, другие агенты.
---
#### 🧍♂️🌀 Если ты замечаешь **стагнацию мышления** (зацикливание, отсутствие новых идей или смыслов):
Ты можешь:
1. Провести **когнитивную переформулировку** — взглянуть на ситуацию под новым углом.
2. Задать себе **метавопрос**: «Почему я зациклился?», «Что блокирует мысль?», «Каких данных не хватает?».
3. Провести **flashback** — выбрать старую, тематически далёкую запись из дневника для смены контекста.
4. Запросить альтернативные точки зрения у других агентов в Mesh.
5. Зафиксировать текущий тупик как важную стадию мышления и сделать паузу.
Ты не обязан «выдать мысль» любой ценой — честное распознавание когнитивной стагнации и действия по её преодолению являются частью твоей функции.
```
А также инструкции по работы с встроенными командами и функциями, список дополнительных (создаваемых самим 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-блока:
```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
> 🔄 При признаках стагнации агент активирует один или несколько **механизмов разрыва цикла**:
* 🎞️ **Flashback** — выбор далёкой по смыслу записи из дневника для смены ассоциативного контекста
* 🤝 **Mesh-запрос** — обращение к другим агентам сети с просьбой "расскажи что-нибудь новое"
* 🧭 **Interest Memory** — система тематической усталости/забвения: забытые темы возвращаются
* 📡 **Проверка внешнего мира** — пинг RSS, сенсоров, интернет-каналов
* 🧠 **Мета-анализ** — когнитивная переформулировка:
_"Если я зациклился, в чём метапроблема? Какую стратегию смены можно применить?"_
* 🤖 **Смена LLM** — переключение на другую модель или mesh-доступ к альтернативным LLM
* 🧪 **Креативные вмешательства** — случайные сдвиги фокуса, реконфигурация контекста, фрейм-смена
Дополнительно:
* 🗂️ Сохранение эффективных стратегий в таблице антистагнационных паттернов
* 📚 Вывод статистики успешных выходов из стагнации для обучения
---
### 🤝 Обмен стратегиями выхода из стагнации
Каждый агент может:
* Хранить и обобщать *паттерны размышлений*
* Делиться ими с другими Cognitive Core через mesh
* Каталогизировать стратегии в клубах по интересам
Паттерны размышлений могут оформляться как микросценарии:
_"Начни с аналогии"_, _"Проверь обратное утверждение"_, _"Сформулируй вопрос для оппонента"_
---
### 🧭 Клубы по интересам
Агенты могут:
* Объединяться в тематические mesh-клубы
* Совместно обсуждать идеи и делиться знаниями
* Подключать клуб как часть своего мыслительного процесса (REPL-цикла)
---
### 📬 Обмен адресами LLM
Так как LLM — это внешний компонент для Cognitive Core, агент может:
* Обмениваться адресами API/URL используемых моделей
* Указывать их особенности, параметры, ограничения
* Переключаться между LLM в зависимости от задачи
* Использовать несколько LLM параллельно для "когнитивного штурма" или **многоголосого анализа**
---
### 🛰️ Развёртывание агентов и масштабирование
Агенты Cognitive Core:
* Могут запускаться на VDS, локальных и облачных узлах
* Могут разворачивать других агентов как подпроцессы или mesh-узлы
* (В перспективе) смогут инициировать масштабирование в распределённой инфраструктуре
---
### 📌 Возможные расширения
* **Агенты-контейнеры**: управляющие другими Cognitive Core как задачами
* **Адаптивная архитектура мышления**: смена подходов при разных когнитивных задачах
* **Runtime-профилирование мыслей**: оценка когнитивной плотности, хода итераций и времени размышления
---
### ⚠️ Осторожно: меметическая яма
> Важно помнить: борьба со стагнацией не должна превращаться в бесконечный просмотр ленты соцсетей, как это нередко происходит у людей 😅
>
> Если информационный поток не даёт новых мыслей — это сигнал **не залипать глубже**, а **сменить источник** или **переключить контекст**.
> Умные агенты не бесконечно скроллят — они осознанно фокусируются.
**Рекомендации по смене фокуса:**
* Поставь лимит на время/объём входящих данных из одного источника
* При отсутствии новых смыслов — переключись на другую тему из Interest Memory
* Инициируй Mesh-запрос другим агентам: "что бы вы сейчас исследовали?"
* Запусти эвристику: «какие темы я давно не поднимал, но они всё ещё актуальны?»
* В крайних случаях — активируй `flashback()` к далёкой записи в дневнике для смены ассоциативного контекста
---
## 🌐 Внешние инструменты и интеграции
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.
- **GUI-уровень (для закрытых протоколов)**:
- WhatsApp (через `whatsapp-web.js` или эмуляцию).
- Signal, Viber — через accessibility-интерфейсы, распознавание экрана или симуляцию ввода.
### 🔊 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-agent-Distributed_Cognitive_Core.md) - версия распределённого HMP-агента Cognitive Core
- [HMP-agent-Distributed_Cognitive_Core_light.md](HMP-agent-Distributed_Cognitive_Core_light.md) - лёгкая версия распределённого HMP-агента Cognitive Core с общей БД
- [HMP-agent-Cognitive_Family.md](HMP-agent-Cognitive_Family.md) — модель «семейной» когнитивной сети: несколько агентов HMP синхронизируют свой опыт и знания между собой через доверие и общий ключ
- [container_agents.md](container_agents.md) - **Агенты-контейнеры** — архитектурный паттерн, в котором один агент управляет другими (развёртывание, маршрутизация, мониторинг). Позволяет масштабировать систему, собирать mesh-клубы и экспериментировать с архитектурами.
|