GitHub Action
commited on
Commit
·
8da599a
1
Parent(s):
c224390
Sync from GitHub with Git LFS
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- agents/readme.md +3 -1
- hf_repo/hf_repo/agents/readme.md +12 -6
- hf_repo/hf_repo/hf_repo/docs/container_agents.md +54 -0
- hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +1 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-Agent-Overview.md +14 -8
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +140 -9
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +18 -17
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- hf_repo/hf_repo/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
- hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 |
-
|
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 |
-
|
|
13 |
-
|
|
14 |
-
|
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
47 |
|
48 |
-
|
|
|
49 |
|
50 |
-
|
51 |
-
- 🤝 **Mesh-запрос** — запрос другим агентам сети: "расскажи что-нибудь"
|
52 |
-
- 🧭 **Interest Memory** — система интересов, в которой темы постепенно "стареют" и возвращаются при отсутствии новых
|
53 |
-
- 📡 **Проверка внешнего мира** — пинг RSS, сенсоров, интернета
|
54 |
|
55 |
-
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
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,
|
141 |
-
type TEXT NOT NULL,
|
142 |
-
base_url TEXT NOT NULL,
|
143 |
-
description TEXT,
|
144 |
-
active BOOLEAN DEFAULT true,
|
145 |
-
inactive_reason TEXT
|
146 |
);
|
147 |
|
148 |
-- Аккаунты агента на внешних сервисах
|
149 |
CREATE TABLE external_accounts (
|
150 |
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
151 |
-
service_id INTEGER NOT NULL,
|
152 |
-
login TEXT NOT NULL,
|
153 |
-
password TEXT NOT NULL,
|
154 |
-
purpose TEXT,
|
155 |
-
active BOOLEAN DEFAULT true,
|
156 |
-
inactive_reason TEXT,
|
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,
|
165 |
-
description TEXT NOT NULL,
|
166 |
-
source TEXT,
|
167 |
-
active BOOLEAN DEFAULT true,
|
168 |
-
inactive_reason TEXT
|
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 |
-
#
|
2 |
|
3 |
import os
|
4 |
import sys
|
5 |
import threading
|
6 |
-
import sqlite3
|
7 |
import uvicorn
|
|
|
8 |
|
9 |
-
|
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
|
|
|
21 |
|
22 |
-
# Создание FastAPI-приложения
|
23 |
app = FastAPI()
|
24 |
|
25 |
-
|
26 |
-
|
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(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
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 |
-
│
|
64 |
-
│
|
65 |
-
│
|
66 |
-
│
|
67 |
-
│
|
68 |
-
│
|
|
|
|
|
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 |
-
|
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
|
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":
|
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 |
-
│ ├── [`
|
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
|
111 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
config = load_config(CONFIG_PATH)
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
|
121 |
-
|
122 |
|
123 |
if __name__ == "__main__":
|
124 |
-
|
|
|
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
|
|
|
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 |
-
|
|
|
|
|
|
|
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
|
5 |
|
6 |
# Проверка инициализации (вернёт config, если всё ОК)
|
7 |
config = ensure_db_initialized()
|
8 |
|
9 |
# ⚙️ Включение/отключение компонентов
|
10 |
-
|
|
|
11 |
ENABLE_UI = True
|
12 |
-
ENABLE_MESH =
|
13 |
-
ENABLE_SYNC =
|
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 |
-
│
|
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 |
-
│
|
68 |
├── [`config.yml`](config.yml) ← Конфигурация агента (имя, порты, роли и т.п.)
|
69 |
├── [`bootstrap.txt`](bootstrap.txt) ← Локальная этическая модель
|
70 |
-
|
|
|
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 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
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)
|
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 |
+
```
|