292 lines
14 KiB
Markdown
292 lines
14 KiB
Markdown
# Session: 2026-04-10 12:59:02 UTC
|
||
|
||
- **Session Key**: agent:main:telegram:slash:126472752
|
||
- **Session ID**: 21de1f37-d139-4b3e-aa81-c3a36a5c1687
|
||
- **Source**: webchat
|
||
|
||
## Conversation Summary
|
||
|
||
assistant: Отлично. Всё три уровня работают:
|
||
|
||
- **Test 1** — находит sessions (правила Dev): ✅
|
||
- **Test 2** — находит tasks/backlog-noisemap.md с оценкой 0.92: ✅
|
||
- **Test 3** — находит tasks/internet-orders/project.md с оценкой **0.96**: ✅
|
||
|
||
Теперь настоящий тест — через агентский инструмент прямо в этой сессии:
|
||
assistant: Работает через агентский инструмент тоже — Provider: qmd, оценки 0.93-0.96, источники из трёх разных мест (tasks/, memory.md, sessions).
|
||
|
||
**QMD полностью функционирует.** Система готова к работе 🌊
|
||
user: Sender (untrusted metadata):
|
||
```json
|
||
{
|
||
"label": "openclaw-control-ui",
|
||
"id": "openclaw-control-ui"
|
||
}
|
||
```
|
||
|
||
[Fri 2026-04-10 12:24 UTC] опиши как теперь это работает
|
||
assistant: ## Как работает память сейчас
|
||
|
||
### Общая архитектура
|
||
|
||
```
|
||
Ты пишешь сообщение
|
||
↓
|
||
Я получаю контекст
|
||
↓
|
||
┌────────────────────────────────┐
|
||
│ СЛОЙ 1: Активная память │ ← загружается автоматически
|
||
│ MEMORY.md + вчера/сегодня │
|
||
└────────────────────────────────┘
|
||
↓
|
||
┌────────────────────────────────┐
|
||
│ СЛОЙ 2: QMD поиск │ ← по запросу через memory_search
|
||
│ BM25 + Gemma-300M vectors │
|
||
└────────────────────────────────┘
|
||
↓
|
||
┌────────────────────────────────┐
|
||
│ СЛОЙ 3: Wiki │ ← по запросу через wiki_search
|
||
│ entities, concepts, sources │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
### Слой 1 — Что я знаю всегда
|
||
|
||
При каждой сессии автоматически загружается:
|
||
|
||
- **MEMORY.md** — долгосрочная память (~11KB): правила, люди, проекты, модели, скиллы
|
||
- **memory/2026-04-10.md** и **memory/2026-04-09.md** — два последних дневника
|
||
|
||
Это то что я знаю без поиска. Текущая сессия, твои предпочтения, активные проекты.
|
||
|
||
---
|
||
|
||
### Слой 2 — QMD поиск
|
||
|
||
Когда мне нужно что-то конкретное — я вызываю `memory_search`. Движок: **QMD v2.1.0** с локальной GGUF-моделью Gemma 300M.
|
||
|
||
**Что проиндексировано (417 документов, 448 векторов):**
|
||
|
||
| Коллекция | Что внутри | Документов |
|
||
|---|---|---|
|
||
| `memory-root-main` | MEMORY.md + все .md в workspace | 159 |
|
||
| `sessions-main` | Транскрипты всех наших разговоров | 111 |
|
||
| `tasks-main` | tasks/ — проекты, ТЗ, бэклоги | 104 |
|
||
| `memory-dir-main` | memory/ — 34 дневных заметки | 33 |
|
||
| `skills-main` | workspace/skills/ | 10 |
|
||
|
||
**Как ищет:**
|
||
1. BM25 — точное совпадение ключевых слов
|
||
2. Векторный поиск — семантическое сходство (Gemma-300M)
|
||
3. Reranking — объединяет и ранжирует финальный список
|
||
|
||
Это значит что если ты спросишь про "нойзмап" — найдёт и `noisemap`, и `карта шума`, и `FR24`, потому что они семантически близки.
|
||
|
||
**Главная фишка:** sessions индексированы. Я могу найти что мы обсуждали месяц назад, даже если это не попало в MEMORY.md.
|
||
|
||
---
|
||
|
||
### Слой 3 — Wiki
|
||
|
||
Пока почти пустой (6 источников, 0 структурированных страниц). Инструменты `wiki_search`, `wiki_get`, `wiki_apply`, `wiki_lint` подключены. Готов к наполнению — это следующий шаг.
|
||
|
||
Когда наполним — `memory_search corpus=all` будет искать сразу везде: QMD + wiki.
|
||
|
||
---
|
||
|
||
### Жизненный цикл информации
|
||
|
||
```
|
||
Разговор
|
||
→ автосохранение в sessions/ (QMD индексирует за 5 мин)
|
||
→ важное → я пишу в memory/YYYY-MM-DD.md
|
||
→ ключевое → в MEMORY.md (вручную или через dreaming)
|
||
→ структурированное → в wiki через wiki_apply
|
||
```
|
||
|
||
---
|
||
|
||
### Что изменилось сегодня vs вчера
|
||
|
||
| | До | После |
|
||
|---|---|---|
|
||
| Движок | SQLite builtin | QMD sidecar |
|
||
| Поиск | BM25 + vector | BM25 + vector + reranking |
|
||
| Сессии | ❌ | ✅ проиндексированы |
|
||
| tasks/ | ❌ | ✅ проиндексированы |
|
||
| skills/ | ❌ | ✅ проиндексированы |
|
||
| Wiki tools | ❌ | ✅ подключены |
|
||
| Wiki digest | ❌ | ✅ в промптах |
|
||
| Векторная модель | OpenAI API | Gemma 300M (локально) |
|
||
user: Sender (untrusted metadata):
|
||
```json
|
||
{
|
||
"label": "openclaw-control-ui",
|
||
"id": "openclaw-control-ui"
|
||
}
|
||
```
|
||
|
||
[Fri 2026-04-10 12:38 UTC] что мы настраивали в ha?
|
||
assistant: [[reply_to_current]] Вот что настраивали в HA:
|
||
|
||
## Home Assistant — что сделали
|
||
|
||
**Инфраструктура:**
|
||
- HA на Proxmox VM дома, внешний URL: `ha.homenet542.keenetic.pro`
|
||
- Роутер Keenetic, Zigbee2MQTT с Sonoff донглом
|
||
|
||
**LocalTuya — подключили 3 устройства:**
|
||
|
||
- 🔥 **Котёл** (Termex GRIZZLY, IP 192.168.2.82) — вкл/выкл + температура 30–55°C
|
||
- 🚿 **Водонагреватель** (Termex IF PRO Wi-Fi, IP 192.168.2.184) — вкл/выкл + 10–75°C
|
||
- 🌬️ **CO2 датчик** (Гостиная, IP 192.168.2.89) — показания в ppm
|
||
|
||
**Проблемы которые решали:**
|
||
|
||
- CO2 датчик не видел LocalTuya → причина: изоляция клиентов в сегменте Homenet_iot → решение: отключить "Изолировать клиентов от проводной сети" в Keenetic
|
||
- Котёл/водонагреватель не включались → не был настроен параметр HVAC Mode Set → решение: выставить True/False в редакторе LocalTuya
|
||
- Локальные IP устройств — брали из роутера Keenetic по MAC (Tuya API отдаёт только внешние)
|
||
|
||
**Автоматизации котла:** включение в 04:50, отключение в 18:20, ночной нагрев, управление температурой
|
||
|
||
**Статус на 03.04.2026:** API работает, все три устройства в LocalTuya ✅
|
||
user: Sender (untrusted metadata):
|
||
```json
|
||
{
|
||
"label": "openclaw-control-ui",
|
||
"id": "openclaw-control-ui"
|
||
}
|
||
```
|
||
|
||
[Fri 2026-04-10 12:41 UTC] как участвует онтология при работе с памятью?
|
||
assistant: Картина полная. Отвечаю:
|
||
|
||
---
|
||
|
||
## Онтология в системе памяти
|
||
|
||
**Коротко:** онтология — это отдельный слой, параллельный QMD и wiki. Она не заменяет и не дублирует их, а решает специфическую задачу — **граф проектов и задач со связями**.
|
||
|
||
### Где живёт
|
||
|
||
```
|
||
memory/ontology/
|
||
├── graph.jsonl ← 76 записей: сущности + связи
|
||
├── schema.yaml ← схема типов
|
||
└── RULES.md ← правила (обязательны для всех агентов)
|
||
```
|
||
|
||
Управляется через `skills/ontology/scripts/ontology.py`.
|
||
|
||
### Что там сейчас
|
||
|
||
Проекты в графе:
|
||
- `proj_snowbike_rag` — active
|
||
- `proj_noisemap` — paused (FR24 кредиты кончились)
|
||
- `proj_telegram_collector` — active
|
||
- ...и другие
|
||
|
||
Плюс задачи, связи между ними, assignee.
|
||
|
||
### Как взаимодействует с памятью
|
||
|
||
```
|
||
QMD (поиск) Онтология (граф) Wiki (страницы)
|
||
────────────── ──────────────── ───────────────
|
||
"что обсуждали" → "что делается" → "что знаем"
|
||
семантика структура синтез
|
||
полнотекстовый точные связи entities/concepts
|
||
поиск по всему projects+tasks провенанс
|
||
```
|
||
|
||
**Они не заменяют друг друга:**
|
||
- `memory_search "snowbike"` → найдёт чанки из всех разговоров и файлов
|
||
- `ontology query --type Project` → покажет статус, assignee, folder, даты — структурированно
|
||
- `wiki_search "snowbike"` → (пока пусто, но будет) структурированная entity-страница
|
||
|
||
### Правила (жёсткие)
|
||
|
||
По RULES.md:
|
||
- **Только я пишу** в онтологию (Dev/Legal/Feda — только читают)
|
||
- **Любое изменение — с твоего ОК**
|
||
- Онтология = единственный источник истины о проектах/задачах
|
||
- MEMORY.md содержит только **ссылки** на онтологию, не дубли
|
||
|
||
### Практически
|
||
|
||
Когда ты говоришь "начнём новый проект" — я должна сначала создать его в онтологии (с твоего ОК), и только потом работать. Не просто в MEMORY.md записать, а именно в граф — со связями, статусом, folder.
|
||
|
||
Сейчас это работает в ручном режиме. Когда wiki наполним entity-страницами — онтология и wiki будут связаны: entity в wiki будет ссылаться на `proj_xxx` из графа 🌊
|
||
user: Sender (untrusted metadata):
|
||
```json
|
||
{
|
||
"label": "openclaw-control-ui",
|
||
"id": "openclaw-control-ui"
|
||
}
|
||
```
|
||
|
||
[Fri 2026-04-10 12:49 UTC] куда ты сохранишь информацию по работе с памятью, те все то что мы сделали?
|
||
assistant: Дневник за сегодня ещё пуст — ничего не записано. Вот куда и что пойдёт:
|
||
|
||
---
|
||
|
||
### 1. `memory/2026-04-10.md` — дневная запись (сырой лог)
|
||
|
||
Туда идёт хронология сегодняшнего дня:
|
||
- Аудит wiki memory (bridge mode, диагноз с jiti-изоляцией)
|
||
- Установка QMD: конфиг, конфликт коллекций, фикс
|
||
- Итоговый статус системы памяти
|
||
|
||
Это **сырые события** — что делали, что сломалось, как починили.
|
||
|
||
### 2. `MEMORY.md` — долгосрочная память (дистилляция)
|
||
|
||
Туда идут **выводы и правила**, которые должны пережить время:
|
||
- QMD конфиг (путь к бинарнику, коллекции)
|
||
- Известная проблема с bridge mode (jiti-изоляция) + workaround
|
||
- Конфликт `memory-root-main`/`memory-alt-main` — как чинить
|
||
- Wiki tools добавлены в allowed tools
|
||
|
||
### 3. Wiki — пока не трогаем (пуст)
|
||
|
||
Когда наполним — сюда пойдёт `concept.memory-architecture` с описанием всей системы. Но сначала нужно создать хоть одну entity/concept.
|
||
|
||
---
|
||
|
||
Записать прямо сейчас? Давай сделаю оба файла сразу — и дневник, и обновлю MEMORY.md.
|
||
user: Sender (untrusted metadata):
|
||
```json
|
||
{
|
||
"label": "openclaw-control-ui",
|
||
"id": "openclaw-control-ui"
|
||
}
|
||
```
|
||
|
||
[Fri 2026-04-10 12:54 UTC] дневника точно нет?
|
||
assistant: [[reply_to_current]] Есть! Только не `2026-04-10.md`, а `2026-04-10-http-404-channel-not-found.md` — это дневник из другой сессии (про Шереметьево + Chromium, около 08:17 UTC).
|
||
|
||
Нашего сегодняшнего дня (wiki memory + QMD) там нет — эта сессия шла параллельно по webchat и в этот файл не попала.
|
||
|
||
Нужно создать основной дневник за сегодня и записать туда всё что сделали. Сделать?
|
||
user: Sender (untrusted metadata):
|
||
```json
|
||
{
|
||
"label": "openclaw-control-ui",
|
||
"id": "openclaw-control-ui"
|
||
}
|
||
```
|
||
|
||
[Fri 2026-04-10 12:57 UTC] да
|
||
assistant: Теперь обновляю MEMORY.md — добавляю ключевые выводы в раздел про конфигурацию и QMD:
|
||
assistant: Готово. Записала в два места:
|
||
|
||
**`memory/2026-04-10.md`** — полный дневник: хронология, диагноз bridge mode, конфиг QMD, проблема с коллекциями и фикс, финальные статусы всех агентов, тест поиска.
|
||
|
||
**`MEMORY.md`** — добавила два новых раздела в "Конфигурация":
|
||
- `Memory backend: QMD` — где хранится конфиг, известная проблема с index.yml и как чинить, особенность медленного embed на CPU
|
||
- `Memory Wiki` — что настроено, known limitation с bridge, workaround
|
||
|
||
Теперь если завтра начну новую сессию — всё это будет в контексте 🌊
|