🧠 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-блока:
{
"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
- для управления списком известных HMP-агентов
- для выбора текущего основного 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.
- 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 с общей БД