File size: 18,360 Bytes
2c3dd0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34fdde5
d884805
 
 
 
 
fd76569
d884805
 
 
 
42aa57a
2c3dd0c
 
 
 
 
 
 
 
 
 
03525c4
2c3dd0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
babba5e
 
 
 
 
 
 
 
 
 
 
 
2c3dd0c
 
 
c741010
2c3dd0c
d884805
c741010
d884805
 
 
2c3dd0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3624290
 
 
7fe3b11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7135fe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7fe3b11
 
 
 
e7135fe
7fe3b11
 
 
 
 
e7135fe
7fe3b11
 
 
 
 
 
 
 
 
 
 
 
3624290
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# 🧠 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`
- для управления списком известных 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.
- **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 с общей БД