Files
wiki/memory/2026-04-10-http-404-channel-not-found.md
2026-04-12 21:55:33 +03:00

292 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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) — вкл/выкл + температура 3055°C
- 🚿 **Водонагреватель** (Termex IF PRO Wi-Fi, IP 192.168.2.184) — вкл/выкл + 1075°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
Теперь если завтра начну новую сессию — всё это будет в контексте 🌊