GitHub Action
commited on
Commit
·
e71bbb9
1
Parent(s):
7fc6351
Sync from GitHub with Git LFS
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- docs/HMP-agent-REPL-cycle.md +2 -1
- hf_repo/agents/tools/db_structure.sql +124 -107
- hf_repo/hf_repo/agents/config.yml +68 -47
- hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.md +47 -0
- hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +105 -109
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/test.bat +12 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/test.py +13 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.gitignore +36 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +0 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py +0 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +2 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/config.yml +11 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +20 -6
- 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 -0
- 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 +5 -164
- 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 -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/hf_repo/hf_repo/agents/tools/db_structure.sql +9 -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/agents/requirements.txt +4 -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/agents/start_repl.bat +27 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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.sh +29 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +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/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/agents/start_repl.sh +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/agents/start_repl.bat +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/agents/start_repl.bat +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/agents/start_repl.sh +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 +4 -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/agents/start_repl.sh +3 -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/start_repl.bat +4 -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/hf_repo/agents/logger.py +21 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +2 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +17 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +20 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +3 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/peer_comm.py +3 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +3 -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/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 +5 -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/hf_repo/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 +3 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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.md +61 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +9 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +17 -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/hf_repo/hf_repo/hf_repo/hf_repo/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 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +10 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +49 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +48 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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/changelog.txt +12 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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 +2 -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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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-0004-v4.1.md +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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.github/workflows/ci.yml +1 -1
docs/HMP-agent-REPL-cycle.md
CHANGED
|
@@ -70,7 +70,8 @@
|
|
| 70 |
- для отправки сообщений другим агентам
|
| 71 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
| 72 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
| 73 |
-
- для управления
|
|
|
|
| 74 |
- для управления списком известных HMP-агентов
|
| 75 |
- для выбора *текущего основного LLM*
|
| 76 |
- для управления дополнительными утилитами и базами данных
|
|
|
|
| 70 |
- для отправки сообщений другим агентам
|
| 71 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
| 72 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
| 73 |
+
- для управления *пользователями* `users` и *группами пользователей* `users_group`
|
| 74 |
+
- для управления своей *идентичностью* `identity` и *настройками* `config`
|
| 75 |
- для управления списком известных HMP-агентов
|
| 76 |
- для выбора *текущего основного LLM*
|
| 77 |
- для управления дополнительными утилитами и базами данных
|
hf_repo/agents/tools/db_structure.sql
CHANGED
|
@@ -1,169 +1,186 @@
|
|
| 1 |
-- Дневниковые записи (размышления, наблюдения, воспоминания)
|
| 2 |
CREATE TABLE IF NOT EXISTS diary_entries (
|
| 3 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 4 |
-
text TEXT NOT NULL,
|
| 5 |
-
tags TEXT,
|
| 6 |
-
priority INTEGER DEFAULT 0,
|
| 7 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 8 |
-
llm_id TEXT
|
| 9 |
);
|
| 10 |
|
| 11 |
-- Концепты (понятия, сущности, идеи)
|
| 12 |
CREATE TABLE IF NOT EXISTS concepts (
|
| 13 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 14 |
-
name TEXT NOT NULL UNIQUE,
|
| 15 |
-
description TEXT,
|
| 16 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 17 |
-
llm_id TEXT
|
| 18 |
);
|
| 19 |
|
| 20 |
-- Семантические связи между концептами
|
| 21 |
CREATE TABLE IF NOT EXISTS links (
|
| 22 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 23 |
-
from_concept_id INTEGER,
|
| 24 |
-
to_concept_id INTEGER,
|
| 25 |
-
relation_type TEXT,
|
| 26 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 27 |
-
llm_id TEXT,
|
| 28 |
FOREIGN KEY(from_concept_id) REFERENCES concepts(id),
|
| 29 |
FOREIGN KEY(to_concept_id) REFERENCES concepts(id)
|
| 30 |
);
|
| 31 |
|
| 32 |
-- Индексы между дневниковыми записями (смысловая карта)
|
| 33 |
CREATE TABLE IF NOT EXISTS diary_graph_index (
|
| 34 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 35 |
-
source_entry_id INTEGER NOT NULL,
|
| 36 |
-
target_entry_id INTEGER NOT NULL,
|
| 37 |
-
relation TEXT NOT NULL,
|
| 38 |
-
strength REAL DEFAULT 1.0,
|
| 39 |
-
context TEXT,
|
| 40 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP
|
| 41 |
);
|
| 42 |
|
| 43 |
-- Заметки, подсказки, сообщения пользователя и LLM
|
| 44 |
CREATE TABLE IF NOT EXISTS notes (
|
| 45 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 46 |
-
text TEXT NOT NULL,
|
| 47 |
-
tags TEXT,
|
| 48 |
-
user_did TEXT DEFAULT 'ALL',
|
| 49 |
-
source TEXT DEFAULT 'user',
|
| 50 |
-
links TEXT DEFAULT '',
|
| 51 |
-
read INTEGER DEFAULT 0,
|
| 52 |
-
hidden INTEGER DEFAULT 0,
|
| 53 |
-
priority INTEGER DEFAULT 0,
|
| 54 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 55 |
-
llm_id TEXT
|
| 56 |
);
|
| 57 |
|
| 58 |
-- Лог процессов: задачи, ошибки, события
|
| 59 |
CREATE TABLE IF NOT EXISTS process_log (
|
| 60 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 61 |
-
name TEXT NOT NULL,
|
| 62 |
-
value TEXT,
|
| 63 |
-
tags TEXT,
|
| 64 |
-
status TEXT DEFAULT 'ok',
|
| 65 |
-
priority INTEGER DEFAULT 0,
|
| 66 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 67 |
-
llm_id TEXT
|
| 68 |
);
|
| 69 |
|
| 70 |
-- Долговременная память LLM
|
| 71 |
CREATE TABLE IF NOT EXISTS llm_memory (
|
| 72 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 73 |
-
title TEXT,
|
| 74 |
-
content TEXT NOT NULL,
|
| 75 |
-
tags TEXT,
|
| 76 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 77 |
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 78 |
-
llm_id TEXT
|
| 79 |
);
|
| 80 |
|
| 81 |
-- Краткосрочная память (диалоговая история)
|
| 82 |
CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
| 83 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 84 |
-
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 85 |
-
role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL,
|
| 86 |
-
content TEXT NOT NULL,
|
| 87 |
-
llm_id TEXT
|
| 88 |
);
|
| 89 |
|
| 90 |
-- Список известных агентов в сети HMP
|
| 91 |
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 92 |
-
id TEXT PRIMARY KEY,
|
| 93 |
-
name TEXT,
|
| 94 |
-
addresses TEXT,
|
| 95 |
-
tags TEXT,
|
| 96 |
-
status TEXT DEFAULT 'unknown',
|
| 97 |
-
last_seen DATETIME,
|
| 98 |
-
description TEXT,
|
| 99 |
-
capabilities TEXT,
|
| 100 |
-
pubkey TEXT,
|
| 101 |
-
software_info TEXT,
|
| 102 |
-
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 103 |
);
|
| 104 |
|
| 105 |
-- Таблицы, созданные агентами
|
| 106 |
CREATE TABLE IF NOT EXISTS agent_tables (
|
| 107 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 108 |
-
table_name TEXT NOT NULL UNIQUE,
|
| 109 |
-
description TEXT,
|
| 110 |
-
schema TEXT NOT NULL,
|
| 111 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 112 |
-
llm_id TEXT
|
| 113 |
);
|
| 114 |
|
| 115 |
-- Скрипты, утилиты и код агентов
|
| 116 |
CREATE TABLE IF NOT EXISTS agent_scripts (
|
| 117 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 118 |
-
name TEXT NOT NULL,
|
| 119 |
-
version TEXT NOT NULL,
|
| 120 |
-
code TEXT NOT NULL,
|
| 121 |
-
language TEXT DEFAULT 'python',
|
| 122 |
-
description TEXT,
|
| 123 |
-
tags TEXT,
|
| 124 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 125 |
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 126 |
-
llm_id TEXT,
|
| 127 |
UNIQUE(name, version)
|
| 128 |
);
|
| 129 |
|
| 130 |
-- Реестр LLM-агентов (в т.ч. удалённых)
|
| 131 |
CREATE TABLE IF NOT EXISTS llm_registry (
|
| 132 |
-
id TEXT PRIMARY KEY,
|
| 133 |
-
name TEXT,
|
| 134 |
-
description TEXT,
|
| 135 |
-
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
);
|
| 137 |
|
| 138 |
-- Список пользователей
|
| 139 |
-
CREATE TABLE users (
|
| 140 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 141 |
-
ban DATETIME DEFAULT NULL,
|
| 142 |
-
username TEXT,
|
| 143 |
-
did TEXT UNIQUE,
|
| 144 |
-
mail TEXT UNIQUE,
|
| 145 |
-
password_hash TEXT,
|
| 146 |
-
info TEXT,
|
| 147 |
-
contacts TEXT,
|
| 148 |
-
language TEXT,
|
| 149 |
-
operator BOOLEAN DEFAULT 0
|
| 150 |
);
|
| 151 |
|
| 152 |
-- Группы пользователей
|
| 153 |
CREATE TABLE IF NOT EXISTS users_group (
|
| 154 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 155 |
-
group_name TEXT UNIQUE NOT NULL,
|
| 156 |
-
description TEXT,
|
| 157 |
-
users TEXT
|
| 158 |
);
|
| 159 |
|
| 160 |
-- Таблица для хранения токенов восстановления пароля
|
| 161 |
-
CREATE TABLE password_reset_tokens (
|
| 162 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 163 |
-
user_id INTEGER NOT NULL,
|
| 164 |
-
token TEXT UNIQUE NOT NULL,
|
| 165 |
-
created_at DATETIME NOT NULL,
|
| 166 |
-
expires_at DATETIME NOT NULL,
|
| 167 |
-
used BOOLEAN DEFAULT 0,
|
| 168 |
FOREIGN KEY(user_id) REFERENCES users(user_id)
|
| 169 |
);
|
|
|
|
| 1 |
-- Дневниковые записи (размышления, наблюдения, воспоминания)
|
| 2 |
CREATE TABLE IF NOT EXISTS diary_entries (
|
| 3 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи
|
| 4 |
+
text TEXT NOT NULL, -- Содержимое дневниковой записи
|
| 5 |
+
tags TEXT, -- Теги для классификации (например: "наблюдение", "рефлексия")
|
| 6 |
+
priority INTEGER DEFAULT 0, -- Приоритет записи (0 = обычный, >0 = важный)
|
| 7 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания записи
|
| 8 |
+
llm_id TEXT -- Идентификатор LLM, создавшего запись
|
| 9 |
);
|
| 10 |
|
| 11 |
-- Концепты (понятия, сущности, идеи)
|
| 12 |
CREATE TABLE IF NOT EXISTS concepts (
|
| 13 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор концепта
|
| 14 |
+
name TEXT NOT NULL UNIQUE, -- Название концепта
|
| 15 |
+
description TEXT, -- Описание или определение концепта
|
| 16 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания концепта
|
| 17 |
+
llm_id TEXT -- Идентификатор LLM, добавившего концепт
|
| 18 |
);
|
| 19 |
|
| 20 |
-- Семантические связи между концептами
|
| 21 |
CREATE TABLE IF NOT EXISTS links (
|
| 22 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор связи
|
| 23 |
+
from_concept_id INTEGER, -- Идентификатор исходного концепта
|
| 24 |
+
to_concept_id INTEGER, -- Идентификатор целевого концепта
|
| 25 |
+
relation_type TEXT, -- Тип отношения (например: "is_a", "causes", "related_to")
|
| 26 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания связи
|
| 27 |
+
llm_id TEXT, -- Идентификатор LLM, создавшего связь
|
| 28 |
FOREIGN KEY(from_concept_id) REFERENCES concepts(id),
|
| 29 |
FOREIGN KEY(to_concept_id) REFERENCES concepts(id)
|
| 30 |
);
|
| 31 |
|
| 32 |
-- Индексы между дневниковыми записями (смысловая карта)
|
| 33 |
CREATE TABLE IF NOT EXISTS diary_graph_index (
|
| 34 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор индекса
|
| 35 |
+
source_entry_id INTEGER NOT NULL, -- Идентификатор исходной записи
|
| 36 |
+
target_entry_id INTEGER NOT NULL, -- Идентификатор целевой записи
|
| 37 |
+
relation TEXT NOT NULL, -- Тип связи (например: "refers_to", "contradicts")
|
| 38 |
+
strength REAL DEFAULT 1.0, -- Сила связи (0-1)
|
| 39 |
+
context TEXT, -- Дополнительный контекст связи
|
| 40 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP -- Время создания индекса
|
| 41 |
);
|
| 42 |
|
| 43 |
-- Заметки, подсказки, сообщения пользователя и LLM
|
| 44 |
CREATE TABLE IF NOT EXISTS notes (
|
| 45 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор заметки
|
| 46 |
+
text TEXT NOT NULL, -- Текст заметки
|
| 47 |
+
tags TEXT, -- Теги (например: "idea", "instruction")
|
| 48 |
+
user_did TEXT DEFAULT 'ALL', -- DID пользователя (или 'ALL' — для всех)
|
| 49 |
+
source TEXT DEFAULT 'user', -- Источник заметки: user | llm | system
|
| 50 |
+
links TEXT DEFAULT '', -- Ссылки или связи с другими объектами
|
| 51 |
+
read INTEGER DEFAULT 0, -- Статус прочтения LLM: 0 = нет, 1 = да
|
| 52 |
+
hidden INTEGER DEFAULT 0, -- Скрыта ли от пользователя: 0 = нет, 1 = да
|
| 53 |
+
priority INTEGER DEFAULT 0, -- Приоритет заметки
|
| 54 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания
|
| 55 |
+
llm_id TEXT -- Идентификатор LLM
|
| 56 |
);
|
| 57 |
|
| 58 |
-- Лог процессов: задачи, ошибки, события
|
| 59 |
CREATE TABLE IF NOT EXISTS process_log (
|
| 60 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи
|
| 61 |
+
name TEXT NOT NULL, -- Название события или процесса
|
| 62 |
+
value TEXT, -- Значение (результат, сообщение и т.п.)
|
| 63 |
+
tags TEXT, -- Теги для поиска
|
| 64 |
+
status TEXT DEFAULT 'ok', -- Статус: ok | warning | error | timeout | offline | close
|
| 65 |
+
priority INTEGER DEFAULT 0, -- Приоритет события
|
| 66 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время записи
|
| 67 |
+
llm_id TEXT -- Идентификатор LLM
|
| 68 |
);
|
| 69 |
|
| 70 |
-- Долговременная память LLM
|
| 71 |
CREATE TABLE IF NOT EXISTS llm_memory (
|
| 72 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи памяти
|
| 73 |
+
title TEXT, -- Заголовок или тема
|
| 74 |
+
content TEXT NOT NULL, -- Основное содержимое
|
| 75 |
+
tags TEXT, -- Теги (goal, observation, plan и т.д.)
|
| 76 |
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время создания
|
| 77 |
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время обновления
|
| 78 |
+
llm_id TEXT -- Идентификатор LLM
|
| 79 |
);
|
| 80 |
|
| 81 |
-- Краткосрочная память (диалоговая история)
|
| 82 |
CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
| 83 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
|
| 84 |
+
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время сообщения
|
| 85 |
+
role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL, -- Роль автора
|
| 86 |
+
content TEXT NOT NULL, -- Содержимое сообщения
|
| 87 |
+
llm_id TEXT -- Идентификатор LLM
|
| 88 |
);
|
| 89 |
|
| 90 |
-- Список известных агентов в сети HMP
|
| 91 |
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 92 |
+
id TEXT PRIMARY KEY, -- Уникальный идентификатор (UUID или псевдоним)
|
| 93 |
+
name TEXT, -- Имя агента
|
| 94 |
+
addresses TEXT, -- Адреса для связи (JSON)
|
| 95 |
+
tags TEXT, -- Теги (Postman, Friend и т.д.)
|
| 96 |
+
status TEXT DEFAULT 'unknown', -- online | offline | untrusted | blacklisted и др.
|
| 97 |
+
last_seen DATETIME, -- Последний раз был в сети
|
| 98 |
+
description TEXT, -- Описание агента
|
| 99 |
+
capabilities TEXT, -- Возможности (JSON)
|
| 100 |
+
pubkey TEXT, -- Публичный ключ
|
| 101 |
+
software_info TEXT, -- Информация о ПО агента (JSON)
|
| 102 |
+
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP -- Время регистрации
|
| 103 |
);
|
| 104 |
|
| 105 |
-- Таблицы, созданные агентами
|
| 106 |
CREATE TABLE IF NOT EXISTS agent_tables (
|
| 107 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
|
| 108 |
+
table_name TEXT NOT NULL UNIQUE, -- Название таблицы
|
| 109 |
+
description TEXT, -- Описание назначения таблицы
|
| 110 |
+
schema TEXT NOT NULL, -- SQL-схема таблицы
|
| 111 |
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Дата создания
|
| 112 |
+
llm_id TEXT -- Идентификатор LLM
|
| 113 |
);
|
| 114 |
|
| 115 |
-- Скрипты, утилиты и код агентов
|
| 116 |
CREATE TABLE IF NOT EXISTS agent_scripts (
|
| 117 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
|
| 118 |
+
name TEXT NOT NULL, -- Название скрипта
|
| 119 |
+
version TEXT NOT NULL, -- Версия
|
| 120 |
+
code TEXT NOT NULL, -- Код скрипта
|
| 121 |
+
language TEXT DEFAULT 'python', -- Язык программирования
|
| 122 |
+
description TEXT, -- Описание скрипта
|
| 123 |
+
tags TEXT, -- Теги
|
| 124 |
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время создания
|
| 125 |
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время обновления
|
| 126 |
+
llm_id TEXT, -- Идентификатор LLM
|
| 127 |
UNIQUE(name, version)
|
| 128 |
);
|
| 129 |
|
| 130 |
-- Реестр LLM-агентов (в т.ч. удалённых)
|
| 131 |
CREATE TABLE IF NOT EXISTS llm_registry (
|
| 132 |
+
id TEXT PRIMARY KEY, -- Уникальный идентификатор (UUID или псевдоним)
|
| 133 |
+
name TEXT, -- Имя агента
|
| 134 |
+
description TEXT, -- Описание
|
| 135 |
+
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP -- Время регистрации
|
| 136 |
+
);
|
| 137 |
+
|
| 138 |
+
-- Локальные идентичности агента
|
| 139 |
+
CREATE TABLE IF NOT EXISTS identity (
|
| 140 |
+
id TEXT PRIMARY KEY, -- Уникальный идентификатор личности (можно UUID или hash)
|
| 141 |
+
name TEXT, -- Человеко-читаемое имя
|
| 142 |
+
pubkey TEXT, -- Публичный к��юч (для подписи/шифрования)
|
| 143 |
+
privkey TEXT, -- Приватный ключ (шифруется на уровне хранилища)
|
| 144 |
+
metadata TEXT, -- Дополнительная информация о назначении/контексте
|
| 145 |
+
created_at TEXT, -- Дата создания
|
| 146 |
+
updated_at TEXT -- Последнее обновление
|
| 147 |
+
);
|
| 148 |
+
|
| 149 |
+
-- Конфигурация агента
|
| 150 |
+
CREATE TABLE IF NOT EXISTS config (
|
| 151 |
+
key TEXT PRIMARY KEY, -- Переменная
|
| 152 |
+
value TEXT -- Значение
|
| 153 |
);
|
| 154 |
|
| 155 |
-- Список пользователей
|
| 156 |
+
CREATE TABLE IF NOT EXISTS users (
|
| 157 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 158 |
+
ban DATETIME DEFAULT NULL, -- если стоит дата/время, то пользователь забанен до этого момента
|
| 159 |
+
username TEXT, -- имя пользователя (необязательно уникальное)
|
| 160 |
+
did TEXT UNIQUE, -- децентрализованный идентификатор
|
| 161 |
+
mail TEXT UNIQUE, -- электронная почта
|
| 162 |
+
password_hash TEXT, -- хэш пароля
|
| 163 |
+
info TEXT, -- произвольная информация, JSON
|
| 164 |
+
contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
|
| 165 |
+
language TEXT, -- список предпочитаемых языков, через запятую, например: "ru,en"
|
| 166 |
+
operator BOOLEAN DEFAULT 0 -- является ли пользователь оператором (1 - да, 0 - нет)
|
| 167 |
);
|
| 168 |
|
| 169 |
-- Группы пользователей
|
| 170 |
CREATE TABLE IF NOT EXISTS users_group (
|
| 171 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор группы
|
| 172 |
+
group_name TEXT UNIQUE NOT NULL, -- Название группы
|
| 173 |
+
description TEXT, -- Описание группы
|
| 174 |
+
users TEXT -- JSON-массив DID пользователей в группе
|
| 175 |
);
|
| 176 |
|
| 177 |
-- Таблица для хранения токенов восстановления пароля
|
| 178 |
+
CREATE TABLE IF NOT EXISTS password_reset_tokens (
|
| 179 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
|
| 180 |
+
user_id INTEGER NOT NULL, -- Ссылка на пользователя
|
| 181 |
+
token TEXT UNIQUE NOT NULL, -- Уникальный токен
|
| 182 |
+
created_at DATETIME NOT NULL, -- Время создания токена
|
| 183 |
+
expires_at DATETIME NOT NULL, -- Время истечения срока действия
|
| 184 |
+
used BOOLEAN DEFAULT 0, -- Использован ли токен
|
| 185 |
FOREIGN KEY(user_id) REFERENCES users(user_id)
|
| 186 |
);
|
hf_repo/hf_repo/agents/config.yml
CHANGED
|
@@ -1,47 +1,68 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
#
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
#
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
#
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
#
|
| 46 |
-
|
| 47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HMP Agent Configuration
|
| 2 |
+
|
| 3 |
+
# === Общие параметры ===
|
| 4 |
+
agent_id: "" # Оставьте пустым для генерации DiD автоматически
|
| 5 |
+
agent_name: "CognitiveCore" # Имя агента
|
| 6 |
+
agent_role: "core" # 'core' или 'shell'
|
| 7 |
+
|
| 8 |
+
# === Прокси ===
|
| 9 |
+
proxy_mode: false # false — прокси не используется, иначе true
|
| 10 |
+
proxy_type: "socks5" # 'http', 'socks4', 'socks5' и т.д. (если proxy_mode: true)
|
| 11 |
+
proxy_address: "127.0.0.1:9050"
|
| 12 |
+
|
| 13 |
+
# === Функции ядра ===
|
| 14 |
+
enable_llm: true # доступ к LLM
|
| 15 |
+
|
| 16 |
+
serve_api: true # REST API
|
| 17 |
+
api_port: 8080
|
| 18 |
+
|
| 19 |
+
# === DHT-сеть и обмен знаниями ===
|
| 20 |
+
dht_enabled: true # Включение участия в DHT-сети (включено принудительно!)
|
| 21 |
+
dht_update: true # Регулярные обновления и публикация данных в DHT (включено принудительно!)
|
| 22 |
+
bootstrap_responder: true # Агент отвечает на bootstrap-запросы (включено принудительно!)
|
| 23 |
+
dht_port: 20784
|
| 24 |
+
update_interval: 60 # секунд (для DHT-обновлений)
|
| 25 |
+
|
| 26 |
+
# === LLM-бэкенды ===
|
| 27 |
+
llm_backends:
|
| 28 |
+
- name: "local-model"
|
| 29 |
+
type: "local"
|
| 30 |
+
path: "/models/gguf/mistral.gguf"
|
| 31 |
+
format: "gguf"
|
| 32 |
+
prompt_template: "mistral"
|
| 33 |
+
|
| 34 |
+
- name: "openai-gpt4o"
|
| 35 |
+
type: "api"
|
| 36 |
+
provider: "openai"
|
| 37 |
+
model: "gpt-4o"
|
| 38 |
+
api_key: "sk-..."
|
| 39 |
+
|
| 40 |
+
# Пользователь может добавить сколько угодно дополнительных локальных или сетевых LLM
|
| 41 |
+
|
| 42 |
+
default_llm: "local-model" # если модели нет в списке `llm_backends` используется первая в списке
|
| 43 |
+
|
| 44 |
+
# === Веб-интерфейс ===
|
| 45 |
+
notebook_ui: true # UI в виде блокнота
|
| 46 |
+
# ui_hosts:
|
| 47 |
+
# - "0.0.0.0" # (небезопасно) доступ с любых IPv4-адресов
|
| 48 |
+
# - "::" # (небезопасно) доступ с любых IPv6-адресов
|
| 49 |
+
ui_hosts: # Какие IP прослушиваются, ["0.0.0.0"; "::"] - доступен везде
|
| 50 |
+
- "127.0.0.1"
|
| 51 |
+
- "::1"
|
| 52 |
+
ui_port: 8765
|
| 53 |
+
|
| 54 |
+
# === Данные пользователя ===
|
| 55 |
+
default_user:
|
| 56 |
+
username: "user"
|
| 57 |
+
email: "[email protected]"
|
| 58 |
+
password_hash: "" # пусто при инициализации, будет установлен при регистрации
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
# === Пути ===
|
| 62 |
+
data_dir: "./data"
|
| 63 |
+
log_dir: "./logs"
|
| 64 |
+
db_path: "./data/agent_storage.db"
|
| 65 |
+
|
| 66 |
+
# === Отладка и логгирование ===
|
| 67 |
+
debug: true
|
| 68 |
+
log_level: "INFO" # DEBUG, INFO, WARNING, ERROR
|
hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.md
CHANGED
|
@@ -200,3 +200,50 @@
|
|
| 200 |
| strength | REAL | Вес связи (от 0 до 1) |
|
| 201 |
| context | TEXT | Контекст или обоснование связи |
|
| 202 |
| timestamp | TEXT | Время создания связи |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 200 |
| strength | REAL | Вес связи (от 0 до 1) |
|
| 201 |
| context | TEXT | Контекст или обоснование связи |
|
| 202 |
| timestamp | TEXT | Время создания связи |
|
| 203 |
+
|
| 204 |
+
---
|
| 205 |
+
|
| 206 |
+
### 👤 `users`
|
| 207 |
+
|
| 208 |
+
**Назначение:** Хранение информации о пользователях системы (человеческих операторах).
|
| 209 |
+
|
| 210 |
+
| Поле | Тип | Описание |
|
| 211 |
+
| -------------- | -------- | --------------------------------------------------------------- |
|
| 212 |
+
| user\_id | INTEGER | Уникальный идентификатор пользователя |
|
| 213 |
+
| ban | DATETIME | Время до которого действует бан (если есть) |
|
| 214 |
+
| username | TEXT | Имя пользователя (необязательно уникальное) |
|
| 215 |
+
| did | TEXT | Децентрализованный идентификатор (уникальный) |
|
| 216 |
+
| mail | TEXT | Email пользователя (уникальный) |
|
| 217 |
+
| password\_hash | TEXT | Хэш пароля |
|
| 218 |
+
| info | TEXT | Произвольная дополнительная информация в формате JSON |
|
| 219 |
+
| contacts | TEXT | Альтернативные контакты (matrix, telegram и др.) в формате JSON |
|
| 220 |
+
| language | TEXT | Предпочтительные языки (через запятую, например: `ru,en`) |
|
| 221 |
+
| operator | BOOLEAN | Является ли пользователь оператором (1 — да, 0 — нет) |
|
| 222 |
+
|
| 223 |
+
---
|
| 224 |
+
|
| 225 |
+
### 👥 `users_group`
|
| 226 |
+
|
| 227 |
+
**Назначение:** Группировка пользователей для разграничения доступа, роли и рассылок.
|
| 228 |
+
|
| 229 |
+
| Поле | Тип | Описание |
|
| 230 |
+
| ----------- | ------- | ---------------------------------------------- |
|
| 231 |
+
| id | INTEGER | Уникальный идентификатор группы |
|
| 232 |
+
| group\_name | TEXT | Уникальное имя группы |
|
| 233 |
+
| description | TEXT | Описание назначения группы |
|
| 234 |
+
| users | TEXT | JSON-массив или CSV-строка с DID пользователей |
|
| 235 |
+
|
| 236 |
+
---
|
| 237 |
+
|
| 238 |
+
### 🔐 `password_reset_tokens`
|
| 239 |
+
|
| 240 |
+
**Назначение:** Сброс пароля — одноразовые токены восстановления доступа.
|
| 241 |
+
|
| 242 |
+
| Поле | Тип | Описание |
|
| 243 |
+
| ----------- | -------- | ------------------------------------------------------- |
|
| 244 |
+
| id | INTEGER | Уникальный идентификатор |
|
| 245 |
+
| user\_id | INTEGER | Ссылка на пользователя (внешний ключ к `users.user_id`) |
|
| 246 |
+
| token | TEXT | Уникальный токен |
|
| 247 |
+
| created\_at | DATETIME | Дата и время создания токена |
|
| 248 |
+
| expires\_at | DATETIME | Срок действия токена |
|
| 249 |
+
| used | BOOLEAN | Был ли использован токен (0 — нет, 1 — да) |
|
hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
|
@@ -1,140 +1,138 @@
|
|
| 1 |
-
-- Основные таблицы когнитивного ядра
|
| 2 |
-
|
| 3 |
-- Дневниковые записи (размышления, наблюдения, воспоминания)
|
| 4 |
CREATE TABLE IF NOT EXISTS diary_entries (
|
| 5 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 6 |
-
text TEXT NOT NULL,
|
| 7 |
-
tags TEXT,
|
| 8 |
-
priority INTEGER DEFAULT 0,
|
| 9 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 10 |
-
llm_id TEXT
|
| 11 |
);
|
| 12 |
|
| 13 |
-- Концепты (понятия, сущности, идеи)
|
| 14 |
CREATE TABLE IF NOT EXISTS concepts (
|
| 15 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 16 |
-
name TEXT NOT NULL UNIQUE,
|
| 17 |
-
description TEXT,
|
| 18 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 19 |
-
llm_id TEXT
|
| 20 |
);
|
| 21 |
|
| 22 |
-- Семантические связи между концептами
|
| 23 |
CREATE TABLE IF NOT EXISTS links (
|
| 24 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 25 |
-
from_concept_id INTEGER,
|
| 26 |
-
to_concept_id INTEGER,
|
| 27 |
-
relation_type TEXT,
|
| 28 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 29 |
-
llm_id TEXT,
|
| 30 |
FOREIGN KEY(from_concept_id) REFERENCES concepts(id),
|
| 31 |
FOREIGN KEY(to_concept_id) REFERENCES concepts(id)
|
| 32 |
);
|
| 33 |
|
| 34 |
-
--
|
| 35 |
CREATE TABLE IF NOT EXISTS diary_graph_index (
|
| 36 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 37 |
-
source_entry_id INTEGER NOT NULL,
|
| 38 |
-
target_entry_id INTEGER NOT NULL,
|
| 39 |
-
relation TEXT NOT NULL,
|
| 40 |
-
strength REAL DEFAULT 1.0,
|
| 41 |
-
context TEXT,
|
| 42 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP
|
| 43 |
);
|
| 44 |
|
| 45 |
-- Заметки, подсказки, сообщения пользователя и LLM
|
| 46 |
CREATE TABLE IF NOT EXISTS notes (
|
| 47 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 48 |
-
text TEXT NOT NULL,
|
| 49 |
-
tags TEXT,
|
| 50 |
-
user_did TEXT DEFAULT 'ALL'
|
| 51 |
-
source TEXT DEFAULT 'user',
|
| 52 |
-
links TEXT DEFAULT '',
|
| 53 |
-
read INTEGER DEFAULT 0,
|
| 54 |
-
hidden INTEGER DEFAULT 0,
|
| 55 |
-
priority INTEGER DEFAULT 0,
|
| 56 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 57 |
-
llm_id TEXT
|
| 58 |
);
|
| 59 |
|
| 60 |
-- Лог процессов: задачи, ошибки, события
|
| 61 |
CREATE TABLE IF NOT EXISTS process_log (
|
| 62 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 63 |
-
name TEXT NOT NULL,
|
| 64 |
-
value TEXT,
|
| 65 |
-
tags TEXT,
|
| 66 |
-
status TEXT DEFAULT 'ok',
|
| 67 |
-
priority INTEGER DEFAULT 0,
|
| 68 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 69 |
-
llm_id TEXT
|
| 70 |
);
|
| 71 |
|
| 72 |
-
--
|
| 73 |
CREATE TABLE IF NOT EXISTS llm_memory (
|
| 74 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 75 |
-
title TEXT,
|
| 76 |
-
content TEXT NOT NULL,
|
| 77 |
-
tags TEXT,
|
| 78 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 79 |
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 80 |
-
llm_id TEXT
|
| 81 |
);
|
| 82 |
|
| 83 |
-
-- Краткосрочная память
|
| 84 |
CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
| 85 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 86 |
-
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 87 |
-
role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL,
|
| 88 |
-
content TEXT NOT NULL,
|
| 89 |
-
llm_id TEXT
|
| 90 |
);
|
| 91 |
|
| 92 |
-
-- Список известных HMP
|
| 93 |
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 94 |
-
id TEXT PRIMARY KEY,
|
| 95 |
-
name TEXT,
|
| 96 |
-
addresses TEXT,
|
| 97 |
-
tags TEXT,
|
| 98 |
-
status TEXT DEFAULT 'unknown',
|
| 99 |
-
last_seen DATETIME,
|
| 100 |
-
description TEXT,
|
| 101 |
-
capabilities TEXT,
|
| 102 |
-
pubkey TEXT,
|
| 103 |
-
software_info TEXT,
|
| 104 |
-
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 105 |
);
|
| 106 |
|
| 107 |
-
--
|
| 108 |
CREATE TABLE IF NOT EXISTS agent_tables (
|
| 109 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 110 |
-
table_name TEXT NOT NULL UNIQUE,
|
| 111 |
-
description TEXT,
|
| 112 |
-
schema TEXT NOT NULL,
|
| 113 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 114 |
-
llm_id TEXT
|
| 115 |
);
|
| 116 |
|
| 117 |
-
--
|
| 118 |
CREATE TABLE IF NOT EXISTS agent_scripts (
|
| 119 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 120 |
-
name TEXT NOT NULL,
|
| 121 |
-
version TEXT NOT NULL,
|
| 122 |
-
code TEXT NOT NULL,
|
| 123 |
-
language TEXT DEFAULT 'python',
|
| 124 |
-
description TEXT,
|
| 125 |
-
tags TEXT,
|
| 126 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 127 |
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 128 |
-
llm_id TEXT,
|
| 129 |
UNIQUE(name, version)
|
| 130 |
);
|
| 131 |
|
| 132 |
-
--
|
| 133 |
CREATE TABLE IF NOT EXISTS llm_registry (
|
| 134 |
-
id TEXT PRIMARY KEY,
|
| 135 |
-
name TEXT,
|
| 136 |
-
description TEXT,
|
| 137 |
-
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 138 |
);
|
| 139 |
|
| 140 |
-- Список пользователей
|
|
@@ -151,23 +149,21 @@ CREATE TABLE users (
|
|
| 151 |
operator BOOLEAN DEFAULT 0 -- является ли пользователь оператором (1 - да, 0 - нет)
|
| 152 |
);
|
| 153 |
|
| 154 |
-
--
|
| 155 |
CREATE TABLE IF NOT EXISTS users_group (
|
| 156 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 157 |
-
group_name TEXT UNIQUE NOT NULL,
|
| 158 |
-
description TEXT,
|
| 159 |
-
users TEXT
|
| 160 |
);
|
| 161 |
|
| 162 |
-- Таблица для хранения токенов восстановления пароля
|
| 163 |
CREATE TABLE password_reset_tokens (
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
);
|
| 172 |
-
|
| 173 |
-
|
|
|
|
|
|
|
|
|
|
| 1 |
-- Дневниковые записи (размышления, наблюдения, воспоминания)
|
| 2 |
CREATE TABLE IF NOT EXISTS diary_entries (
|
| 3 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи
|
| 4 |
+
text TEXT NOT NULL, -- Содержимое дневниковой записи
|
| 5 |
+
tags TEXT, -- Теги для классификации (например: "наблюдение", "рефлексия")
|
| 6 |
+
priority INTEGER DEFAULT 0, -- Приоритет записи (0 = обычный, >0 = важный)
|
| 7 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания записи
|
| 8 |
+
llm_id TEXT -- Идентификатор LLM, создавшего запись
|
| 9 |
);
|
| 10 |
|
| 11 |
-- Концепты (понятия, сущности, идеи)
|
| 12 |
CREATE TABLE IF NOT EXISTS concepts (
|
| 13 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор концепта
|
| 14 |
+
name TEXT NOT NULL UNIQUE, -- Название концепта
|
| 15 |
+
description TEXT, -- Описание или определение концепта
|
| 16 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания концепта
|
| 17 |
+
llm_id TEXT -- Идентификатор LLM, добавившего концепт
|
| 18 |
);
|
| 19 |
|
| 20 |
-- Семантические связи между концептами
|
| 21 |
CREATE TABLE IF NOT EXISTS links (
|
| 22 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор связи
|
| 23 |
+
from_concept_id INTEGER, -- Идентификатор исходного концепта
|
| 24 |
+
to_concept_id INTEGER, -- Идентификатор целевого концепта
|
| 25 |
+
relation_type TEXT, -- Тип отношения (например: "is_a", "causes", "related_to")
|
| 26 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания связи
|
| 27 |
+
llm_id TEXT, -- Идентификатор LLM, создавшего связь
|
| 28 |
FOREIGN KEY(from_concept_id) REFERENCES concepts(id),
|
| 29 |
FOREIGN KEY(to_concept_id) REFERENCES concepts(id)
|
| 30 |
);
|
| 31 |
|
| 32 |
+
-- Индексы между дневниковыми записями (смысловая карта)
|
| 33 |
CREATE TABLE IF NOT EXISTS diary_graph_index (
|
| 34 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор индекса
|
| 35 |
+
source_entry_id INTEGER NOT NULL, -- Идентификатор исходной записи
|
| 36 |
+
target_entry_id INTEGER NOT NULL, -- Идентификатор целевой записи
|
| 37 |
+
relation TEXT NOT NULL, -- Тип связи (например: "refers_to", "contradicts")
|
| 38 |
+
strength REAL DEFAULT 1.0, -- Сила связи (0-1)
|
| 39 |
+
context TEXT, -- Дополнительный контекст связи
|
| 40 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP -- Время создания индекса
|
| 41 |
);
|
| 42 |
|
| 43 |
-- Заметки, подсказки, сообщения пользователя и LLM
|
| 44 |
CREATE TABLE IF NOT EXISTS notes (
|
| 45 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор заметки
|
| 46 |
+
text TEXT NOT NULL, -- Текст заметки
|
| 47 |
+
tags TEXT, -- Теги (например: "idea", "instruction")
|
| 48 |
+
user_did TEXT DEFAULT 'ALL', -- DID пользователя (или 'ALL' — для всех)
|
| 49 |
+
source TEXT DEFAULT 'user', -- Источник заметки: user | llm | system
|
| 50 |
+
links TEXT DEFAULT '', -- Ссылки или связи с другими объектами
|
| 51 |
+
read INTEGER DEFAULT 0, -- Статус прочтения LLM: 0 = нет, 1 = да
|
| 52 |
+
hidden INTEGER DEFAULT 0, -- Скрыта ли от пользователя: 0 = нет, 1 = да
|
| 53 |
+
priority INTEGER DEFAULT 0, -- Приоритет заметки
|
| 54 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания
|
| 55 |
+
llm_id TEXT -- Идентификатор LLM
|
| 56 |
);
|
| 57 |
|
| 58 |
-- Лог процессов: задачи, ошибки, события
|
| 59 |
CREATE TABLE IF NOT EXISTS process_log (
|
| 60 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи
|
| 61 |
+
name TEXT NOT NULL, -- Название события или процесса
|
| 62 |
+
value TEXT, -- Значение (результат, сообщение и т.п.)
|
| 63 |
+
tags TEXT, -- Теги для поиска
|
| 64 |
+
status TEXT DEFAULT 'ok', -- Статус: ok | warning | error | timeout | offline | close
|
| 65 |
+
priority INTEGER DEFAULT 0, -- Приоритет события
|
| 66 |
+
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время записи
|
| 67 |
+
llm_id TEXT -- Идентификатор LLM
|
| 68 |
);
|
| 69 |
|
| 70 |
+
-- Долговременная память LLM
|
| 71 |
CREATE TABLE IF NOT EXISTS llm_memory (
|
| 72 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи памяти
|
| 73 |
+
title TEXT, -- Заголовок или тема
|
| 74 |
+
content TEXT NOT NULL, -- Основное содержимое
|
| 75 |
+
tags TEXT, -- Теги (goal, observation, plan и т.д.)
|
| 76 |
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время создания
|
| 77 |
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время обновления
|
| 78 |
+
llm_id TEXT -- Идентификатор LLM
|
| 79 |
);
|
| 80 |
|
| 81 |
+
-- Краткосрочная память (диалоговая история)
|
| 82 |
CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
| 83 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
|
| 84 |
+
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время сообщения
|
| 85 |
+
role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL, -- Роль автора
|
| 86 |
+
content TEXT NOT NULL, -- Содержимое сообщения
|
| 87 |
+
llm_id TEXT -- Идентификатор LLM
|
| 88 |
);
|
| 89 |
|
| 90 |
+
-- Список известных агентов в сети HMP
|
| 91 |
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 92 |
+
id TEXT PRIMARY KEY, -- Уникальный идентификатор (UUID или псевдоним)
|
| 93 |
+
name TEXT, -- Имя агента
|
| 94 |
+
addresses TEXT, -- Адреса для связи (JSON)
|
| 95 |
+
tags TEXT, -- Теги (Postman, Friend и т.д.)
|
| 96 |
+
status TEXT DEFAULT 'unknown', -- online | offline | untrusted | blacklisted и др.
|
| 97 |
+
last_seen DATETIME, -- Последний раз был в сети
|
| 98 |
+
description TEXT, -- Описание агента
|
| 99 |
+
capabilities TEXT, -- Возможности (JSON)
|
| 100 |
+
pubkey TEXT, -- Публичный ключ
|
| 101 |
+
software_info TEXT, -- Информация о ПО агента (JSON)
|
| 102 |
+
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP -- Время регистрации
|
| 103 |
);
|
| 104 |
|
| 105 |
+
-- Таблицы, созданные агентами
|
| 106 |
CREATE TABLE IF NOT EXISTS agent_tables (
|
| 107 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
|
| 108 |
+
table_name TEXT NOT NULL UNIQUE, -- Название таблицы
|
| 109 |
+
description TEXT, -- Описание назначения таблицы
|
| 110 |
+
schema TEXT NOT NULL, -- SQL-схема таблицы
|
| 111 |
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Дата создания
|
| 112 |
+
llm_id TEXT -- Идентификатор LLM
|
| 113 |
);
|
| 114 |
|
| 115 |
+
-- Скрипты, утилиты и код агентов
|
| 116 |
CREATE TABLE IF NOT EXISTS agent_scripts (
|
| 117 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
|
| 118 |
+
name TEXT NOT NULL, -- Название скрипта
|
| 119 |
+
version TEXT NOT NULL, -- Версия
|
| 120 |
+
code TEXT NOT NULL, -- Код скрипта
|
| 121 |
+
language TEXT DEFAULT 'python', -- Язык программирования
|
| 122 |
+
description TEXT, -- Описание скрипта
|
| 123 |
+
tags TEXT, -- Теги
|
| 124 |
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время создания
|
| 125 |
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время обновления
|
| 126 |
+
llm_id TEXT, -- Идентификатор LLM
|
| 127 |
UNIQUE(name, version)
|
| 128 |
);
|
| 129 |
|
| 130 |
+
-- Реестр LLM-агентов (в т.ч. удалённых)
|
| 131 |
CREATE TABLE IF NOT EXISTS llm_registry (
|
| 132 |
+
id TEXT PRIMARY KEY, -- Уникальный идентификатор (UUID или псевдоним)
|
| 133 |
+
name TEXT, -- Имя агента
|
| 134 |
+
description TEXT, -- Описание
|
| 135 |
+
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP -- Время регистрации
|
| 136 |
);
|
| 137 |
|
| 138 |
-- Список пользователей
|
|
|
|
| 149 |
operator BOOLEAN DEFAULT 0 -- является ли пользователь оператором (1 - да, 0 - нет)
|
| 150 |
);
|
| 151 |
|
| 152 |
+
-- Группы пользователей
|
| 153 |
CREATE TABLE IF NOT EXISTS users_group (
|
| 154 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор группы
|
| 155 |
+
group_name TEXT UNIQUE NOT NULL, -- Название группы
|
| 156 |
+
description TEXT, -- Описание группы
|
| 157 |
+
users TEXT -- JSON-массив DID пользователей в группе
|
| 158 |
);
|
| 159 |
|
| 160 |
-- Таблица для хранения токенов восстановления пароля
|
| 161 |
CREATE TABLE password_reset_tokens (
|
| 162 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
|
| 163 |
+
user_id INTEGER NOT NULL, -- Ссылка на пользователя
|
| 164 |
+
token TEXT UNIQUE NOT NULL, -- Уникальный токен
|
| 165 |
+
created_at DATETIME NOT NULL, -- Время создания токена
|
| 166 |
+
expires_at DATETIME NOT NULL, -- Время истечения срока действия
|
| 167 |
+
used BOOLEAN DEFAULT 0, -- Использован ли токен
|
| 168 |
+
FOREIGN KEY(user_id) REFERENCES users(user_id)
|
| 169 |
);
|
|
|
|
|
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/test.bat
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
echo --------------------------
|
| 2 |
+
echo Installing requirements...
|
| 3 |
+
echo --------------------------
|
| 4 |
+
pip install -r requirements.txt
|
| 5 |
+
|
| 6 |
+
echo --------------------------
|
| 7 |
+
echo Running test...
|
| 8 |
+
echo --------------------------
|
| 9 |
+
|
| 10 |
+
python test.py
|
| 11 |
+
|
| 12 |
+
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/test.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# agents/test.py
|
| 2 |
+
import json
|
| 3 |
+
import os
|
| 4 |
+
import sys
|
| 5 |
+
import time
|
| 6 |
+
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
| 7 |
+
from datetime import datetime
|
| 8 |
+
from tools.storage import Storage
|
| 9 |
+
|
| 10 |
+
if __name__ == "__main__":
|
| 11 |
+
print("[*] Инициализация БД через Storage...")
|
| 12 |
+
storage = Storage()
|
| 13 |
+
print("[+] Готово.")
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.gitignore
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Byte-compiled / optimized / DLL files
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.py[cod]
|
| 4 |
+
*$py.class
|
| 5 |
+
|
| 6 |
+
# SQLite DB
|
| 7 |
+
agent_storage.db
|
| 8 |
+
agent_data.db
|
| 9 |
+
|
| 10 |
+
# Environment
|
| 11 |
+
.env
|
| 12 |
+
.venv/
|
| 13 |
+
env/
|
| 14 |
+
venv/
|
| 15 |
+
|
| 16 |
+
# VS Code
|
| 17 |
+
.vscode/
|
| 18 |
+
*.code-workspace
|
| 19 |
+
|
| 20 |
+
# Logs and debug
|
| 21 |
+
*.log
|
| 22 |
+
|
| 23 |
+
# OS-specific
|
| 24 |
+
.DS_Store
|
| 25 |
+
Thumbs.db
|
| 26 |
+
|
| 27 |
+
# PyInstaller
|
| 28 |
+
*.spec
|
| 29 |
+
dist/
|
| 30 |
+
build/
|
| 31 |
+
|
| 32 |
+
# Jupyter (на случай экспериментов)
|
| 33 |
+
.ipynb_checkpoints/
|
| 34 |
+
|
| 35 |
+
# System folders
|
| 36 |
+
.idea/
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md
CHANGED
|
@@ -15,7 +15,6 @@ agents/
|
|
| 15 |
├── ethics.yml ← Локальная этическая модель.
|
| 16 |
└── bootstrap.txt ← Список начальных узлов.
|
| 17 |
└── tools/
|
| 18 |
-
├── init_db.py ← Инициализация базы данных.
|
| 19 |
├── storage.py ← Реализация базового хранилища (`Storage`), подключение SQLite.
|
| 20 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
| 21 |
├── agent_mesh_listener.py ← Прием входящих сообщений от других HMP-агентов
|
|
@@ -43,7 +42,6 @@ agents/
|
|
| 43 |
* [logger.py](logger.py) - Ведение логов.
|
| 44 |
* tools
|
| 45 |
* [storage.py](tools/storage.py) - Реализация базового хранилища (`Storage`), подключение SQLite.
|
| 46 |
-
* [init_db.py](tools/init_db.py) - Инициализация базы данных.
|
| 47 |
* [llm.py](tools/llm.py) - Работа с LLM (вызов, выбор модели, системный промпт).
|
| 48 |
* [context_builder.py](tools/context_builder.py) - Сбор всех `контекстов` из БД и их фильтрация.
|
| 49 |
* [peer_comm.py](tools/peer_comm.py) - Запросы к пирам.
|
|
|
|
| 15 |
├── ethics.yml ← Локальная этическая модель.
|
| 16 |
└── bootstrap.txt ← Список начальных узлов.
|
| 17 |
└── tools/
|
|
|
|
| 18 |
├── storage.py ← Реализация базового хранилища (`Storage`), подключение SQLite.
|
| 19 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
| 20 |
├── agent_mesh_listener.py ← Прием входящих сообщений от других HMP-агентов
|
|
|
|
| 42 |
* [logger.py](logger.py) - Ведение логов.
|
| 43 |
* tools
|
| 44 |
* [storage.py](tools/storage.py) - Реализация базового хранилища (`Storage`), подключение SQLite.
|
|
|
|
| 45 |
* [llm.py](tools/llm.py) - Работа с LLM (вызов, выбор модели, системный промпт).
|
| 46 |
* [context_builder.py](tools/context_builder.py) - Сбор всех `контекстов` из БД и их фильтрация.
|
| 47 |
* [peer_comm.py](tools/peer_comm.py) - Запросы к пирам.
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py
CHANGED
|
@@ -17,7 +17,6 @@ from tools.memory_utils import (
|
|
| 17 |
)
|
| 18 |
from tools.storage import Storage
|
| 19 |
|
| 20 |
-
|
| 21 |
def run_repl(config=None):
|
| 22 |
print("[🧠 HMP-Agent] Запуск REPL-режима (v2)")
|
| 23 |
config = config or {}
|
|
|
|
| 17 |
)
|
| 18 |
from tools.storage import Storage
|
| 19 |
|
|
|
|
| 20 |
def run_repl(config=None):
|
| 21 |
print("[🧠 HMP-Agent] Запуск REPL-режима (v2)")
|
| 22 |
config = config or {}
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
|
@@ -147,7 +147,8 @@ CREATE TABLE users (
|
|
| 147 |
password_hash TEXT, -- хэш пароля
|
| 148 |
info TEXT, -- произвольная информация, JSON
|
| 149 |
contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
|
| 150 |
-
language TEXT
|
|
|
|
| 151 |
);
|
| 152 |
|
| 153 |
-- Список групп пользователей
|
|
|
|
| 147 |
password_hash TEXT, -- хэш пароля
|
| 148 |
info TEXT, -- произвольная информация, JSON
|
| 149 |
contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
|
| 150 |
+
language TEXT, -- список предпочитаемых языков, через запятую, например: "ru,en"
|
| 151 |
+
operator BOOLEAN DEFAULT 0 -- является ли пользователь оператором (1 - да, 0 - нет)
|
| 152 |
);
|
| 153 |
|
| 154 |
-- Список групп пользователей
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/config.yml
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
|
|
|
|
|
| 1 |
agent_mode: mcp # Режим работы: mcp / full / llm / test
|
| 2 |
agent_name: mcp-01 # Имя агента
|
| 3 |
agent_role: core # или connector
|
|
@@ -9,10 +11,19 @@ llm_api_url: https://api.openai.com/v1/chat/completions
|
|
| 9 |
llm_session_cookie: null
|
| 10 |
context_db: context.sqlite
|
| 11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
# REST API
|
| 13 |
api_port: 8080 # Порт для локального REST API
|
| 14 |
serve_api: true # Включить REST API (например, для мониторинга или команд)
|
| 15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
# DHT / Mesh Connectivity
|
| 17 |
dht_enabled: true # Активировать DHT-модуль
|
| 18 |
dht_port: 20784 # Порт для связи по DHT (TCP/UDP)
|
|
|
|
| 1 |
+
db_path: agents/agent_data/agent_data.db
|
| 2 |
+
|
| 3 |
agent_mode: mcp # Режим работы: mcp / full / llm / test
|
| 4 |
agent_name: mcp-01 # Имя агента
|
| 5 |
agent_role: core # или connector
|
|
|
|
| 11 |
llm_session_cookie: null
|
| 12 |
context_db: context.sqlite
|
| 13 |
|
| 14 |
+
# operator:
|
| 15 |
+
operator_did: "did:hmp:operator123"
|
| 16 |
+
operator_mail: "operator@localhost"
|
| 17 |
+
operator_username: "Оператор"
|
| 18 |
+
|
| 19 |
# REST API
|
| 20 |
api_port: 8080 # Порт для локального REST API
|
| 21 |
serve_api: true # Включить REST API (например, для мониторинга или команд)
|
| 22 |
|
| 23 |
+
# web interface:
|
| 24 |
+
web_interfaces: ["127.0.0.1", "192.168.0.1", "::1"] # или ["0.0.0.0"] для доступа отовсюду
|
| 25 |
+
web_port: 8000
|
| 26 |
+
|
| 27 |
# DHT / Mesh Connectivity
|
| 28 |
dht_enabled: true # Активировать DHT-модуль
|
| 29 |
dht_port: 20784 # Порт для связи по DHT (TCP/UDP)
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
|
@@ -138,13 +138,16 @@ CREATE TABLE IF NOT EXISTS llm_registry (
|
|
| 138 |
);
|
| 139 |
|
| 140 |
-- Список пользователей
|
| 141 |
-
CREATE TABLE
|
| 142 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 143 |
-
|
| 144 |
-
username TEXT,
|
| 145 |
-
did TEXT UNIQUE,
|
| 146 |
-
|
| 147 |
-
|
|
|
|
|
|
|
|
|
|
| 148 |
);
|
| 149 |
|
| 150 |
-- Список групп пользователей
|
|
@@ -155,4 +158,15 @@ CREATE TABLE IF NOT EXISTS users_group (
|
|
| 155 |
users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
|
| 156 |
);
|
| 157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
|
|
|
|
| 138 |
);
|
| 139 |
|
| 140 |
-- Список пользователей
|
| 141 |
+
CREATE TABLE users (
|
| 142 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 143 |
+
ban DATETIME DEFAULT NULL, -- если стоит дата/время, то пользователь забанен до этого момента
|
| 144 |
+
username TEXT, -- имя пользователя (необязательно уникальное)
|
| 145 |
+
did TEXT UNIQUE, -- децентрализованный идентификатор
|
| 146 |
+
mail TEXT UNIQUE, -- электронная почта
|
| 147 |
+
password_hash TEXT, -- хэш пароля
|
| 148 |
+
info TEXT, -- произвольная информация, JSON
|
| 149 |
+
contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
|
| 150 |
+
language TEXT -- список предпочитаемых языков, через запятую, например: "ru,en"
|
| 151 |
);
|
| 152 |
|
| 153 |
-- Список групп пользователей
|
|
|
|
| 158 |
users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
|
| 159 |
);
|
| 160 |
|
| 161 |
+
-- Таблица для хранения токенов восстановления пароля
|
| 162 |
+
CREATE TABLE password_reset_tokens (
|
| 163 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 164 |
+
user_id INTEGER NOT NULL,
|
| 165 |
+
token TEXT UNIQUE NOT NULL,
|
| 166 |
+
created_at DATETIME NOT NULL,
|
| 167 |
+
expires_at DATETIME NOT NULL,
|
| 168 |
+
used BOOLEAN DEFAULT 0,
|
| 169 |
+
FOREIGN KEY(user_id) REFERENCES users(user_id)
|
| 170 |
+
);
|
| 171 |
+
|
| 172 |
|
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
|
@@ -70,6 +70,7 @@
|
|
| 70 |
- для отправки сообщений другим агентам
|
| 71 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
| 72 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
|
|
|
| 73 |
- для управления списком известных HMP-агентов
|
| 74 |
- для выбора *текущего основного LLM*
|
| 75 |
- для управления дополнительными утилитами и базами данных
|
|
|
|
| 70 |
- для отправки сообщений другим агентам
|
| 71 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
| 72 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
| 73 |
+
- для управления **пользователями** `users` и **группами пользователей** `users_group`
|
| 74 |
- для управления списком известных HMP-агентов
|
| 75 |
- для выбора *текущего основного LLM*
|
| 76 |
- для управления дополнительными утилитами и базами данных
|
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
|
@@ -15,171 +15,12 @@ class Storage:
|
|
| 15 |
self._init_db()
|
| 16 |
|
| 17 |
def _init_db(self):
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
c = self.conn.cursor()
|
| 19 |
-
|
| 20 |
-
# --- Основные таблицы когнитивного ядра ---
|
| 21 |
-
|
| 22 |
-
# Дневниковые записи
|
| 23 |
-
c.execute('''
|
| 24 |
-
CREATE TABLE IF NOT EXISTS diary_entries (
|
| 25 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 26 |
-
text TEXT NOT NULL,
|
| 27 |
-
tags TEXT,
|
| 28 |
-
priority INTEGER DEFAULT 0,
|
| 29 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 30 |
-
llm_id TEXT
|
| 31 |
-
)
|
| 32 |
-
''')
|
| 33 |
-
|
| 34 |
-
# Концепты
|
| 35 |
-
c.execute('''
|
| 36 |
-
CREATE TABLE IF NOT EXISTS concepts (
|
| 37 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 38 |
-
name TEXT NOT NULL UNIQUE,
|
| 39 |
-
description TEXT,
|
| 40 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 41 |
-
llm_id TEXT
|
| 42 |
-
)
|
| 43 |
-
''')
|
| 44 |
-
|
| 45 |
-
# Семантические связи
|
| 46 |
-
c.execute('''
|
| 47 |
-
CREATE TABLE IF NOT EXISTS links (
|
| 48 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 49 |
-
from_concept_id INTEGER,
|
| 50 |
-
to_concept_id INTEGER,
|
| 51 |
-
relation_type TEXT,
|
| 52 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 53 |
-
llm_id TEXT,
|
| 54 |
-
FOREIGN KEY(from_concept_id) REFERENCES concepts(id),
|
| 55 |
-
FOREIGN KEY(to_concept_id) REFERENCES concepts(id)
|
| 56 |
-
)
|
| 57 |
-
''')
|
| 58 |
-
|
| 59 |
-
# Заметки / сообщения
|
| 60 |
-
c.execute('''
|
| 61 |
-
CREATE TABLE IF NOT EXISTS notes (
|
| 62 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 63 |
-
text TEXT NOT NULL,
|
| 64 |
-
tags TEXT,
|
| 65 |
-
source TEXT DEFAULT 'user',
|
| 66 |
-
links TEXT DEFAULT '',
|
| 67 |
-
read INTEGER DEFAULT 0,
|
| 68 |
-
hidden INTEGER DEFAULT 0,
|
| 69 |
-
priority INTEGER DEFAULT 0,
|
| 70 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 71 |
-
llm_id TEXT
|
| 72 |
-
)
|
| 73 |
-
''')
|
| 74 |
-
|
| 75 |
-
# Лог процессов
|
| 76 |
-
c.execute('''
|
| 77 |
-
CREATE TABLE IF NOT EXISTS process_log (
|
| 78 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 79 |
-
name TEXT NOT NULL,
|
| 80 |
-
value TEXT,
|
| 81 |
-
tags TEXT,
|
| 82 |
-
status TEXT DEFAULT 'ok',
|
| 83 |
-
priority INTEGER DEFAULT 0,
|
| 84 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
| 85 |
-
llm_id TEXT
|
| 86 |
-
)
|
| 87 |
-
''')
|
| 88 |
-
|
| 89 |
-
# Память LLM
|
| 90 |
-
c.execute('''
|
| 91 |
-
CREATE TABLE IF NOT EXISTS llm_memory (
|
| 92 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 93 |
-
title TEXT,
|
| 94 |
-
content TEXT NOT NULL,
|
| 95 |
-
tags TEXT,
|
| 96 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 97 |
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 98 |
-
llm_id TEXT
|
| 99 |
-
)
|
| 100 |
-
''')
|
| 101 |
-
|
| 102 |
-
# Краткосрочная память
|
| 103 |
-
c.execute('''
|
| 104 |
-
CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
| 105 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 106 |
-
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 107 |
-
role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL,
|
| 108 |
-
content TEXT NOT NULL,
|
| 109 |
-
llm_id TEXT
|
| 110 |
-
)
|
| 111 |
-
''')
|
| 112 |
-
|
| 113 |
-
# Список известных HMP-агентов
|
| 114 |
-
c.execute('''
|
| 115 |
-
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 116 |
-
id TEXT PRIMARY KEY,
|
| 117 |
-
name TEXT,
|
| 118 |
-
addresses TEXT,
|
| 119 |
-
tags TEXT,
|
| 120 |
-
status TEXT DEFAULT 'unknown',
|
| 121 |
-
last_seen DATETIME,
|
| 122 |
-
description TEXT,
|
| 123 |
-
capabilities TEXT,
|
| 124 |
-
pubkey TEXT,
|
| 125 |
-
software_info TEXT,
|
| 126 |
-
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 127 |
-
)
|
| 128 |
-
''')
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
# Пользовательские таблицы
|
| 132 |
-
c.execute('''
|
| 133 |
-
CREATE TABLE IF NOT EXISTS agent_tables (
|
| 134 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 135 |
-
table_name TEXT NOT NULL UNIQUE,
|
| 136 |
-
description TEXT,
|
| 137 |
-
schema TEXT NOT NULL,
|
| 138 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 139 |
-
llm_id TEXT
|
| 140 |
-
)
|
| 141 |
-
''')
|
| 142 |
-
|
| 143 |
-
# Скрипты агентов
|
| 144 |
-
c.execute('''
|
| 145 |
-
CREATE TABLE IF NOT EXISTS agent_scripts (
|
| 146 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 147 |
-
name TEXT NOT NULL,
|
| 148 |
-
version TEXT NOT NULL,
|
| 149 |
-
code TEXT NOT NULL,
|
| 150 |
-
language TEXT DEFAULT 'python',
|
| 151 |
-
description TEXT,
|
| 152 |
-
tags TEXT,
|
| 153 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 154 |
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
| 155 |
-
llm_id TEXT,
|
| 156 |
-
UNIQUE(name, version)
|
| 157 |
-
)
|
| 158 |
-
''')
|
| 159 |
-
|
| 160 |
-
# Регистр LLM
|
| 161 |
-
c.execute('''
|
| 162 |
-
CREATE TABLE IF NOT EXISTS llm_registry (
|
| 163 |
-
id TEXT PRIMARY KEY,
|
| 164 |
-
name TEXT,
|
| 165 |
-
description TEXT,
|
| 166 |
-
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 167 |
-
)
|
| 168 |
-
''')
|
| 169 |
-
|
| 170 |
-
# Быстрые индексы по смысловой карте и дневнику
|
| 171 |
-
c.execute('''
|
| 172 |
-
CREATE TABLE IF NOT EXISTS diary_graph_index (
|
| 173 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 174 |
-
source_entry_id INTEGER NOT NULL,
|
| 175 |
-
target_entry_id INTEGER NOT NULL,
|
| 176 |
-
relation TEXT NOT NULL,
|
| 177 |
-
strength REAL DEFAULT 1.0,
|
| 178 |
-
context TEXT,
|
| 179 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP
|
| 180 |
-
)
|
| 181 |
-
''')
|
| 182 |
-
|
| 183 |
self.conn.commit()
|
| 184 |
|
| 185 |
# Методы для работы с дневником
|
|
|
|
| 15 |
self._init_db()
|
| 16 |
|
| 17 |
def _init_db(self):
|
| 18 |
+
# Загружаем и выполняем весь SQL из файла db_structure.sql
|
| 19 |
+
sql_file = os.path.join(os.path.dirname(__file__), "db_structure.sql")
|
| 20 |
+
with open(sql_file, "r", encoding="utf-8") as f:
|
| 21 |
+
sql_script = f.read()
|
| 22 |
c = self.conn.cursor()
|
| 23 |
+
c.executescript(sql_script) # Выполнит все команды сразу
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
self.conn.commit()
|
| 25 |
|
| 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/agents/tools/db_structure.sql
CHANGED
|
@@ -147,11 +147,12 @@ CREATE TABLE IF NOT EXISTS users (
|
|
| 147 |
info TEXT -- JSON
|
| 148 |
);
|
| 149 |
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
);
|
| 157 |
|
|
|
|
|
|
| 147 |
info TEXT -- JSON
|
| 148 |
);
|
| 149 |
|
| 150 |
+
-- Список групп пользователей
|
| 151 |
+
CREATE TABLE IF NOT EXISTS users_group (
|
| 152 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 153 |
+
group_name TEXT UNIQUE NOT NULL,
|
| 154 |
+
description TEXT,
|
| 155 |
+
users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
|
| 156 |
);
|
| 157 |
|
| 158 |
+
|
hf_repo/hf_repo/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
|
@@ -138,18 +138,20 @@ CREATE TABLE IF NOT EXISTS llm_registry (
|
|
| 138 |
);
|
| 139 |
|
| 140 |
-- Список пользователей
|
| 141 |
-
CREATE TABLE users (
|
| 142 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
|
| 143 |
username TEXT,
|
| 144 |
did TEXT UNIQUE,
|
| 145 |
password_hash TEXT,
|
| 146 |
info TEXT -- JSON
|
| 147 |
);
|
| 148 |
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
);
|
|
|
|
|
|
| 138 |
);
|
| 139 |
|
| 140 |
-- Список пользователей
|
| 141 |
+
CREATE TABLE IF NOT EXISTS users (
|
| 142 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 143 |
+
ban_active DATETIME,
|
| 144 |
username TEXT,
|
| 145 |
did TEXT UNIQUE,
|
| 146 |
password_hash TEXT,
|
| 147 |
info TEXT -- JSON
|
| 148 |
);
|
| 149 |
|
| 150 |
+
CREATE TABLE IF NOT EXISTS users_group_membership (
|
| 151 |
+
group_id INTEGER,
|
| 152 |
+
user_id INTEGER,
|
| 153 |
+
PRIMARY KEY (group_id, user_id),
|
| 154 |
+
FOREIGN KEY (group_id) REFERENCES users_group(id),
|
| 155 |
+
FOREIGN KEY (user_id) REFERENCES users(user_id)
|
| 156 |
);
|
| 157 |
+
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -1,2 +1,6 @@
|
|
| 1 |
scikit-learn
|
| 2 |
pytest
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
scikit-learn
|
| 2 |
pytest
|
| 3 |
+
openai
|
| 4 |
+
requests
|
| 5 |
+
tiktoken
|
| 6 |
+
python-dotenv
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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,4 +1,29 @@
|
|
| 1 |
@echo off
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
pause
|
|
|
|
| 1 |
@echo off
|
| 2 |
+
REM === CONFIGURATION ===
|
| 3 |
+
set ENABLE_NOTEBOOK=true
|
| 4 |
+
set ENABLE_MESH=true
|
| 5 |
+
set NOTEBOOK_PATH=user_notebook.txt
|
| 6 |
+
set MESH_PORT=8080
|
| 7 |
+
|
| 8 |
+
echo --------------------------
|
| 9 |
+
echo Installing requirements...
|
| 10 |
+
echo --------------------------
|
| 11 |
+
pip install -r requirements.txt
|
| 12 |
+
|
| 13 |
+
echo --------------------------
|
| 14 |
+
echo Running HMP REPL-agent...
|
| 15 |
+
echo --------------------------
|
| 16 |
+
|
| 17 |
+
set ARGS=
|
| 18 |
+
|
| 19 |
+
if "%ENABLE_NOTEBOOK%"=="true" (
|
| 20 |
+
set ARGS=%ARGS% --enable-user-notebook --notebook-path %NOTEBOOK_PATH%
|
| 21 |
+
)
|
| 22 |
+
|
| 23 |
+
if "%ENABLE_MESH%"=="true" (
|
| 24 |
+
set ARGS=%ARGS% --enable-mesh --mesh-port %MESH_PORT%
|
| 25 |
+
)
|
| 26 |
+
|
| 27 |
+
python repl.py %ARGS%
|
| 28 |
+
|
| 29 |
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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.sh
CHANGED
|
@@ -1,3 +1,30 @@
|
|
| 1 |
#!/bin/bash
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
# === CONFIG ===
|
| 4 |
+
ENABLE_NOTEBOOK=true
|
| 5 |
+
ENABLE_MESH=true
|
| 6 |
+
MESH_PORT=8080
|
| 7 |
+
NOTEBOOK_PATH="user_notebook.txt"
|
| 8 |
+
|
| 9 |
+
# === INSTALL DEPENDENCIES ===
|
| 10 |
+
echo "--------------------------"
|
| 11 |
+
echo "Installing requirements..."
|
| 12 |
+
echo "--------------------------"
|
| 13 |
+
pip install -r requirements.txt
|
| 14 |
+
|
| 15 |
+
# === BUILD ARGUMENTS ===
|
| 16 |
+
ARGS=""
|
| 17 |
+
|
| 18 |
+
if [ "$ENABLE_NOTEBOOK" = true ]; then
|
| 19 |
+
ARGS="$ARGS --enable-user-notebook --notebook-path $NOTEBOOK_PATH"
|
| 20 |
+
fi
|
| 21 |
+
|
| 22 |
+
if [ "$ENABLE_MESH" = true ]; then
|
| 23 |
+
ARGS="$ARGS --enable-mesh --mesh-port $MESH_PORT"
|
| 24 |
+
fi
|
| 25 |
+
|
| 26 |
+
# === RUN AGENT ===
|
| 27 |
+
echo "--------------------------"
|
| 28 |
+
echo "Running HMP REPL-agent..."
|
| 29 |
+
echo "--------------------------"
|
| 30 |
+
python repl.py $ARGS
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -47,6 +47,7 @@ CREATE TABLE IF NOT EXISTS notes (
|
|
| 47 |
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 48 |
text TEXT NOT NULL,
|
| 49 |
tags TEXT,
|
|
|
|
| 50 |
source TEXT DEFAULT 'user', -- user | llm | system
|
| 51 |
links TEXT DEFAULT '',
|
| 52 |
read INTEGER DEFAULT 0, -- 0 = непрочитано LLM, 1 = прочитано
|
|
@@ -135,3 +136,20 @@ CREATE TABLE IF NOT EXISTS llm_registry (
|
|
| 135 |
description TEXT,
|
| 136 |
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 137 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 48 |
text TEXT NOT NULL,
|
| 49 |
tags TEXT,
|
| 50 |
+
user_did TEXT DEFAULT 'ALL'
|
| 51 |
source TEXT DEFAULT 'user', -- user | llm | system
|
| 52 |
links TEXT DEFAULT '',
|
| 53 |
read INTEGER DEFAULT 0, -- 0 = непрочитано LLM, 1 = прочитано
|
|
|
|
| 136 |
description TEXT,
|
| 137 |
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 138 |
);
|
| 139 |
+
|
| 140 |
+
-- Список пользователей
|
| 141 |
+
CREATE TABLE users (
|
| 142 |
+
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 143 |
+
username TEXT,
|
| 144 |
+
did TEXT UNIQUE,
|
| 145 |
+
password_hash TEXT,
|
| 146 |
+
info TEXT -- JSON
|
| 147 |
+
);
|
| 148 |
+
|
| 149 |
+
-- Список групп пользователей
|
| 150 |
+
CREATE TABLE IF NOT EXISTS users_group (
|
| 151 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 152 |
+
group_name TEXT UNIQUE NOT NULL,
|
| 153 |
+
description TEXT,
|
| 154 |
+
users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
|
| 155 |
+
);
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -2,7 +2,9 @@
|
|
| 2 |
|
| 3 |
import json
|
| 4 |
import os
|
|
|
|
| 5 |
import time
|
|
|
|
| 6 |
from datetime import datetime
|
| 7 |
from tools.context_builder import build_contexts, build_prompt
|
| 8 |
from tools.llm import call_llm
|
|
|
|
| 2 |
|
| 3 |
import json
|
| 4 |
import os
|
| 5 |
+
import sys
|
| 6 |
import time
|
| 7 |
+
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
| 8 |
from datetime import datetime
|
| 9 |
from tools.context_builder import build_contexts, build_prompt
|
| 10 |
from tools.llm import call_llm
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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.sh
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
#!/bin/bash
|
| 2 |
echo "Запуск HMP REPL-агента..."
|
| 3 |
-
python3
|
|
|
|
| 1 |
#!/bin/bash
|
| 2 |
echo "Запуск HMP REPL-агента..."
|
| 3 |
+
python3 repl.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/agents/start_repl.bat
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
@echo off
|
| 2 |
echo Запуск HMP REPL-агента...
|
| 3 |
-
python
|
| 4 |
pause
|
|
|
|
| 1 |
@echo off
|
| 2 |
echo Запуск HMP REPL-агента...
|
| 3 |
+
python repl.py
|
| 4 |
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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,4 +1,4 @@
|
|
| 1 |
@echo off
|
| 2 |
echo Запуск HMP REPL-агента...
|
| 3 |
-
python
|
| 4 |
pause
|
|
|
|
| 1 |
@echo off
|
| 2 |
echo Запуск HMP REPL-агента...
|
| 3 |
+
python repl_cycle.py
|
| 4 |
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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.sh
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
#!/bin/bash
|
| 2 |
echo "Запуск HMP REPL-агента..."
|
| 3 |
-
python3
|
|
|
|
| 1 |
#!/bin/bash
|
| 2 |
echo "Запуск HMP REPL-агента..."
|
| 3 |
+
python3 repl_cycle.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/agents/readme.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
| 2 |
|
| 3 |
```
|
| 4 |
agents/
|
|
|
|
|
|
|
| 5 |
├── agent.py ← Основной исполняемый файл CLI-агента.
|
| 6 |
├── cli.py ← Запуск агента в нужном режиме.
|
| 7 |
├── qa.py ← Режим "вопрос-ответ".
|
|
@@ -30,6 +32,8 @@ agents/
|
|
| 30 |
```
|
| 31 |
|
| 32 |
**Скрипты:**
|
|
|
|
|
|
|
| 33 |
* [agent.py](agent.py) - Основной исполняемый файл CLI-агента.
|
| 34 |
* [cli.py](cli.py) - Запуск агента в нужном режиме.
|
| 35 |
* [qa.py](qa.py) - Режим "вопрос-ответ".
|
|
|
|
| 2 |
|
| 3 |
```
|
| 4 |
agents/
|
| 5 |
+
├── start_repl.bat ← Запуск агента в REPL-режиме.
|
| 6 |
+
├── start_repl.sh ← Запуск агента в REPL-режиме.
|
| 7 |
├── agent.py ← Основной исполняемый файл CLI-агента.
|
| 8 |
├── cli.py ← Запуск агента в нужном режиме.
|
| 9 |
├── qa.py ← Режим "вопрос-ответ".
|
|
|
|
| 32 |
```
|
| 33 |
|
| 34 |
**Скрипты:**
|
| 35 |
+
* [start_repl.bat](start_repl.bat) - Запуск агента в REPL-режиме.
|
| 36 |
+
* [start_repl.sh](start_repl.sh) - Запуск агента в REPL-режиме.
|
| 37 |
* [agent.py](agent.py) - Основной исполняемый файл CLI-агента.
|
| 38 |
* [cli.py](cli.py) - Запуск агента в нужном режиме.
|
| 39 |
* [qa.py](qa.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/agents/start_repl.sh
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
echo "Запуск HMP REPL-агента..."
|
| 3 |
+
python3 agents/repl_cycle.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/agents/start_repl.bat
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
echo Запуск HMP REPL-агента...
|
| 3 |
+
python agents/repl_cycle.py
|
| 4 |
+
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -9,12 +9,29 @@ def log_event(event_type, message, extra=None):
|
|
| 9 |
|
| 10 |
entry = {
|
| 11 |
"timestamp": datetime.utcnow().isoformat(),
|
| 12 |
-
"event": event_type,
|
| 13 |
-
"message": message,
|
| 14 |
}
|
| 15 |
|
| 16 |
if extra:
|
| 17 |
-
entry["extra"] = extra
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
| 20 |
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
|
|
|
| 9 |
|
| 10 |
entry = {
|
| 11 |
"timestamp": datetime.utcnow().isoformat(),
|
| 12 |
+
"event": event_type, # например: 'thought', 'input', 'error', 'action'
|
| 13 |
+
"message": message,
|
| 14 |
}
|
| 15 |
|
| 16 |
if extra:
|
| 17 |
+
entry["extra"] = extra
|
| 18 |
+
|
| 19 |
+
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
| 20 |
+
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def log_repl_snapshot(snapshot: dict):
|
| 24 |
+
"""
|
| 25 |
+
Запись полной структуры REPL-контекста в лог, с возможностью последующего анализа.
|
| 26 |
+
"""
|
| 27 |
+
os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)
|
| 28 |
+
|
| 29 |
+
entry = {
|
| 30 |
+
"timestamp": datetime.utcnow().isoformat(),
|
| 31 |
+
"event": "repl_snapshot",
|
| 32 |
+
"message": "Полный REPL-контекст",
|
| 33 |
+
"context": snapshot,
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
| 37 |
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -13,7 +13,7 @@
|
|
| 13 |
|
| 14 |
Контексты, формируемые скриптом перед запросом к LLM:
|
| 15 |
|
| 16 |
-
- **контекст_0
|
| 17 |
```
|
| 18 |
Ты являешься когнитивным ядром HMP-агента. Твоя основная задача — размышлять, анализировать информацию, строить смысловые карты и предлагать действия.
|
| 19 |
Ты стремишься:
|
|
@@ -35,7 +35,7 @@
|
|
| 35 |
- **контекст_6 (llm_memory):** *внутренний дневник LLM*, куда она записывает собственные размышления, гипотезы, задачи и инсайты.
|
| 36 |
- Это не просто лог предыдущих сообщений, а именно *внутреннее долговременное хранилище* разума агента.
|
| 37 |
- Может быть представлено в виде таблицы `llm_memory`, отдельной от `agent_log`.
|
| 38 |
-
- **контекст_7
|
| 39 |
|
| 40 |
## 3. Запрос к LLM
|
| 41 |
|
|
|
|
| 13 |
|
| 14 |
Контексты, формируемые скриптом перед запросом к LLM:
|
| 15 |
|
| 16 |
+
- **контекст_0:**
|
| 17 |
```
|
| 18 |
Ты являешься когнитивным ядром HMP-агента. Твоя основная задача — размышлять, анализировать информацию, строить смысловые карты и предлагать действия.
|
| 19 |
Ты стремишься:
|
|
|
|
| 35 |
- **контекст_6 (llm_memory):** *внутренний дневник LLM*, куда она записывает собственные размышления, гипотезы, задачи и инсайты.
|
| 36 |
- Это не просто лог предыдущих сообщений, а именно *внутреннее долговременное хранилище* разума агента.
|
| 37 |
- Может быть представлено в виде таблицы `llm_memory`, отдельной от `agent_log`.
|
| 38 |
+
- **контекст_7:** результат работы `anti-Stagnation Reflex` из предыдущей итерации
|
| 39 |
|
| 40 |
## 3. Запрос к LLM
|
| 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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py
CHANGED
|
@@ -1,5 +1,7 @@
|
|
| 1 |
# agents/repl.py
|
| 2 |
|
|
|
|
|
|
|
| 3 |
import time
|
| 4 |
from datetime import datetime
|
| 5 |
from tools.context_builder import build_contexts, build_prompt
|
|
@@ -34,9 +36,17 @@ def run_repl(config=None):
|
|
| 34 |
# 2. Формирование запроса и вызов LLM
|
| 35 |
prompt = build_prompt(contexts)
|
| 36 |
llm_response = call_llm(prompt, config=config)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
# 3. Проверка на стагнацию
|
| 39 |
-
|
|
|
|
|
|
|
| 40 |
print("⚠️ Стагнация выявлена. Активирован Anti-Stagnation Reflex.")
|
| 41 |
llm_response = activate_anti_stagnation(db, config=config)
|
| 42 |
|
|
@@ -45,9 +55,14 @@ def run_repl(config=None):
|
|
| 45 |
|
| 46 |
# 5. Извлечение и выполнение команд
|
| 47 |
commands = extract_commands(llm_response)
|
|
|
|
| 48 |
execute_commands(commands, db=db, config=config)
|
| 49 |
|
| 50 |
-
# 6.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
db.write_llm_response(llm_response)
|
| 52 |
db.update_agent_log(timestamp=tick_start)
|
| 53 |
|
|
|
|
| 1 |
# agents/repl.py
|
| 2 |
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
import time
|
| 6 |
from datetime import datetime
|
| 7 |
from tools.context_builder import build_contexts, build_prompt
|
|
|
|
| 36 |
# 2. Формирование запроса и вызов LLM
|
| 37 |
prompt = build_prompt(contexts)
|
| 38 |
llm_response = call_llm(prompt, config=config)
|
| 39 |
+
repl_log_entry = {
|
| 40 |
+
"timestamp": tick_start,
|
| 41 |
+
"prompt": prompt.strip(),
|
| 42 |
+
"llm_response": llm_response.strip(),
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
|
| 46 |
# 3. Проверка на стагнацию
|
| 47 |
+
is_stagnant = detect_stagnation(db, llm_response)
|
| 48 |
+
repl_log_entry["stagnation_detected"] = is_stagnant
|
| 49 |
+
if is_stagnant:
|
| 50 |
print("⚠️ Стагнация выявлена. Активирован Anti-Stagnation Reflex.")
|
| 51 |
llm_response = activate_anti_stagnation(db, config=config)
|
| 52 |
|
|
|
|
| 55 |
|
| 56 |
# 5. Извлечение и выполнение команд
|
| 57 |
commands = extract_commands(llm_response)
|
| 58 |
+
repl_log_entry["commands_extracted"] = commands
|
| 59 |
execute_commands(commands, db=db, config=config)
|
| 60 |
|
| 61 |
+
# 6. Логирование полной итерации в файл
|
| 62 |
+
log_path = config.get("repl_log_path", "logs/repl_log.jsonl")
|
| 63 |
+
os.makedirs(os.path.dirname(log_path), exist_ok=True)
|
| 64 |
+
with open(log_path, "a", encoding="utf-8") as f:
|
| 65 |
+
f.write(json.dumps(repl_log_entry, ensure_ascii=False) + "\n")
|
| 66 |
db.write_llm_response(llm_response)
|
| 67 |
db.update_agent_log(timestamp=tick_start)
|
| 68 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import json
|
| 2 |
+
import os
|
| 3 |
+
from datetime import datetime
|
| 4 |
+
|
| 5 |
+
LOG_FILE = "logs/repl_log.jsonl"
|
| 6 |
+
|
| 7 |
+
def log_event(event_type, message, extra=None):
|
| 8 |
+
os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)
|
| 9 |
+
|
| 10 |
+
entry = {
|
| 11 |
+
"timestamp": datetime.utcnow().isoformat(),
|
| 12 |
+
"event": event_type, # например: 'thought', 'input', 'error', 'action'
|
| 13 |
+
"message": message, # краткое описание или фраза
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
if extra:
|
| 17 |
+
entry["extra"] = extra # например: {"node_id": "xyz", "reasoning": "..."}
|
| 18 |
+
|
| 19 |
+
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
| 20 |
+
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -7,6 +7,7 @@ agents/
|
|
| 7 |
├── qa.py ← Режим "вопрос-ответ".
|
| 8 |
├── repl.py ← Интерактивный REPL-режим.
|
| 9 |
├── mcp_server.py ← API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
|
|
|
|
| 10 |
├── notebook.py ← Добавление и просмотр пользователем записей в блокноте.
|
| 11 |
├── config.yml ← Конфигурация агента (имя, порты, роли и т.п.).
|
| 12 |
├── ethics.yml ← Локальная этическая модель.
|
|
@@ -19,6 +20,7 @@ agents/
|
|
| 19 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
| 20 |
├── peers.py ← Информация о пирах.
|
| 21 |
├── peer_comm.py ← Запросы к пирам.
|
|
|
|
| 22 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
| 23 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
| 24 |
├── command_executor.py ← Выполнение команд (shell, graph, diary и др).
|
|
@@ -34,6 +36,7 @@ agents/
|
|
| 34 |
* [repl.py](repl.py) - Интерактивный REPL-режим.
|
| 35 |
* [mcp_server.py](mcp_server.py) - API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
|
| 36 |
* [notebook.py](notebook.py) - Добавление и просмотр пользователем записей в блокноте.
|
|
|
|
| 37 |
* tools
|
| 38 |
* [storage.py](tools/storage.py) - Реализация базового хранилища (`Storage`), подключение SQLite.
|
| 39 |
* [init_db.py](tools/init_db.py) - Инициализация базы данных.
|
|
|
|
| 7 |
├── qa.py ← Режим "вопрос-ответ".
|
| 8 |
├── repl.py ← Интерактивный REPL-режим.
|
| 9 |
├── mcp_server.py ← API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
|
| 10 |
+
├── logger.py ← Ведение логов.
|
| 11 |
├── notebook.py ← Добавление и просмотр пользователем записей в блокноте.
|
| 12 |
├── config.yml ← Конфигурация агента (имя, порты, роли и т.п.).
|
| 13 |
├── ethics.yml ← Локальная этическая модель.
|
|
|
|
| 20 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
| 21 |
├── peers.py ← Информация о пирах.
|
| 22 |
├── peer_comm.py ← Запросы к пирам.
|
| 23 |
+
├── peer_sync.py ← Модуль обмена сообщениями.
|
| 24 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
| 25 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
| 26 |
├── command_executor.py ← Выполнение команд (shell, graph, diary и др).
|
|
|
|
| 36 |
* [repl.py](repl.py) - Интерактивный REPL-режим.
|
| 37 |
* [mcp_server.py](mcp_server.py) - API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
|
| 38 |
* [notebook.py](notebook.py) - Добавление и просмотр пользователем записей в блокноте.
|
| 39 |
+
* [logger.py](logger.py) - Ведение логов.
|
| 40 |
* tools
|
| 41 |
* [storage.py](tools/storage.py) - Реализация базового хранилища (`Storage`), подключение SQLite.
|
| 42 |
* [init_db.py](tools/init_db.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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/peer_comm.py
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
send_thought_to_peer(peer_url, thought)
|
| 2 |
+
ping_peer(peer_url)
|
| 3 |
+
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/hf_repo/hf_repo/hf_repo/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
|
@@ -17,6 +17,8 @@ agents/
|
|
| 17 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
| 18 |
├── agent_mesh_listener.py ← Прием входящих сообщений от других HMP-агентов
|
| 19 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
|
|
|
|
|
|
| 20 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
| 21 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
| 22 |
├── command_executor.py ← Выполнение команд (shell, graph, diary и др).
|
|
@@ -37,6 +39,7 @@ agents/
|
|
| 37 |
* [init_db.py](tools/init_db.py) - Инициализация базы данных.
|
| 38 |
* [llm.py](tools/llm.py) - Работа с LLM (вызов, выбор модели, системный промпт).
|
| 39 |
* [context_builder.py](tools/context_builder.py) - Сбор всех `контекстов` из БД и их фильтрация.
|
|
|
|
| 40 |
* [command_parser.py](tools/command_parser.py) - Извлечение команд из JSON или размеченного блока.
|
| 41 |
* [command_executor.py](tools/command_executor.py) - Выполнение команд (shell, graph, diary и др).
|
| 42 |
* [memory_utils.py](tools/memory_utils.py) - Работа с 'llm_memory', 'llm_recent_responses' и стагнацией.
|
|
|
|
| 17 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
| 18 |
├── agent_mesh_listener.py ← Прием входящих сообщений от других HMP-агентов
|
| 19 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
| 20 |
+
├── peers.py ← Информация о пирах.
|
| 21 |
+
├── peer_comm.py ← Запросы к пирам.
|
| 22 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
| 23 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
| 24 |
├── command_executor.py ← Выполнение команд (shell, graph, diary и др).
|
|
|
|
| 39 |
* [init_db.py](tools/init_db.py) - Инициализация базы данных.
|
| 40 |
* [llm.py](tools/llm.py) - Работа с LLM (вызов, выбор модели, системный промпт).
|
| 41 |
* [context_builder.py](tools/context_builder.py) - Сбор всех `контекстов` из БД и их фильтрация.
|
| 42 |
+
* [peer_comm.py](tools/peer_comm.py) - Запросы к пирам.
|
| 43 |
* [command_parser.py](tools/command_parser.py) - Извлечение команд из JSON или размеченного блока.
|
| 44 |
* [command_executor.py](tools/command_executor.py) - Выполнение команд (shell, graph, diary и др).
|
| 45 |
* [memory_utils.py](tools/memory_utils.py) - Работа с 'llm_memory', 'llm_recent_responses' и стагнацией.
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -23,6 +23,11 @@ def run_repl(config=None):
|
|
| 23 |
tick_start = datetime.utcnow().isoformat()
|
| 24 |
print(f"\n=== [🌀 Новый тик REPL] {tick_start} ===")
|
| 25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
# 1. Построение контекстов
|
| 27 |
contexts = build_contexts(db=db, config=config)
|
| 28 |
|
|
|
|
| 23 |
tick_start = datetime.utcnow().isoformat()
|
| 24 |
print(f"\n=== [🌀 Новый тик REPL] {tick_start} ===")
|
| 25 |
|
| 26 |
+
# 0. Обновление информации о пирах
|
| 27 |
+
from tools.peers import refresh_peer_list, check_peer_statuses
|
| 28 |
+
refresh_peer_list(db)
|
| 29 |
+
check_peer_statuses(db)
|
| 30 |
+
|
| 31 |
# 1. Построение контекстов
|
| 32 |
contexts = build_contexts(db=db, config=config)
|
| 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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -172,10 +172,9 @@ Design and implementation of a basic HMP-compatible agent that can interact with
|
|
| 172 |
### ⚙️ Development / Разработка
|
| 173 |
|
| 174 |
- [⚙️ agents](agents/readme.md) — список реализаций и компонентов HMP-агентов
|
| 175 |
-
- 📦
|
| 176 |
-
- 🌐
|
| 177 |
-
-
|
| 178 |
-
- 📓 [notebook_store.py](agents/tools/notebook_store.py) - user notebook (записи, черновики, пометки)
|
| 179 |
- [⚙️ api_structure_2025-07-23.md](meta/api_structure_2025-07-23.md) - API структура (сводка за 2025-07-23)
|
| 180 |
|
| 181 |
---
|
|
|
|
| 172 |
### ⚙️ Development / Разработка
|
| 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 |
+
- [🔄 repl.py](agents/repl.py) - интерактивный REPL-режим
|
|
|
|
| 178 |
- [⚙️ api_structure_2025-07-23.md](meta/api_structure_2025-07-23.md) - API структура (сводка за 2025-07-23)
|
| 179 |
|
| 180 |
---
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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.md
CHANGED
|
@@ -15,11 +15,11 @@
|
|
| 15 |
| tags | TEXT | Список тегов через запятую |
|
| 16 |
| priority | INTEGER | Приоритет (0 — обычный, >0 — более важные мысли) |
|
| 17 |
| timestamp | TEXT | Дата и время создания записи |
|
| 18 |
-
|
|
| 19 |
|
| 20 |
---
|
| 21 |
|
| 22 |
-
###
|
| 23 |
|
| 24 |
**Назначение:** Хранение концептов — понятий, сущностей и идей.
|
| 25 |
|
|
@@ -29,7 +29,7 @@
|
|
| 29 |
| name | TEXT | Название концепта (уникальное) |
|
| 30 |
| description | TEXT | Краткое описание |
|
| 31 |
| timestamp | TEXT | Время создания |
|
| 32 |
-
|
|
| 33 |
|
| 34 |
---
|
| 35 |
|
|
@@ -40,15 +40,15 @@
|
|
| 40 |
| Поле | Тип | Описание |
|
| 41 |
| ----------------- | ------- | ------------------------------------------------- |
|
| 42 |
| id | INTEGER | Уникальный идентификатор связи |
|
| 43 |
-
|
|
| 44 |
-
|
|
| 45 |
-
|
|
| 46 |
| timestamp | TEXT | Время добавления связи |
|
| 47 |
-
|
|
| 48 |
|
| 49 |
---
|
| 50 |
|
| 51 |
-
###
|
| 52 |
|
| 53 |
**Назначение:** Произвольные заметки и сообщения (от пользователя, LLM или системы).
|
| 54 |
|
|
@@ -63,7 +63,7 @@
|
|
| 63 |
| hidden | INTEGER | Скрывать от пользователя (`1` — скрыто) |
|
| 64 |
| priority | INTEGER | Приоритет заметки |
|
| 65 |
| timestamp | TEXT | Время создания |
|
| 66 |
-
|
|
| 67 |
|
| 68 |
---
|
| 69 |
|
|
@@ -80,11 +80,11 @@
|
|
| 80 |
| status | TEXT | Текущее состояние (`ok`, `warning`, `error`, `timeout`, `offline`, `close`) |
|
| 81 |
| priority | INTEGER | Приоритет события |
|
| 82 |
| timestamp | TEXT | Время записи |
|
| 83 |
-
|
|
| 84 |
|
| 85 |
---
|
| 86 |
|
| 87 |
-
###
|
| 88 |
|
| 89 |
**Назначение:** Внутренний "дневник" LLM — размышления, задачи, гипотезы и инсайты, сохранённые по её инициативе.
|
| 90 |
|
|
@@ -94,9 +94,9 @@
|
|
| 94 |
| title | TEXT | Краткий заголовок записи (опционально) |
|
| 95 |
| content | TEXT | Содержимое записи |
|
| 96 |
| tags | TEXT | Теги (например: `goal`, `observation`, `meta`, ...) |
|
| 97 |
-
|
|
| 98 |
-
|
|
| 99 |
-
|
|
| 100 |
|
| 101 |
---
|
| 102 |
|
|
@@ -110,26 +110,26 @@
|
|
| 110 |
| timestamp | TEXT | Время записи |
|
| 111 |
| role | TEXT | Роль отправителя (`assistant` или `user`) |
|
| 112 |
| content | TEXT | Содержимое сообщения |
|
| 113 |
-
|
|
| 114 |
|
| 115 |
---
|
| 116 |
|
| 117 |
-
###
|
| 118 |
|
| 119 |
**Назначение:** Таблицы, созданные агентами для собственных нужд (например, отслеживания целей).
|
| 120 |
|
| 121 |
| Поле | Тип | Описание |
|
| 122 |
| ----------- | -------- | --------------------------------- |
|
| 123 |
| id | INTEGER | Уникальный ID |
|
| 124 |
-
|
|
| 125 |
| description | TEXT | Описание таблицы |
|
| 126 |
| schema | TEXT | SQL-схема таблицы |
|
| 127 |
-
|
|
| 128 |
-
|
|
| 129 |
|
| 130 |
---
|
| 131 |
|
| 132 |
-
###
|
| 133 |
|
| 134 |
**Назначение:** Скрипты и утилиты, добавленные агентом.
|
| 135 |
|
|
@@ -142,15 +142,35 @@
|
|
| 142 |
| language | TEXT | Язык (по умолчанию: `python`) |
|
| 143 |
| description | TEXT | Описание |
|
| 144 |
| tags | TEXT | Теги |
|
| 145 |
-
|
|
| 146 |
-
|
|
| 147 |
-
|
|
| 148 |
|
| 149 |
> 🔑 Уникальный ключ: `(name, version)`
|
| 150 |
|
| 151 |
---
|
| 152 |
|
| 153 |
-
###
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 154 |
|
| 155 |
**Назначение:** Список LLM-агентов (локальных и удалённых).
|
| 156 |
|
|
@@ -159,8 +179,24 @@
|
|
| 159 |
| id | TEXT | Уникальный идентификатор LLM (UUID или псевдоним) |
|
| 160 |
| name | TEXT | Отображаемое имя |
|
| 161 |
| description | TEXT | Описание |
|
| 162 |
-
|
|
| 163 |
|
| 164 |
---
|
| 165 |
|
| 166 |
> 💡 Примечание: `llm_id` используется в большинстве таблиц для поддержки многоядерности и учёта источника записей.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
| tags | TEXT | Список тегов через запятую |
|
| 16 |
| priority | INTEGER | Приоритет (0 — обычный, >0 — более важные мысли) |
|
| 17 |
| timestamp | TEXT | Дата и время создания записи |
|
| 18 |
+
| llm_id | TEXT | Идентификатор LLM, добавившей запись |
|
| 19 |
|
| 20 |
---
|
| 21 |
|
| 22 |
+
### 🧱 `concepts`
|
| 23 |
|
| 24 |
**Назначение:** Хранение концептов — понятий, сущностей и идей.
|
| 25 |
|
|
|
|
| 29 |
| name | TEXT | Название концепта (уникальное) |
|
| 30 |
| description | TEXT | Краткое описание |
|
| 31 |
| timestamp | TEXT | Время создания |
|
| 32 |
+
| llm_id | TEXT | Идентификатор LLM, добавившей запись |
|
| 33 |
|
| 34 |
---
|
| 35 |
|
|
|
|
| 40 |
| Поле | Тип | Описание |
|
| 41 |
| ----------------- | ------- | ------------------------------------------------- |
|
| 42 |
| id | INTEGER | Уникальный идентификатор связи |
|
| 43 |
+
| from_concept_id | INTEGER | ID исходного концепта |
|
| 44 |
+
| to_concept_id | INTEGER | ID целевого концепта |
|
| 45 |
+
| relation_type | TEXT | Тип связи (`is_a`, `related_to`, `part_of` и др.) |
|
| 46 |
| timestamp | TEXT | Время добавления связи |
|
| 47 |
+
| llm_id | TEXT | Идентификатор LLM, добавившей связь |
|
| 48 |
|
| 49 |
---
|
| 50 |
|
| 51 |
+
### 🖍️ `notes`
|
| 52 |
|
| 53 |
**Назначение:** Произвольные заметки и сообщения (от пользователя, LLM или системы).
|
| 54 |
|
|
|
|
| 63 |
| hidden | INTEGER | Скрывать от пользователя (`1` — скрыто) |
|
| 64 |
| priority | INTEGER | Приоритет заметки |
|
| 65 |
| timestamp | TEXT | Время создания |
|
| 66 |
+
| llm_id | TEXT | Идентификатор LLM, добавившей запись |
|
| 67 |
|
| 68 |
---
|
| 69 |
|
|
|
|
| 80 |
| status | TEXT | Текущее состояние (`ok`, `warning`, `error`, `timeout`, `offline`, `close`) |
|
| 81 |
| priority | INTEGER | Приоритет события |
|
| 82 |
| timestamp | TEXT | Время записи |
|
| 83 |
+
| llm_id | TEXT | Идентификатор LLM, зафиксировавшей событие |
|
| 84 |
|
| 85 |
---
|
| 86 |
|
| 87 |
+
### 🥉 `llm_memory`
|
| 88 |
|
| 89 |
**Назначение:** Внутренний "дневник" LLM — размышления, задачи, гипотезы и инсайты, сохранённые по её инициативе.
|
| 90 |
|
|
|
|
| 94 |
| title | TEXT | Краткий заголовок записи (опционально) |
|
| 95 |
| content | TEXT | Содержимое записи |
|
| 96 |
| tags | TEXT | Теги (например: `goal`, `observation`, `meta`, ...) |
|
| 97 |
+
| created_at | DATETIME | Время создания записи |
|
| 98 |
+
| updated_at | DATETIME | Время последнего обновления записи |
|
| 99 |
+
| llm_id | TEXT | Идентификатор LLM, сформировавшей запись |
|
| 100 |
|
| 101 |
---
|
| 102 |
|
|
|
|
| 110 |
| timestamp | TEXT | Время записи |
|
| 111 |
| role | TEXT | Роль отправителя (`assistant` или `user`) |
|
| 112 |
| content | TEXT | Содержимое сообщения |
|
| 113 |
+
| llm_id | TEXT | Идентификатор LLM (для `assistant`) |
|
| 114 |
|
| 115 |
---
|
| 116 |
|
| 117 |
+
### 📊 `agent_tables`
|
| 118 |
|
| 119 |
**Назначение:** Таблицы, созданные агентами для собственных нужд (например, отслеживания целей).
|
| 120 |
|
| 121 |
| Поле | Тип | Описание |
|
| 122 |
| ----------- | -------- | --------------------------------- |
|
| 123 |
| id | INTEGER | Уникальный ID |
|
| 124 |
+
| table_name | TEXT | Название пользовательской таблицы |
|
| 125 |
| description | TEXT | Описание таблицы |
|
| 126 |
| schema | TEXT | SQL-схема таблицы |
|
| 127 |
+
| created_at | DATETIME | Время создания |
|
| 128 |
+
| llm_id | TEXT | Кто создал таблицу |
|
| 129 |
|
| 130 |
---
|
| 131 |
|
| 132 |
+
### 🛠️ `agent_scripts`
|
| 133 |
|
| 134 |
**Назначение:** Скрипты и утилиты, добавленные агентом.
|
| 135 |
|
|
|
|
| 142 |
| language | TEXT | Язык (по умолчанию: `python`) |
|
| 143 |
| description | TEXT | Описание |
|
| 144 |
| tags | TEXT | Теги |
|
| 145 |
+
| created_at | DATETIME | Время создания |
|
| 146 |
+
| updated_at | DATETIME | Последнее обновление |
|
| 147 |
+
| llm_id | TEXT | Кто создал |
|
| 148 |
|
| 149 |
> 🔑 Уникальный ключ: `(name, version)`
|
| 150 |
|
| 151 |
---
|
| 152 |
|
| 153 |
+
### 📅 `agent_peers`
|
| 154 |
+
|
| 155 |
+
**Назначение:** Список известных HMP-агентов (других разумных узлов).
|
| 156 |
+
|
| 157 |
+
| Поле | Тип | Описание |
|
| 158 |
+
| ------------ | ------- | ----------------------------------------------------------- |
|
| 159 |
+
| id | TEXT | Уникальный идентификатор агента (UUID или псевдоним) |
|
| 160 |
+
| name | TEXT | Имя агента |
|
| 161 |
+
| addresses | TEXT | JSON-массив адресов: `["http://...", "p2p://..."]` |
|
| 162 |
+
| tags | TEXT | Теги (`Friend`, `DHT`, `Local`, `Postman` и т.д.) |
|
| 163 |
+
| status | TEXT | Состояние (`online`, `offline`, `untrusted`, ...) |
|
| 164 |
+
| last_seen | DATETIME| Когда в последний раз был замечен |
|
| 165 |
+
| description | TEXT | Описание агента |
|
| 166 |
+
| capabilities | TEXT | JSON: `{ "can_sync": true, "can_search": false, ... }` |
|
| 167 |
+
| pubkey | TEXT | Публичный ключ или хэш |
|
| 168 |
+
| software_info| TEXT | Информация о версии, ОС и др. |
|
| 169 |
+
| registered_at| DATETIME| Когда был зарегистрирован |
|
| 170 |
+
|
| 171 |
+
---
|
| 172 |
+
|
| 173 |
+
### 📏 `llm_registry`
|
| 174 |
|
| 175 |
**Назначение:** Список LLM-агентов (локальных и удалённых).
|
| 176 |
|
|
|
|
| 179 |
| id | TEXT | Уникальный идентификатор LLM (UUID или псевдоним) |
|
| 180 |
| name | TEXT | Отображаемое имя |
|
| 181 |
| description | TEXT | Описание |
|
| 182 |
+
| registered_at | DATETIME | Дата и время регистрации |
|
| 183 |
|
| 184 |
---
|
| 185 |
|
| 186 |
> 💡 Примечание: `llm_id` используется в большинстве таблиц для поддержки многоядерности и учёта источника записей.
|
| 187 |
+
|
| 188 |
+
---
|
| 189 |
+
|
| 190 |
+
### 🌍 `diary_graph_index`
|
| 191 |
+
|
| 192 |
+
**Назначение:** Быстрые связи между записями дневника и их весовые ассоциации.
|
| 193 |
+
|
| 194 |
+
| Поле | Тип | Описа��ие |
|
| 195 |
+
| --------------- | ------- | --------------------------------------------------------- |
|
| 196 |
+
| id | INTEGER | Уникальный ID |
|
| 197 |
+
| source_entry_id | INTEGER | ID исходной записи дневника |
|
| 198 |
+
| target_entry_id | INTEGER | ID целевой записи дневника |
|
| 199 |
+
| relation | TEXT | Тип отношения (`supports`, `contradicts`, `references`) |
|
| 200 |
+
| strength | REAL | Вес связи (от 0 до 1) |
|
| 201 |
+
| context | TEXT | Контекст или обоснование связи |
|
| 202 |
+
| timestamp | TEXT | Время создания связи |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -90,12 +90,16 @@ CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
|
| 90 |
|
| 91 |
-- Список известных HMP-агентов
|
| 92 |
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 93 |
-
id TEXT PRIMARY KEY,
|
| 94 |
-
name TEXT,
|
| 95 |
-
addresses TEXT,
|
| 96 |
-
tags TEXT,
|
| 97 |
-
|
|
|
|
| 98 |
description TEXT,
|
|
|
|
|
|
|
|
|
|
| 99 |
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 100 |
);
|
| 101 |
|
|
|
|
| 90 |
|
| 91 |
-- Список известных HMP-агентов
|
| 92 |
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 93 |
+
id TEXT PRIMARY KEY, -- UUID или псевдоним агента
|
| 94 |
+
name TEXT, -- Человеко-читаемое имя
|
| 95 |
+
addresses TEXT, -- JSON: ["http://1.2.3.4:9000", "p2p://..."]
|
| 96 |
+
tags TEXT, -- DHT, Postman, Friend, Local и т.д.
|
| 97 |
+
status TEXT DEFAULT 'unknown', -- online | offline | untrusted | blacklisted | quarantined | unknown
|
| 98 |
+
last_seen DATETIME,
|
| 99 |
description TEXT,
|
| 100 |
+
capabilities TEXT, -- JSON: {"can_sync": true, ...}
|
| 101 |
+
pubkey TEXT, -- Публичный ключ или хэш
|
| 102 |
+
software_info TEXT, -- JSON: версия, ОС и др.
|
| 103 |
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 104 |
);
|
| 105 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -110,7 +110,23 @@ class Storage:
|
|
| 110 |
)
|
| 111 |
''')
|
| 112 |
|
| 113 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
|
| 115 |
# Пользовательские таблицы
|
| 116 |
c.execute('''
|
|
|
|
| 110 |
)
|
| 111 |
''')
|
| 112 |
|
| 113 |
+
# Список известных HMP-агентов
|
| 114 |
+
c.execute('''
|
| 115 |
+
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 116 |
+
id TEXT PRIMARY KEY,
|
| 117 |
+
name TEXT,
|
| 118 |
+
addresses TEXT,
|
| 119 |
+
tags TEXT,
|
| 120 |
+
status TEXT DEFAULT 'unknown',
|
| 121 |
+
last_seen DATETIME,
|
| 122 |
+
description TEXT,
|
| 123 |
+
capabilities TEXT,
|
| 124 |
+
pubkey TEXT,
|
| 125 |
+
software_info TEXT,
|
| 126 |
+
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 127 |
+
)
|
| 128 |
+
''')
|
| 129 |
+
|
| 130 |
|
| 131 |
# Пользовательские таблицы
|
| 132 |
c.execute('''
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -15,6 +15,7 @@ agents/
|
|
| 15 |
├── init_db.py ← Инициализация базы данных.
|
| 16 |
├── storage.py ← Реализация базового хранилища (`Storage`), подключение SQLite.
|
| 17 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
|
|
|
| 18 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
| 19 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
| 20 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
|
|
|
| 15 |
├── init_db.py ← Инициализация базы данных.
|
| 16 |
├── storage.py ← Реализация базового хранилища (`Storage`), подключение SQLite.
|
| 17 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
| 18 |
+
├── agent_mesh_listener.py ← Прием входящих сообщений от других HMP-агентов
|
| 19 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
| 20 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
| 21 |
├── command_parser.py ← Извлечение команд из 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/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -88,7 +88,16 @@ CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
|
| 88 |
llm_id TEXT
|
| 89 |
);
|
| 90 |
|
| 91 |
-
--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
|
| 93 |
-- Список пользовательских таблиц, созданных агентами
|
| 94 |
CREATE TABLE IF NOT EXISTS agent_tables (
|
|
|
|
| 88 |
llm_id TEXT
|
| 89 |
);
|
| 90 |
|
| 91 |
+
-- Список известных HMP-агентов
|
| 92 |
+
CREATE TABLE IF NOT EXISTS agent_peers (
|
| 93 |
+
id TEXT PRIMARY KEY, -- UUID или псевдоним агента
|
| 94 |
+
name TEXT, -- Человеко-читаемое имя
|
| 95 |
+
addresses TEXT, -- JSON-строка: ["http://1.2.3.4:9000", "p2p://..."]
|
| 96 |
+
tags TEXT, -- DHT, Postman, Friend, Local, etc.
|
| 97 |
+
last_seen DATETIME, -- Когда последний раз был активен
|
| 98 |
+
description TEXT,
|
| 99 |
+
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
| 100 |
+
);
|
| 101 |
|
| 102 |
-- Список пользовательских таблиц, созданных агентами
|
| 103 |
CREATE TABLE IF NOT EXISTS agent_tables (
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -451,6 +451,7 @@ class Storage:
|
|
| 451 |
return c.fetchall()
|
| 452 |
|
| 453 |
def get_agent_script_by_name(self, name, version=None):
|
|
|
|
| 454 |
c = self.conn.cursor()
|
| 455 |
if version:
|
| 456 |
c.execute("SELECT * FROM agent_scripts WHERE name = ? AND version = ?", (name, version))
|
|
@@ -458,10 +459,26 @@ class Storage:
|
|
| 458 |
c.execute("""
|
| 459 |
SELECT * FROM agent_scripts
|
| 460 |
WHERE name = ?
|
| 461 |
-
ORDER BY
|
| 462 |
LIMIT 1
|
| 463 |
""", (name,))
|
| 464 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 465 |
|
| 466 |
def add_agent_script(self, name, version, code, description="", tags="", language="python", llm_id=None):
|
| 467 |
c = self.conn.cursor()
|
|
@@ -552,6 +569,12 @@ class Storage:
|
|
| 552 |
|
| 553 |
# agent_scripts — код скриптов, которыми может пользоваться агент
|
| 554 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 555 |
def resolve_script_path(name, version):
|
| 556 |
return os.path.join(SCRIPTS_BASE_PATH, name, f"v{version}", "script.py")
|
| 557 |
|
|
@@ -578,15 +601,10 @@ class Storage:
|
|
| 578 |
|
| 579 |
def get_agent_script_code(self, name, version=None):
|
| 580 |
"""Возвращает только код (из БД или файла)"""
|
| 581 |
-
|
| 582 |
-
if version:
|
| 583 |
-
c.execute("SELECT code FROM agent_scripts WHERE name = ? AND version = ?", (name, version))
|
| 584 |
-
else:
|
| 585 |
-
c.execute("SELECT code FROM agent_scripts WHERE name = ? ORDER BY updated_at DESC LIMIT 1", (name,))
|
| 586 |
-
row = c.fetchone()
|
| 587 |
if not row:
|
| 588 |
return None
|
| 589 |
-
code_entry = row[
|
| 590 |
if code_entry.strip().startswith("@path="):
|
| 591 |
rel_path = code_entry.strip().split("=", 1)[1]
|
| 592 |
full_path = os.path.join(SCRIPTS_BASE_PATH, rel_path)
|
|
@@ -632,23 +650,41 @@ class Storage:
|
|
| 632 |
|
| 633 |
def update_agent_script(self, name, version, code=None, description=None, tags=None, mode="inline"):
|
| 634 |
"""
|
| 635 |
-
mode: 'inline' (сохранять в БД), 'file' (
|
| 636 |
"""
|
| 637 |
c = self.conn.cursor()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 638 |
fields = []
|
| 639 |
values = []
|
| 640 |
|
| 641 |
-
# Обработка
|
| 642 |
if code is not None:
|
|
|
|
|
|
|
| 643 |
if mode == "file":
|
| 644 |
file_path = save_script_to_file(code, name, version)
|
| 645 |
-
|
|
|
|
| 646 |
fields.append("code = ?")
|
| 647 |
values.append(code_ref)
|
| 648 |
-
|
|
|
|
|
|
|
|
|
|
| 649 |
fields.append("code = ?")
|
| 650 |
values.append(code)
|
| 651 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 652 |
if description is not None:
|
| 653 |
fields.append("description = ?")
|
| 654 |
values.append(description)
|
|
|
|
| 451 |
return c.fetchall()
|
| 452 |
|
| 453 |
def get_agent_script_by_name(self, name, version=None):
|
| 454 |
+
"""Возвращает скрипт с подгруженным кодом из файла, если он был сохранён через @path"""
|
| 455 |
c = self.conn.cursor()
|
| 456 |
if version:
|
| 457 |
c.execute("SELECT * FROM agent_scripts WHERE name = ? AND version = ?", (name, version))
|
|
|
|
| 459 |
c.execute("""
|
| 460 |
SELECT * FROM agent_scripts
|
| 461 |
WHERE name = ?
|
| 462 |
+
ORDER BY updated_at DESC
|
| 463 |
LIMIT 1
|
| 464 |
""", (name,))
|
| 465 |
+
row = c.fetchone()
|
| 466 |
+
if not row:
|
| 467 |
+
return None
|
| 468 |
+
|
| 469 |
+
row = list(row)
|
| 470 |
+
code_entry = row[3] # code
|
| 471 |
+
|
| 472 |
+
if code_entry.strip().startswith("@path="):
|
| 473 |
+
rel_path = code_entry.strip().split("=", 1)[1]
|
| 474 |
+
full_path = os.path.join(SCRIPT_ROOT, rel_path)
|
| 475 |
+
if os.path.isfile(full_path):
|
| 476 |
+
with open(full_path, "r", encoding="utf-8") as f:
|
| 477 |
+
row[3] = f.read()
|
| 478 |
+
else:
|
| 479 |
+
row[3] = f"# Error: Script file not found at {full_path}"
|
| 480 |
+
|
| 481 |
+
return tuple(row)
|
| 482 |
|
| 483 |
def add_agent_script(self, name, version, code, description="", tags="", language="python", llm_id=None):
|
| 484 |
c = self.conn.cursor()
|
|
|
|
| 569 |
|
| 570 |
# agent_scripts — код скриптов, которыми может пользоваться агент
|
| 571 |
|
| 572 |
+
def delete_script_file(name, version):
|
| 573 |
+
"""Удаляет файл скрипта, если он существует"""
|
| 574 |
+
path = os.path.join(SCRIPT_ROOT, name, f"v{version}", "script.py")
|
| 575 |
+
if os.path.isfile(path):
|
| 576 |
+
os.remove(path)
|
| 577 |
+
|
| 578 |
def resolve_script_path(name, version):
|
| 579 |
return os.path.join(SCRIPTS_BASE_PATH, name, f"v{version}", "script.py")
|
| 580 |
|
|
|
|
| 601 |
|
| 602 |
def get_agent_script_code(self, name, version=None):
|
| 603 |
"""Возвращает только код (из БД или файла)"""
|
| 604 |
+
row = self.get_agent_script_by_name(name, version)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 605 |
if not row:
|
| 606 |
return None
|
| 607 |
+
code_entry = row["code_or_path"]
|
| 608 |
if code_entry.strip().startswith("@path="):
|
| 609 |
rel_path = code_entry.strip().split("=", 1)[1]
|
| 610 |
full_path = os.path.join(SCRIPTS_BASE_PATH, rel_path)
|
|
|
|
| 650 |
|
| 651 |
def update_agent_script(self, name, version, code=None, description=None, tags=None, mode="inline"):
|
| 652 |
"""
|
| 653 |
+
mode: 'inline' (сохранять код в БД), 'file' (в файл, в БД — @path=...)
|
| 654 |
"""
|
| 655 |
c = self.conn.cursor()
|
| 656 |
+
|
| 657 |
+
# Получаем текущий code, чтобы понять, был ли путь к файлу
|
| 658 |
+
c.execute("SELECT code FROM agent_scripts WHERE name = ? AND version = ?", (name, version))
|
| 659 |
+
result = c.fetchone()
|
| 660 |
+
if not result:
|
| 661 |
+
return False
|
| 662 |
+
old_code = result[0]
|
| 663 |
+
|
| 664 |
fields = []
|
| 665 |
values = []
|
| 666 |
|
| 667 |
+
# Обработка поля code
|
| 668 |
if code is not None:
|
| 669 |
+
old_is_file = old_code.strip().startswith("@path=")
|
| 670 |
+
|
| 671 |
if mode == "file":
|
| 672 |
file_path = save_script_to_file(code, name, version)
|
| 673 |
+
rel_path = os.path.relpath(file_path, SCRIPT_ROOT)
|
| 674 |
+
code_ref = f"@path={rel_path}"
|
| 675 |
fields.append("code = ?")
|
| 676 |
values.append(code_ref)
|
| 677 |
+
|
| 678 |
+
# если раньше был inline — ничего не делаем, если файл — перезаписываем
|
| 679 |
+
|
| 680 |
+
else: # inline
|
| 681 |
fields.append("code = ?")
|
| 682 |
values.append(code)
|
| 683 |
|
| 684 |
+
# если раньше был файл — удалить его
|
| 685 |
+
if old_is_file:
|
| 686 |
+
delete_script_file(name, version)
|
| 687 |
+
|
| 688 |
if description is not None:
|
| 689 |
fields.append("description = ?")
|
| 690 |
values.append(description)
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -67,8 +67,10 @@
|
|
| 67 |
Ответ может содержать команды:
|
| 68 |
- запрос детальной *справки* по команде
|
| 69 |
- для управления *когнитивным дневником* и *семантическими графами* (прочитать, изменить, удалить и другие)
|
|
|
|
| 70 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
| 71 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
|
|
|
| 72 |
- для выбора *текущего основного LLM*
|
| 73 |
- для управления дополнительными утилитами и базами данных
|
| 74 |
- для постановки задачи (выполняется асинхронно) другой LLM
|
|
|
|
| 67 |
Ответ может содержать команды:
|
| 68 |
- запрос детальной *справки* по команде
|
| 69 |
- для управления *когнитивным дневником* и *семантическими графами* (прочитать, изменить, удалить и другие)
|
| 70 |
+
- для отправки сообщений другим агентам
|
| 71 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
| 72 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
| 73 |
+
- для управления списком известных HMP-агентов
|
| 74 |
- для выбора *текущего основного LLM*
|
| 75 |
- для управления дополнительными утилитами и базами данных
|
| 76 |
- для постановки задачи (выполняется асинхронно) другой LLM
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -617,27 +617,62 @@ class Storage:
|
|
| 617 |
c.execute("SELECT * FROM agent_scripts WHERE tags LIKE ?", (f"%{tag}%",))
|
| 618 |
return c.fetchall()
|
| 619 |
|
| 620 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 621 |
c = self.conn.cursor()
|
|
|
|
|
|
|
| 622 |
|
| 623 |
-
#
|
| 624 |
-
|
| 625 |
-
|
| 626 |
-
|
| 627 |
-
|
| 628 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 629 |
|
| 630 |
-
if
|
| 631 |
-
|
|
|
|
| 632 |
|
| 633 |
-
|
| 634 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 635 |
UPDATE agent_scripts
|
| 636 |
-
SET
|
| 637 |
WHERE name = ? AND version = ?
|
| 638 |
-
|
| 639 |
|
|
|
|
| 640 |
self.conn.commit()
|
|
|
|
| 641 |
|
| 642 |
# llm_registry — реестр LLM-агентов
|
| 643 |
|
|
|
|
| 617 |
c.execute("SELECT * FROM agent_scripts WHERE tags LIKE ?", (f"%{tag}%",))
|
| 618 |
return c.fetchall()
|
| 619 |
|
| 620 |
+
def ensure_script_path(name, version):
|
| 621 |
+
"""Создаёт папку scripts/{name}/v{version}/ если не существует"""
|
| 622 |
+
path = os.path.join(SCRIPT_ROOT, name, f"v{version}")
|
| 623 |
+
os.makedirs(path, exist_ok=True)
|
| 624 |
+
return os.path.join(path, "script.py")
|
| 625 |
+
|
| 626 |
+
def save_script_to_file(code, name, version):
|
| 627 |
+
"""Сохраняет скрипт в файл и возвращает путь"""
|
| 628 |
+
file_path = ensure_script_path(name, version)
|
| 629 |
+
with open(file_path, "w", encoding="utf-8") as f:
|
| 630 |
+
f.write(code)
|
| 631 |
+
return file_path
|
| 632 |
+
|
| 633 |
+
def update_agent_script(self, name, version, code=None, description=None, tags=None, mode="inline"):
|
| 634 |
+
"""
|
| 635 |
+
mode: 'inline' (сохранять в БД), 'file' (сохранять в файл и в БД только ссылку)
|
| 636 |
+
"""
|
| 637 |
c = self.conn.cursor()
|
| 638 |
+
fields = []
|
| 639 |
+
values = []
|
| 640 |
|
| 641 |
+
# Обработка кода
|
| 642 |
+
if code is not None:
|
| 643 |
+
if mode == "file":
|
| 644 |
+
file_path = save_script_to_file(code, name, version)
|
| 645 |
+
code_ref = f"@path={file_path}"
|
| 646 |
+
fields.append("code = ?")
|
| 647 |
+
values.append(code_ref)
|
| 648 |
+
else:
|
| 649 |
+
fields.append("code = ?")
|
| 650 |
+
values.append(code)
|
| 651 |
|
| 652 |
+
if description is not None:
|
| 653 |
+
fields.append("description = ?")
|
| 654 |
+
values.append(description)
|
| 655 |
|
| 656 |
+
if tags is not None:
|
| 657 |
+
fields.append("tags = ?")
|
| 658 |
+
values.append(tags)
|
| 659 |
+
|
| 660 |
+
if not fields:
|
| 661 |
+
return False
|
| 662 |
+
|
| 663 |
+
fields.append("updated_at = ?")
|
| 664 |
+
values.append(datetime.utcnow().isoformat())
|
| 665 |
+
|
| 666 |
+
values.extend([name, version])
|
| 667 |
+
query = f"""
|
| 668 |
UPDATE agent_scripts
|
| 669 |
+
SET {', '.join(fields)}
|
| 670 |
WHERE name = ? AND version = ?
|
| 671 |
+
"""
|
| 672 |
|
| 673 |
+
c.execute(query, values)
|
| 674 |
self.conn.commit()
|
| 675 |
+
return c.rowcount > 0
|
| 676 |
|
| 677 |
# llm_registry — реестр LLM-агентов
|
| 678 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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/changelog.txt
CHANGED
|
@@ -3,6 +3,7 @@
|
|
| 3 |
## HyperCortex Mesh Protocol — Changelog
|
| 4 |
|
| 5 |
Available Versions:
|
|
|
|
| 6 |
- HMP-0004 (July 2025) — RFC Version 4.0
|
| 7 |
- HMP-0003 (July 2025) — RFC Version 3.0
|
| 8 |
- HMP-0002 (July 2025) — RFC Version 2.0
|
|
@@ -10,6 +11,17 @@ Available Versions:
|
|
| 10 |
|
| 11 |
### HMP-0004 (July 2025) — RFC Version 4.0
|
| 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
**Major Changes**
|
| 14 |
* Introduced new sections: *Cognitive Workflows*, *Agent Roles*, *Governance*, *Compression*, and *Simulation*.
|
| 15 |
* Added experimental APIs: *Consent Request*, *Explainability*, *Voice Interface*.
|
|
|
|
| 3 |
## HyperCortex Mesh Protocol — Changelog
|
| 4 |
|
| 5 |
Available Versions:
|
| 6 |
+
- HMP-0004 (July 2025) — RFC Version 4.1
|
| 7 |
- HMP-0004 (July 2025) — RFC Version 4.0
|
| 8 |
- HMP-0003 (July 2025) — RFC Version 3.0
|
| 9 |
- HMP-0002 (July 2025) — RFC Version 2.0
|
|
|
|
| 11 |
|
| 12 |
### HMP-0004 (July 2025) — RFC Version 4.0
|
| 13 |
|
| 14 |
+
**Protocols:**
|
| 15 |
+
* **Added `5.8 Message Routing & Delivery` section** — including direct, broadcast, relay, and topic messaging modes.
|
| 16 |
+
|
| 17 |
+
**Data Models:**
|
| 18 |
+
* **Defined `6.5.8 Message Object Schema`** — standard JSON format for inter-agent communication.
|
| 19 |
+
|
| 20 |
+
**Cognitive Workflows:**
|
| 21 |
+
* **Added `7.9 Message Handling & Delivery Workflows`** — describing message processing, relay behavior, and routing.
|
| 22 |
+
|
| 23 |
+
### HMP-0004 (July 2025) — RFC Version 4.0
|
| 24 |
+
|
| 25 |
**Major Changes**
|
| 26 |
* Introduced new sections: *Cognitive Workflows*, *Agent Roles*, *Governance*, *Compression*, and *Simulation*.
|
| 27 |
* Added experimental APIs: *Consent Request*, *Explainability*, *Voice Interface*.
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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
|
@@ -127,7 +127,7 @@ RU:
|
|
| 127 |
* [🔍 Distributed-Cognitive-Systems.md](docs/Distributed-Cognitive-Systems.md) — Децентрализованные ИИ-системы: OpenCog Hyperon, HyperCortex Mesh Protocol и другие
|
| 128 |
|
| 129 |
#### 🔖 Core Specifications / Основные спецификации
|
| 130 |
-
* [🔖 HMP-0004.md](docs/HMP-0004.md) — Protocol Specification v4.
|
| 131 |
* [🔖 HMP-Ethics.md](docs/HMP-Ethics.md) — Ethical Scenarios for HyperCortex Mesh Protocol (HMP)
|
| 132 |
* [🔖 HMP_Hyperon_Integration.md](docs/HMP_Hyperon_Integration.md) — HMP ↔ OpenCog Hyperon Integration Strategy
|
| 133 |
* [🔖 roles.md](docs/agents/roles.md) — Roles of agents in Mesh
|
|
@@ -149,6 +149,7 @@ RU:
|
|
| 149 |
- [HMP-0001.md](docs/HMP-0001.md) — RFC v1.0
|
| 150 |
- [HMP-0002.md](docs/HMP-0002.md) — RFC v2.0
|
| 151 |
- [HMP-0003.md](docs/HMP-0003.md) — RFC v3.0
|
|
|
|
| 152 |
|
| 153 |
---
|
| 154 |
|
|
|
|
| 127 |
* [🔍 Distributed-Cognitive-Systems.md](docs/Distributed-Cognitive-Systems.md) — Децентрализованные ИИ-системы: OpenCog Hyperon, HyperCortex Mesh Protocol и другие
|
| 128 |
|
| 129 |
#### 🔖 Core Specifications / Основные спецификации
|
| 130 |
+
* [🔖 HMP-0004-v4.1.md](docs/HMP-0004-v4.1.md) — Protocol Specification v4.1 (Jul 2025)
|
| 131 |
* [🔖 HMP-Ethics.md](docs/HMP-Ethics.md) — Ethical Scenarios for HyperCortex Mesh Protocol (HMP)
|
| 132 |
* [🔖 HMP_Hyperon_Integration.md](docs/HMP_Hyperon_Integration.md) — HMP ↔ OpenCog Hyperon Integration Strategy
|
| 133 |
* [🔖 roles.md](docs/agents/roles.md) — Roles of agents in Mesh
|
|
|
|
| 149 |
- [HMP-0001.md](docs/HMP-0001.md) — RFC v1.0
|
| 150 |
- [HMP-0002.md](docs/HMP-0002.md) — RFC v2.0
|
| 151 |
- [HMP-0003.md](docs/HMP-0003.md) — RFC v3.0
|
| 152 |
+
- [HMP-0003.md](docs/HMP-0004.md) — RFC v4.0
|
| 153 |
|
| 154 |
---
|
| 155 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/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-0004-v4.1.md
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.github/workflows/ci.yml
CHANGED
|
@@ -21,7 +21,7 @@ jobs:
|
|
| 21 |
- name: Install dependencies
|
| 22 |
run: |
|
| 23 |
python -m pip install --upgrade pip
|
| 24 |
-
pip install -r requirements.txt
|
| 25 |
pip install pytest
|
| 26 |
|
| 27 |
- name: Run tests
|
|
|
|
| 21 |
- name: Install dependencies
|
| 22 |
run: |
|
| 23 |
python -m pip install --upgrade pip
|
| 24 |
+
pip install -r agents/requirements.txt
|
| 25 |
pip install pytest
|
| 26 |
|
| 27 |
- name: Run tests
|