GitHub Action
commited on
Commit
·
c0923bd
1
Parent(s):
cc31e9a
Sync from GitHub with Git LFS
Browse files- agents/tools/db_structure.sql +10 -6
- docs/HMP-agent-REPL-cycle.md +27 -11
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
| 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 |
-
*
|
| 95 |
-
|
| 96 |
-
* Включается **Anti-Stagnation Reflex**
|
| 97 |
-
* Повторяющиеся реплики не отправляются в `llm_recent_responses` повторно но туда добавляется краткая запись, фиксирующая, запуск **Anti-Stagnation Reflex**.
|
| 98 |
|
| 99 |
-
|
|
|
|
|
|
|
| 100 |
|
| 101 |
-
|
| 102 |
-
|
| 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 |
|