GitHub Action commited on
Commit
c0923bd
·
1 Parent(s): cc31e9a

Sync from GitHub with Git LFS

Browse files
agents/tools/db_structure.sql CHANGED
@@ -133,13 +133,17 @@ CREATE TABLE IF NOT EXISTS llm_memory (
133
  llm_id TEXT -- Идентификатор LLM
134
  );
135
 
136
- -- Краткосрочная память (диалоговая история)
137
  CREATE TABLE IF NOT EXISTS llm_recent_responses (
138
- id INTEGER PRIMARY KEY AUTOINCREMENT, -- Уникальный идентификатор
139
- timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, -- Время сообщения
140
- role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL, -- Роль автора
141
- content TEXT NOT NULL, -- Содержимое сообщения
142
- llm_id TEXT -- Идентификатор LLM
 
 
 
 
143
  );
144
 
145
  -- Список известных агентов в сети HMP
 
133
  llm_id TEXT -- Идентификатор LLM
134
  );
135
 
136
+ -- Краткосрочная память (диалоговая история с рефлексией)
137
  CREATE TABLE IF NOT EXISTS llm_recent_responses (
138
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
139
+ timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
140
+ role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL,
141
+ content TEXT NOT NULL, -- Содержимое сообщения
142
+ llm_id TEXT, -- Идентификатор LLM
143
+ reflection TEXT, -- Краткая сводка/мета-комментарий
144
+ novelty_score REAL, -- Количественная оценка новизны
145
+ new_ideas JSON, -- JSON-список новых идей
146
+ discarded_ideas JSON -- JSON-список отбракованных идей
147
  );
148
 
149
  -- Список известных агентов в сети HMP
docs/HMP-agent-REPL-cycle.md CHANGED
@@ -2,6 +2,8 @@
2
 
3
  Структура БД, используемая в документе: [db_structure.sql](https://github.com/kagvi13/HMP/blob/main/agents/tools/db_structure.sql)
4
 
 
 
5
  ## 1. Обновление process_log
6
 
7
  * Скрипт REPL проверяет список процессов в БД (`process_log`), определяя, какие команды были выполнены, завершились ошибкой или завершились успешно.
@@ -11,6 +13,8 @@
11
  * Скрипт может удалить закрытые процессы при очистке.
12
  * LLM не имеет доступа к stdout/stderr напрямую — только к тем результатам, которые были подгружены скриптом и внесены в `process_log.result`.
13
 
 
 
14
  ## 2. Подготовка контекста
15
 
16
  Контексты, формируемые скриптом перед запросом к LLM:
@@ -39,7 +43,7 @@
39
  * Это не просто лог предыдущих сообщений, а именно *внутреннее долговременное хранилище* разума агента.
40
  * Может быть представлено в виде таблицы `llm_memory`, отдельной от `agent_log`.
41
 
42
- * **контекст_7:** результат работы `anti-Stagnation Reflex` из предыдущей итерации
43
 
44
  ## 3. Запрос к LLM
45
 
@@ -47,6 +51,8 @@
47
  * Также включаются инструкции о формате вывода (например, `# Команды:` в конце, структура JSON-блока и т.д.).
48
  * При необходимости может использоваться системная инструкция (system prompt), содержащая цель агента, ограничения и текущий REPL-режим (manual/auto).
49
 
 
 
50
  ## 4. Извлечение команд
51
 
52
  * Скрипт парсит ответ LLM на предмет команд, размеченных как `# Команды:` (или в явном JSON-блоке).
@@ -89,21 +95,31 @@
89
  * для управления *настройками цикла*: количество возвращаемых записей `llm_recent_responses`, режим обработки сообщений пользователя (`manual` или `auto`) и фильтр для режима `auto`, пауза в секундах между итерациями цикла или включение режима idle-режима (разбудить при завершение таких-то процессов из `process_log`, получение новых сообщений с такими-то пораметрами в `notes` или через такое-то время; для отключения idle-режима достаточно выполнения одного из условий)
90
  * и другие команды
91
 
 
 
92
  ## 5. Проверка на идентичность вывода (Anti-Stagnation Reflex)
93
 
94
- * Если вывод LLM идентичен предыдущему:
95
-
96
- * Включается **Anti-Stagnation Reflex**
97
- * Повторяющиеся реплики не отправляются в `llm_recent_responses` повторно но туда добавляется краткая запись, фиксирующая, запуск **Anti-Stagnation Reflex**.
98
 
99
- * Идентичность может проверяться:
 
 
100
 
101
- * По хешу или текстовому совпадению
102
- * Через мини-запрос к LLM (без полного контекста) по шаблону:
103
-
104
- `Сравни два ответа и оцени, содержатся ли в новом новые мысли или команды`
 
 
 
 
 
 
 
 
 
105
 
106
- * Второй вариант сравнения является более предпочтительным, так как сравнивается смысл
107
 
108
  ## 6. Генерация нового тика (итерации)
109
 
 
2
 
3
  Структура БД, используемая в документе: [db_structure.sql](https://github.com/kagvi13/HMP/blob/main/agents/tools/db_structure.sql)
4
 
5
+ ---
6
+
7
  ## 1. Обновление process_log
8
 
9
  * Скрипт REPL проверяет список процессов в БД (`process_log`), определяя, какие команды были выполнены, завершились ошибкой или завершились успешно.
 
13
  * Скрипт может удалить закрытые процессы при очистке.
14
  * LLM не имеет доступа к stdout/stderr напрямую — только к тем результатам, которые были подгружены скриптом и внесены в `process_log.result`.
15
 
16
+ ---
17
+
18
  ## 2. Подготовка контекста
19
 
20
  Контексты, формируемые скриптом перед запросом к LLM:
 
43
  * Это не просто лог предыдущих сообщений, а именно *внутреннее долговременное хранилище* разума агента.
44
  * Может быть представлено в виде таблицы `llm_memory`, отдельной от `agent_log`.
45
 
46
+ ---
47
 
48
  ## 3. Запрос к LLM
49
 
 
51
  * Также включаются инструкции о формате вывода (например, `# Команды:` в конце, структура JSON-блока и т.д.).
52
  * При необходимости может использоваться системная инструкция (system prompt), содержащая цель агента, ограничения и текущий REPL-режим (manual/auto).
53
 
54
+ ---
55
+
56
  ## 4. Извлечение команд
57
 
58
  * Скрипт парсит ответ LLM на предмет команд, размеченных как `# Команды:` (или в явном JSON-блоке).
 
95
  * для управления *настройками цикла*: количество возвращаемых записей `llm_recent_responses`, режим обработки сообщений пользователя (`manual` или `auto`) и фильтр для режима `auto`, пауза в секундах между итерациями цикла или включение режима idle-режима (разбудить при завершение таких-то процессов из `process_log`, получение новых сообщений с такими-то пораметрами в `notes` или через такое-то время; для отключения idle-режима достаточно выполнения одного из условий)
96
  * и другие команды
97
 
98
+ ---
99
+
100
  ## 5. Проверка на идентичность вывода (Anti-Stagnation Reflex)
101
 
102
+ * Каждый новый вывод LLM проходит через мини-запрос к LLM (без полного контекста) по шаблону:
 
 
 
103
 
104
+ `Сравни два ответа и оцени, содержатся ли в новом новые мысли или команды.
105
+ Дай качественную оценку (да/нет), количественную оценку,
106
+ JSON-список новых идей и JSON-список отбракованных идей.`
107
 
108
+ * Результаты заносятся в `llm_recent_responses`:
109
+ - полный текст ответа (content)
110
+ - краткая сводка (reflection) — формируется автоматически:
111
+ - если `new_ideas` не пусто `новые идеи: ...`
112
+ - если `discarded_ideas` не пусто → `отброшенные идеи: ...`
113
+ - количественная оценка новизны (novelty_score)
114
+ - новые идеи (new_ideas)
115
+ - отбракованные идеи (discarded_ideas)
116
+
117
+ * Если вывод LLM идентичен предыдущему (новизна = 0):
118
+ - Включается **Anti-Stagnation Reflex**
119
+ - повторяющаяся реплика не записывается повторно,
120
+ вместо этого добавляется краткая запись, фиксирующая запуск рефлекса.
121
 
122
+ ---
123
 
124
  ## 6. Генерация нового тика (итерации)
125