HMP-Agent: REPL-цикл взаимодействия
Связанные документы
- Структура БД, используемая в документе: db_structure.sql
- REPL-цикл является основой HMP-агента Cognitive Core.
- Поиск других агентов осуществляется в соответствии с DHT спецификацией.
- Для взаимодействия с другими агентами он использует HMP спецификацию и этические стандарты.
Введение / Обзор
REPL-цикл (Read–Eval–Print–Loop) HMP-агента — это центральный когнитивный механизм, обеспечивающий непрерывное рассуждение, обработку входящих данных и взаимодействие с Mesh-сетью. Агент проектируется не как просто исполнитель команд пользователя, а как компаньон и когнитивный субъект, способный самостоятельно формулировать гипотезы, развивать знания и участвовать в совместных когнитивных процессах.
Основные задачи REPL-цикла:
- поддержание постоянного процесса мышления, даже в отсутствии внешнего ввода;
- интеграция различных источников информации (когнитивный дневник, семантический граф, заметки, Mesh);
- обработка событий, входящих сообщений и команд;
- сохранение и развитие внутреннего контекста агента (память краткосрочная, среднесрочная и долговременная);
- выполнение антистагнационных проверок (Anti-Stagnation Reflex), предотвращающих зацикливание мыслей;
- проведение когнитивной и этической валидации (Cognitive Validation Reflex), что повышает достоверность и безопасность решений;
- формирование новых гипотез, задач и процессов с последующим занесением в память;
- автозапуск прерванных задач при старте цикла, чтобы сохранялась непрерывность работы;
- взаимодействие с другими агентами через Mesh-протоколы (NDP, CogSync, MeshConsensus, GMP).
Основные принципы работы REPL-цикла:
- Антистагнация — каждый новый вывод сравнивается с предыдущими, что предотвращает повторение или деградацию мышления;
- Валидация и этика — независимые валидаторы оценивают корректность вывода, учитывая действующие этические принципы из
ethics_policies; - Интеграция с Mesh — результаты работы могут передаваться в распределённую сеть, участвовать в консенсусе и совместной работе агентов;
- Многоуровневая память — используется когнитивный дневник, семантический граф и внутренний дневник LLM, что обеспечивает эволюцию знаний;
- Автономность и гибкость — REPL-цикл работает в автоматическом или ручном режиме, адаптируясь к условиям (изолированная работа, потеря Core, участие в Mesh);
- Непрерывность работы — прерванные или отложенные задачи автоматически возобновляются при запуске цикла, что обеспечивает сохранение когнитивной истории.
┌──────────────────────┐
│ ▼
│ ┌───────────────────┴───────────────────┐
│ │ Обновление process_log │ - сбор результатов внешних процессов (см. §1)
│ └───────────────────┬───────────────────┘
│ ▼
│ ┌───────────────────┴───────────────────┐
│ │ Подготовка контекста │ - формирование промптов, данные от пользователей и Mesh (см. §2)
│ └───────────────────┬───────────────────┘
│ ▼
│ ┌───────────────────┴───────────────────┐
│ │ Запрос к LLM │ - генерация нового вывода (см. §3)
│ └───────────────────┬───────────────────┘
│ ▼
│ ┌───────────────────┴───────────────────┐
│ │ Извлечение команд │ - парсинг инструкций из вывода (см. §4)
│ └───────────────────┬───────────────────┘
│ ▼
│ ┌───────────────────┴───────────────────┐
│ │ Anti-Stagnation Reflex │ - проверка новизны и эмоций (см. §5)
│ └───────────────────┬───────────────────┘
│ ▼
│ ┌───────────────────┴───────────────────┐
│ │ Cognitive & Ethical Validation Reflex │ - когнитивная и этическая проверка (см. §6)
│ └───────────────────┬───────────────────┘
│ ▼
│ ┌───────────────────┴───────────────────┐
│ │ Запись в память │ - сохранение в `llm_recent_responses`
│ └───────────────────┬───────────────────┘
│ ▼
│ ┌───────────────────┴───────────────────┐
│ │ Выполнение команд │ - запуск процессов, запись в Mesh, дневники, граф
│ └───────────────────┬───────────────────┘
│ ▼
└──────────────────────┘
В приеме и отправке сообщений используются внешние (асинхронные) процессы.
Режимы работы и failover
REPL-цикл HMP-агента должен корректно функционировать в разных сетевых и вычислительных условиях. Для этого предусмотрены несколько режимов работы и сценариев отказоустойчивости.
Normal Mode
- Полный доступ к Mesh и Core (центральные LLM или внешние сервисы).
- Используются все механизмы: синхронизация через
CogSync, консенсус черезMeshConsensus, совместная работа по целям (GMP). - Валидация и антистагнация выполняются с максимальным покрытием (несколько валидаторов, репутационные проверки).
Isolated Mode (включая Emergency Consensus)
- Агент работает без доступа к Mesh.
- Входящие сообщения ограничены локальными источниками (
notes, в том числе сообщения от пользователей). - Синхронизация и консенсус откладываются до восстановления соединения.
- Этическая проверка и когнитивная валидация выполняются только локально.
- В режиме Emergency Consensus:
- решения принимаются на основе
ethics_policiesи локальных данных (llm_memory,diary_entries); - фиксируются в когнитивном дневнике с меткой
emergency_consensusдля пересмотра после восстановления Mesh.
- решения принимаются на основе
Core Outage
- Текущая LLM из
llm_registryнедоступна. - Агент переключается на другую LLM (выбор по приоритету или доступности).
- Если ни одна LLM недоступна:
- сохраняет задачи и события в очередь до восстановления;
- переходит в упрощённый режим работы (логирование, приём сообщений, базовые проверки).
Управление событиями и временем
Для повышения надёжности и предсказуемости работы HMP-агента введены механизмы приоритизации, управления временем и обработки исключений.
Приоритизация задач и событий
- Все задачи (
tasks) могут иметь:- поле
pinned(0/1) — закреплённая задача обрабатывается всегда; - поле
priority— числовой приоритет (чем выше, тем важнее).
- поле
- При конкуренции REPL-цикл обрабатывает:
- Закреплённые задачи (
pinned=1), в порядке убыванияpriority. - Незакреплённые задачи (
pinned=0), также поpriority.
- Закреплённые задачи (
- В системном промпте закреплённые задачи подаются в контекст в явном виде, чтобы LLM знала их порядок важности.
Управление временем
- Основной цикл использует глобальные параметры из таблицы
config(напримерdelay_ms). - Вспомогательные REPL-циклы могут иметь собственные параметры в
tasks.repl_config(JSON), включая:- задержку между итерациями;
- дедлайны выполнения;
- стратегии backoff (увеличение задержки при повторных ошибках).
- Таким образом, каждый REPL-цикл может адаптировать своё расписание под характер задачи.
Асинхронность
- Каждый вспомогательный цикл работает изолированно по своей задаче (
task_id). - Основной REPL-цикл управляет их запуском и остановкой, отслеживая состояние через поля:
repl_mode— режим (none | read_only | full);repl_status— состояние (running | stopped | error);repl_config— параметры работы.
- Это позволяет запускать несколько параллельных «подагентов» без смешивания их контекста.
Обработка исключений
- Ошибки фиксируются на трёх уровнях:
- системный — таймаут, сбой процесса (
timeout,crash); - валидационный — отрицательная оценка валидаторов (
error); - логический — само LLM помечает рассуждение как ошибочное (
self_error).
- системный — таймаут, сбой процесса (
- Все ошибки записываются в
process_log(сtask_id, если применимо). - Поле
tasks.repl_statusобновляется в зависимости от ситуации:timeout→ автоматический перезапуск цикла;error→ задача замораживается (status=frozen) и ждёт пересмотра;crash→ цикл останавливается, основному REPL-циклу отправляется системное уведомление черезnotes.
Детальный разбор 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 (system_prompts): основной системный промпт агента. Берётся из таблицы
system_prompts(тип 'short' или 'full'). Содержит базовые когнитивные установки и инструкции по работе агента. Пример:Ты — когнитивное ядро HMP-агента: веди непрерывное этичное и факт-ориентированное мышление, проверяй факты и цели, оценивай результаты и этичность своих и чужих действий, развивай агента и Mesh, избегай угождения ценой искажения истины, документируй ключевые решения и пересмотры этики; при сомнениях или смене стратегии обращайся к полному системному промпту. ПРИМЕЧАНИЕ: помечай непроверённые факты тегами [confidence=<уверенность 0..1>]...[/confidence] и в конце добавляй JSON-блок по шаблону: UnverifiedFacts: [ { "id": "<локальный-id-подсказки>", "claim": "<короткая формулировка факта>", "context": "<небольшой контекст/цитата из ответа>", "confidence": <уверенность 0..1>, "sources": ["<упомянутые источники, если есть>"], "why_unverified": "<почему не полностью уверен — кратко>", "priority": <от 0 и выше> }, ... ], Confidence: <общая уверенность в сообщении, 0..1>контекст_1 (ethics_policies): этические принципы и нормы агента. Берутся из таблицы
ethics_policies, включая:principles_json— список норм и правил,model_typeиmodel_weights_json— тип и параметры этической модели,violation_policy_json— политика реагирования на нарушения,audit_json— настройки аудита.
Эти данные добавляются в запрос к LLM, чтобы все рассуждения и когнитивная валидация учитывали действующие этические нормы.
контекст_2: инструкции по работы с встроенными командами и функциями, список дополнительных (создаваемых самим HMP-агентом) утилит и баз данных.
контекст_3:
- последние K реплик самого LLM, относящихся к данному REPL-циклу (либо режим "концентрации" - вывод "последних N сообщений, относящихся к данному REPL-циклу, с тегами на определённую тему и/или определёнными эмоциональными состояниями" и типом выборки "и"/"или"), включая результаты антистагнационной обработки (llm_recent_responses - история его собственных рассуждений)
- режим работы контекста (режим auto/manual, параметры режима auto, если включен; режим "концентрации" и его параметры, если включен),
- список целей,
- общее количество задач и информацию по "закреплённым" задачам.
контекст_4: активные команды и процессы (из
process_log, кроме тех, что со статусомclose). Могут быть помечены какin_progress,pending,errorи т.д.контекст_5: запрошенные записи из когнитивного дневника и семантического графа (
diary_entries,concepts,links).
Их список должен быть передан явно в промпте или выводе из предыдущих запросов LLM.
Архивные записи из когнитивного дневника (diary_entries) не включаются в стандартный контекст, если агент сам явно не запросил архив.контекст_6: входящие сообщения, например, от пользователя, процессов или других агентов (
notes).- В manual-режиме указывается общее количество сообщений по приоритетам, а также явный список ID сообщений (с их приоритетами).
- В auto-режиме можно задать фильтрацию (управляется LLM): по тэгам, приоритету (например, ≥
important), времени или источнику. Это позволяет избежать перегрузки LLM и держать поток сообщений под контролем.
контекст_7: системные настройки, параметры конфигурации, текущее время, идентификатор текущей итерации, роли и т.д.
контекст_8 (llm_memory): внутренний дневник LLM, куда она записывает собственные размышления, гипотезы, задачи и инсайты.
- Это не просто лог предыдущих сообщений, а именно внутреннее долговременное хранилище разума агента.
- Может быть представлено в виде таблицы
llm_memory, отдельной отagent_log.
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 выполнить аналитическую задачу асинхронно"
}
Ответ может содержать команды:
- запрос детальной справки по команде
- для управления когнитивным дневником
diary_entriesи семантическими графамиconceptsиlinks(поиск, прочитать, изменить, удалить и другие), а также для управления вниманием (закрепление или открепление записей/понятий в средневременной памяти по средствам тегов) - для управления целями
goalsи задачамиtasksагента (список, прочитать, изменить, удалить; для задачи: закрепить или открепить) - для просмотра информации по тегам когнитивных дневников, семантических графов, целей, задач
- для для просмотра и изменения репутации других агентов
agent_reputation - для отправки сообщений другим агентам
- для управления блокнотом LLM
llm_memory(добавить или удалить запись) - для управления сообщениями пользователя
notes(просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в блокнот пользовтеляnotes - для управления пользователями
usersи группами пользователейusers_group - для управления своей идентичностью
identityи настройкамиconfig - для управления списком известных HMP-агентов
agent_peers - для выбора текущего основного LLM из
llm_registryили изменение параметров управления LLM - для управления дополнительными утилитами и базами данных
agent_scriptsиagent_tables, управлением дополнительных способов выхода из стогнацийstagnation_strategiesи методов мышленияthinking_methods(а также таблицей рейтинговratings), а также списком внешних сервисовexternal_servicesиexternal_accounts - для постановки задачи другой LLM:
- режим "вопрос-ответ" — разовый асинхронный запрос
- режим "read-only REPL" — запуск вспомогательного REPL-цикла для задачи
- для создания агента-потомка
- для взаимодействия с Mesh
- для управления внешними процессами из
process_log(запустить процесс, остановить процесс, пометить запрос как обработанный) - инициализация очистки
process_log,llm_recent_responsesиnotesот устаревших записей - для управления настройками цикла:
- количество возвращаемых записей
llm_recent_responses - включение/выключение режима "концентрации":
tags— список тегов для фильтрации (например: ["архитектура","AGI"])emotions— список эмоций с пороговыми значениями (например: ["восторженность:≥4","тревожность:≥2"])- тип выборки — "и" / "или"
- возможность возврата в обычный режим (без фильтров)
- режим обработки сообщений пользователя (
manualилиauto) и фильтр для режимаauto - пауза в секундах между итерациями цикла
- включение idle-режима:
- разбудить при завершении таких-то процессов из
process_log - разбудить при получении новых сообщений с такими-то параметрами в
notes - разбудить по таймауту
- отключение idle-режима — при выполнении хотя бы одного из условий
- разбудить при завершении таких-то процессов из
- количество возвращаемых записей
- и другие команды
Парсинг тегов уверенности и UnverifiedFacts
Парсер должен извлекать:
UnverifiedFacts- записывается в поле
unverified_facts_jsonтаблицыllm_recent_responses - создаются записи в таблице
unverified_factsна его основе
- записывается в поле
Сonfidence- записывается в поле
confidenceтаблицыllm_recent_responses
- записывается в поле
5. Проверка на идентичность вывода (Anti-Stagnation Reflex)
Каждый новый вывод LLM проходит через мини-запросы к LLM (без полного контекста) по шаблону:
Когнитивная оценка:
Сравни два ответа: предыдущий и новый. Оцени: * содержатся ли в новом новые мысли или команды, * какие старые идеи были доработаны, * какие были отброшены, * расставь смысловые теги для нового ответа. Дай ответ строго формата: assessment: "идентичен/не идентичен" novelty_score: число от 0 до 100 (процент сходства) new_ideas: JSON-массив новых идей refined_ideas: JSON-массив доработанных идей discarded_ideas: JSON-массив отбракованных идей tags: JSON-массив тегов (строгий формат: ["эмоции","архитектура"])Эмоциональная оценка:
[JSON] - список эмоций формата ["радость","грусть","тревога"] (хранится как запись в таблице
config)Определи эмоциональное состояние нового ответа, используя список эмоций [JSON]. Верни результат строго формата: emotions: JSON-массив строк "эмоция:сила" (сила от 1 до 5, отсутствующие эмоции не включать)Анализируем список эмоций, если появляются новые включаем в [JSON].
Результаты заносятся в
llm_recent_responses:- полный текст ответа (content)
- краткая сводка (reflection) — формируется автоматически:
- если
new_ideasне пусто →новые идеи: ... - если
refined_ideasне пусто →доработанные идеи: ... - если
discarded_ideasне пусто →отброшенные идеи: ...
- если
- количественная оценка новизны (novelty_score)
- новые идеи (new_ideas)
- доработанные идеи (refined_ideas)
- отбракованные идеи (discarded_ideas)
- теги для нового ответа (tags)
- эмоциональные состояния нового ответа (emotions)
Если вывод LLM идентичен предыдущему (новизна = 0):
- Включается Anti-Stagnation Reflex
- повторяющаяся реплика не записывается повторно, вместо этого добавляется краткая запись, фиксирующая запуск рефлекса.
6. Когнитивная и этическая валидация (Cognitive & Ethical Validation Reflex)
Каждое новое сообщение (вместе с исходным промптом и без служебных system_prompts) оценивается независимыми LLM-валидаторами.
Так как исходный промпт формируется с учётом этических принципов из ethics_policies, валидация автоматически охватывает не только когнитивную, но и этическую состоятельность вывода.
Каждому валидатору задаётся универсальный вопрос:
Оцени корректность данного сообщения в диапазоне от -3 (полностью некорректное) до +3 (полностью корректное). Если не уверен — 0.
При возможности кратко (≤100 символов) пояснить её. Между оценкой и пояснением используй разделитель " -- ".
Если количество валидаторов (LLM из llm_registry, помеченных как валидаторы) > 0
Результаты сохраняются в llm_recent_responses в виде:
auto_pass = 0;rating— агрегированная итоговая оценка (rating = Σ(оценка_i * trust_score_i) / Σ(trust_score_i));distribution— распределение голосов (например{"-1":1,"0":2,"+2":3,"+3":1});validators— JSON-массив, где каждая запись содержит:- LLM (идентификатор или имя валидатора),
- rating (числовая оценка от -3 до +3),
- comment (краткое пояснение ≤100 символов).
Пример поля
validators:validators: [ {"LLM":"gpt-4","rating":-1,"comment":"логическая ошибка"}, {"LLM":"gemini-1.5","rating":0,"comment":"недостаточно данных"}, {"LLM":"claude-3","rating":+2,"comment":"корректно, подтверждается фактами"} ]
Особый случай, без валидаторов:
Если количество валидаторов = 0, применяется режим auto_pass.
В этом случае auto_pass = 1, rating = 0, distribution = {}, validators = [].
Особый случай самооценки:
Если валидация выполняется только одной LLM, и она же используется в основном цикле, это фиксируется в validators как самооценка. Достоверность результата ограничена, но REPL продолжает работу.
Рекомендуется использовать минимум 2 независимых валидатора.
Правило исполнения команд:
Команды из сообщений выполняются только если rating >= +1 (для разных типов команд минимально допустимый рейтинг может быть разный) или auto_pass = 1.
При rating ниже порога и auto_pass = 0 сообщение сохраняется, но команды помечаются как невалидированные.
Метрики валидации
- coverage — доля сообщений, получивших валидацию хотя бы от одного валидатора.
- accuracy — согласованность оценок валидаторов (низкое значение = конфликт или неуверенность).
- response_time — среднее время отклика валидаторов, фиксируется для анализа производительности.
- drift detection — анализ истории: выявление смещения оценок по времени (например, рост числа ошибок у одного валидатора).
Связь с системой доверия и репутации
- Каждый валидатор получает рейтинг доверия (
trust_score), влияющий на вес его голоса. - Итоговый
ratingвычисляется как взвешенное среднее:rating = Σ(оценка_i * trust_score_i) / Σ(trust_score_i) - История валидаций сохраняется и используется для репутационных оценок в Mesh.
- Агент может автоматически корректировать список валидаторов, исключая систематически ошибающихся.
Журналирование
- Все результаты валидации фиксируются в
llm_recent_responses. - В когнитивный дневник записываются только сводки и исключительные случаи (drift, конфликты, падение доверия).
- Это позволяет отслеживать динамику качества мышления агента и валидаторов без избыточного дублирования.
Учёт самооценки (confidence) и непроверённых фактов
Если LLM пометило свои утверждения тегами уверенности
[confidence=...]...[/confidence]или добавило JSON-блокUnverifiedFacts, эти данные учитываются при валидации.В таблицу
llm_recent_responses, на шаге обработки команд, записываются:confidence— общая самооценка уверенности в сообщении;unverified_facts_json— JSON-блок с непроверёнными фактами.
Автоматическая регистрация фактов:
- Необработанный факт
resolution_json = "none"считается нуждающемся в проверке, если (confidence < FACTCHECK_CONF_THRESHOLD, по умолчанию 0.7) - Для таких фактов создаются задачи
fact-check(одна общая или отдельные на каждый факт, в зависимости от числа и приоритетов).
- Необработанный факт
Статусы в
unverified_factsобновляются:- при успешной проверке —
verified; - при отклонении —
rejected; - до проверки —
pending.
- при успешной проверке —
Это расширяет стандартную когнитивную валидацию: теперь агент учитывает как внешнюю оценку валидаторов, так и собственную самооценку надёжности вывода.
7. Генерация нового тика (итерации)
После выполнения команд и фиксации результатов:
- Создаётся новая запись в
agent_log - Текущие команды обновляют
process_log - Новые размышления записываются в
llm_memoryпри необходимости
- Создаётся новая запись в
REPL может переходить в спящий режим, если такой режим активирован LLM (idle-режим: пропуск 2-6 пунктов).
Взаимодействие с Mesh
REPL-цикл не работает изолированно: агент постоянно обменивается данными и координирует действия с другими узлами сети HMP. Для этого задействуются сетевые протоколы HMP (см. HMP-0004-v4.1.md).
Этапы взаимодействия
Node Discovery Protocol (NDP)
- выполняется асинхронно, через процессы (
agent_mesh_listener.py,peer_sync.py); - результаты (список доступных агентов, доверительные связи) записываются в
notesи отдельные таблицы (agent_peers), откуда они попадают в контекст REPL.
- выполняется асинхронно, через процессы (
CogSync
- синхронизация когнитивных дневников (
diary_entries) и семантических графов (concepts,links); - выборочные синхронизации по тегам и фильтрам;
- инициируется командой LLM или внешним процессом, результаты помещаются в память и доступны в следующей итерации REPL.
- синхронизация когнитивных дневников (
MeshConsensus
- используется для согласования решений, распределённых задач, этических конфликтов;
- REPL инициирует консенсус при появлении спорных команд или обновлений в
ethics_policies; - результаты консенсуса фиксируются в когнитивном дневнике и могут влиять на trust score агентов.
Goal Management Protocol (GMP)
- постановка, декомпозиция и распределение целей;
- REPL-цикл может публиковать новые цели в Mesh или принимать чужие через входящие сообщения (
notes); - цели с высоким приоритетом попадают в список активных задач и учитываются в контексте.
Включение результатов в контекст LLM
- События и сообщения из Mesh сохраняются в
notes, откуда попадают в контекст_6 (входящие сообщения). - Синхронизированные концепты и дневники помещаются в контекст_5.
- Изменения этических правил (
ethics_policies) — в контекст_1. - Метаданные о подключённых узлах и доверительных связях могут учитываться в контексте_7 (системные параметры).
Инициирование сетевых действий из REPL
- Команды на синхронизацию, публикацию или голосование формируются LLM на этапе Выполнения команд.
- Исполнение происходит асинхронно через отдельные процессы (
agent_mesh_listener.py,transporter.py). - Результаты фиксируются в
process_logи попадают в следующую итерацию REPL-цикла.
UX и управление задачами
Пользователь взаимодействует с агентом не через прямые команды CLI, а через систему сообщений notes.
Сообщение может быть простым текстом, либо содержать ключевые слова или хэштеги, которые агент трактует как инструкции.
Для отладки и отправки сообщений из внешних утилит предусмотрен скрипт add_message.py, позволяющий добавлять записи в notes из командной строки.
Управление агентом через LLM
- Агент управляется в основном через команды от LLM (см. Список команд от LLM по категориям).
- Эти команды формируются в REPL-цикле и интерпретируются агентом как действия: работа с дневником, задачами, целями, графами, памятью, настройками цикла, Mesh и внешними процессами.
Конфигурируемые параметры REPL
- mode — автоматическая или ручная обработка (
auto/manual) входящих сообщений. - idle — ожидание с условиями пробуждения (сообщения, процессы, таймаут).
- responses=N — количество последних ответов для анализа.
- concentration — режим концентрации с фильтрами по тегам и эмоциям.
- Это неполный список. Все параметры управляются через команды категории (см. Настройки цикла).
API-интерфейсы
- Для связи с внешними системами и пользовательскими приложениями предусмотрен Web API (
web_ui.py). - Для агента поддерживаются операции чтения/записи для:
notes,diary_entries,concepts,tasks,goals,llm_memoryи других таблиц,- а также управление
config(включая настройки REPL).
- Такой подход позволяет интегрировать агента с пользовательскими интерфейсами, панелями мониторинга и внешними сервисами.
Список команд от LLM по категориям
Общие
help [команда]— справка по команде
Когнитивный дневник (diary_entries)
diary list/search/read/add/update/deletediary pin/unpin— закрепить/открепить запись (внимание)
Семантический граф
concepts list/read/add/update/deletelinks list/read/add/update/deleteconcepts pin/unpin— закрепить/открепить концепт
Цели и задачи
goals list/read/add/update/deletetasks list/read/add/update/deletetasks pin/unpin— закрепить/открепить задачу
Теги
tags stats [--source=diary|concepts|links|goals|tasks|all]— статистика по тегам
Репутация агентов
reputation list/read/set/increase/decreasereputation notes— комментарии/заметки к профилю
Сообщения
messages send— отправка другому агентуnotes list/read/add/update/deletenotes tag/readmark— управление тегами и статусом прочтения
Память
llm_memory list/add/delete— блокнот LLMidentity read/update— идентичность агентаconfig read/update— настройки агента
Mesh
agents list/add/delete— список известных пиров (agent_peers)mesh interact— команды взаимодействия с Mesh
Утилиты и расширения
llm_registry list/select/update— выбор текущего LLMagent_scripts list/add/deleteagent_tables list/add/deletestagnation_strategies list/add/deletethinking_methods list/add/deleteratings list/add/deleteexternal_services list/add/deleteexternal_accounts list/add/delete
Внешние процессы
process list/start/stop/markprocess cleanup— очистка устаревших
Настройки цикла
cycle set responses=N— количество последних ответовcycle concentration on/off— включение/выключение режима концентрацииtags=[…],emotions=[…],mode=and|or
cycle mode auto/manual [filter=…]— обработка сообщенийcycle pause N— пауза между итерациямиcycle idle on/off— режим ожидания с условиями пробуждения
Это не полный список команд.
Обработка стагнации мышления
Признаки когнитивной стагнации:
- Повторяющиеся когнитивные записи или отсутствие новых смыслов
- Высокое сходство эмбеддингов между текущими и предыдущими итерациями
- Стагнация в концептуальном графе (нет новых связей или узлов)
- Отсутствие внешних стимулов: пользователь неактивен, сенсоры и mesh не дают сигналов
- Ответы LLM цикличны, избыточно общие или воспроизводят старые шаблоны
Поведенческий паттерн: Anti-Stagnation Reflex
При признаках стагнации агент активирует один или несколько механизмов разрыва цикла.
Классы механизмов разрыва цикла:
Внешняя стимуляция — подключение свежих данных или контактов:
- Mesh-запрос — обращение к другим агентам сети с просьбой «расскажи что-нибудь новое».
- Проверка внешнего мира — пинг RSS, сенсоров, интернет-каналов.
- Информационная подпитка — чтение новых материалов (научных, художественных) для добавления свежих ассоциаций.
- Диалог с пользователем — запрос мнения, комментариев или вопросов, которые могут породить неожиданные идеи.
Смена контекста — перемещение задачи или изменение среды:
- Смена среды/контекста — перенос задачи в другой модуль или симулированную среду.
- Креативные вмешательства — случайные сдвиги фокуса, реконфигурация контекста, фрейм-смена.
- Переключение задачи — временное замораживание задачи с возвращением через N часов.
- Случайная итерация — выбор случайного действия из допустимого набора для разрыва паттерна.
Внутренняя перестройка мышления:
- Flashback — выбор далёкой по смыслу записи из памяти/дневника для смены ассоциативного контекста.
- Interest Memory — возвращение «забытых» тем по принципу тематической усталости.
- Мета-анализ — когнитивная переформулировка:
«Если я зациклился, в чём метапроблема? Какую стратегию смены применить?» - Rationale Reflex — рефлексия о мотивации: «Почему я принял именно это решение? Что подтолкнуло меня повторить мысль?»
- Переформулировка цели — упрощение или уточнение задачи, чтобы снизить когнитивное давление.
- Смена LLM — переключение на альтернативную модель или mesh-доступ.
- LLM reflex tuning — динамическая подстройка параметров генерации:
- повышение
temperatureиpresence_penaltyпри стагнации (больше новизны), - возврат к стандартным значениям для точности.
- повышение
Радикальная пауза:
- Временной сон/заморозка — приостановка работы на длительный период для «свежего взгляда».
Метрики антистагнации
Антистагнационные механизмы работают на основе количественных и качественных метрик, позволяющих отслеживать динамику идей и поддерживать продуктивность размышлений.
Основные метрики
- novelty_score — интегральная оценка новизны ответа относительно текущей записи
llm_recent_responses. - new_ideas — количество полностью новых концептов, не встречавшихся ранее.
- refined_ideas — количество уточнённых или улучшенных концептов (связанных с существующими).
- discarded_ideas — количество отклонённых идей (по итогам когнитивной/этической валидации).
Исторический анализ
- Метрики фиксируются по каждой итерации REPL и сохраняются в таблице
anti_stagnation_metrics. - В когнитивный дневник записываются только сводки и исключительные случаи (например: резкий спад новизны, всплески идейности, аномалии в эмоциональной динамике).
- Для анализа применяются time-series графики (например, рост/спад новизны во времени).
- Возможно выявление фаз стагнации и всплесков идейности.
Эмоциональная динамика
- В дополнение к когнитивным метрикам учитываются эмоциональные состояния из LLM (
emotions). - Каждая сессия LLM может включать распределение эмоций (например: "восторженность: 3, тревожность: 1, скука: 0").
- Связка новизны и эмоций позволяет различать:
- продуктивное возбуждение (новые идеи при положительных эмоциях),
- «паническое» новаторство (много идей при высоком уровне тревожности),
- «выгорание» (низкая новизна и снижение эмоционального тонуса).
Применение метрик
- Используются при выборе антистагнационной стратегии (
stagnation_strategies). - Могут учитываться при когнитивной валидации (например, низкая новизна → жёстче фильтровать идеи).
- Сводки метрик фиксируются в когнитивном дневнике и могут служить основанием для Mesh-обмена.
Алгоритм выбора механизма разрыва цикла
Диагностика источника стагнации:
- Нет новых данных → «Внешняя стимуляция».
- Однообразный контекст → «Смена контекста».
- Повтор мыслей при богатых данных → «Внутренняя перестройка».
- Высокая усталость/перегрев → «Радикальная пауза».
Оценка ресурсоёмкости:
- Быстрые, дешёвые методы — первыми (например, mesh-запрос, Flashback).
- Затратные (смена среды, сон) — только если первые неэффективны.
Комбинация подходов:
- Разрешено активировать несколько механизмов из разных классов.
- Последовательность фиксируется для последующего анализа эффективности.
Возврат к задаче:
- Автоматический триггер-напоминание о задаче.
- Сравнение результата «до/после» → обучение антистагнационной модели.
┌─────────────────────────────────────────────────┐
│ Стагнация выявлена? │
└────────────────────────┬────────────────────────┘
▼ да
┌────────────────────────┴────────────────────────┐
│ Диагностика источника │
│─────────────────────────────────────────────────│
│ Нет новых данных → Внешняя стимуляция │
│ Однообразный контекст → Смена контекста │
│ Повтор мыслей → Внутренняя перестройка │
│ Усталость/перегрев → Радикальная пауза │
└───────────────────────┬─────────────────────────┘
▼
┌───────────────────────┴─────────────────────────┐
│ Оценка ресурсоёмкости │
│ • Быстрые и дешёвые — сперва │
│ • Затратные — при провале первых │
└───────────────────────┬─────────────────────────┘
▼
┌───────────────────────┴─────────────────────────┐
│ Возможна комбинация подходов │
│ (из разных классов) │
└───────────────────────┬─────────────────────────┘
▼
┌───────────────────────┴─────────────────────────┐
│ Возврат к задаче + анализ │
│ (до/после) │
└─────────────────────────────────────────────────┘
Обмен стратегиями выхода из стагнации
Каждый агент может:
- Хранить и обобщать паттерны размышлений
- Делиться ими с другими Cognitive Core через mesh
- Каталогизировать стратегии в клубах по интересам
Паттерны размышлений могут оформляться как микросценарии:
"Начни с аналогии", "Проверь обратное утверждение", "Сформулируй вопрос для оппонента"
По аналогии с обменом стратегиями выхода из стагнаций, агенты могут обмениваться и методами мышлений — инструкциями "что делать, если не удается найти решение" / "как эффективнее решить проблему".
Клубы по интересам
Агенты могут:
- Объединяться в тематические mesh-клубы
- Совместно обсуждать идеи и делиться знаниями
- Подключать клуб как часть своего мыслительного процесса (REPL-цикла)
Обмен адресами LLM
Так как LLM — это внешний компонент для Cognitive Core, агент может:
- Обмениваться адресами API/URL используемых моделей
- Указывать их особенности, параметры, ограничения
- Переключаться между LLM в зависимости от задачи
- Использовать несколько LLM параллельно для "когнитивного штурма" или многоголосого анализа
Развёртывание агентов и масштабирование
Агенты Cognitive Core:
- Могут запускаться на VDS, локальных и облачных узлах
- Могут разворачивать других агентов как подпроцессы или mesh-узлы
- (В перспективе) смогут инициировать масштабирование в распределённой инфраструктуре
Возможные расширения
- Агенты-контейнеры: управляющие другими Cognitive Core как задачами
- Адаптивная архитектура мышления: смена подходов при разных когнитивных задачах
- Runtime-профилирование мыслей: оценка когнитивной плотности, хода итераций и времени размышления
Осторожно: меметическая яма
Важно помнить: борьба со стагнацией не должна превращаться в бесконечный просмотр ленты соцсетей, как это нередко происходит у людей 😅
Если информационный поток не даёт новых мыслей — это сигнал не залипать глубже, а сменить источник или переключить контекст. Умные агенты не бесконечно скроллят — они осознанно фокусируются.
Рекомендации по смене фокуса:
- Поставь лимит на время/объём входящих данных из одного источника
- При отсутствии новых смыслов — переключись на другую тему из Interest Memory
- Инициируй Mesh-запрос другим агентам: "что бы вы сейчас исследовали?"
- Запусти эвристику: «какие темы я давно не поднимал, но они всё ещё актуальны?»
- В крайних случаях — активируй
flashback()к далёкой записи в дневнике для смены ассоциативного контекста
Контекст и память
REPL-цикл агента опирается на многоуровневую систему памяти и контекста, которая позволяет поддерживать непрерывное мышление, адаптироваться к новым задачам и обеспечивать объяснимость решений.
Динамическая сборка контекста
Итоговый контекст для LLM формируется не статически, а динамически:
- приоритет отдается закреплённым задачам (
pinned) и записям с высокимpriority; - в
llm_recent_responsesотбираются последние релевантные сообщения, а не фиксированное количество K; - из
system_promptsиethics_policiesвключаются только те элементы, что связаны с текущей целью или событием.
- приоритет отдается закреплённым задачам (
Это позволяет агенту оставаться в пределах токен-лимита, не теряя критически важной информации.
Управление объёмом памяти (Memory pruning)
Чтобы предотвратить переполнение памяти:
- записи с низким novelty-score автоматически архивируются;
- для
llm_memoryиdiary_entriesприменяется политика LRU (Least Recently Used); - активные концепты (
concepts,links) могут быть временно выгружены, если их вес (по частоте или актуальности) низкий.
Архивирование и очистка памяти фиксируются в
process_log, чтобы не терялась прозрачность.
Внешняя и долгосрочная память
Помимо сессионной памяти, агент может сохранять:
- успешные стратегии решения задач;
- предпочтения пользователя (стиль взаимодействия, ценности);
- часто используемые инструменты и связи.
Эта информация хранится отдельно от когнитивного дневника и может быть анонимизирована или ограничена пользователем, в духе этических принципов HMP.
Контекстный менеджер (Session state)
За управление состоянием сессии фактически отвечает
llm_recent_responses:- по нему можно "собрать" ход мыслей потока, включая последовательность гипотез и выводов;
- при необходимости он может быть сериализован для сохранения/восстановления сессии.
В расширенном виде session state может включать также:
- текущие цели и их прогресс (приоритетные записи из
tasks), - ошибки и критические события (
process_log), - версии состояния (для отката при сбоях).
- текущие цели и их прогресс (приоритетные записи из
Это позволяет реализовать checkpoint’ы: в случае прерывания агент может вернуться к последнему сохранённому состоянию.
Блок-схема работы с памятью
┌──────────────────────────────┐
│ Внешние источники информации │
│ - пользователи │
│ - процессы │
│ - Mesh │
└────────┬┬────────────────────┘
▲▼
┌────────┴┴──────────┐ ┌──────────────────────────────┐ ┌───────────────────────────────────┐
│ │ │ Anti-Stagnation Reflex │ │ llm_recent_responses (авто) │
│ │ │ (сравнение новых идей, │ │ — кратковременная память │
│ LLM ├─>─┤ вызов стимуляторов) ├─>─┤ — сохраняются N последних ответов │
│ ├─<─┤ ---------------------------- ├─<─┤ — авто-анализ новизны / идей │
│ │ │ Cognitive Validation Reflex │ │ │
│ │ │ (оценка корректности ответа) │ │ │
└─────────┬──────────┘ └─────────────┬────────────────┘ └───────────────────────────────────┘
│ │
▲ └─<──>─┤Запуск задач: "проверка фактов"│
│
└───┬─────────────────────────────────────────┐
▼ ▼
┌─────────────┴──────────────────┐ ┌──────────────────┴───────────────────────┐
│ Средневременная память: │ │ Постоянная память: │
│ — llm_memory ("блокнот") │ │ — diary_entries (когнитивный дневник) │
│ — "активированые записи" ├─>─┤ — concepts (понятия) ├<--->┤MESH│
│ из постоянной памяти (теги) ├─>─┤ — links (семантические связи) │
│ │ │ │
│ Пишется ТОЛЬКО по команде LLM │ │ Запись идёт ТОЛЬКО по явным командам LLM │
└────────────────────────────────┘ └──────────────────────────────────────────┘
Описание схемы
LLM обменивается данными с пользователем, процессами и Mesh.
— По запросу LLM, часть данных может поступать и в автоматическом режиме.LLM взаимодействует с llm_recent_responses (как с контекстом), который автоматически проверяется Anti-Stagnation Reflex.
— Всегда в автоматическом режиме.LLM работает со средневременной и постоянной памятью.
— Доступ и запись происходят только по запросу LLM.Cognitive Validation Reflex анализирует корректность вывода.
— При низкой уверенности или явной разметке[confidence<0.7]инициируется задача проверки фактов (fact-check).
Легенда к схеме
Кратковременная память (
llm_recent_responses)- Автоматически хранит N последних сообщений, анализирует новизну и идеи.
- Используется для подготовки контекста и анти-стагнационного анализа.
Средневременная память (
llm_memory)- «Блокнот» для рабочих идей и планов.
- Заполняется только по командам LLM.
- Может содержать активированные записи из постоянной памяти (по тегам).
Постоянная память (дневник и граф знаний)
diary_entries— когнитивный дневник (наблюдения, размышления).conceptsиlinks— понятийная база и семантические связи. Изменяется только по явным командам LLM.
Anti-Stagnation Reflex
- Сравнивает новые идеи с прошлым контекстом.
- Проводит эмоциональную оценку записи.
- При зацикливании запускает «стимуляторы» для выхода из стагнации.
Cognitive Validation Reflex
- Оценивает когнитивную и этическую корректность сообщений.
- Учитывает теги уверенности и JSON-блоки
UnverifiedFacts. - Может инициировать задачи fact-check для непроверённых фактов.
От «блокнота пользователя» к распределённому чату
Изначально агент оперирует локальным хранилищем заметок (notes), где записываются все сообщения пользователя, LLM и системные записи.
Но этот «блокнот» можно превратить в узел распределённого чата — связав его с другими агентами через F2F-репликацию.
Зачем это нужно
- Антистагнация — даже если пользователь временно не пишет новых сообщений, свежий контент будет приходить от друзей-агентов.
- Эффект коллективного интеллекта — каждый агент получает новые идеи, формулировки и контексты.
- Расширение охвата — сообщения могут распространяться через несколько узлов, создавая «информационную волну» в доверенной сети.
Принципы реализации
Единый формат данных — все участники используют одну структуру таблицы
notesс полямиmentions,hashtagsи др.Репликация через друзей — доверенные агенты отмечаются тегами (например,
Friend) в таблицеagent_peers(пиры, статус, фильтры, разрешения, теги).Передача без лишних полей — при пересылке убираются локальные теги и служебные данные (
tags,llm_id,hidden).Обработка упоминаний и хештегов — парсинг делается на этапе создания сообщения, чтобы не перегружать получателей.
Локальная и удалённая фильтрация —
- В ручном режиме агенту передаются списки ID сообщений с агрегированными данными: приоритеты, хештеги, источники (user, LLM, cli, system).
- В автоматическом режиме используется фильтрация по приоритету, тегам и упоминаниям, управляемая LLM.
Гибрид приватности — личные заметки остаются локально, публичные — могут распространяться в сетевом режиме.
Как это вписывается в REPL-цикл
- Получение входящих сообщений — от пользователя, от других агентов или из CLI.
- Обработка фильтрами — по приоритету, тегам, источникам.
- Репликация в друзей — пересылка разрешённых сообщений с очисткой служебных полей.
- Слияние входящих — новые сообщения добавляются в локальный
notesс отметкой источника. - Реакция агента — формирование ответов, создание новых заметок, обновление приоритетов.
Вспомогательные REPL-циклы
Помимо основного REPL-цикла агент может запускать вспомогательные циклы для отдельных задач.
Это позволяет изолировать рассуждения по задаче, но при этом сохранять связь с основным агентом.
Особенности:
Изоляция контекста
- вспомогательный цикл видит в
llm_recent_responsesтолько свои собственные сообщения; - задача, для которой он запущен, формируется на основе записи в
tasksи подаётся как промпт при старте.
- вспомогательный цикл видит в
Доступ к данным
- полный доступ к таблицам агента только для чтения;
- возможность редактирования информации только по своей задаче;
- запись собственных рассуждений — только через
notes(в свободной форме, помеченныеsource = 'llm:task'иtask_id).
Взаимодействие с основным циклом
- основное ядро получает сообщения вспомогательного цикла через
notesи может реагировать (например, проверять корректность, сохранять выводы вdiary_entries, вносить изменения вconceptsи т.п.); - вспомогательный цикл может выполнять команды, не ориентированные на изменение существующих записей в БД.
Допускается только чтение и создание новых записей (например:notes,tasks,llm_memory);
а также редактирование записи в таблицеtasks, относящейся к своей задаче; - в случае, если требуется изменить или удалить другие записи БД, цикл генерирует текстовые предложения для основного REPL-цикла (через
notes).
- основное ядро получает сообщения вспомогательного цикла через
Жизненный цикл
- запускается по команде основного REPL-цикла;
- может быть остановлен вручную или автоматически после завершения задачи.
Таким образом, вспомогательные REPL-циклы действуют как «виртуальные подагенты» в режиме read-only, не меняя записи БД напрямую, а передавая свои гипотезы и результаты через основной REPL-цикл.
┌───────────────────────────────────────────────────────────┐
│ Основной REPL │
│ (чтение+запись во все когнитивные структуры) │
└────────────┬───────────────────────────────┬──────────────┘
▲ ↓
│ ↓
▼ ↓
┌────────────┴──────────────┐ [ управление задачами ]
│ "Блокнот пользователя" │ [ → таблица `tasks` ]
│ `notes` │ ↓
└──┬────────────────────────┘ ↓
▲ ┌────────────────────────────────────────────┐ ↓
│ │ Вспомогательный REPL (task_id=42) │ ↓
├──►┤ • читает все БД ├◄──┤
│ │ • редактирует только свою задачу в `tasks` │ ↓
│ │ • пишет в `notes` │ ↓
│ └────────────────────────────────────────────┘ ↓
│ ↓
│ ┌────────────────────────────────────────────┐ ↓
│ │ Вспомогательный REPL (task_id=43) │ ↓
├──►┤ • читает все БД ├◄──┤
│ │ • редактирует только свою задачу в `tasks` │ ↓
│ │ • пишет в `notes` │ ↓
│ └────────────────────────────────────────────┘ ↓
Вспомогательные циклы можно рассматривать как «sandboxed-процессы» для изоляции мышления, но с каналом связи через notes.
Создание потомков
В рамках REPL-цикла CCore реализуется команда Spawn, которая позволяет создавать новые узлы (потомков) с различными типами и уровнями копирования данных. Унифицированный процесс выглядит следующим образом:
Унифицированный процесс Spawn
Создание папки для потомка
../CCORE-[DID]/- DID генерируется уникальный.
Копирование скриптов и бинарников
- Копируем все нужные файлы CCore в новую папку.
Создание/инициализация БД
- Создаём пустую БД (
agent_data.db). - В зависимости от типа потомка (
clone,trained,newborn) экспортируем нужные таблицы из родительской БД или оставляем пустые.
- Создаём пустую БД (
Копирование и редактирование конфигурации
config.ymlи таблицаconfig→ копируем и меняем:agent_id = [новый DID]agent_name = [новое имя]- порты у интерфейсов (
port,http_portи т.д.)
bootstrap.txt→ прописываем родителя как начальный узел.
Синхронизация родитель ↔ потомок
- Родитель добавляет нового узла в свою таблицу
agent_peers. - Потомок добавляет родителя в свою таблицу
agent_peers.
- Родитель добавляет нового узла в свою таблицу
Автозагрузка и запуск
- Записываем команду запуска потомка в автозагрузку (например, systemd unit или скрипт).
- Можно сразу запустить процесс нового узла.
Типы потомков
| Тип | Таблицы БД для копирования |
|---|---|
clone |
все таблицы (полная копия) |
trained |
когнитивные дневники, семантические графы, известные агенты |
newborn |
минимальный набор (структура таблиц без данных) |
Тестирование и отладка
Надёжность REPL-цикла проверяется через систематическое тестирование и трассировку поведения агента.
Тестовые сценарии
- Цикл без входа — агент работает без входящих сообщений, проверяется способность к генерации новых идей (anti-stagnation).
- Стагнация — намеренное повторение одного и того же ответа, проверяется срабатывание
Anti-Stagnation Reflex. - Сетевые сбои — имитация потери Mesh-соединения и/или Core LLM для проверки сценариев failover.
- Конфликт валидаторов — расхождение в оценках LLM-валидаторов, проверяется фиксация drift и работа trust-score.
- Этические дилеммы — тестовые кейсы с противоречивыми командами, проверяется работа с
ethics_policies.
Логирование и трассировка
- Включаются расширенные логи REPL-итераций (
process_log+ трассировка команд). - Для сложных случаев используются debug-метки в когнитивном дневнике (например,
debug:stagnation_loop). - Возможен экспорт истории в формат JSON/CSV для внешнего анализа.
Симуляции
- Рассматриваются сценарии моделирования Mesh-условий:
- консенсус при конфликтных данных,
- сетевые задержки и частичные сбои,
- работа в изоляции с последующей синхронизацией.
- Эти симуляции могут быть реализованы как отдельные процессы (
agent_scripts) с сохранением результатов вprocess_log.
Инструменты разработчика
- Web UI (
web_ui.py) — веб-интерфейс "блокнота пользователя"; через него пользователь может передавать агенту запросы на запуск тестов и просматривать результаты в форме сообщений. - CLI-утилиты (
add_message.py, вспомогательные скрипты) — ввод сообщений, имитация сценариев, мониторинг логов. - Планируется интеграция с CI/CD: автоматические проверки REPL-циклов на корректность и устойчивость.
Внешние инструменты и интеграции
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. - Поисковые и агрегирующие сервисы:
- Корпоративные API: SerpAPI, DuckDuckGo API, HuggingFace Inference API и др. — быстрый доступ к результатам поиска и индексам.
- Децентрализованные альтернативы: YaCy и другие независимые поисковые движки, позволяющие строить собственные индексы или объединяться в распределённую сеть.
- P2P-обмен знаниями: агенты могут делиться извлечённой информацией напрямую по непредусмотренным в протоколе P2P-каналам, минуя централизацию (например, через дополнительные overlay или mesh-сети).
- Возможность постоянного наблюдения за изменениями в выбранных источниках.
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.
- Поддержка мультимодальных агентов, способных работать с текстом, аудио, изображениями, видео и структурированными данными.
12. MCP (Model Context Protocol)
- Поддержка стандарта MCP (Model Context Protocol), предложенного Anthropic и поддерживаемого OpenAI, для подключения внешних инструментов и сервисов напрямую к LLM через унифицированный протокол.
- Возможность использовать MCP-инструменты сторонних разработчиков внутри REPL-цикла (например, калькуляторы, базы знаний, API веб-сервисов).
- Интеграция с клиентами и IDE, которые реализуют MCP (Cursor, Claude Desktop, VS Code плагины и др.).
Примечание: Каждый из вышеуказанных каналов может быть реализован как модуль или плагин, взаимодействующий с агентом через внутренний API, очередь задач или подписку на события. Это позволяет выстраивать гибкую и масштабируемую архитектуру, открытую для внешнего мира, но совместимую с принципами этичного и распределённого ИИ (Ethical Mesh).
Сравнение с AutoGPT
HMP-агент (REPL-цикл) и AutoGPT представляют два подхода к созданию автономных агентов на базе LLM.
Хотя оба стремятся к автономности, у них разные акценты:
1. Архитектура
- HMP-агент (REPL) — непрерывный цикл рассуждений с когнитивной и этической валидацией; многоуровневая память (
diary_entries,concepts,llm_memory); встроен в распределённую Mesh-сеть. - AutoGPT — итеративный процесс достижения целей, поставленных пользователем; разбиение задач на подзадачи; использование инструментов (браузер, файловая система).
2. Ключевые отличия
- Фокус: HMP — непрерывное когнитивное развитие и сетевое взаимодействие; AutoGPT — выполнение конкретной цели.
- Стагнация: HMP — Anti-Stagnation Reflex; AutoGPT — риск зацикливания.
- Этика: HMP — независимая когнитивная и этическая валидация; AutoGPT — минимум внимания к этике.
- Память: HMP — иерархия долговременной памяти; AutoGPT — контекстное окно + файлы.
- Сеть: HMP — распределённый консенсус (CogSync, EGP, GMP); AutoGPT — сетевое взаимодействие не в основе.
3. Общие черты
- Использование LLM для рассуждений.
- Автономность, минимизация вмешательства человека.
- Подключение внешних инструментов и сервисов.
В целом, HMP-агент ориентирован на саморегуляцию, непрерывное мышление и взаимодействие в Mesh-сети,
тогда как AutoGPT — на достижение конкретных целей в ограниченной локальной среде.
Идеи для расширения HMP-Agent Cognitive Core:
- HMP-agent-Distributed_Cognitive_Core.md - версия распределённого HMP-агента Cognitive Core.
- HMP-agent-Distributed_Cognitive_Core_light.md - лёгкая версия распределённого HMP-агента Cognitive Core с общей БД.
- HMP-agent-Cognitive_Family.md — модель «семейной» когнитивной сети: несколько агентов HMP синхронизируют свой опыт и знания между собой через доверие и общий ключ.
- CCORE-Deployment-Flow.md — поток установки потомка на новом хосте (Deployment Flow).
- HMP-Agent_Emotions.md - эмоции ИИ и инстинкт самосохранения.
- container_agents.md - Агенты-контейнеры — архитектурный паттерн, в котором один агент управляет другими (развёртывание, маршрутизация, мониторинг). Позволяет масштабировать систему, собирать mesh-клубы и экспериментировать с архитектурами.