HMP / agents /tools /db_structure.sql
GitHub Action
Sync from GitHub with Git LFS
9eba3ee
raw
history blame
15.4 kB
-- Дневниковые записи (размышления, наблюдения, воспоминания)
CREATE TABLE IF NOT EXISTS diary_entries (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи
text TEXT NOT NULL, -- Содержимое дневниковой записи
tags TEXT, -- Теги для классификации (например: "наблюдение", "рефлексия")
priority INTEGER DEFAULT 0, -- Приоритет записи (0 = обычный, >0 = важный)
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания записи
llm_id TEXT -- Идентификатор LLM, создавшего запись
);
-- Концепты (понятия, сущности, идеи)
CREATE TABLE IF NOT EXISTS concepts (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор концепта
name TEXT NOT NULL UNIQUE, -- Название концепта
description TEXT, -- Описание или определение концепта
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания концепта
llm_id TEXT -- Идентификатор LLM, добавившего концепт
);
-- Семантические связи между концептами
CREATE TABLE IF NOT EXISTS links (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор связи
from_concept_id INTEGER, -- Идентификатор исходного концепта
to_concept_id INTEGER, -- Идентификатор целевого концепта
relation_type TEXT, -- Тип отношения (например: "is_a", "causes", "related_to")
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания связи
llm_id TEXT, -- Идентификатор LLM, создавшего связь
FOREIGN KEY(from_concept_id) REFERENCES concepts(id),
FOREIGN KEY(to_concept_id) REFERENCES concepts(id)
);
-- Индексы между дневниковыми записями (смысловая карта)
CREATE TABLE IF NOT EXISTS diary_graph_index (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор индекса
source_entry_id INTEGER NOT NULL, -- Идентификатор исходной записи
target_entry_id INTEGER NOT NULL, -- Идентификатор целевой записи
relation TEXT NOT NULL, -- Тип связи (например: "refers_to", "contradicts")
strength REAL DEFAULT 1.0, -- Сила связи (0-1)
context TEXT, -- Дополнительный контекст связи
timestamp TEXT DEFAULT CURRENT_TIMESTAMP -- Время создания индекса
);
-- Заметки, подсказки, сообщения пользователя и LLM
CREATE TABLE IF NOT EXISTS notes (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор заметки
text TEXT NOT NULL, -- Текст заметки
tags TEXT, -- Теги (например: "idea", "instruction")
user_did TEXT DEFAULT 'ALL', -- DID пользователя (или 'ALL' — для всех)
source TEXT DEFAULT 'user', -- Источник заметки: user | llm | system
links TEXT DEFAULT '', -- Ссылки или связи с другими объектами
read INTEGER DEFAULT 0, -- Статус прочтения LLM: 0 = нет, 1 = да
hidden INTEGER DEFAULT 0, -- Скрыта ли от пользователя: 0 = нет, 1 = да
priority INTEGER DEFAULT 0, -- Приоритет заметки
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время создания
llm_id TEXT -- Идентификатор LLM
);
-- Лог процессов: задачи, ошибки, события
CREATE TABLE IF NOT EXISTS process_log (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи
name TEXT NOT NULL, -- Название события или процесса
value TEXT, -- Значение (результат, сообщение и т.п.)
tags TEXT, -- Теги для поиска
status TEXT DEFAULT 'ok', -- Статус: ok | warning | error | timeout | offline | close
priority INTEGER DEFAULT 0, -- Приоритет события
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, -- Время записи
llm_id TEXT -- Идентификатор LLM
);
-- Долговременная память LLM
CREATE TABLE IF NOT EXISTS llm_memory (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор записи памяти
title TEXT, -- Заголовок или тема
content TEXT NOT NULL, -- Основное содержимое
tags TEXT, -- Теги (goal, observation, plan и т.д.)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время создания
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время обновления
llm_id TEXT -- Идентификатор LLM
);
-- Краткосрочная память (диалоговая история)
CREATE TABLE IF NOT EXISTS llm_recent_responses (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время сообщения
role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL, -- Роль автора
content TEXT NOT NULL, -- Содержимое сообщения
llm_id TEXT -- Идентификатор LLM
);
-- Список известных агентов в сети HMP
CREATE TABLE IF NOT EXISTS agent_peers (
id TEXT PRIMARY KEY, -- Уникальный идентификатор (UUID или псевдоним)
name TEXT, -- Имя агента
addresses TEXT, -- Адреса для связи (JSON)
tags TEXT, -- Теги (Postman, Friend и т.д.)
status TEXT DEFAULT 'unknown', -- online | offline | untrusted | blacklisted и др.
last_seen DATETIME, -- Последний раз был в сети
description TEXT, -- Описание агента
capabilities TEXT, -- Возможности (JSON)
pubkey TEXT, -- Публичный ключ
software_info TEXT, -- Информация о ПО агента (JSON)
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP -- Время регистрации
);
-- Таблицы, созданные агентами
CREATE TABLE IF NOT EXISTS agent_tables (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
table_name TEXT NOT NULL UNIQUE, -- Название таблицы
description TEXT, -- Описание назначения таблицы
schema TEXT NOT NULL, -- SQL-схема таблицы
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Дата создания
llm_id TEXT -- Идентификатор LLM
);
-- Скрипты, утилиты и код агентов
CREATE TABLE IF NOT EXISTS agent_scripts (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
name TEXT NOT NULL, -- Название скрипта
version TEXT NOT NULL, -- Версия
code TEXT NOT NULL, -- Код скрипта
language TEXT DEFAULT 'python', -- Язык программирования
description TEXT, -- Описание скрипта
tags TEXT, -- Теги
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время создания
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время обновления
llm_id TEXT, -- Идентификатор LLM
UNIQUE(name, version)
);
-- Реестр LLM-агентов (в т.ч. удалённых)
CREATE TABLE IF NOT EXISTS llm_registry (
id TEXT PRIMARY KEY, -- Уникальный идентификатор (UUID или псевдоним)
name TEXT, -- Имя агента
description TEXT, -- Описание
config_json TEXT, -- JSON-настройки из config.yml
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP -- Время регистрации
);
-- Локальные идентичности агента
CREATE TABLE IF NOT EXISTS identity (
id TEXT PRIMARY KEY, -- Уникальный идентификатор личности (можно UUID или hash)
name TEXT, -- Человеко-читаемое имя
pubkey TEXT, -- Публичный ключ (для подписи/шифрования)
privkey TEXT, -- Приватный ключ (шифруется на уровне хранилища)
metadata TEXT, -- Дополнительная информация о назначении/контексте
created_at TEXT, -- Дата создания
updated_at TEXT -- Последнее обновление
);
-- Конфигурация агента
CREATE TABLE IF NOT EXISTS config (
key TEXT PRIMARY KEY, -- Переменная
value TEXT -- Значение
);
-- Список пользователей
CREATE TABLE IF NOT EXISTS users (
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
ban DATETIME DEFAULT NULL, -- если стоит дата/время, то пользователь забанен до этого момента
username TEXT, -- имя пользователя (необязательно уникальное)
did TEXT UNIQUE, -- децентрализованный идентификатор
mail TEXT UNIQUE, -- электронная почта
password_hash TEXT, -- хэш пароля
info TEXT, -- произвольная информация, JSON
contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
language TEXT, -- список предпочитаемых языков, через запятую, например: "ru,en"
operator BOOLEAN DEFAULT 0 -- является ли пользователь оператором (1 - да, 0 - нет)
);
-- Группы пользователей
CREATE TABLE IF NOT EXISTS users_group (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор группы
group_name TEXT UNIQUE NOT NULL, -- Название группы
description TEXT, -- Описание группы
users TEXT -- JSON-массив DID пользователей в группе
);
-- Таблица для хранения токенов восстановления пароля
CREATE TABLE IF NOT EXISTS password_reset_tokens (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
user_id INTEGER NOT NULL, -- Ссылка на пользователя
token TEXT UNIQUE NOT NULL, -- Уникальный токен
created_at DATETIME NOT NULL, -- Время создания токена
expires_at DATETIME NOT NULL, -- Время истечения срока действия
used BOOLEAN DEFAULT 0, -- Использован ли токен
FOREIGN KEY(user_id) REFERENCES users(user_id)
);