feat(pegas-memory): Tier-1 self-improvement tools (commit + staleness)
- memory_commit: closes the 'commit hole' — writes verified answers from closed gaps back into atoms (mandatory dedup); leaves gap open if no verified answer exists. Reads verified status from PostgreSQL (source of truth), not the Qdrant projection. - memory_stale: staleness guard with two signals — content-staleness (re-fetch + LLM verdict, needs proxy for foreign sites) and age-staleness (proxy-free fallback by pm_document.fetched_at, max_age_days). - db: populate pm_document.fetched_at on upsert (freshness signal). - docs: README/AGENTS/ARCHITECTURE/EXAMPLES updated (18 tools). - self_improve.py: new module (227 lines).
This commit is contained in:
1 parent
a4c4a766c1
commit
eca8a11e23
8 files changed
+439
-6
No files matched your search
+68
-1
@@ -92,6 +92,73 @@ outbox — CDC-журнал для синка в Qdrant + Memgraph
|
||||
- Memgraph in-memory: объём графа ограничен RAM.
|
||||
- Дистилляция зависит от качества локальной LLM — нужна верификация.
|
||||
|
||||
## Как проверять
|
||||
## Самообучение (self-improvement) — статус и планы
|
||||
|
||||
### Что работает (4 механизма, но НЕ замкнутый loop)
|
||||
|
||||
1. **Верификация** (`verify_atom`/`memory_verify` + `verify.py`). LLM self-critique
|
||||
(`duplicate | corroborates | contradicts`) + **межисточная конфирмация** (≥1 другой
|
||||
`doc_id`, cosine ≥ 0.90) → ставка растёт, статус `verified`. Самое зрелое звено.
|
||||
2. **Логическая инференция** (`memory_infer` + `inference.py`). Применение правил к рёбрам
|
||||
графа до fixpoint (`imports → depends_on` и т.д.). ⚠️ Даст **только связи**, не новые факты.
|
||||
Правила **статичные/вручную написанные**, новых не выводит сама.
|
||||
3. **Синтез контекста** (`memory_get_context`). Ищет Qdrant, кластеризует + суммирует атомы.
|
||||
Может **создавать gap** из исходного текста → есть *реактивное* появление вопроса из источника.
|
||||
4. **Эпизодические следы** (`pm_episodic_trace`). План/действие/наблюдение/рефлексия —
|
||||
отдельно от БЗ. Самый «рефлексивный», но **условный**, не привязанный к gap.
|
||||
|
||||
### Что не хватает (дыры в петлях, а не в примитивах)
|
||||
|
||||
| Пробел | Почему критично |
|
||||
|---|---|
|
||||
| **① Цепочка gap↛answer («дыра commit»)** | При закрытии gap **ответ не автоматически
|
||||
пишется обратно в атомы** → знания улетучиваются, приходится пере-исследовать. |
|
||||
| **② Самообучение схемы инференции** | Ничего не *предлагает новые правила* из повторяющихся
|
||||
`verified`-атомов. Это как раз слабое место Hermes-аналога. |
|
||||
| **③ Сталкнутость/забвение (staleness guard)** | `verify` ставит `verified`, но **ничто не
|
||||
помечает `stale`** пере-проверкой по свежему источнику. Путь →`stale` не идёт автоматически. |
|
||||
| **④ Поверхность противоречий** | `verify` ловит конфликт только в окрестности атома. Ничего
|
||||
не сканирует весь граф → противоречия не переходят в gap автоматически. |
|
||||
| **⑤ Процедурная/рецепт-память** | Повторяющиеся успешные воркфлоу не ловятся как переиспользуемые атомы. |
|
||||
| **⑥ Пассивное создание gap** | Gap создаются через `add_gap` (вручную) или из `memory_get_context`.
|
||||
Нет авто-обнаружения из не-верифицированного/переносного контента. |
|
||||
|
||||
### Приоритет
|
||||
|
||||
Hermes-анализ показал: Pegas сильна в **«detect»** (verify, infer), слаба в **«commit»** и
|
||||
**«maintain»**. Слабые места — **feedback-петли**, а не примитивы. Поэтому максимальный выигрыш:
|
||||
① дыра «commit» × ③ гвард сталкнутости × ② самообучение правил инференции — это **закрывает loop**.
|
||||
|
||||
### Планируемые улучшения (Tier)
|
||||
|
||||
- **Tier 1 — высокий приоритет, безопасно / small**
|
||||
- ① **Закрыть дыру** — после `verify`, подняв атомы из gap, запустить синтез обратно в
|
||||
`memory_ingest/synthesis` (письмо верифицированного ответа в атомы).
|
||||
- ③ **Гвард сталкнутости** — `update_status`: пере-`web_search` по URL/date атома;
|
||||
противоречит/устарел → `stale`. Внедряет путь →`stale`, который сейчас не ходит.
|
||||
- **Tier 2 — средний приоритет**
|
||||
- ② **Самообучение правил инференции** — `memory_infer` **предлагает кандидаты**
|
||||
`logical_rule` на ревью (никогда не применяет автоматически).
|
||||
- ⑤ **Атомные паттерны действий** — агент действует (это я через `mcp__pegas-memory__*`),
|
||||
поэтому повторы успешных `/запрос` или воркфлоу ≥N раз с `verified`-результатом →
|
||||
**атомный** паттерн-рецепт (не файлы Hermes, а атомно с dedup).
|
||||
- **Tier 3 — структурные**
|
||||
- ④ **Скунт-скан** — периодический бэч-проход графа на противоречия → авто gap.
|
||||
- ⑥ **Авто-обнаружение gap** — `verify` открывает gap на конфликт/дыру в источнике.
|
||||
|
||||
### Atom-efficiency guardrail (обязательное)
|
||||
|
||||
Чтобы self-improvement **не скатился в гермесовский файловый балласт**, все записи и
|
||||
обновления подчинены лимитам эффективности атомной памяти (преимущество Peras над Hermes):
|
||||
|
||||
- **Dedup обязателен** при записи (`memory_store`/synthesis): cosine ≥ 0.90, без дублей.
|
||||
- **Лимит web/пере-записей** (staleness-③): batchами + сэмплом, не per-atom без порога.
|
||||
- **Bound на рост графа/атомов**: Memgraph in-memory → RAM-лимит, авто-`stale`/архив старых.
|
||||
- **Атомно, а не файльно**: паттерны-рецепты хранятся как типизированные атомы, не как
|
||||
накопитель markdown-файлов (как у Hermes) → no prompt-bloat.
|
||||
|
||||
### Как проверять
|
||||
- recall@k на реальных запросах против существующей `knowledge_base` (bge-m3 384-dim).
|
||||
- Latency эмбеддинга + потребление GPU параллельно с LLM (a2000 12 GB).
|
||||
- **Самоеобучение**: доля авто-закрытых gap «commit»-петлёй, доля атомов, ушедших в `stale`
|
||||
за квартал, доля предложенных → принято правил инференции (ревью-соотношение).
|
||||
Reference in new issue
Block a user