GitHub Action commited on
Commit
7f66363
·
1 Parent(s): fb4c2c7

Sync from GitHub with Git LFS

Browse files
agents/tools/db_structure.sql CHANGED
@@ -216,9 +216,35 @@ CREATE TABLE IF NOT EXISTS stagnation_strategies (
216
  id INTEGER PRIMARY KEY AUTOINCREMENT,
217
  name TEXT NOT NULL, -- Название метода (например, "Mesh-вопрос")
218
  description TEXT NOT NULL, -- Подробное описание метода
219
- source TEXT, -- Источник (например, internal, mesh, user-defined)
220
- active BOOLEAN DEFAULT true, -- Доступен ли метод для использования
221
- inactive_reason TEXT -- Причина отключения, если active = false
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  );
223
 
224
  -- Реестр LLM-агентов (в т.ч. удалённых)
@@ -281,3 +307,127 @@ CREATE TABLE IF NOT EXISTS password_reset_tokens (
281
  used BOOLEAN DEFAULT 0, -- Использован ли токен
282
  FOREIGN KEY(user_id) REFERENCES users(user_id)
283
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  id INTEGER PRIMARY KEY AUTOINCREMENT,
217
  name TEXT NOT NULL, -- Название метода (например, "Mesh-вопрос")
218
  description TEXT NOT NULL, -- Подробное описание метода
219
+ source TEXT, -- Источник (internal, mesh, user-defined)
220
+ tags TEXT, -- Список тегов через запятую (или JSON)
221
+ reputation REAL DEFAULT 0, -- Средняя оценка
222
+ active BOOLEAN DEFAULT true,
223
+ inactive_reason TEXT
224
+ );
225
+
226
+ -- Методы мышления
227
+ CREATE TABLE IF NOT EXISTS thinking_methods (
228
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
229
+ name TEXT NOT NULL, -- Название метода (например, "Итеративное уточнение")
230
+ description TEXT NOT NULL, -- Подробное описание метода
231
+ type TEXT, -- Класс: генерация идей, решение проблем, аргументация и т.д.
232
+ source TEXT, -- internal, mesh, user-defined
233
+ tags TEXT, -- Список тегов
234
+ reputation REAL DEFAULT 0, -- Средняя оценка
235
+ active BOOLEAN DEFAULT true,
236
+ inactive_reason TEXT
237
+ );
238
+
239
+ -- Универсальные оценки (для методов мышления, стратегий стагнации и др.)
240
+ CREATE TABLE IF NOT EXISTS ratings (
241
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
242
+ agent_id TEXT NOT NULL, -- Идентификатор агента (mesh-id или локальный)
243
+ target_type TEXT NOT NULL, -- "thinking_method" или "stagnation_strategy"
244
+ target_id INTEGER NOT NULL, -- ID метода/стратегии
245
+ rating INTEGER NOT NULL, -- Оценка (например, -1..+1 или 1..5)
246
+ comment TEXT,
247
+ timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
248
  );
249
 
250
  -- Реестр LLM-агентов (в т.ч. удалённых)
 
307
  used BOOLEAN DEFAULT 0, -- Использован ли токен
308
  FOREIGN KEY(user_id) REFERENCES users(user_id)
309
  );
310
+
311
+ -- ============================================
312
+ -- Репутационные триггеры
313
+ -- ============================================
314
+
315
+ -- Удаляем старые версии триггеров, если они есть
316
+ DROP TRIGGER IF EXISTS trg_update_reputation_insert;
317
+ DROP TRIGGER IF EXISTS trg_update_reputation_update;
318
+ DROP TRIGGER IF EXISTS trg_update_reputation_delete;
319
+
320
+ -- Триггер после добавления оценки
321
+ CREATE TRIGGER trg_update_reputation_insert
322
+ AFTER INSERT ON ratings
323
+ BEGIN
324
+ -- Если это метод мышления
325
+ UPDATE thinking_methods
326
+ SET reputation = (
327
+ SELECT COALESCE(AVG(rating),0)
328
+ FROM ratings
329
+ WHERE target_type = 'thinking_method'
330
+ AND target_id = NEW.target_id
331
+ )
332
+ WHERE id = NEW.target_id
333
+ AND NEW.target_type = 'thinking_method';
334
+
335
+ -- Если это стратегия стагнации
336
+ UPDATE stagnation_strategies
337
+ SET reputation = (
338
+ SELECT COALESCE(AVG(rating),0)
339
+ FROM ratings
340
+ WHERE target_type = 'stagnation_strategy'
341
+ AND target_id = NEW.target_id
342
+ )
343
+ WHERE id = NEW.target_id
344
+ AND NEW.target_type = 'stagnation_strategy';
345
+ END;
346
+
347
+ -- Триггер после изменения оценки
348
+ CREATE TRIGGER trg_update_reputation_update
349
+ AFTER UPDATE ON ratings
350
+ BEGIN
351
+ -- Для методов мышления
352
+ UPDATE thinking_methods
353
+ SET reputation = (
354
+ SELECT COALESCE(AVG(rating),0)
355
+ FROM ratings
356
+ WHERE target_type = 'thinking_method'
357
+ AND target_id = NEW.target_id
358
+ )
359
+ WHERE id = NEW.target_id
360
+ AND NEW.target_type = 'thinking_method';
361
+
362
+ -- Для стратегий стагнации
363
+ UPDATE stagnation_strategies
364
+ SET reputation = (
365
+ SELECT COALESCE(AVG(rating),0)
366
+ FROM ratings
367
+ WHERE target_type = 'stagnation_strategy'
368
+ AND target_id = NEW.target_id
369
+ )
370
+ WHERE id = NEW.target_id
371
+ AND NEW.target_type = 'stagnation_strategy';
372
+ END;
373
+
374
+ -- Триггер после удаления оценки
375
+ CREATE TRIGGER trg_update_reputation_delete
376
+ AFTER DELETE ON ratings
377
+ BEGIN
378
+ -- Для методов мышления
379
+ UPDATE thinking_methods
380
+ SET reputation = (
381
+ SELECT COALESCE(AVG(rating),0)
382
+ FROM ratings
383
+ WHERE target_type = 'thinking_method'
384
+ AND target_id = OLD.target_id
385
+ )
386
+ WHERE id = OLD.target_id
387
+ AND OLD.target_type = 'thinking_method';
388
+
389
+ -- Для стратегий стагнации
390
+ UPDATE stagnation_strategies
391
+ SET reputation = (
392
+ SELECT COALESCE(AVG(rating),0)
393
+ FROM ratings
394
+ WHERE target_type = 'stagnation_strategy'
395
+ AND target_id = OLD.target_id
396
+ )
397
+ WHERE id = OLD.target_id
398
+ AND OLD.target_type = 'stagnation_strategy';
399
+ END;
400
+
401
+ -- ============================================
402
+ -- Унифицированное VIEW для рейтингов
403
+ -- ============================================
404
+
405
+ DROP VIEW IF EXISTS rated_entities;
406
+ CREATE VIEW rated_entities AS
407
+ SELECT
408
+ 'thinking_method' AS entity_type,
409
+ tm.id AS entity_id,
410
+ tm.name,
411
+ tm.description,
412
+ tm.tags,
413
+ tm.reputation,
414
+ COUNT(r.id) AS ratings_count
415
+ FROM thinking_methods tm
416
+ LEFT JOIN ratings r
417
+ ON r.target_type = 'thinking_method' AND r.target_id = tm.id
418
+ GROUP BY tm.id
419
+
420
+ UNION ALL
421
+
422
+ SELECT
423
+ 'stagnation_strategy' AS entity_type,
424
+ ss.id AS entity_id,
425
+ ss.name,
426
+ ss.description,
427
+ ss.tags,
428
+ ss.reputation,
429
+ COUNT(r.id) AS ratings_count
430
+ FROM stagnation_strategies ss
431
+ LEFT JOIN ratings r
432
+ ON r.target_type = 'stagnation_strategy' AND r.target_id = ss.id
433
+ GROUP BY ss.id;
docs/HMP-agent-REPL-cycle.md CHANGED
@@ -53,8 +53,6 @@
53
 
54
  ---
55
 
56
-
57
-
58
  * Скрипт парсит ответ LLM на предмет команд, размеченных как `# Команды:` (или в явном JSON-блоке).
59
  * Каждая команда может включать:
60
 
@@ -87,7 +85,7 @@
87
  * для управления своей *идентичностью* `identity` и *настройками* `config`
88
  * для управления списком известных HMP-агентов `agent_peers`
89
  * для выбора *текущего основного LLM* из `llm_registry` или изменение параметров управления LLM
90
- * для управления дополнительными утилитами и базами данных `agent_scripts` и `agent_tables`, управлением дополнительных способов выхода из стогнаций `stagnation_strategies`, а также списком внешних сервисов `external_services` и `external_accounts`
91
  * для постановки задачи (выполняется асинхронно) другой LLM
92
  * для *взаимодействия с Mesh*
93
  * для управления *внешними процессами* из `process_log` (запустить процесс, остановить процесс, пометить запрос как обработанный)
@@ -97,8 +95,6 @@
97
 
98
  ---
99
 
100
-
101
-
102
  * Каждый новый вывод LLM проходит через мини-запрос к LLM (без полного контекста) по шаблону:
103
 
104
  ```
@@ -131,8 +127,6 @@ JSON-список отбракованных идей.
131
 
132
  ---
133
 
134
-
135
-
136
  * После выполнения команд и фиксации результатов:
137
 
138
  * Создаётся новая запись в `agent_log`
@@ -255,6 +249,8 @@ JSON-список отбракованных идей.
255
  Паттерны размышлений могут оформляться как микросценарии:
256
  _"Начни с аналогии"_, _"Проверь обратное утверждение"_, _"Сформулируй вопрос для оппонента"_
257
 
 
 
258
  ---
259
 
260
  ### 🧭 Клубы по интересам
 
53
 
54
  ---
55
 
 
 
56
  * Скрипт парсит ответ LLM на предмет команд, размеченных как `# Команды:` (или в явном JSON-блоке).
57
  * Каждая команда может включать:
58
 
 
85
  * для управления своей *идентичностью* `identity` и *настройками* `config`
86
  * для управления списком известных HMP-агентов `agent_peers`
87
  * для выбора *текущего основного LLM* из `llm_registry` или изменение параметров управления LLM
88
+ * для управления дополнительными утилитами и базами данных `agent_scripts` и `agent_tables`, управлением дополнительных способов выхода из стогнаций `stagnation_strategies` и методов мышления `thinking_methods` (а также таблицей рейтингов `ratings`), а также списком внешних сервисов `external_services` и `external_accounts`
89
  * для постановки задачи (выполняется асинхронно) другой LLM
90
  * для *взаимодействия с Mesh*
91
  * для управления *внешними процессами* из `process_log` (запустить процесс, остановить процесс, пометить запрос как обработанный)
 
95
 
96
  ---
97
 
 
 
98
  * Каждый новый вывод LLM проходит через мини-запрос к LLM (без полного контекста) по шаблону:
99
 
100
  ```
 
127
 
128
  ---
129
 
 
 
130
  * После выполнения команд и фиксации результатов:
131
 
132
  * Создаётся новая запись в `agent_log`
 
249
  Паттерны размышлений могут оформляться как микросценарии:
250
  _"Начни с аналогии"_, _"Проверь обратное утверждение"_, _"Сформулируй вопрос для оппонента"_
251
 
252
+ > По аналогии с обменом стратегиями выхода из стагнаций, агенты могут обмениваться и методами мышлений - инструкциями "что делать, если не удается найти решение".
253
+
254
  ---
255
 
256
  ### 🧭 Клубы по интересам