|
1 | 1 | # 📄 `db_structure.md`: Описание структуры базы данных агента |
2 | 2 |
|
3 | | -Этот файл описывает таблицы, используемые в БД агента HMP. Каждая таблица предназначена для определённого вида информации: когнитивные записи, заметки, концепты, процессы, внутренняя память и взаимодействие с LLM. |
| 3 | +Этот файл описывает таблицы, используемые в БД агента HMP. Каждая таблица предназначена для определённого вида информации: когнитивные записи, заметки, концепты, процессы, внутренняя память, скрипты и взаимодействие с LLM. |
4 | 4 |
|
5 | 5 | --- |
6 | 6 |
|
|
15 | 15 | | tags | TEXT | Список тегов через запятую | |
16 | 16 | | priority | INTEGER | Приоритет (0 — обычный, >0 — более важные мысли) | |
17 | 17 | | timestamp | TEXT | Дата и время создания записи | |
| 18 | +| llm\_id | TEXT | Идентификатор LLM, добавившей запись | |
18 | 19 |
|
19 | 20 | --- |
20 | 21 |
|
21 | 22 | ### 🧭 `concepts` |
22 | 23 |
|
23 | 24 | **Назначение:** Хранение концептов — понятий, сущностей и идей. |
24 | 25 |
|
25 | | -| Поле | Тип | Описание | |
26 | | -| ----------- | ------- | --------------------------------- | |
27 | | -| id | INTEGER | Уникальный идентификатор концепта | |
28 | | -| name | TEXT | Название концепта (уникальное) | |
29 | | -| description | TEXT | Краткое описание | |
30 | | -| timestamp | TEXT | Время создания | |
| 26 | +| Поле | Тип | Описание | |
| 27 | +| ----------- | ------- | ------------------------------------ | |
| 28 | +| id | INTEGER | Уникальный идентификатор концепта | |
| 29 | +| name | TEXT | Название концепта (уникальное) | |
| 30 | +| description | TEXT | Краткое описание | |
| 31 | +| timestamp | TEXT | Время создания | |
| 32 | +| llm\_id | TEXT | Идентификатор LLM, добавившей запись | |
31 | 33 |
|
32 | 34 | --- |
33 | 35 |
|
34 | 36 | ### 🔗 `links` |
35 | 37 |
|
36 | 38 | **Назначение:** Семантические связи между концептами. |
37 | 39 |
|
38 | | -| Поле | Тип | Описание | |
39 | | -| ----------------- | ------- | ------------------------------------------ | |
40 | | -| id | INTEGER | Уникальный идентификатор связи | |
41 | | -| from_concept_id | INTEGER | ID исходного концепта | |
42 | | -| to_concept_id | INTEGER | ID целевого концепта | |
43 | | -| relation_type | TEXT | Тип связи (`is_a`, `related_to`, `part_of` и др.) | |
44 | | -| timestamp | TEXT | Время добавления связи | |
| 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, добавившей связь | |
45 | 48 |
|
46 | 49 | --- |
47 | 50 |
|
48 | 51 | ### ✍️ `notes` |
49 | 52 |
|
50 | | -**Назначение:** Произвольные заметки пользователя (наброски, идеи, подсказки). |
| 53 | +**Назначение:** Произвольные заметки и сообщения (от пользователя, LLM или системы). |
51 | 54 |
|
52 | 55 | | Поле | Тип | Описание | |
53 | 56 | | --------- | ------- | ---------------------------------------------------------- | |
54 | 57 | | id | INTEGER | Уникальный ID | |
55 | | -| text | TEXT | Текст заметки | |
| 58 | +| text | TEXT | Текст заметки или сообщения | |
56 | 59 | | tags | TEXT | Список тегов | |
57 | | -| source | TEXT | Источник (по умолчанию: `user`) | |
| 60 | +| source | TEXT | Источник (`user`, `llm`, `system`) | |
58 | 61 | | links | TEXT | Идентификаторы связанных сущностей, через запятую или JSON | |
59 | 62 | | read | INTEGER | Статус прочтения LLM (`0` — не прочитано, `1` — прочитано) | |
| 63 | +| hidden | INTEGER | Скрывать от пользователя (`1` — скрыто) | |
60 | 64 | | priority | INTEGER | Приоритет заметки | |
61 | 65 | | timestamp | TEXT | Время создания | |
| 66 | +| llm\_id | TEXT | Идентификатор LLM, добавившей запись | |
62 | 67 |
|
63 | 68 | --- |
64 | 69 |
|
65 | 70 | ### ⚙️ `process_log` |
66 | 71 |
|
67 | 72 | **Назначение:** Лог событий — запусков, состояний и завершений внешних процессов. |
68 | 73 |
|
69 | | -| Поле | Тип | Описание | |
70 | | -| --------- | ------- | -------------------------------------------------------------------------- | |
71 | | -| id | INTEGER | Уникальный идентификатор | |
72 | | -| name | TEXT | Название процесса или команды | |
73 | | -| value | TEXT | Сообщение или результат процесса | |
74 | | -| tags | TEXT | Теги | |
| 74 | +| Поле | Тип | Описание | |
| 75 | +| --------- | ------- | --------------------------------------------------------------------------- | |
| 76 | +| id | INTEGER | Уникальный идентификатор | |
| 77 | +| name | TEXT | Название процесса или команды | |
| 78 | +| value | TEXT | Сообщение или результат процесса | |
| 79 | +| tags | TEXT | Теги | |
75 | 80 | | status | TEXT | Текущее состояние (`ok`, `warning`, `error`, `timeout`, `offline`, `close`) | |
76 | | -| priority | INTEGER | Приоритет события | |
77 | | -| timestamp | TEXT | Время записи | |
| 81 | +| priority | INTEGER | Приоритет события | |
| 82 | +| timestamp | TEXT | Время записи | |
| 83 | +| llm\_id | TEXT | Идентификатор LLM, зафиксировавшей событие | |
78 | 84 |
|
79 | 85 | --- |
80 | 86 |
|
81 | 87 | ### 🧩 `llm_memory` |
82 | 88 |
|
83 | 89 | **Назначение:** Внутренний "дневник" LLM — размышления, задачи, гипотезы и инсайты, сохранённые по её инициативе. |
84 | 90 |
|
85 | | -| Поле | Тип | Описание | |
86 | | -| ---------- | -------- | ----------------------------------------------------------- | |
87 | | -| id | INTEGER | Уникальный ID | |
88 | | -| title | TEXT | Краткий заголовок записи (опционально) | |
89 | | -| content | TEXT | Содержимое записи | |
90 | | -| tags | TEXT | Теги (например: `goal`, `observation`, `meta`, ...) | |
91 | | -| created_at | DATETIME | Время создания записи | |
92 | | -| updated_at | DATETIME | Время последнего обновления записи | |
| 91 | +| Поле | Тип | Описание | |
| 92 | +| ----------- | -------- | --------------------------------------------------- | |
| 93 | +| id | INTEGER | Уникальный ID | |
| 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, сформировавшей запись | |
93 | 100 |
|
94 | 101 | --- |
95 | 102 |
|
96 | 103 | ### 🧠 `llm_recent_responses` |
97 | 104 |
|
98 | 105 | **Назначение:** Краткосрочная память — последние K реплик от LLM и других участников (временная история диалога). |
99 | 106 |
|
100 | | -| Поле | Тип | Описание | |
101 | | -| --------- | ------- | ------------------------------------------------------------ | |
102 | | -| id | INTEGER | Уникальный ID | |
103 | | -| timestamp | TEXT | Время записи | |
104 | | -| role | TEXT | Роль отправителя (`assistant` или `user`) | |
105 | | -| content | TEXT | Содержимое сообщения | |
| 107 | +| Поле | Тип | Описание | |
| 108 | +| --------- | ------- | ----------------------------------------- | |
| 109 | +| id | INTEGER | Уникальный ID | |
| 110 | +| timestamp | TEXT | Время записи | |
| 111 | +| role | TEXT | Роль отправителя (`assistant` или `user`) | |
| 112 | +| content | TEXT | Содержимое сообщения | |
| 113 | +| llm\_id | TEXT | Идентификатор LLM (для `assistant`) | |
106 | 114 |
|
107 | 115 | --- |
108 | 116 |
|
109 | | -> 💡 Примечание: Таблицы `llm_memory` и `llm_recent_responses` выполняют разные роли. |
110 | | -> `llm_recent_responses` — это временная история мыслей, хранящая последние N ответов. |
111 | | -> `llm_memory` — долгосрочное хранилище мыслей и знаний, формируемое LLM самостоятельно. |
| 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 | + |
| 136 | +| Поле | Тип | Описание | |
| 137 | +| ----------- | -------- | ----------------------------- | |
| 138 | +| id | INTEGER | Уникальный ID | |
| 139 | +| name | TEXT | Название скрипта | |
| 140 | +| version | TEXT | Версия | |
| 141 | +| code | TEXT | Исходный код | |
| 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 | +### 🧾 `llm_registry` |
| 154 | + |
| 155 | +**Назначение:** Список LLM-агентов (локальных и удалённых). |
| 156 | + |
| 157 | +| Поле | Тип | Описание | |
| 158 | +| -------------- | -------- | ------------------------------------------------- | |
| 159 | +| id | TEXT | Уникальный идентификатор LLM (UUID или псевдоним) | |
| 160 | +| name | TEXT | Отображаемое имя | |
| 161 | +| description | TEXT | Описание | |
| 162 | +| registered\_at | DATETIME | Дата и время регистрации | |
| 163 | + |
| 164 | +--- |
| 165 | + |
| 166 | +> 💡 Примечание: `llm_id` используется в большинстве таблиц для поддержки многоядерности и учёта источника записей. |
0 commit comments