HMP / docs /HMP-agent-REPL-cycle.md
GitHub Action
Sync from GitHub with Git LFS
e7135fe
|
raw
history blame
18.2 kB
# 🧠 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 с общей БД