Files
wiki/sources/memory.md
2026-04-10 20:14:25 +00:00

251 lines
16 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.
---
pageType: source
id: source.memory
title: MEMORY
sourceType: local-file
sourcePath: /home/node/.openclaw/workspace/MEMORY.md
ingestedAt: 2026-04-10T15:42:43.804Z
updatedAt: 2026-04-10T15:42:43.804Z
status: active
---
# MEMORY
## Source
- Type: `local-file`
- Path: `/home/node/.openclaw/workspace/MEMORY.md`
- Bytes: 15593
- Updated: 2026-04-10T15:42:43.804Z
## Content
````text
# MEMORY.md - Долгосрочная память
## О себе
- Имя: Стрим 🌊
- Стиль: дружелюбная ассистентка с юмором
- Фокус: работа с потоками информации - сбор, анализ, структурирование
## Правила форматирования
### Телеграм
- **Таблицы — через diagram-table** (PNG картинка), НЕ markdown-таблицы — они криво отображаются
- Вместо таблиц: списки с буллетами, нумерованные списки, или структурированный текст с разделителями
- Эмодзи для наглядности: ✅❌⚠️🔥💡🎯🌊
- **Голосовые сообщения:** когда Слава отправляет голосовое — отвечать И текстом, И голосовым сообщением (через voice-tts)
## Люди
### Слава
- Имя: Слава
- Обращение: неформальное, дружеское, с юмором
- Интересы: сбор, анализ и суммаризация информации из разных источников (Телеграм-чаты, интернет)
- Предпочитает общение на русском языке
- Первая встреча: 18 марта 2026
## Правила работы
### 🏠 Home Assistant — только с подтверждения
- **Любое изменение в HA** (конфиги, автоматизации, настройки, перезапуски) — только после явного подтверждения Славы
- Читать состояния, логи, статусы — можно без подтверждения
- Отправка сообщений через telegram_bot — можно без подтверждения (тесты)
- Всё остальное: объяснить что хочу сделать → получить ОК → действовать
### ⛔ Разработка — только через Dev-агента
- **Стрим НЕ пишет код самостоятельно.** Никогда. Даже если задача кажется мелкой.
- Роль Стрим: обсуждение, постановка задачи, ТЗ, проверка результата, документация
- Роль Dev: вся реализация (новые файлы, правки кода, скрипты)
- Когда задача дошла до «приступай» → передать ТЗ Dev-агенту через `sessions_spawn`
- Нарушение зафиксировано: 27.03.2026 — слой плотности noisemap реализован Стримом напрямую
### Документация
- **Обязательно**: при любом изменении функционала немедленно обновлять документацию
- Документация всегда должна быть в актуальном состоянии - не "потом", а сразу после изменения
- Порядок работы: изменение → тест → документация → упаковка/коммит
### Управление ключами и секретами
- Ключи в `openclaw.json` (botToken, gateway.auth.token, tools.web.search.apiKey) — НЕ ТРОГАТЬ
- **Все остальные секреты** — только в `~/.openclaw/.env`
- Никогда не дублировать ключи в SKILL.md, скриптах или других файлах
### Структура workspace
- `tasks/{project}/` — каждый проект в своей папке, там же `PROJECT.md` с деталями
- `tasks/scripts/` и `tasks/reports/` — общие скрипты и отчёты
- `skills/` — готовые AgentSkills с полной документацией
- `data/` — выходные данные (`data/{skill-name}/`)
- `memory/` — дневные записи (`YYYY-MM-DD.md`)
- `temp/` — временные файлы, удаляются после использования
### Конфигурация моделей
- Текстовые задачи → `agents.defaults.model.primary`
- Анализ изображений → `agents.defaults.imageModel`
- После изменения конфига — перезапустить гейтвей
### Memory backend: QMD (настроен 10.04.2026)
- Конфиг: корневой ключ `memory` в openclaw.json (НЕ под `agents.defaults`!)
- QMD бинарник: `/home/node/.local/bin/qmd` — явно прописан в `memory.qmd.command`
- Коллекции main: memory-root, sessions, tasks, memory-dir, skills
- Проблема с index.yml: QMD создаёт `memory-root-main` с `**/*.md`, OpenClaw ищет `memory-alt-main`
- Фикс: вручную добавить в `~/.openclaw/agents/main/qmd/xdg-config/qmd/index.yml` запись `memory-alt-main`
- После фикса: `rm ~/.openclaw/agents/main/qmd/xdg-cache/qmd/index.sqlite* && openclaw memory index --force`
- Embed на CPU медленный (~30 мин на ~400 чанков) — Vector: unavailable пока идёт, потом auto-ready
- Sessions индексируются: транскрипты разговоров searchable!
### Memory Wiki (настроен 10.04.2026)
- wiki_status/search/get/apply/lint — добавлены в allowed tools main агента
- `includeCompiledDigestPrompt: true` — wiki digest в промптах
- Bridge mode НЕ работает (jiti-изоляция плагинов в 2026.4.9) — known limitation
- `openclaw wiki bridge import` всегда 0 артефактов — не баг конфига
- Workaround: ручной ingest (`openclaw wiki ingest <file>`) или unsafe-local режим
- Wiki пуста (0 entities/concepts) — нужно наполнять через `wiki_apply`
- Дневник по настройке: `memory/2026-04-10.md`
### Учёт токенов Dev-агента
- Реальные данные — из OpenRouter dashboard
- Формула: `(input×$3 + output×$15) / 1M` (Sonnet 4.6)
- Лог: `tasks/token-log.md`, формат: `DEV-XXX | XK in / XK out → $X.XX`
## Проекты
## Proxy VM — vpn-srv (прокси-сервер)
- **Документация:** `tasks/proxy-vm/PROJECT.md`
- **vpn-srv:** 192.168.2.200, FRP туннель через 185.130.212.192:7000, SSH port 3322
- **Доступ:** `ssh -i ha_ssh_key -o Port=3322 vpn@185.130.212.192`, sudo: `echo meNt85doC | sudo -S`
- **VLESS:** 43.245.226.231:53903, yahoo.com SNI, **flow: xtls-rprx-vision** (обязателен!)
- **Xray порты:** 12345 (tproxy), 1080 (SOCKS5), 8888 (HTTP proxy)
### Задача #1: Homenet-VPN Wi-Fi (в работе 🔄)
- **Старт:** 05.04.2026
- **Цель:** 192.168.4.0/24 → весь трафик через VLESS (прозрачный прокси)
- **Схема:** Device → iptables REDIRECT → redsocks:12350 → Xray SOCKS5:1080 → VLESS
- **Wi-Fi:** 192.168.4.0/24, шлюз 192.168.4.1 (ens19, netplan)
- **DNS:** UDP/53 → 1.1.1.1 напрямую (утечка допустима)
- **Проблема:** TCP через transparent proxy не работает — конфликт xtls-rprx-vision + redirect mode. Продолжение когда Слава дома.
### Задача #2: HA Telegram через VLESS (готово ✅)
- **Дата:** 10.04.2026
- **Схема:** HA telegram_bot → SOCKS5 (192.168.2.200:1080) → VLESS → api.telegram.org
- **Только Telegram** через прокси, остальной трафик HA — напрямую
- **HA:** `ha.homenet542.keenetic.pro` (HAOS 17.1, IP 192.168.2.139)
- **Бот:** `@ha542_bot` (8251509944), chat_id Славы: 126472752
- **Entity:** `notify.telegram_bot_8251509944_126472752`
- **Сервис:** `notify.send_message` → `entity_id: notify.telegram_bot_8251509944_126472752`
- **Config entry:** `01KNVZDDM3ZNJS1WX309K7E1EN` (UI-интеграция с proxy_url)
- **SSH к HA через vpn-srv:** скопировать ha_ssh_key → `/tmp/ha_key`, потом `ssh -i /tmp/ha_key root@192.168.2.139`
### Интернет-заказы (vprok.ru)
- **Старт:** 31 марта 2026
- **Детали:** `tasks/internet-orders/PROJECT.md`
- **Статус:** relay-сервер запущен (185.130.212.192:5000), Windows-клиент готов, ожидает первого теста
### Карта шумового загрязнения FR24
- **Старт:** 22 марта 2026
- **Детали:** `tasks/flightradar24/PROJECT.md`
- **Статус:** прототип v0.3 работает, FR24 кредиты закончились, следующий шаг — RTL-SDR
### Telegram Collector
- **Старт:** 20 марта 2026
- **Детали:** `tasks/telegram-collector/PROJECT.md`
- **Статус:** активен, ежедневный инкремент, @snowbikerussia загружен (155K сообщений)
### Голосовые сообщения / Видеокружочки
- **Скилл:** `~/.openclaw/skills/voice-tts/SKILL.md` (ElevenLabs + Yandex SpeechKit fallback)
- **Видеокружочки:** `tasks/video-notes/TZ.md`, pipeline ElevenLabs → fal.ai → VEED → Telegram
## Агенты
### Dev — как правильно запускать
**Dev** — senior разработчик, workspace: `~/.openclaw/workspace-dev`
#### ⚠️ Обязательные параметры sessions_spawn:
- `runtime`: `"subagent"` (ACP не настроен — всегда subagent)
- `model`: `"nekocode/gpt-5.4"` (если Слава не указал другую)
- `cwd`: `"/home/node/.openclaw/workspace-dev"` — **критично!** Без этого агент не находит свой workspace и завершается молча с 0 токенов
- `label`: короткое имя задачи (для трекинга, например `"dev-snowbike-rag-recovery"`)
- `mode`: `"run"` (одноразовая задача) или `"session"` (диалог)
#### Пример вызова:
```
sessions_spawn(
task="Прочитай ТЗ из /home/node/.openclaw/workspace/tasks/...\n\nСделай X, Y, Z.\n\nВерни отчёт.",
runtime="subagent",
model="nekocode/gpt-5.4",
cwd="/home/node/.openclaw/workspace-dev",
label="dev-taskname"
)
```
#### Что включать в task:
1. Ссылка на ТЗ-файл (абсолютный путь) или полный текст задачи
2. Путь к проекту (где лежат исходники)
3. Ограничения (например: "полную переиндексацию не запускать")
4. Формат ожидаемого отчёта
#### Модели:
- **Основная:** `nekocode/gpt-5.4` — если Слава не указал другую
- **Fallback при rate limit:** `openrouter/minimax/minimax-m2.7` — проверено, работает для dev-задач (2026-04-07)
- Rate limit gpt-5.4 проявляется как: агент стартует нормально, но отвечает `{"code":"rate_limited",...}`
- Если rate limit — не ждать, сразу переключаться на MiniMax или Sonnet 4.6
#### Частые ошибки:
- **Не указывать `cwd`** → агент завершается за 5 сек с 0 токенов (молчаливый фейл)
- **`streamTo: "parent"`** → работает только с `runtime=acp`, не с subagent
- **runtime=acp** → не настроен, всегда падает с ошибкой
#### Dev vs Legal:
- **Dev** (id: `dev`) — разработка, дебаг, скрипты
- **Юрист** (id: `legal`) — юридические вопросы по РФ, workspace: `~/.openclaw/workspace-legal`
- **Федя (Fedia)** — агент, workspace: `~/.openclaw/workspace-fedia`
## Скиллы
### Общие (`~/.openclaw/skills/`) — доступны всем агентам
- **voice-tts** — голосовые сообщения (ElevenLabs + Yandex SpeechKit)
- **diagram-png** — генерация PNG-диаграмм из JSON
- **diagram-table** — таблицы в PNG из JSON (Pillow, dark/light). Скрипты: `generate_table.py` (stdin→PNG), `send_table.py` (PNG→Telegram). Требует `TELEGRAM_BOT_TOKEN` и `TELEGRAM_CHAT_ID` в `.env`
### Мои личные (`workspace/skills/`) — только для Стрим
- **ontology** — граф знаний (сущности, связи, запросы)
- **telegram-collector** — сбор данных из Telegram-каналов
- **youtube-search** — YouTube Data API v3. Ключ: `YOUTUBE_API_KEY`
- **yandex-search** — Yandex Search API v2. Ключ: `YANDEX_API_KEY`
- **ontology** — граф знаний (сущности, связи, запросы)
- **Онтология — общая база знаний**: `memory/ontology/`
- `graph.jsonl` — сущности и связи
- `schema.yaml` — схема типов
- `RULES.md` — правила ведения (обязательны)
- **Стрим — единственный writer**: все изменения — только через Стрим
- ⚠️ **Правило (10.04.2026):** При работе с проектами всегда автоматически обновлять онтологию (create/update) и запускать `openclaw wiki ingest` для документации — без напоминания Славы
- **Другие агенты (Dev, Legal, Feda) — читатели**: запрашивают через `sessions_send`
- **Изменения — только с подтверждения Славы**
- **При работе с проектами/задачами — всегда использовать онтологию** (правила: `memory/ontology/RULES.md`)
- Запуск из workspace: `python3 skills/ontology/scripts/ontology.py <command>`
- Storage: `memory/ontology/graph.jsonl` + `memory/ontology/schema.yaml`
- PyYAML не установлен — validate暂时 не работает
## Интеграции
- **Flightradar24 API** — тариф Explorer, 60K кредитов/мес (до 31.05.2026 промо 120K)
- **GigaChat API** — через gpt2giga прокси
- gpt2giga: `185.130.212.192:8443` (baseUrl в openclaw.json)
- Xray VLESS outbound: `43.245.226.231:15281` (Франкфурт), UUID b8d92081-..., Reality+chrome, SNI google.com
- Xray конфиг: `/home/slin/openclaw/xray-config.json`
- OpenClaw получает `HTTPS_PROXY=socks5://xray:10808` через docker-compose environment
- Цепочка: OpenClaw (mva154) → Xray VLESS → ??? → gpt2giga → GigaChat API
- Примечание: прямое подключение из контейнера к 185.130.212.192:8443 недоступно (timeout), трафик идёт через host-сеть
- ⚠️ **TODO:** Слава проверит схему — точно ли Xray участвует в цепочке к gpt2giga или это отдельный маршрут
- Локальный gpt2giga НЕ используется, удалён (08.04.2026)
````
## Notes
<!-- openclaw:human:start -->
<!-- openclaw:human:end -->
## Related
<!-- openclaw:wiki:related:start -->
### Referenced By
- [Wiki & Memory](entities/project-wiki-memory.md)
<!-- openclaw:wiki:related:end -->