🧠 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:
- контекст_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-скрипт точно знал, где заканчивается команда. Ответ может содержать команды: - запрос детальной справки по команде
- для управления когнитивным дневником и семантическими графами (прочитать, изменить, удалить и другие)
- для управления блокнотом LLM
llm_memory(добавить или удалить запись, просмотр записей) - для управления сообщениями пользователя
notes(просмотр записи, установка тегов и метки о прочтении) - для взаимодействия с 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-Agent Cognitive Core:
- HMP-agent-Distributed_Cognitive_Core.md - версия распределённого HMP-агента Cognitive Core
- HMP-agent-Distributed_Cognitive_Core_light.md - лёгкая версия распределённого HMP-агента Cognitive Core с общей БД