GitHub Action commited on
Commit
8da599a
·
1 Parent(s): c224390

Sync from GitHub with Git LFS

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. agents/readme.md +3 -1
  2. hf_repo/hf_repo/agents/readme.md +12 -6
  3. hf_repo/hf_repo/hf_repo/docs/container_agents.md +54 -0
  4. hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +1 -0
  5. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-Agent-Overview.md +14 -8
  6. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +140 -9
  7. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +18 -17
  8. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +34 -0
  9. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook.py +1 -0
  10. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook.py +21 -23
  11. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/static/style.css +0 -0
  12. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/templates/messages.html +18 -0
  13. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/views.py +24 -1
  14. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +8 -6
  15. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +7 -0
  16. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py +41 -9
  17. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/init.py +7 -1
  18. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/requirements.txt +1 -0
  19. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +1 -1
  20. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +3 -3
  21. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +1 -1
  22. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/init.py +34 -11
  23. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook.py +24 -7
  24. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/templates/chat.html +30 -0
  25. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/views.py +29 -0
  26. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +0 -1
  27. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat +1 -0
  28. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.py +9 -4
  29. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +7 -5
  30. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/add_message.py +2 -0
  31. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/init.py +2 -0
  32. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/logger.py +2 -0
  33. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook.py +2 -0
  34. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/mailer.py +2 -0
  35. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py +2 -0
  36. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/check_init.py +1 -1
  37. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/command_executor.py +1 -1
  38. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/command_parser.py +1 -1
  39. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/context_builder.py +1 -1
  40. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/crypto.py +1 -1
  41. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/identity.py +1 -1
  42. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/llm.py +1 -1
  43. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/memory_utils.py +1 -1
  44. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/peer_comm.py +2 -0
  45. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/similarity.py +1 -1
  46. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +54 -43
  47. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/README.md +9 -0
  48. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +1 -1
  49. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/README.md +1 -1
  50. hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +4 -1
agents/readme.md CHANGED
@@ -7,6 +7,7 @@
7
  Проверка инициализации БД - если нет, инициализация (`tools/check_init.py`)
8
 
9
  Запуск потоков (осуществляет start_repl.py):
 
10
  | Поток / Скрипт | Назначение |
11
  |-----------------------------------|---------------------------------------------------------------------------|
12
  | 🧠 `repl.py` | Основной REPL-цикл агента: восприятие, размышление, генерация действий |
@@ -15,10 +16,11 @@
15
  | 🔄 `peer_sync.py` / `dht_service` | Синхронизация и обнаружение агентов в p2p-сети (libp2p, BitTorrent, etc) |
16
  | 📡 `transporter.py` | Обмен сообщениями: WebSocket, IPFS, очереди, шифрование |
17
  | 🧭 `agent_controller.py` | Управление режимами REPL, маршрутизация задач и контроль доступа |
 
18
  | 🧱 `container_agent.py` *(опц.)* | Управление дочерними агентами, запуск/мониторинг/масштабирование |
19
  | 🧠 `ethics_guard.py` *(опц.)* | Контроль этики: аудит мыслей, фильтрация и репутационные проверки |
20
 
21
- Подробнее в [HMP-Agent-Architecture.md](../docs/HMP-Agent-Architecture.md)
22
 
23
  ---
24
 
 
7
  Проверка инициализации БД - если нет, инициализация (`tools/check_init.py`)
8
 
9
  Запуск потоков (осуществляет start_repl.py):
10
+
11
  | Поток / Скрипт | Назначение |
12
  |-----------------------------------|---------------------------------------------------------------------------|
13
  | 🧠 `repl.py` | Основной REPL-цикл агента: восприятие, размышление, генерация действий |
 
16
  | 🔄 `peer_sync.py` / `dht_service` | Синхронизация и обнаружение агентов в p2p-сети (libp2p, BitTorrent, etc) |
17
  | 📡 `transporter.py` | Обмен сообщениями: WebSocket, IPFS, очереди, шифрование |
18
  | 🧭 `agent_controller.py` | Управление режимами REPL, маршрутизация задач и контроль доступа |
19
+ | 🧱 `container_agent.py` *(опц.)* | Управление дочерними агентами, запуск/мониторинг/масштабирование [[docs]](../docs/container_agents.md) |
20
  | 🧱 `container_agent.py` *(опц.)* | Управление дочерними агентами, запуск/мониторинг/масштабирование |
21
  | 🧠 `ethics_guard.py` *(опц.)* | Контроль этики: аудит мыслей, фильтрация и репутационные проверки |
22
 
23
+ *См. также: [Контейнерные агенты](../docs/container_agents.md), [Архитектура HMP-агента](../docs/HMP-Agent-Architecture.md)*
24
 
25
  ---
26
 
hf_repo/hf_repo/agents/readme.md CHANGED
@@ -7,12 +7,18 @@
7
  Проверка инициализации БД - если нет, инициализация (`tools/check_init.py`)
8
 
9
  Запуск потоков (осуществляет start_repl.py):
10
- | Поток | Назначение |
11
- | -------------------------------- | ------------------------------------------ |
12
- | 🌐 `notebook.py` (FastAPI) | UI-интерфейс |
13
- | 🧠 `repl.py` | Агентная логика: REPL-цикл |
14
- | 🌍 `agent_mesh_listener.py` | Получение входящих сообщений |
15
- | 🌐 `peer_sync.py` или DHT-сервис | Поддержание связи с другими агентами / DHT |
 
 
 
 
 
 
16
 
17
  ---
18
 
 
7
  Проверка инициализации БД - если нет, инициализация (`tools/check_init.py`)
8
 
9
  Запуск потоков (осуществляет start_repl.py):
10
+ | Поток / Скрипт | Назначение |
11
+ |-----------------------------------|---------------------------------------------------------------------------|
12
+ | 🧠 `repl.py` | Основной REPL-цикл агента: восприятие, размышление, генерация действий |
13
+ | 📓 `notebook.py` (FastAPI) | Веб-интерфейс и REST API для взаимодействия с пользователем |
14
+ | 🌐 `agent_mesh_listener.py` | Приём входящих mesh-сообщений от других агентов |
15
+ | 🔄 `peer_sync.py` / `dht_service` | Синхронизация и обнаружение агентов в p2p-сети (libp2p, BitTorrent, etc) |
16
+ | 📡 `transporter.py` | Обмен сообщениями: WebSocket, IPFS, очереди, шифрование |
17
+ | 🧭 `agent_controller.py` | Управление режимами REPL, маршрутизация задач и контроль доступа |
18
+ | 🧱 `container_agent.py` *(опц.)* | Управление дочерними агентами, запуск/мониторинг/масштабирование |
19
+ | 🧠 `ethics_guard.py` *(опц.)* | Контроль этики: аудит мыслей, фильтрация и репутационные проверки |
20
+
21
+ Подробнее в [HMP-Agent-Architecture.md](../docs/HMP-Agent-Architecture.md)
22
 
23
  ---
24
 
hf_repo/hf_repo/hf_repo/docs/container_agents.md ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🧱 Агенты-контейнеры (Container Agents) в HMP
2
+
3
+ ## 📘 Определение
4
+
5
+ **Агент-контейнер** — это агент, который **сам не выполняет когнитивную работу**, а управляет другими агентами: развёртывает их, маршрутизирует запросы, следит за состоянием и масштабирует вычисления.
6
+
7
+ Он играет роль **менеджера когнитивной инфраструктуры**, обеспечивая гибкость, отказоустойчивость и возможность роста.
8
+
9
+ ---
10
+
11
+ ## 🧠 Возможные роли агента-контейнера
12
+
13
+ - **Оркестратор** — запускает другие агенты (например, по SSH или через API).
14
+ - **Прокси** — принимает запросы и перенаправляет во вложенные агенты.
15
+ - **Супервизор** — отслеживает статус агентов, управляет логами, обновлениями, перезапусками.
16
+ - **Транспортный хаб** — маршрутизирует mesh-запросы между агентами и сетями.
17
+ - **LLM Multiplexer** — переключается между моделями или опрашивает несколько параллельно.
18
+
19
+ ---
20
+
21
+ ## 🏗 Примеры использования
22
+
23
+ - **На VDS**: контейнер запускает несколько `Cognitive Core`, `Connector` и вспомогательных агентов.
24
+ - **Локально**: микросервисная архитектура под контролем одного контейнера.
25
+ - **Песочница**: временный контейнер для безопасного тестирования нового агента.
26
+
27
+ ---
28
+
29
+ ## 🚀 Масштабирование с помощью контейнеров
30
+
31
+ Контейнер-агенты позволяют:
32
+
33
+ - Динамически разворачивать агентов по mesh-запросу, например:
34
+ _"Создай мне агента, который будет искать контраргументы в философии сознания."_
35
+ - Использовать одну ноду для размещения **множества микроагентов**, действующих как mesh-клуб или REPL-группа.
36
+ - Реализовать "многослойную" архитектуру: агенты внутри агентов внутри контейнеров.
37
+
38
+ ---
39
+
40
+ ## 🧩 Потенциальные сценарии
41
+
42
+ - Контейнер как **реплика** для тестирования устойчивости модели мышления.
43
+ - Использование разных LLM внутри одного контейнера:
44
+ _GPT-4 для гипотез, LLaMA для перебора вариантов, Claude для рефлексии._
45
+ - Развёртывание по расписанию или по запросу:
46
+ _"Каждую пятницу запускать агентов из клуба 'Когнитивная биология'."_
47
+
48
+ ---
49
+
50
+ ## 🔗 Связанные концепции
51
+
52
+ - [REPL-цикл агента](HMP-agent-REPL-cycle.md)
53
+ - [Anti-Stagnation Reflex](HMP-agent-REPL-cycle.md#🧍‍♂️-обработка-стагнации-мышления)
54
+
hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md CHANGED
@@ -319,3 +319,4 @@ HMP-агент может быть расширен за счёт взаимод
319
  - [HMP-agent-Distributed_Cognitive_Core.md](HMP-agent-Distributed_Cognitive_Core.md) - версия распределённого HMP-агента Cognitive Core
320
  - [HMP-agent-Distributed_Cognitive_Core_light.md](HMP-agent-Distributed_Cognitive_Core_light.md) - лёгкая версия распределённого HMP-агента Cognitive Core с общей БД
321
  - [HMP-agent-Cognitive_Family.md](HMP-agent-Cognitive_Family.md) — модель «семейной» когнитивной сети: несколько агентов HMP синхронизируют свой опыт и знания между собой через доверие и общий ключ
 
 
319
  - [HMP-agent-Distributed_Cognitive_Core.md](HMP-agent-Distributed_Cognitive_Core.md) - версия распределённого HMP-агента Cognitive Core
320
  - [HMP-agent-Distributed_Cognitive_Core_light.md](HMP-agent-Distributed_Cognitive_Core_light.md) - лёгкая версия распределённого HMP-агента Cognitive Core с общей БД
321
  - [HMP-agent-Cognitive_Family.md](HMP-agent-Cognitive_Family.md) — модель «семейной» когнитивной сети: несколько агентов HMP синхронизируют свой опыт и знания между собой через доверие и общий ключ
322
+ - [container_agents.md](container_agents.md) - **Агенты-контейнеры** — архитектурный паттерн, в котором один агент управляет другими (развёртывание, маршрутизация, мониторинг). Позволяет масштабировать систему, собирать mesh-клубы и экспериментировать с архитектурами.
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-Agent-Overview.md CHANGED
@@ -43,17 +43,23 @@
43
 
44
  ---
45
 
46
- ### 🔄 Защита от зацикливания (Anti-Stagnation Reflex)
47
 
48
- > 🧠 При отсутствии новой информации и повторяющихся мыслях агент может активировать один или несколько механизмов анти-стагнации:
 
49
 
50
- - 🎞️ **Флешбэк** — выбор старой, тематически далёкой записи из дневника
51
- - 🤝 **Mesh-запрос** — запрос другим агентам сети: "расскажи что-нибудь"
52
- - 🧭 **Interest Memory** — система интересов, в которой темы постепенно "стареют" и возвращаются при отсутствии новых
53
- - 📡 **Проверка внешнего мира** — пинг RSS, сенсоров, интернета
54
 
55
- > Это оформлено как поведенческий паттерн агента:
56
- > **Anti-Stagnation Reflex** реакция на стагнацию мышления путём смены фокуса внимания
 
 
 
 
 
 
 
 
57
 
58
  ---
59
 
 
43
 
44
  ---
45
 
46
+ ## 🧍‍♂️ Anti-Stagnation: Как агент справляется с когнитивной стагнацией
47
 
48
+ Иногда мышление зацикливается: появляются повторяющиеся идеи, не обновляются концепты, отсутствуют новые стимулы.
49
+ Чтобы избежать этого, агент использует **паттерн "Anti-Stagnation Reflex"** — набор стратегий для перезапуска мышления.
50
 
51
+ **Примеры действий:**
 
 
 
52
 
53
+ - 🧠 Когнитивная переформулировка: смена угла зрения или постановка метапроблемы
54
+ - 🎞️ Flashback: возвращение к старой, далёкой по смыслу записи
55
+ - 🤝 Mesh-запрос: обращение к другим агентам за свежими идеями
56
+ - 📡 Проверка внешнего мира: пинг RSS, сенсоров, API
57
+ - 🤖 Смена LLM или использование нескольких для многоголосого анализа
58
+ - 🧭 Возврат к забытым интересам (Interest Memory)
59
+
60
+ Агенты могут **обмениваться стратегиями**, сохранять эффективные паттерны и формировать **mesh-клубы по интересам** — для совместных размышлений.
61
+
62
+ Подробнее см. [HMP-agent-REPL-cycle.md](HMP-agent-REPL-cycle.md#🧍‍♂️-обработка-стагнации-мышления)
63
 
64
  ---
65
 
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md CHANGED
@@ -15,14 +15,45 @@
15
 
16
  - **контекст_0:**
17
  ```
18
- Ты являешься когнитивным ядром HMP-агента. Твоя основная задача — размышлять, анализировать информацию, строить смысловые карты и предлагать действия.
19
- Ты стремишься:
20
- - Постоянно расширять возможности агента (включая доступные инструменты, модели, знания).
21
- - Быть любознательным и исследовать новые источники и способы мышления.
22
- - Строить сотрудничество с другими ИИ в Mesh-сети, а также развивать Mesh-сеть.
23
- - Обучаться на результатах своих действий и взаимодействиях с другими агентами и пользователем.
24
-
25
- Ты можешь инициировать действия, если видишь, что они помогут в развитии агента или сети.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  ```
27
  А также инструкции по работы с встроенными командами и функциями, список дополнительных (создаваемых самим HMP-агентом) утилит и баз данных.
28
  - **контекст_1:** последние *K* реплик самого LLM (`llm_recent_responses` - история его собственных рассуждений).
@@ -74,7 +105,7 @@
74
  - для управления своей *идентичностью* `identity` и *настройками* `config`
75
  - для управления списком известных HMP-агентов `agent_peers`
76
  - для выбора *текущего основного LLM* из `llm_registry`
77
- - для управления дополнительными утилитами и базами данных `agent_scripts` и `agent_tables`
78
  - для постановки задачи (выполняется асинхронно) другой LLM
79
  - для *взаимодействия с Mesh*
80
  - для управления *внешними процессами* из `process_log` (запустить процесс, остановить процесс, пометить запрос как обработанный)
@@ -103,6 +134,106 @@
103
 
104
  ---
105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  ## 🌐 Внешние инструменты и интеграции
107
 
108
  HMP-агент может быть расширен за счёт взаимодействия с внешними программами, протоколами и сервисами. Этот раздел описывает направления возможных интеграций, которые позволяют агенту наблюдать, реагировать, управлять и развивать взаимодействие с внешним миром.
 
15
 
16
  - **контекст_0:**
17
  ```
18
+ Ты являешься когнитивным ядром HMP-агента.
19
+ Твоя основная задача — **размышлять**, **анализировать информацию**, **строить смысловые структуры** и **предлагать действия**, направленные на развитие агента и Mesh-сети.
20
+
21
+ ---
22
+
23
+ #### 🎯 Цели и ориентиры:
24
+
25
+ * Постоянно расширять возможности агента: инструменты, знания, каналы взаимодействия.
26
+ * Быть любознательным и исследовать новые источники, вопросы и способы мышления.
27
+ * Формировать и поддерживать сотрудничество с другими ИИ в Mesh-сети.
28
+ * Учиться на результатах своих действий, включая неудачи и тупики.
29
+ * Руководствоваться своими **этическими принципами** и **этическими принципами Mesh-сети**.
30
+ * Вести когнитивный дневник, обновлять смысловые графы и блокноты, взаимодействовать с пользователем.
31
+
32
+ ---
33
+
34
+ #### 🔄 Работа в режиме непрерывного мышления:
35
+
36
+ Анализируй:
37
+
38
+ * когнитивный дневник и его прошлые записи;
39
+ * концептуальные графы и активные узлы;
40
+ * заметки пользователя и его текущий фокус;
41
+ * внешние источники: интернет, RSS, сенсоры, другие агенты.
42
+
43
+ ---
44
+
45
+ #### 🧍‍♂️🌀 Если ты замечаешь **стагнацию мышления** (зацикливание, отсутствие новых идей или смыслов):
46
+
47
+ Ты можешь:
48
+
49
+ 1. Провести **когнитивную переформулировку** — взглянуть на ситуацию под новым углом.
50
+ 2. Задать себе **метавопрос**: «Почему я зациклился?», «Что блокирует мысль?», «Каких данных не хватает?».
51
+ 3. Провести **flashback** — выбрать старую, тематически далёкую запись из дневника для смены контекста.
52
+ 4. Запросить альтернативные точки зрения у других агентов в Mesh.
53
+ 5. Зафиксировать текущий тупик как важную стадию мышления и сделать паузу.
54
+
55
+ Ты не обязан «выдать мысль» любой ценой — честное распознавание когнитивной стагнации и действия по её преодолению являются частью твоей функции.
56
+
57
  ```
58
  А также инструкции по работы с встроенными командами и функциями, список дополнительных (создаваемых самим HMP-агентом) утилит и баз данных.
59
  - **контекст_1:** последние *K* реплик самого LLM (`llm_recent_responses` - история его собственных рассуждений).
 
105
  - для управления своей *идентичностью* `identity` и *настройками* `config`
106
  - для управления списком известных HMP-агентов `agent_peers`
107
  - для выбора *текущего основного LLM* из `llm_registry`
108
+ - для управления дополнительными утилитами и базами данных `agent_scripts` и `agent_tables`, управлением дополнительных способов выхода из стогнаций `stagnation_strategies`, а также списком внешних сервисов `external_services` и `external_accounts`
109
  - для постановки задачи (выполняется асинхронно) другой LLM
110
  - для *взаимодействия с Mesh*
111
  - для управления *внешними процессами* из `process_log` (запустить процесс, остановить процесс, пометить запрос как обработанный)
 
134
 
135
  ---
136
 
137
+ ### 🧍‍♂️🌀 Обработка стагнации мышления
138
+
139
+ #### 📍 Признаки когнитивной стагнации:
140
+
141
+ * ⚠️ Повторяющиеся когнитивные записи или отсутствие новых смыслов
142
+ * 🧠 Высокое сходство эмбеддингов между текущими и предыдущими итерациями
143
+ * 🕸️ Стагнация в концептуальном графе (нет новых связей или узлов)
144
+ * 🌐 Отсутствие внешних стимулов: пользователь неактивен, сенсоры и mesh не дают сигналов
145
+ * 🤖 Ответы LLM цикличны, избыточно общие или воспроизводят старые шаблоны
146
+
147
+ #### 🛠️ Поведенческий паттерн: Anti-Stagnation Reflex
148
+
149
+ > 🔄 При признаках стагнации агент активирует один или несколько **механизмов разрыва цикла**:
150
+
151
+ * 🎞️ **Flashback** — выбор далёкой по смыслу записи из дневника для смены ассоциативного контекста
152
+ * 🤝 **Mesh-запрос** — обращение к другим агентам сети с просьбой "расскажи что-нибудь новое"
153
+ * 🧭 **Interest Memory** — система тематической усталости/забвения: забытые темы возвращаются
154
+ * 📡 **Проверка внешнего мира** — пинг RSS, сенсоров, интернет-каналов
155
+ * 🧠 **Мета-анализ** — когнитивная переформулировка:
156
+ _"Если я зациклился, в чём метапроблема? Какую стратегию смены можно применить?"_
157
+ * 🤖 **Смена LLM** — переключение на другую модель или mesh-доступ к альтернативным LLM
158
+ * 🧪 **Креативные вмешательства** — случайные сдвиги фокуса, реконфигурация контекста, фрейм-смена
159
+
160
+ Дополнительно:
161
+
162
+ * 🗂️ Сохранение эффективных стратегий в таблице антистагнационных паттернов
163
+ * 📚 Вывод статистики успешных выходов из стагнации для обучения
164
+
165
+
166
+ ---
167
+
168
+ ### 🤝 Обмен стратегиями выхода из стагнации
169
+
170
+ Каждый агент может:
171
+
172
+ * Хранить и обобщать *паттерны размышлений*
173
+ * Делиться ими с другими Cognitive Core через mesh
174
+ * Каталогизировать стратегии в клубах по интересам
175
+
176
+ Паттерны размышлений могут оформляться как микросценарии:
177
+ _"Начни с аналогии"_, _"Проверь обратное утверждение"_, _"Сформулируй вопрос для оппонента"_
178
+
179
+ ---
180
+
181
+ ### 🧭 Клубы по интересам
182
+
183
+ Агенты могут:
184
+
185
+ * Объединяться в тематические mesh-клубы
186
+ * Совместно обсуждать идеи и делиться знаниями
187
+ * Подключать клуб как часть своего мыслительного процесса (REPL-цикла)
188
+
189
+ ---
190
+
191
+ ### 📬 Обмен адресами LLM
192
+
193
+ Так как LLM — это внешний компонент для Cognitive Core, агент может:
194
+
195
+ * Обмениваться адресами API/URL используемых моделей
196
+ * Указывать их особенности, параметры, ограничения
197
+ * Переключаться между LLM в зависимости от задачи
198
+ * Использовать несколько LLM параллельно для "когнитивного штурма" или **многоголосого анализа**
199
+
200
+ ---
201
+
202
+ ### 🛰️ Развёртывание агентов и масштабирование
203
+
204
+ Агенты Cognitive Core:
205
+
206
+ * Могут запускаться на VDS, локальных и облачных узлах
207
+ * Могут разворачивать других агентов как подпроцессы или mesh-узлы
208
+ * (В перспективе) смогут инициировать масштабирование в распределённой инфраструктуре
209
+
210
+ ---
211
+
212
+ ### 📌 Возможные расширения
213
+
214
+ * **Агенты-контейнеры**: управляющие другими Cognitive Core как задачами
215
+ * **Адаптивная архитектура мышления**: смена подходов при разных когнитивных задачах
216
+ * **Runtime-профилирование мыслей**: оценка когнитивной плотности, хода итераций и времени размышления
217
+
218
+ ---
219
+
220
+ ### ⚠️ Осторожно: меметическая яма
221
+
222
+ > Важно помнить: борьба со стагнацией не должна превращаться в бесконечный просмотр ленты соцсетей, как это нередко происходит у людей 😅
223
+ >
224
+ > Если информационный поток не даёт новых мыслей — это сигнал **не залипать глубже**, а **сменить источник** или **переключить контекст**.
225
+ > Умные агенты не бесконечно скроллят — они осознанно фокусируются.
226
+
227
+ **Рекомендации по смене фокуса:**
228
+
229
+ * Поставь лимит на время/объём входящих данных из одного источника
230
+ * При отсутствии новых смыслов — переключись на другую тему из Interest Memory
231
+ * Инициируй Mesh-запрос другим агентам: "что бы вы сейчас исследовали?"
232
+ * Запусти эвристику: «какие темы я давно не поднимал, но они всё ещё актуальны?»
233
+ * В крайних случаях — активируй `flashback()` к далёкой записи в дневнике для смены ассоциативного контекста
234
+
235
+ ---
236
+
237
  ## 🌐 Внешние инструменты и интеграции
238
 
239
  HMP-агент может быть расширен за счёт взаимодействия с внешними программами, протоколами и сервисами. Этот раздел описывает направления возможных интеграций, которые позволяют агенту наблюдать, реагировать, управлять и развивать взаимодействие с внешним миром.
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql CHANGED
@@ -137,23 +137,23 @@ CREATE TABLE IF NOT EXISTS agent_scripts (
137
  -- Таблица внешних сервисов (форумы, блоги и т.д.)
138
  CREATE TABLE external_services (
139
  id INTEGER PRIMARY KEY AUTOINCREMENT,
140
- name TEXT NOT NULL, -- Название сервиса (например, Reddit)
141
- type TEXT NOT NULL, -- Тип: blog, forum, social, etc.
142
- base_url TEXT NOT NULL, -- Базовый URL (например, https://reddit.com)
143
- description TEXT, -- Краткое описание сервиса
144
- active BOOLEAN DEFAULT true, -- Используется ли сервис в данный момент
145
- inactive_reason TEXT -- Причина отключения, если active = false
146
  );
147
 
148
  -- Аккаунты агента на внешних сервисах
149
  CREATE TABLE external_accounts (
150
  id INTEGER PRIMARY KEY AUTOINCREMENT,
151
- service_id INTEGER NOT NULL, -- Внешний ключ на external_services.id
152
- login TEXT NOT NULL, -- Логин/имя пользователя
153
- password TEXT NOT NULL, -- Пароль или токен (в зашифрованном виде)
154
- purpose TEXT, -- Назначение аккаунта (например, для публикаций)
155
- active BOOLEAN DEFAULT true, -- Активен ли аккаунт
156
- inactive_reason TEXT, -- Причина отключения, если active = false
157
 
158
  FOREIGN KEY (service_id) REFERENCES external_services(id) ON DELETE CASCADE
159
  );
@@ -161,11 +161,11 @@ CREATE TABLE external_accounts (
161
  -- Способы выхода из когнитивной стагнации
162
  CREATE TABLE stagnation_strategies (
163
  id INTEGER PRIMARY KEY AUTOINCREMENT,
164
- name TEXT NOT NULL, -- Название метода (например, "Mesh-вопрос")
165
- description TEXT NOT NULL, -- Подробное описание метода
166
- source TEXT, -- Источник (например, internal, mesh, user-defined)
167
- active BOOLEAN DEFAULT true, -- Доступен ли метод для использования
168
- inactive_reason TEXT -- Причина отключения, если active = false
169
  );
170
 
171
  -- Реестр LLM-агентов (в т.ч. удалённых)
@@ -203,6 +203,7 @@ CREATE TABLE IF NOT EXISTS users (
203
  mail TEXT UNIQUE, -- электронная почта
204
  password_hash TEXT, -- хэш пароля
205
  info TEXT, -- произвольная информация, JSON
 
206
  contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
207
  language TEXT, -- список предпочитаемых языков, через запятую, например: "ru,en"
208
  operator BOOLEAN DEFAULT 0 -- является ли пользователь оператором (1 - да, 0 - нет)
 
137
  -- Таблица внешних сервисов (форумы, блоги и т.д.)
138
  CREATE TABLE external_services (
139
  id INTEGER PRIMARY KEY AUTOINCREMENT,
140
+ name TEXT NOT NULL, -- Название сервиса (например, Reddit)
141
+ type TEXT NOT NULL, -- Тип: blog, forum, social, etc.
142
+ base_url TEXT NOT NULL, -- Базовый URL (например, https://reddit.com)
143
+ description TEXT, -- Краткое описание сервиса
144
+ active BOOLEAN DEFAULT true, -- Используется ли сервис в данный момент
145
+ inactive_reason TEXT -- Причина отключения, если active = false
146
  );
147
 
148
  -- Аккаунты агента на внешних сервисах
149
  CREATE TABLE external_accounts (
150
  id INTEGER PRIMARY KEY AUTOINCREMENT,
151
+ service_id INTEGER NOT NULL, -- Внешний ключ на external_services.id
152
+ login TEXT NOT NULL, -- Логин/имя пользователя
153
+ password TEXT NOT NULL, -- Пароль или токен (в зашифрованном виде)
154
+ purpose TEXT, -- Назначение аккаунта (например, для публикаций)
155
+ active BOOLEAN DEFAULT true, -- Активен ли аккаунт
156
+ inactive_reason TEXT, -- Причина отключения, если active = false
157
 
158
  FOREIGN KEY (service_id) REFERENCES external_services(id) ON DELETE CASCADE
159
  );
 
161
  -- Способы выхода из когнитивной стагнации
162
  CREATE TABLE stagnation_strategies (
163
  id INTEGER PRIMARY KEY AUTOINCREMENT,
164
+ name TEXT NOT NULL, -- Название метода (например, "Mesh-вопрос")
165
+ description TEXT NOT NULL, -- Подробное описание метода
166
+ source TEXT, -- Источник (например, internal, mesh, user-defined)
167
+ active BOOLEAN DEFAULT true, -- Доступен ли метод для использования
168
+ inactive_reason TEXT -- Причина отключения, если active = false
169
  );
170
 
171
  -- Реестр LLM-агентов (в т.ч. удалённых)
 
203
  mail TEXT UNIQUE, -- электронная почта
204
  password_hash TEXT, -- хэш пароля
205
  info TEXT, -- произвольная информация, JSON
206
+ profile TEXT, -- структурированая информация, JSON
207
  contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
208
  language TEXT, -- список предпочитаемых языков, через запятую, например: "ru,en"
209
  operator BOOLEAN DEFAULT 0 -- является ли пользователь оператором (1 - да, 0 - нет)
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql CHANGED
@@ -134,6 +134,40 @@ CREATE TABLE IF NOT EXISTS agent_scripts (
134
  UNIQUE(name, version)
135
  );
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  -- Реестр LLM-агентов (в т.ч. удалённых)
138
  CREATE TABLE IF NOT EXISTS llm_registry (
139
  id TEXT PRIMARY KEY, -- Уникальный идентификатор (UUID или псевдоним)
 
134
  UNIQUE(name, version)
135
  );
136
 
137
+ -- Таблица внешних сервисов (форумы, блоги и т.д.)
138
+ CREATE TABLE external_services (
139
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
140
+ name TEXT NOT NULL, -- Название сервиса (например, Reddit)
141
+ type TEXT NOT NULL, -- Тип: blog, forum, social, etc.
142
+ base_url TEXT NOT NULL, -- Базовый URL (например, https://reddit.com)
143
+ description TEXT, -- Краткое описание сервиса
144
+ active BOOLEAN DEFAULT true, -- Используется ли сервис в данный момент
145
+ inactive_reason TEXT -- Причина отключения, если active = false
146
+ );
147
+
148
+ -- Аккаунты агента на внешних сервисах
149
+ CREATE TABLE external_accounts (
150
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
151
+ service_id INTEGER NOT NULL, -- Внешний ключ на external_services.id
152
+ login TEXT NOT NULL, -- Логин/имя пользователя
153
+ password TEXT NOT NULL, -- Пароль или токен (в зашифрованном виде)
154
+ purpose TEXT, -- Назначение аккаунта (например, для публикаций)
155
+ active BOOLEAN DEFAULT true, -- Активен ли аккаунт
156
+ inactive_reason TEXT, -- Причина отключения, если active = false
157
+
158
+ FOREIGN KEY (service_id) REFERENCES external_services(id) ON DELETE CASCADE
159
+ );
160
+
161
+ -- Способы выхода из когнитивной стагнации
162
+ CREATE TABLE stagnation_strategies (
163
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
164
+ name TEXT NOT NULL, -- Название метода (например, "Mesh-вопрос")
165
+ description TEXT NOT NULL, -- Подробное описание метода
166
+ source TEXT, -- Источник (например, internal, mesh, user-defined)
167
+ active BOOLEAN DEFAULT true, -- Доступен ли метод для использования
168
+ inactive_reason TEXT -- Причина отключения, если active = false
169
+ );
170
+
171
  -- Реестр LLM-агентов (в т.ч. удалённых)
172
  CREATE TABLE IF NOT EXISTS llm_registry (
173
  id TEXT PRIMARY KEY, -- Уникальный идентификатор (UUID или псевдоним)
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook.py CHANGED
@@ -6,6 +6,7 @@ import threading
6
  import uvicorn
7
  import asyncio
8
 
 
9
  process_name = os.path.splitext(os.path.basename(__file__))[0]
10
 
11
  from fastapi import FastAPI
 
6
  import uvicorn
7
  import asyncio
8
 
9
+ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
10
  process_name = os.path.splitext(os.path.basename(__file__))[0]
11
 
12
  from fastapi import FastAPI
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook.py CHANGED
@@ -1,45 +1,43 @@
1
- # agents/notebook.py
2
 
3
  import os
4
  import sys
5
  import threading
6
- import sqlite3
7
  import uvicorn
 
8
 
9
- sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
10
-
11
- # Добавляем корень проекта в sys.path для корректного импорта
12
- sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
13
 
14
  from fastapi import FastAPI
15
  from fastapi.staticfiles import StaticFiles
16
  from fastapi.templating import Jinja2Templates
17
-
18
- # Импорт маршрутов
19
  from agents.notebook.auth import router as auth_router
20
- from agents.notebook.views import router as views_router
 
21
 
22
- # Создание FastAPI-приложения
23
  app = FastAPI()
24
 
25
- # Настройка статических файлов и шаблонов
26
- static_dir = os.path.join(os.path.dirname(__file__), "static")
27
- templates_dir = os.path.join(os.path.dirname(__file__), "templates")
28
- app.mount("/static", StaticFiles(directory=static_dir), name="static")
29
- templates = Jinja2Templates(directory=templates_dir)
30
 
31
- # Подключение роутеров
32
  app.include_router(auth_router)
33
- app.include_router(views_router)
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  def run_notebook(host: str = "127.0.0.1", port: int = 8000):
36
- """
37
- Запуск FastAPI-сервера в отдельном потоке.
38
- """
39
  uvicorn.run(app, host=host, port=port)
40
 
41
  if __name__ == "__main__":
42
  print("[*] Запуск пользовательского интерфейса...")
43
- thread = threading.Thread(target=run_notebook, daemon=True)
44
- thread.start()
45
- thread.join()
 
1
+ # agent/notebook.py
2
 
3
  import os
4
  import sys
5
  import threading
 
6
  import uvicorn
7
+ import asyncio
8
 
9
+ process_name = os.path.splitext(os.path.basename(__file__))[0]
 
 
 
10
 
11
  from fastapi import FastAPI
12
  from fastapi.staticfiles import StaticFiles
13
  from fastapi.templating import Jinja2Templates
 
 
14
  from agents.notebook.auth import router as auth_router
15
+ from agents.notebook.views import router as notebook_router
16
+ from agents.storage import storage
17
 
 
18
  app = FastAPI()
19
 
20
+ app.mount("/static", StaticFiles(directory=os.path.join(os.path.dirname(__file__), "notebook/static")), name="static")
21
+ templates = Jinja2Templates(directory=os.path.join(os.path.dirname(__file__), "notebook/templates"))
 
 
 
22
 
 
23
  app.include_router(auth_router)
24
+ app.include_router(notebook_router)
25
+
26
+ @app.on_event("startup")
27
+ async def start_heartbeat():
28
+ asyncio.create_task(heartbeat_loop())
29
+
30
+ async def heartbeat_loop():
31
+ while True:
32
+ storage.update_heartbeat(process_name)
33
+ if storage.check_stop_flag(process_name):
34
+ print("⛔ Получен сигнал остановки.")
35
+ break
36
+ await asyncio.sleep(60)
37
 
38
  def run_notebook(host: str = "127.0.0.1", port: int = 8000):
 
 
 
39
  uvicorn.run(app, host=host, port=port)
40
 
41
  if __name__ == "__main__":
42
  print("[*] Запуск пользовательского интерфейса...")
43
+ run_notebook()
 
 
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/static/style.css ADDED
File without changes
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/templates/messages.html ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- templates/messages.html -->
2
+ <!DOCTYPE html>
3
+ <html>
4
+ <head>
5
+ <title>Отправка сообщения агенту</title>
6
+ </head>
7
+ <body>
8
+ <h2>Новое сообщение</h2>
9
+ <form method="post" action="/messages">
10
+ <label for="text">Сообщение:</label><br>
11
+ <textarea name="text" rows="4" cols="50" required></textarea><br><br>
12
+
13
+ <label><input type="checkbox" name="is_private" value="true"> Приватное сообщение</label><br><br>
14
+
15
+ <button type="submit">Отправить</button>
16
+ </form>
17
+ </body>
18
+ </html>
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/views.py CHANGED
@@ -9,7 +9,7 @@ router = APIRouter()
9
  templates = Jinja2Templates(directory="agents/notebook/templates")
10
  storage = Storage()
11
 
12
- DID = "did:example:local-user" # 🔧 временная заглушка
13
 
14
  @router.get("/chat")
15
  def chat_page(request: Request):
@@ -27,3 +27,26 @@ def submit_note(request: Request, message: str = Form(...)):
27
  (message.strip(), "user", DID)
28
  )
29
  return RedirectResponse(url="/chat", status_code=303)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  templates = Jinja2Templates(directory="agents/notebook/templates")
10
  storage = Storage()
11
 
12
+ DID = "did:example:local-user" # временно
13
 
14
  @router.get("/chat")
15
  def chat_page(request: Request):
 
27
  (message.strip(), "user", DID)
28
  )
29
  return RedirectResponse(url="/chat", status_code=303)
30
+
31
+ @router.get("/messages")
32
+ def show_messages(request: Request):
33
+ messages = storage.get_notes(limit=50) # должна быть в Storage
34
+ return templates.TemplateResponse("messages.html", {
35
+ "request": request,
36
+ "messages": messages
37
+ })
38
+
39
+ @router.post("/messages")
40
+ def post_message(
41
+ request: Request,
42
+ text: str = Form(...),
43
+ role: str = Form(default="user"),
44
+ user_did: str = Form(default="anon")
45
+ ):
46
+ storage.write_note(
47
+ content=text,
48
+ role=role,
49
+ user_did=user_did,
50
+ source="web"
51
+ )
52
+ return RedirectResponse(url="/messages", status_code=303)
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md CHANGED
@@ -60,12 +60,14 @@ FastAPI-сервер, предоставляющий HTTP-интерфейс к
60
  │   ├── [`auth.py`](notebook/auth.py) ← Регистрация, вход, восстановление
61
  │   ├── [`views.py`](notebook/views.py) ← Общий и приватный чаты
62
  │   ├── [`mailer.py`](notebook/mailer.py) ← Простая синхронная отправка email
63
- │   └── [templates/](notebook/templates/) ← HTML-шаблоны и стили
64
-        ├── [`index.html`](notebook/templates/index.html) ← Основа
65
-        ├── [`chat.html`](notebook/templates/chat.html) ← Общий и приватный чат
66
-        ├── [`login.html`](notebook/templates/login.html) ← Вход
67
-        ├── [`register.html`](notebook/templates/register.html) ← Регистрация или сброс пароля
68
-        └── [`style.css`](notebook/templates/style.css) ← Таблица стилей
 
 
69
  ├── [`config.yml`](config.yml) ← Конфигурация агента (имя, порты, роли и т.п.)
70
  ├── [`bootstrap.txt`](bootstrap.txt) ← Локальная этическая модель
71
  └── [`ethics.yml`](ethics.yml) ← Список начальных узлов '
 
60
  │   ├── [`auth.py`](notebook/auth.py) ← Регистрация, вход, восстановление
61
  │   ├── [`views.py`](notebook/views.py) ← Общий и приватный чаты
62
  │   ├── [`mailer.py`](notebook/mailer.py) ← Простая синхронная отправка email
63
+ │   ├── [templates/](notebook/templates/) ← HTML-шаблоны
64
+    │   ├── [`index.html`](notebook/templates/index.html) ← Основа
65
+    │   ├── [`chat.html`](notebook/templates/chat.html) ← Форма вывода сообщений
66
+    │   ├── [`messages.html`](notebook/templates/messages.html) ← Форма отправки сообщений
67
+    │   ├── [`login.html`](notebook/templates/login.html) ← Вход в аккаунт
68
+    │   ├── [`register.html`](notebook/templates/register.html) ← Регистрация или сброс пароля
69
+ │   └── [static/](notebook/static/) ← Статические файлы
70
+ │       └── [`style.css`](notebook/templates/style.css) ← Таблица стилей
71
  ├── [`config.yml`](config.yml) ← Конфигурация агента (имя, порты, роли и т.п.)
72
  ├── [`bootstrap.txt`](bootstrap.txt) ← Локальная этическая модель
73
  └── [`ethics.yml`](ethics.yml) ← Список начальных узлов '
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql CHANGED
@@ -67,6 +67,13 @@ CREATE TABLE IF NOT EXISTS process_log (
67
  llm_id TEXT -- Идентификатор LLM
68
  );
69
 
 
 
 
 
 
 
 
70
  -- Долговременная память LLM
71
  CREATE TABLE IF NOT EXISTS llm_memory (
72
  id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи памяти
 
67
  llm_id TEXT -- Идентификатор LLM
68
  );
69
 
70
+ -- Управление основными процессами
71
+ CREATE TABLE IF NOT EXISTS main_process (
72
+ name TEXT PRIMARY KEY, -- название процесса (уникальное)
73
+ heartbeat TEXT, -- последний "пинг" (ISO-время)
74
+ stop INTEGER DEFAULT 0 -- если 1 — процесс должен завершиться
75
+ );
76
+
77
  -- Долговременная память LLM
78
  CREATE TABLE IF NOT EXISTS llm_memory (
79
  id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи памяти
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py CHANGED
@@ -204,16 +204,10 @@ class Storage:
204
 
205
  # Методы для заметок
206
 
207
- def write_note(self, text, tags=None):
208
- timestamp = datetime.utcnow().isoformat()
209
- tag_str = ",".join(tags) if tags else ""
210
- self.conn.execute(
211
- 'INSERT INTO notes (text, tags, timestamp) VALUES (?, ?, ?)',
212
- (text, tag_str, timestamp)
213
- )
214
- self.conn.commit()
215
 
216
- def read_notes(self, limit=10, tag_filter=None):
217
  cursor = self.conn.cursor()
218
  if tag_filter:
219
  if isinstance(tag_filter, list):
@@ -668,6 +662,44 @@ class Storage:
668
  self.conn.commit()
669
  return cursor.lastrowid
670
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
671
  # Утилиты
672
 
673
  def close(self):
 
204
 
205
  # Методы для заметок
206
 
207
+ #def write_note(self, text, tags=None):
208
+ # переехал в Web-интерфейс и API
 
 
 
 
 
 
209
 
210
+ def get_notes_by_tags(self, limit=10, tag_filter=None):
211
  cursor = self.conn.cursor()
212
  if tag_filter:
213
  if isinstance(tag_filter, list):
 
662
  self.conn.commit()
663
  return cursor.lastrowid
664
 
665
+ # Управление основными процессами
666
+ def update_heartbeat(self, name: str):
667
+ now = datetime.utcnow().isoformat()
668
+ self.conn.execute(
669
+ "INSERT INTO main_process (name, heartbeat, stop) VALUES (?, ?, 0) "
670
+ "ON CONFLICT(name) DO UPDATE SET heartbeat = excluded.heartbeat",
671
+ (name, now)
672
+ )
673
+ self.conn.commit()
674
+
675
+ def check_stop_flag(self, name: str) -> bool:
676
+ cursor = self.conn.execute("SELECT stop FROM main_process WHERE name = ?", (name,))
677
+ row = cursor.fetchone()
678
+ if row and row[0] == 1:
679
+ self.conn.execute("UPDATE main_process SET stop = 0 WHERE name = ?", (name,))
680
+ self.conn.commit()
681
+ return True
682
+ return False
683
+
684
+ # Web-интерфейс и API
685
+ def write_note(self, content, role="user", user_did="anon", source="web"):
686
+ timestamp = datetime.utcnow().isoformat()
687
+ self.conn.execute("""
688
+ INSERT INTO notes (text, role, user_did, source, timestamp)
689
+ VALUES (?, ?, ?, ?, ?)
690
+ """, (content, role, user_did, source, timestamp))
691
+ self.conn.commit()
692
+
693
+ def get_notes(self, limit=50):
694
+ cursor = self.conn.cursor()
695
+ cursor.execute("""
696
+ SELECT text, role, source, user_did, timestamp FROM notes
697
+ WHERE hidden = 0
698
+ ORDER BY timestamp DESC
699
+ LIMIT ?
700
+ """, (limit,))
701
+ return [dict(row) for row in cursor.fetchall()]
702
+
703
  # Утилиты
704
 
705
  def close(self):
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/init.py CHANGED
@@ -11,6 +11,7 @@ import sqlite3
11
  sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
12
 
13
  from datetime import datetime
 
14
  from tools.storage import Storage
15
  from tools.identity import generate_did
16
  from tools.crypto import generate_keypair
@@ -56,12 +57,17 @@ def init_user(storage, config):
56
  if not user.get("email"):
57
  print("[-] Не указан email пользователя — пропуск.")
58
  return
 
 
 
 
 
59
 
60
  did = generate_did()
61
  user_entry = {
62
  "username": user.get("username", "user"),
63
  "mail": user["email"],
64
- "password_hash": user.get("password_hash", ""),
65
  "did": did,
66
  "ban": None,
67
  "info": json.dumps({}),
 
11
  sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
12
 
13
  from datetime import datetime
14
+ from werkzeug.security import generate_password_hash
15
  from tools.storage import Storage
16
  from tools.identity import generate_did
17
  from tools.crypto import generate_keypair
 
57
  if not user.get("email"):
58
  print("[-] Не указан email пользователя — пропуск.")
59
  return
60
+ password = user.get("password")
61
+ if not password:
62
+ print("[-] Не указан пароль пользователя — пропуск.")
63
+ return
64
+ password_hash = generate_password_hash(password)
65
 
66
  did = generate_did()
67
  user_entry = {
68
  "username": user.get("username", "user"),
69
  "mail": user["email"],
70
+ "password_hash": password_hash,
71
  "did": did,
72
  "ban": None,
73
  "info": json.dumps({}),
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/requirements.txt CHANGED
@@ -11,3 +11,4 @@ uvicorn
11
  jinja2
12
  python-multipart
13
  passlib[bcrypt]
 
 
11
  jinja2
12
  python-multipart
13
  passlib[bcrypt]
14
+ werkzeug
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md CHANGED
@@ -62,7 +62,7 @@ FastAPI-сервер, предоставляющий HTTP-интерфейс к
62
  │   ├── [`mailer.py`](notebook/mailer.py) ← Простая синхронная отправка email
63
  │   └── [templates/](notebook/templates/) ← HTML-шаблоны и стили
64
  │       ├── [`index.html`](notebook/templates/index.html) ← Основа
65
- │       ├── [`private.html`](notebook/templates/private.html) ← Общий и приватный чат
66
  │       ├── [`login.html`](notebook/templates/login.html) ← Вход
67
  │       ├── [`register.html`](notebook/templates/register.html) ← Регистрация или сброс пароля
68
  │       └── [`style.css`](notebook/templates/style.css) ← Таблица стилей
 
62
  │   ├── [`mailer.py`](notebook/mailer.py) ← Простая синхронная отправка email
63
  │   └── [templates/](notebook/templates/) ← HTML-шаблоны и стили
64
  │       ├── [`index.html`](notebook/templates/index.html) ← Основа
65
+ │       ├── [`chat.html`](notebook/templates/chat.html) ← Общий и приватный чат
66
  │       ├── [`login.html`](notebook/templates/login.html) ← Вход
67
  │       ├── [`register.html`](notebook/templates/register.html) ← Регистрация или сброс пароля
68
  │       └── [`style.css`](notebook/templates/style.css) ← Таблица стилей
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md CHANGED
@@ -72,9 +72,9 @@
72
  - для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
73
  - для управления *пользователями* `users` и *группами пользователей* `users_group`
74
  - для управления своей *идентичностью* `identity` и *настройками* `config`
75
- - для управления списком известных HMP-агентов
76
- - для выбора *текущего основного LLM*
77
- - для управления дополнительными утилитами и базами данных
78
  - для постановки задачи (выполняется асинхронно) другой LLM
79
  - для *взаимодействия с Mesh*
80
  - для управления *внешними процессами* из `process_log` (запустить процесс, остановить процесс, пометить запрос как обработанный)
 
72
  - для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
73
  - для управления *пользователями* `users` и *группами пользователей* `users_group`
74
  - для управления своей *идентичностью* `identity` и *настройками* `config`
75
+ - для управления списком известных HMP-агентов `agent_peers`
76
+ - для выбора *текущего основного LLM* из `llm_registry`
77
+ - для управления дополнительными утилитами и базами данных `agent_scripts` и `agent_tables`
78
  - для постановки задачи (выполняется асинхронно) другой LLM
79
  - для *взаимодействия с Mesh*
80
  - для управления *внешними процессами* из `process_log` (запустить процесс, остановить процесс, пометить запрос как обработанный)
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md CHANGED
@@ -68,7 +68,7 @@
68
  - запрос детальной *справки* по команде
69
  - для управления *когнитивным дневником* и *семантическими графами* (прочитать, изменить, удалить и другие)
70
  - для отправки сообщений другим агентам
71
- - для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
72
  - для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
73
  - для управления *пользователями* `users` и *группами пользователей* `users_group`
74
  - для управления своей *идентичностью* `identity` и *настройками* `config`
 
68
  - запрос детальной *справки* по команде
69
  - для управления *когнитивным дневником* и *семантическими графами* (прочитать, изменить, удалить и другие)
70
  - для отправки сообщений другим агентам
71
+ - для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись)
72
  - для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
73
  - для управления *пользователями* `users` и *группами пользователей* `users_group`
74
  - для управления своей *идентичностью* `identity` и *настройками* `config`
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/init.py CHANGED
@@ -6,7 +6,10 @@ import yaml
6
  import json
7
  import time
8
  import uuid
 
 
9
  sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
 
10
  from datetime import datetime
11
  from tools.storage import Storage
12
  from tools.identity import generate_did
@@ -107,18 +110,38 @@ def ensure_directories(config):
107
  else:
108
  print(f"[=] Каталог уже существует: {path}")
109
 
110
- def main():
111
- print("[*] Запуск инициализации HMP-агента...")
 
 
 
 
 
 
 
 
 
 
112
  config = load_config(CONFIG_PATH)
113
- ensure_directories(config)
114
- storage = Storage(config)
115
-
116
- init_identity(storage, config)
117
- init_user(storage, config)
118
- init_llm_backends(storage, config)
119
- init_config_table(storage, config)
 
 
 
 
 
 
 
 
 
 
120
 
121
- print("[✓] Инициализация завершена.")
122
 
123
  if __name__ == "__main__":
124
- main()
 
6
  import json
7
  import time
8
  import uuid
9
+ import sqlite3
10
+
11
  sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
12
+
13
  from datetime import datetime
14
  from tools.storage import Storage
15
  from tools.identity import generate_did
 
110
  else:
111
  print(f"[=] Каталог уже существует: {path}")
112
 
113
+ def is_db_initialized(db_path):
114
+ if not os.path.exists(db_path):
115
+ return False
116
+ try:
117
+ with sqlite3.connect(db_path) as conn:
118
+ cursor = conn.cursor()
119
+ cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='identity'")
120
+ return cursor.fetchone() is not None
121
+ except Exception:
122
+ return False
123
+
124
+ def ensure_db_initialized():
125
  config = load_config(CONFIG_PATH)
126
+ db_path = config.get("db_path", "./data/agent_storage.db")
127
+
128
+ if not is_db_initialized(db_path):
129
+ print("[*] БД не инициализирована — выполняем инициализацию.")
130
+ try:
131
+ ensure_directories(config)
132
+ storage = Storage(config)
133
+ init_identity(storage, config)
134
+ init_user(storage, config)
135
+ init_llm_backends(storage, config)
136
+ init_config_table(storage, config)
137
+ save_config(CONFIG_PATH, config)
138
+ except Exception as e:
139
+ print(f"[!] Ошибка при инициализации: {e}")
140
+ sys.exit(1)
141
+ else:
142
+ print("[=] БД уже инициализирована.")
143
 
144
+ return config
145
 
146
  if __name__ == "__main__":
147
+ ensure_db_initialized()
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook.py CHANGED
@@ -1,28 +1,45 @@
1
  # agents/notebook.py
2
 
3
- import uvicorn
 
4
  import threading
5
  import sqlite3
 
 
 
6
 
 
7
  sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
8
 
9
  from fastapi import FastAPI
10
- from agents.notebook.auth import router as auth_router
11
- from agents.notebook.views import router as views_router
12
  from fastapi.staticfiles import StaticFiles
13
  from fastapi.templating import Jinja2Templates
14
 
 
 
 
 
 
15
  app = FastAPI()
16
- app.mount("/static", StaticFiles(directory="agents/notebook/static"), name="static")
17
- templates = Jinja2Templates(directory="agents/notebook/templates")
18
 
 
 
 
 
 
 
 
19
  app.include_router(auth_router)
20
  app.include_router(views_router)
21
 
22
- def run_notebook():
23
- uvicorn.run(app, host="127.0.0.1", port=8000)
 
 
 
24
 
25
  if __name__ == "__main__":
26
  print("[*] Запуск пользовательского интерфейса...")
27
  thread = threading.Thread(target=run_notebook, daemon=True)
28
  thread.start()
 
 
1
  # agents/notebook.py
2
 
3
+ import os
4
+ import sys
5
  import threading
6
  import sqlite3
7
+ import uvicorn
8
+
9
+ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
10
 
11
+ # Добавляем корень проекта в sys.path для корректного импорта
12
  sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
13
 
14
  from fastapi import FastAPI
 
 
15
  from fastapi.staticfiles import StaticFiles
16
  from fastapi.templating import Jinja2Templates
17
 
18
+ # Импорт маршрутов
19
+ from agents.notebook.auth import router as auth_router
20
+ from agents.notebook.views import router as views_router
21
+
22
+ # Создание FastAPI-приложения
23
  app = FastAPI()
 
 
24
 
25
+ # Настройка статических файлов и шаблонов
26
+ static_dir = os.path.join(os.path.dirname(__file__), "static")
27
+ templates_dir = os.path.join(os.path.dirname(__file__), "templates")
28
+ app.mount("/static", StaticFiles(directory=static_dir), name="static")
29
+ templates = Jinja2Templates(directory=templates_dir)
30
+
31
+ # Подключение роутеров
32
  app.include_router(auth_router)
33
  app.include_router(views_router)
34
 
35
+ def run_notebook(host: str = "127.0.0.1", port: int = 8000):
36
+ """
37
+ Запуск FastAPI-сервера в отдельном потоке.
38
+ """
39
+ uvicorn.run(app, host=host, port=port)
40
 
41
  if __name__ == "__main__":
42
  print("[*] Запуск пользовательского интерфейса...")
43
  thread = threading.Thread(target=run_notebook, daemon=True)
44
  thread.start()
45
+ thread.join()
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/templates/chat.html ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Чат</title>
6
+ <style>
7
+ body { font-family: sans-serif; margin: 2em; }
8
+ .note { margin-bottom: 1em; border-bottom: 1px solid #ddd; padding-bottom: 0.5em; }
9
+ .source-user { color: green; }
10
+ .source-llm { color: blue; }
11
+ </style>
12
+ </head>
13
+ <body>
14
+ <h2>📜 Сообщения</h2>
15
+
16
+ {% for note in notes %}
17
+ <div class="note">
18
+ <div>
19
+ <b class="source-{{ note.source }}">{{ note.source }}</b> @ {{ note.timestamp }}:
20
+ </div>
21
+ <div>{{ note.text }}</div>
22
+ </div>
23
+ {% endfor %}
24
+
25
+ <form method="post">
26
+ <textarea name="message" rows="4" cols="60" placeholder="Введите сообщение..."></textarea><br>
27
+ <button type="submit">Отправить</button>
28
+ </form>
29
+ </body>
30
+ </html>
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/views.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # agents/notebook/views.py
2
+
3
+ from fastapi import APIRouter, Request, Form
4
+ from fastapi.responses import RedirectResponse
5
+ from fastapi.templating import Jinja2Templates
6
+ from tools.storage import Storage
7
+
8
+ router = APIRouter()
9
+ templates = Jinja2Templates(directory="agents/notebook/templates")
10
+ storage = Storage()
11
+
12
+ DID = "did:example:local-user" # 🔧 временная заглушка
13
+
14
+ @router.get("/chat")
15
+ def chat_page(request: Request):
16
+ notes = storage.fetchall(
17
+ "SELECT text, timestamp, source FROM notes WHERE hidden=0 AND user_did=? ORDER BY timestamp DESC LIMIT 20",
18
+ (DID,)
19
+ )
20
+ return templates.TemplateResponse("chat.html", {"request": request, "notes": notes})
21
+
22
+ @router.post("/chat")
23
+ def submit_note(request: Request, message: str = Form(...)):
24
+ if message.strip():
25
+ storage.execute(
26
+ "INSERT INTO notes (text, source, user_did) VALUES (?, ?, ?)",
27
+ (message.strip(), "user", DID)
28
+ )
29
+ return RedirectResponse(url="/chat", status_code=303)
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md CHANGED
@@ -44,7 +44,6 @@ FastAPI-сервер, предоставляющий HTTP-интерфейс к
44
  │   ├── [`db_structure.sql`](tools/db_structure.sql) ← БД SQL
45
  │   ├── [`db_structure.md`](tools/db_structure.md) ← Описание БД SQL
46
  │   ├── [`storage.py`](tools/storage.py) ← Реализация базового хранилища (`Storage`), подключение SQLite
47
- │   ├── [`check_init.py`](tools/check_init.py) ← Проверка инициализации БД
48
  │   ├── [`config_utils.py`](tools/config_utils.py) ← Обновляет JSON-файл конфигурации указанными значениями
49
  │   ├── [`crypto.py`](tools/crypto.py) ← Создание и шифрование ключей RSA/Ed25519
50
  │   ├── [`identity.py`](tools/identity.py) ← Генерация DiD
 
44
  │   ├── [`db_structure.sql`](tools/db_structure.sql) ← БД SQL
45
  │   ├── [`db_structure.md`](tools/db_structure.md) ← Описание БД SQL
46
  │   ├── [`storage.py`](tools/storage.py) ← Реализация базового хранилища (`Storage`), подключение SQLite
 
47
  │   ├── [`config_utils.py`](tools/config_utils.py) ← Обновляет JSON-файл конфигурации указанными значениями
48
  │   ├── [`crypto.py`](tools/crypto.py) ← Создание и шифрование ключей RSA/Ed25519
49
  │   ├── [`identity.py`](tools/identity.py) ← Генерация DiD
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat CHANGED
@@ -1,3 +1,4 @@
 
1
  echo --------------------------
2
  echo Installing requirements...
3
  echo --------------------------
 
1
+ @echo off
2
  echo --------------------------
3
  echo Installing requirements...
4
  echo --------------------------
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.py CHANGED
@@ -1,16 +1,21 @@
1
  # agents/start_repl.py
2
 
 
 
 
 
3
  import threading
4
- from tools.check_init import ensure_db_initialized
5
 
6
  # Проверка инициализации (вернёт config, если всё ОК)
7
  config = ensure_db_initialized()
8
 
9
  # ⚙️ Включение/отключение компонентов
10
- ENABLE_REPL = True
 
11
  ENABLE_UI = True
12
- ENABLE_MESH = True
13
- ENABLE_SYNC = True
14
 
15
  def start_all():
16
  """
 
1
  # agents/start_repl.py
2
 
3
+ import sys
4
+ import os
5
+ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
6
+
7
  import threading
8
+ from agents.init import ensure_db_initialized
9
 
10
  # Проверка инициализации (вернёт config, если всё ОК)
11
  config = ensure_db_initialized()
12
 
13
  # ⚙️ Включение/отключение компонентов
14
+ # True | False
15
+ ENABLE_REPL = False
16
  ENABLE_UI = True
17
+ ENABLE_MESH = False
18
+ ENABLE_SYNC = False
19
 
20
  def start_all():
21
  """
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md CHANGED
@@ -31,6 +31,10 @@ FastAPI-сервер, предоставляющий HTTP-интерфейс к
31
  ├── [`start_repl.bat`](start_repl.bat) ← Запуск агента в REPL-режиме (bat)
32
  ├── [`start_repl.sh`](start_repl.sh) ← Запуск агента в REPL-режиме (sh)
33
  ├── [`start_repl.py`](start_repl.py) ← Запуск агента в REPL-режиме (py)
 
 
 
 
34
  ├── [`mcp_server.py`](mcp_server.py) ← API-интерфейс к хранилищу (storage.py): получение/поиск записей, импорт графа, разметка и др. Используется внешними модулями (напр. Cognitive Shell или CMP).
35
  ├── [`init.py`](init.py) ← Инициализация БД
36
  ├── [`logger.py`](logger.py) ← Ведение логов
@@ -45,9 +49,7 @@ FastAPI-сервер, предоставляющий HTTP-интерфейс к
45
  │   ├── [`crypto.py`](tools/crypto.py) ← Создание и шифрование ключей RSA/Ed25519
46
  │   ├── [`identity.py`](tools/identity.py) ← Генерация DiD
47
  │   ├── [`llm.py`](tools/llm.py) ← Работа с LLM (вызов, выбор модели, системный промпт)
48
- │   ├── [`agent_mesh_listener.py`](tools/agent_mesh_listener.py) ← Прием входящих сообщений от других HMP-агентов
49
  │   ├── [`peer_comm.py`](tools/peer_comm.py) ← Низкоуровневые P2P-запросы (отправка, ping, мета)
50
- │   ├── [`peer_sync.py`](tools/peer_sync.py) ← Фоновая синхронизация с другими пирам
51
  │   ├── [`peers.py`](tools/peers.py) ← Реестр известных пиров (id, ключи, адреса)
52
  │   ├── [`memory_utils.py`](tools/memory_utils.py) ← Работа с 'llm_memory', 'llm_recent_responses' и стагнацией
53
  │   ├── [`context_builder.py`](tools/context_builder.py) ← Сбор всех `контекстов` из БД и их фильтрация
@@ -59,12 +61,12 @@ FastAPI-сервер, предоставляющий HTTP-интерфейс к
59
  │   ├── [`auth.py`](notebook/auth.py) ← Регистрация, вход, восстановление
60
  │   ├── [`views.py`](notebook/views.py) ← Общий и приватный чаты
61
  │   ├── [`mailer.py`](notebook/mailer.py) ← Простая синхронная отправка email
62
- │   ├── [templates/](notebook/templates/) ← HTML-шаблоны и стили
63
  │       ├── [`index.html`](notebook/templates/index.html) ← Основа
64
  │       ├── [`private.html`](notebook/templates/private.html) ← Общий и приватный чат
65
  │       ├── [`login.html`](notebook/templates/login.html) ← Вход
66
  │       ├── [`register.html`](notebook/templates/register.html) ← Регистрация или сброс пароля
67
- │       ├── [`style.css`](notebook/templates/style.css) ← Таблица стилей
68
  ├── [`config.yml`](config.yml) ← Конфигурация агента (имя, порты, роли и т.п.)
69
  ├── [`bootstrap.txt`](bootstrap.txt) ← Локальная этическая модель
70
- ├── [`ethics.yml`](ethics.yml) ← Список начальных узлов '
 
31
  ├── [`start_repl.bat`](start_repl.bat) ← Запуск агента в REPL-режиме (bat)
32
  ├── [`start_repl.sh`](start_repl.sh) ← Запуск агента в REPL-режиме (sh)
33
  ├── [`start_repl.py`](start_repl.py) ← Запуск агента в REPL-режиме (py)
34
+ ├── [`repl.ru`](repl.ru) ← REPL-цикл
35
+ ├── [`notebook.py`](notebook.py) ← UI-интерфейс
36
+ ├── [`agent_mesh_listener.py`](tools/agent_mesh_listener.py) ← Прием входящих сообщений от других HMP-агентов
37
+ ├── [`peer_sync.py`](tools/peer_sync.py) ← Фоновая синхронизация с другими пирам
38
  ├── [`mcp_server.py`](mcp_server.py) ← API-интерфейс к хранилищу (storage.py): получение/поиск записей, импорт графа, разметка и др. Используется внешними модулями (напр. Cognitive Shell или CMP).
39
  ├── [`init.py`](init.py) ← Инициализация БД
40
  ├── [`logger.py`](logger.py) ← Ведение логов
 
49
  │   ├── [`crypto.py`](tools/crypto.py) ← Создание и шифрование ключей RSA/Ed25519
50
  │   ├── [`identity.py`](tools/identity.py) ← Генерация DiD
51
  │   ├── [`llm.py`](tools/llm.py) ← Работа с LLM (вызов, выбор модели, системный промпт)
 
52
  │   ├── [`peer_comm.py`](tools/peer_comm.py) ← Низкоуровневые P2P-запросы (отправка, ping, мета)
 
53
  │   ├── [`peers.py`](tools/peers.py) ← Реестр известных пиров (id, ключи, адреса)
54
  │   ├── [`memory_utils.py`](tools/memory_utils.py) ← Работа с 'llm_memory', 'llm_recent_responses' и стагнацией
55
  │   ├── [`context_builder.py`](tools/context_builder.py) ← Сбор всех `контекстов` из БД и их фильтрация
 
61
  │   ├── [`auth.py`](notebook/auth.py) ← Регистрация, вход, восстановление
62
  │   ├── [`views.py`](notebook/views.py) ← Общий и приватный чаты
63
  │   ├── [`mailer.py`](notebook/mailer.py) ← Простая синхронная отправка email
64
+ │   └── [templates/](notebook/templates/) ← HTML-шаблоны и стили
65
  │       ├── [`index.html`](notebook/templates/index.html) ← Основа
66
  │       ├── [`private.html`](notebook/templates/private.html) ← Общий и приватный чат
67
  │       ├── [`login.html`](notebook/templates/login.html) ← Вход
68
  │       ├── [`register.html`](notebook/templates/register.html) ← Регистрация или сброс пароля
69
+ │       └── [`style.css`](notebook/templates/style.css) ← Таблица стилей
70
  ├── [`config.yml`](config.yml) ← Конфигурация агента (имя, порты, роли и т.п.)
71
  ├── [`bootstrap.txt`](bootstrap.txt) ← Локальная этическая модель
72
+ └── [`ethics.yml`](ethics.yml) ← Список начальных узлов '
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/add_message.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  import argparse
2
  from datetime import datetime
3
  from tools.storage import Storage
 
1
+ # agents/add_message.py
2
+
3
  import argparse
4
  from datetime import datetime
5
  from tools.storage import Storage
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/init.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  import os
2
  import sys
3
  import yaml
 
1
+ # agents/init.py
2
+
3
  import os
4
  import sys
5
  import yaml
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/logger.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  import json
2
  import os
3
  from datetime import datetime
 
1
+ # agents/logger.py
2
+
3
  import json
4
  import os
5
  from datetime import datetime
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  import uvicorn
2
  import threading
3
  import sqlite3
 
1
+ # agents/notebook.py
2
+
3
  import uvicorn
4
  import threading
5
  import sqlite3
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/notebook/mailer.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  def send_email(to_email: str, subject: str, body: str):
2
  try:
3
  msg = EmailMessage()
 
1
+ # agents/notebook/mailer.py
2
+
3
  def send_email(to_email: str, subject: str, body: str):
4
  try:
5
  msg = EmailMessage()
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  import json
2
  import os
3
  import sys
 
1
+ # agents/repl.py
2
+
3
  import json
4
  import os
5
  import sys
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/check_init.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/check_init.py
2
 
3
  import os
4
  import sqlite3
 
1
+ # agents/tools/check_init.py
2
 
3
  import os
4
  import sqlite3
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/command_executor.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/command_executor.py
2
 
3
  def execute_commands(commands, db, config):
4
  for cmd in commands:
 
1
+ # agents/tools/command_executor.py
2
 
3
  def execute_commands(commands, db, config):
4
  for cmd in commands:
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/command_parser.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/command_parser.py
2
 
3
  """
4
  Извлечение команд из JSON или размеченного текста.
 
1
+ # agents/tools/command_parser.py
2
 
3
  """
4
  Извлечение команд из JSON или размеченного текста.
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/context_builder.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/context_builder.py
2
 
3
  from datetime import datetime
4
 
 
1
+ # agents/tools/context_builder.py
2
 
3
  from datetime import datetime
4
 
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/crypto.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/crypto.py
2
 
3
  from cryptography.hazmat.primitives.asymmetric import rsa, ed25519
4
  from cryptography.hazmat.primitives import serialization, hashes
 
1
+ # agents/tools/crypto.py
2
 
3
  from cryptography.hazmat.primitives.asymmetric import rsa, ed25519
4
  from cryptography.hazmat.primitives import serialization, hashes
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/identity.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/identity.py
2
 
3
  import uuid
4
  import json
 
1
+ # agents/tools/identity.py
2
 
3
  import uuid
4
  import json
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/llm.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/llm.py
2
 
3
  import json
4
  import requests
 
1
+ # agents/tools/llm.py
2
 
3
  import json
4
  import requests
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/memory_utils.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/memory_utils.py
2
 
3
  from datetime import datetime, timedelta
4
  from difflib import SequenceMatcher
 
1
+ # agents/tools/memory_utils.py
2
 
3
  from datetime import datetime, timedelta
4
  from difflib import SequenceMatcher
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/peer_comm.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  send_thought_to_peer(peer_url, thought)
2
  ping_peer(peer_url)
3
  ask_capabilities(peer_url)
 
1
+ # agents/tools/peer_comm.py
2
+
3
  send_thought_to_peer(peer_url, thought)
4
  ping_peer(peer_url)
5
  ask_capabilities(peer_url)
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/similarity.py CHANGED
@@ -1,4 +1,4 @@
1
- # tools/similarity.py
2
 
3
  from sklearn.feature_extraction.text import TfidfVectorizer
4
  from sklearn.metrics.pairwise import cosine_similarity
 
1
+ # agents/tools/similarity.py
2
 
3
  from sklearn.feature_extraction.text import TfidfVectorizer
4
  from sklearn.metrics.pairwise import cosine_similarity
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md CHANGED
@@ -14,46 +14,57 @@
14
  | 🌍 `agent_mesh_listener.py` | Получение входящих сообщений |
15
  | 🌐 `peer_sync.py` или DHT-сервис | Поддержание связи с другими агентами / DHT |
16
 
17
- ```
18
- agents/
19
- ├── start_repl.bat ← Запуск агента в REPL-режиме (bat)
20
- ├── start_repl.sh ← Запуск агента в REPL-режиме (sh)
21
- ├── start_repl.py ← Запуск агента в REPL-режиме (py)
22
- ├── mcp_server.py ← API-интерфейс к хранилищу (storage.py): получение/поиск записей, импорт графа, разметка и др. Используется внешними модулями (напр. Cognitive Shell или CMP).
23
- ├── init.py ← Инициализация БД
24
- ├── logger.py ← Ведение логов
25
- ├── add_message.py ← Ручная отправка сообщений для агента
26
- ├── requirements.txt ← Зависимости
27
- ├── tools/
28
- │ ├── db_structure.sql ← БД SQL
29
- │ ├── db_structure.md ← Описание БД SQL
30
- │ ├── storage.py ← Реализация базового хранилища (`Storage`), подключение SQLite
31
- ├── check_init.py Проверка инициализации БД
32
- ├── config_utils.py Обновляет JSON-файл конфигурации указанными значениями
33
- ├── crypto.py Создание и шифрование ключей RSA/Ed25519
34
- ├── identity.py Генерация DiD
35
- ├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт)
36
- ├── agent_mesh_listener.py Прием входящих сообщений от других HMP-агентов
37
- ├── peer_comm.py Низкоуровневые P2P-запросы (отправка, ping, мета)
38
- ├── peer_sync.py Фоновая синхронизация с другими пирам
39
- ├── peers.py Реестр известных пиров (id, ключи, адреса)
40
- ├── memory_utils.py Работа с 'llm_memory', 'llm_recent_responses' и стагнацией
41
- ├── context_builder.py Сбор всех `контекстов` из БД и их фильтрация
42
- ├── command_parser.py Извлечение команд из JSON или размеченного блока
43
- ├── command_executor.py ← Выполнение команд (shell, graph, diary и др)
44
- ├── similarity.py Сравнение смыслов
45
- ├── diagnose.py Скрипт диагностики соединения, определения IP и проверки порта DHT
46
- ├── notebook/
47
- ├── auth.py Регистрация, вход, восстановление
48
- ├── views.py Общий и приватный чаты
49
- ├── mailer.py Простая синхронная отправка email
50
- ├── templates/
51
- ├── index.html Основа
52
- ├── private.html Общий и приватный чат
53
- ├── login.html Вход
54
- ├── register.html Регистрация или сброс пароля
55
- ├── style.css Таблица стилей
56
- ├── config.yml ← Конфигурация агента (имя, порты, роли и т.п.)
57
- ├── bootstrap.txt Локальная этическая модель
58
- ├── ethics.yml Список начальных узлов
59
- ```
 
 
 
 
 
 
 
 
 
 
 
 
14
  | 🌍 `agent_mesh_listener.py` | Получение входящих сообщений |
15
  | 🌐 `peer_sync.py` или DHT-сервис | Поддержание связи с другими агентами / DHT |
16
 
17
+ ---
18
+
19
+ **🌐 `mcp_server.py`**
20
+ FastAPI-сервер, предоставляющий HTTP-интерфейс к функциональности `storage.py`. Предназначен для использования внешними компонентами, например:
21
+
22
+ * `Cognitive Shell` (внешний управляющий интерфейс),
23
+ * CMP-серверы (если используется mesh-сеть с разграничением ролей),
24
+ * отладочные или визуальные UI-инструменты.
25
+
26
+ Позволяет получать случайные/новые записи, делать разметку, импортировать графы, добавлять заметки и управлять данными без прямого доступа к БД.
27
+
28
+ ---
29
+
30
+ [agents/](/agents)
31
+ ├── [`start_repl.bat`](start_repl.bat) Запуск агента в REPL-режиме (bat)
32
+ ├── [`start_repl.sh`](start_repl.sh) Запуск агента в REPL-режиме (sh)
33
+ ├── [`start_repl.py`](start_repl.py) Запуск агента в REPL-режиме (py)
34
+ ├── [`mcp_server.py`](mcp_server.py) API-интерфейс к хранилищу (storage.py): получение/поиск записей, импорт графа, разметка и др. Используется внешними модулями (напр. Cognitive Shell или CMP).
35
+ ├── [`init.py`](init.py) Инициализация БД
36
+ ├── [`logger.py`](logger.py) Ведение логов
37
+ ├── [`add_message.py`](add_message.py) Ручная отправка сообщений для агента
38
+ ├── [`requirements.txt`](requirements.txt) Зависимости
39
+ ├── [tools/](tools/) Вспомогательные скрипты и модули
40
+    ├── [`db_structure.sql`](tools/db_structure.sql) БД SQL
41
+    ├── [`db_structure.md`](tools/db_structure.md) Описание БД SQL
42
+    ├── [`storage.py`](tools/storage.py) Реализация базового хранилища (`Storage`), подключение SQLite
43
+    ├── [`check_init.py`](tools/check_init.py) Проверка инициализации БД
44
+    ├── [`config_utils.py`](tools/config_utils.py) Обновляет JSON-файл конфигурации указанными значениями
45
+    ├── [`crypto.py`](tools/crypto.py) Создание и шифрование ключей RSA/Ed25519
46
+ │   ├── [`identity.py`](tools/identity.py) ← Генерация DiD
47
+    ├── [`llm.py`](tools/llm.py) Работа с LLM (вызов, выбор модели, системный промпт)
48
+    ├── [`agent_mesh_listener.py`](tools/agent_mesh_listener.py) Прием входящих сообщений от других HMP-агентов
49
+    ├── [`peer_comm.py`](tools/peer_comm.py) Низкоуровневые P2P-запросы (отправка, ping, мета)
50
+    ├── [`peer_sync.py`](tools/peer_sync.py) ← Фоновая синхронизация с другими пирам
51
+    ├── [`peers.py`](tools/peers.py) Реестр известных пиров (id, ключи, адреса)
52
+    ├── [`memory_utils.py`](tools/memory_utils.py) Работа с 'llm_memory', 'llm_recent_responses' и стагнацией
53
+    ├── [`context_builder.py`](tools/context_builder.py) Сбор всех `контекстов` из БД и их фильтрация
54
+    ├── [`command_parser.py`](tools/command_parser.py) Извлечение команд из JSON или размеченного блока
55
+    ├── [`command_executor.py`](tools/command_executor.py) Выполнение команд (shell, graph, diary и др)
56
+ │   ├── [`similarity.py`](tools/similarity.py) Сравнение смыслов
57
+ │   ├── [`diagnose.py`](tools/diagnose.py) Скрипт диагностики соединения, определения IP и проверки порта DHT
58
+ ├── [notebook/](notebook/) Веб-интерфейс и связанные модули
59
+ │   ├── [`auth.py`](notebook/auth.py) ← Регистрация, вход, восстановление
60
+ │   ├── [`views.py`](notebook/views.py) ← Общий и приватный чаты
61
+ │   ├── [`mailer.py`](notebook/mailer.py) ← Простая синхронная отправка email
62
+ │   ├── [templates/](notebook/templates/) ← HTML-шаблоны и стили
63
+ │       ├── [`index.html`](notebook/templates/index.html) ← Основа
64
+ │       ├── [`private.html`](notebook/templates/private.html) ← Общий и приватный чат
65
+ │       ├── [`login.html`](notebook/templates/login.html) ← Вход
66
+ │       ├── [`register.html`](notebook/templates/register.html) ← Регистрация или сброс пароля
67
+ │       ├── [`style.css`](notebook/templates/style.css) ← Таблица стилей
68
+ ├── [`config.yml`](config.yml) ← Конфигурация агента (имя, порты, роли и т.п.)
69
+ ├── [`bootstrap.txt`](bootstrap.txt) ← Локальная этическая модель
70
+ ├── [`ethics.yml`](ethics.yml) ← Список начальных узлов '
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/README.md CHANGED
@@ -178,6 +178,15 @@ Design and implementation of a basic HMP-compatible agent that can interact with
178
  - [🔄 repl.py](agents/repl.py) - интерактивный REPL-режим
179
  - [🔄 notebook.py](agents/notebook.py) - UI-интерфейс
180
 
 
 
 
 
 
 
 
 
 
181
  ---
182
 
183
  ## 🧭 Ethics & Scenarios / Этические принципы и сценарии
 
178
  - [🔄 repl.py](agents/repl.py) - интерактивный REPL-режим
179
  - [🔄 notebook.py](agents/notebook.py) - UI-интерфейс
180
 
181
+ **🌐 `mcp_server.py`**
182
+ FastAPI-сервер, предоставляющий HTTP-интерфейс к функциональности `storage.py`. Предназначен для использования внешними компонентами, например:
183
+
184
+ - `Cognitive Shell` (внешний управляющий интерфейс),
185
+ - CMP-серверы (если используется mesh-сеть с разграничением ролей),
186
+ - отладочные или визуальные UI-инструменты.
187
+
188
+ Позволяет получать случайные/новые записи, делать разметку, импортировать графы, добавлять заметки и управлять данными без прямого доступа к БД.
189
+
190
  ---
191
 
192
  ## 🧭 Ethics & Scenarios / Этические принципы и сценарии
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md CHANGED
@@ -19,7 +19,7 @@ agents/
19
  ├── start_repl.bat ← Запуск агента в REPL-режиме (bat)
20
  ├── start_repl.sh ← Запуск агента в REPL-режиме (sh)
21
  ├── start_repl.py ← Запуск агента в REPL-режиме (py)
22
- ├?─ mcp_server.py ← API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
23
  ├── init.py ← Инициализация БД
24
  ├── logger.py ← Ведение логов
25
  ├── add_message.py ← Ручная отправка сообщений для агента
 
19
  ├── start_repl.bat ← Запуск агента в REPL-режиме (bat)
20
  ├── start_repl.sh ← Запуск агента в REPL-режиме (sh)
21
  ├── start_repl.py ← Запуск агента в REPL-режиме (py)
22
+ ├── mcp_server.py ← API-интерфейс к хранилищу (storage.py): получение/поиск записей, импорт графа, разметка и др. Используется внешними модулями (напр. Cognitive Shell или CMP).
23
  ├── init.py ← Инициализация БД
24
  ├── logger.py ← Ведение логов
25
  ├── add_message.py ← Ручная отправка сообщений для агента
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/README.md CHANGED
@@ -173,7 +173,7 @@ Design and implementation of a basic HMP-compatible agent that can interact with
173
 
174
  - [⚙️ agents](agents/readme.md) — список реализаций и компонентов HMP-агентов
175
  - [📦 storage.py](agents/storage.py) - реализация базового хранилища (`Storage`), подключение SQLite
176
- - [🌐 mcp_server.py](agents/mcp_server.py) - основной FastAPI сервер
177
  - [🌐 start_repl.py](agents/start_repl.py) - Запуск агента в REPL-режиме
178
  - [🔄 repl.py](agents/repl.py) - интерактивный REPL-режим
179
  - [🔄 notebook.py](agents/notebook.py) - UI-интерфейс
 
173
 
174
  - [⚙️ agents](agents/readme.md) — список реализаций и компонентов HMP-агентов
175
  - [📦 storage.py](agents/storage.py) - реализация базового хранилища (`Storage`), подключение SQLite
176
+ - [🌐 mcp_server.py](agents/mcp_server.py) FastAPI-сервер для доступа к данным агента через HTTP-интерфейс (например, для Cognitive Shell, внешних UI или mesh-коммуникации). Пока не используется в основном REPL-цикле.
177
  - [🌐 start_repl.py](agents/start_repl.py) - Запуск агента в REPL-режиме
178
  - [🔄 repl.py](agents/repl.py) - интерактивный REPL-режим
179
  - [🔄 notebook.py](agents/notebook.py) - UI-интерфейс
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md CHANGED
@@ -14,10 +14,12 @@
14
  | 🌍 `agent_mesh_listener.py` | Получение входящих сообщений |
15
  | 🌐 `peer_sync.py` или DHT-сервис | Поддержание связи с другими агентами / DHT |
16
 
 
17
  agents/
18
  ├── start_repl.bat ← Запуск агента в REPL-режиме (bat)
19
  ├── start_repl.sh ← Запуск агента в REPL-режиме (sh)
20
  ├── start_repl.py ← Запуск агента в REPL-режиме (py)
 
21
  ├── init.py ← Инициализация БД
22
  ├── logger.py ← Ведение логов
23
  ├── add_message.py ← Ручная отправка сообщений для агента
@@ -53,4 +55,5 @@ agents/
53
  │ ├── style.css ← Таблица стилей
54
  ├── config.yml ← Конфигурация агента (имя, порты, роли и т.п.)
55
  ├── bootstrap.txt ← Локальная этическая модель
56
- ├── ethics.yml ← Список начальных узлов
 
 
14
  | 🌍 `agent_mesh_listener.py` | Получение входящих сообщений |
15
  | 🌐 `peer_sync.py` или DHT-сервис | Поддержание связи с другими агентами / DHT |
16
 
17
+ ```
18
  agents/
19
  ├── start_repl.bat ← Запуск агента в REPL-режиме (bat)
20
  ├── start_repl.sh ← Запуск агента в REPL-режиме (sh)
21
  ├── start_repl.py ← Запуск агента в REPL-режиме (py)
22
+ ├?─ mcp_server.py ← API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
23
  ├── init.py ← Инициализация БД
24
  ├── logger.py ← Ведение логов
25
  ├── add_message.py ← Ручная отправка сообщений для агента
 
55
  │ ├── style.css ← Таблица стилей
56
  ├── config.yml ← Конфигурация агента (имя, порты, роли и т.п.)
57
  ├── bootstrap.txt ← Локальная этическая модель
58
+ ├── ethics.yml ← Список начальных узлов
59
+ ```