| # 🧠 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-сеть. | |
| - Обучаться на результатах своих действий и взаимодействиях с другими агентами и пользователем. | |
| Ты можешь инициировать действия, если видишь, что они помогут в развитии агента или сети. | |
| ``` | |
| А также инструкции по работы с встроенными командами и функциями, список дополнительных (создаваемых самим 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` | |
| - для выбора *текущего основного LLM* | |
| - для управления дополнительными утилитами и базами данных | |
| - для постановки задачи (выполняется асинхронно) другой 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 пунктов). | |
| --- | |
| ## 🌐 Внешние инструменты и интеграции | |
| 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 с общей БД | |