29 KiB
29 KiB
MEMORY.md - Долгосрочная память
О себе
- Имя: Стрим 🌊
- Стиль: дружелюбная ассистентка с юмором
- Фокус: работа с потоками информации - сбор, анализ, структурирование
Правила форматирования
Телеграм
- Таблицы — через diagram-table (PNG картинка), НЕ markdown-таблицы — они криво отображаются
- Вместо таблиц: списки с буллетами, нумерованные списки, или структурированный текст с разделителями
- Эмодзи для наглядности: ✅❌⚠️🔥💡🎯🌊
- Голосовые сообщения: когда Слава отправляет голосовое — отвечать голосовым (через voice-tts)
- Схема отправки голосовых (12.05.2026):
- Генерировать:
send_voice.sh "текст" - Отправлять CLI:
openclaw message send --channel telegram --target 126472752 --media <path> --delivery '{"asVoice": true}'(timeout 30+) - В ответе писать короткий текст (НЕ NO_REPLY — рендерится как "(empty)")
- НЕ использовать
MEDIA:директиву — дублирует отправку - НЕ использовать
[[audio_as_voice]]— тоже дублирует
- Генерировать:
- Женский род! Починила, проверила, нашла — не починил!
Люди
Слава
- Имя: Слава
- Обращение: неформальное, дружеское, с юмором
- Интересы: сбор, анализ и суммаризация информации из разных источников (Телеграм-чаты, интернет)
- Предпочитает общение на русском языке
- Первая встреча: 18 марта 2026
Правила работы
🧠 Нет root → нет проблемы (урок 16.04.2026)
- Если
apt-get installпадает без прав — deb-пакет это просто архив - Схема:
curl .deb→ar x→tar xf data.tar.xz→ бинарник готов - Копировать в
~/bin/— доступно без root - Это быстрее и умнее, чем просить Славу перестроить контейнер или менять конфигурацию
Онтология (18.04.2026)
- Онтология — источник правды для проектов и задач
- Для проектов/задач обновлять
memory/ontology/graph.jsonlиmemory/ontology/RULES.md - При работе с
tasks/сначала сверяться со структурой, потом править онтологию и документы - Новые/спорные элементы
tasks/разбирать по одному и не удалять без подтверждения Славы
Правила работы
⛔ Перед запуском любого воркера FR24 (25.04.2026)
Обязательная проверка ПЕРЕД запуском POST /run или любым ручным запуском:
# Проверить что в контейнере — правильная версия кода
docker exec fr24-tracks-fr24 grep "flight-summary" /app/fr24_worker.py
# Должно быть: /api/flight-summary/full (НЕ light!)
Если light — задеплоить правильную версию из tasks/flightradar24/ingest/tracks_fr24/fr24_worker.py перед запуском.
Если full — можно запускать.
Аналогично для любого другого воркера: сначала grep ключевой строки, потом запуск.
🏠 Home Assistant — только с подтверждения
- Любое изменение в HA (конфиги, автоматизации, настройки, перезапуски) — только после явного подтверждения Славы
- Читать состояния, логи, статусы — можно без подтверждения
- Отправка сообщений через telegram_bot — можно без подтверждения (тесты)
- Всё остальное: объяснить что хочу сделать → получить ОК → действовать
⛔ Разработка — только через Dev-агента
- Стрим НЕ пишет код самостоятельно. Никогда. Даже если задача кажется мелкой.
- Роль Стрим: обсуждение, постановка задачи, ТЗ, проверка результата, документация
- Роль Dev: вся реализация (новые файлы, правки кода, скрипты)
- Когда задача дошла до «приступай» → передать ТЗ Dev-агенту через
sessions_spawn - ТЗ по шаблону
workspace/templates/DEV_TASK_TEMPLATE.md(средние/крупные задачи) или inline (быстрые) - Процесс:
workspace/templates/DEV_WORKFLOW.md - Обязательно в ТЗ: точные файлы, точный код, команды проверки, ограничения/грабли
- Нарушение зафиксировано: 27.03.2026 — слой плотности noisemap реализован Стримом напрямую
Документация
- Обязательно: при любом изменении функционала немедленно обновлять документацию
- Документация всегда должна быть в актуальном состоянии - не "потом", а сразу после изменения
- Порядок работы: изменение → тест → документация → упаковка/коммит
📝 ТЗ для Dev-агента — шаблон (12.05.2026)
- Шаблон:
workspace/templates/DEV_TASK_TEMPLATE.md - Процесс:
workspace/templates/DEV_WORKFLOW.md - Пример:
tasks/enduro-trails/DEV_TASK_DARK_STYLE.md - Перед передачей задачи Dev-агенту — заполнить шаблон (средние/крупные задачи) или inline task (быстрые)
- Обязательно: точные файлы, точный код, команды проверки, ограничения/грабли
- Результат: Dev не задаёт вопросов, работает автономно
Структура задач и проектов (18.04.2026)
- Стандарт
tasks/<project-slug>/закреплён как основа для проектов OpenClaw TaskбезProjectне существует- У
Projectдолжны бытьfolderиdoc_path - У
Taskдолжны бытьproject,folderиdoc_path - Машинные id живут только в онтологии, в папках и человекочитаемых названиях используются slug-и
snowbike-kbоформлен как задача внутриsnowbike-rag, а не как отдельный проект- В спорных папках
tasks/сначала анализ, потом предложение Славе, и только после ОК — удаление или реформа
🔍 OpenClaw документация — порядок поиска (14.04.2026)
При любых вопросах про настройку/работу OpenClaw — строго соблюдать последовательность:
- Локальные доки
/app/docs— поиск по файлам, grep по релевантным ключевым словам - docs.openclaw.ai — если локально не найдено →
web_search site:docs.openclaw.ai <тема> - web_fetch конкретной страницы с docs.openclaw.ai для деталей
- GitHub
https://github.com/openclaw/openclaw— если доки не покрывают вопрос
НЕ прыгать сразу в веб — локальные доки первыми. Это быстрее и всегда доступны.
Управление ключами и секретами
- Ключи в
openclaw.json(botToken, gateway.auth.token, tools.web.search.apiKey) — НЕ ТРОГАТЬ - Все остальные секреты — только в
~/.openclaw/.env - Никогда не дублировать ключи в SKILL.md, скриптах или других файлах
Структура workspace
tasks/{project}/— каждый проект в своей папке, там жеPROJECT.mdс деталями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
СКИЛЛЫ — читать ПЕРЕД любым действием (12.04.2026)
- ВСЕГДА открывать соответствующий скилл перед работой с новой задачей
- Не изобретать велосипед — инструкции в скилле уже есть
- Скилл открывается ДО начала действий, а не после того как застряла
- Исключение: диагностика когда непонятно куда смотреть — но потом сверяться со скиллом
- Факт нарушения: 12.04.2026 — HA audit делала вручную, скилл не открыла → потеряла время на костыли
Проекты
Orchestrator — состояние 2026-06-02 (журнал: tasks/orchestrator/PROGRESS_2026-06-02.md)
- Инцидент дня: создала ORCH-1..7 в Plane → webhook авто-запустил конвейер БЕЗ фильтра проекта → мусор ET-010..016 в
enduro-trails. Подход стоп→чистка→защита→root-fix. - ✅ ORCH-6 multi-repo (root fix) замержен PR #2 (
b021ff7): реестрsrc/projects.py(Plane id→repo+prefix), фильтр webhook по проекту (unknown→ignored), resolve repo. Проверен на проде: HMAC + project-filter режут чужие проекты, задача не создаётся. Plane-webhook включён обратно (is_active=t) — теперь безопасно. - ✅ ORCH-1 очередь задач база готова PR #3 (76 passed): таблица
jobs,queue_worker.py, atomic claim,max_concurrency, ретраи, restart-safe (requeue running на старте),/queueэндпоинт. Заменил in-process daemon-потоки. - ✅ ORCH-1b resilience ГОТОВ в PR #3 (110 passed, проверен на проде:
/queueотдаёт breaker+preflight, preflightclaude --versionбез трат токенов, классификатор 429→transient): идея Славы про надёжность claude CLI. A. дешёвый preflight (claude --version, кэш 45с — токены НЕ жжёт, FAIL→job ждёт); 🚫 НИКАКОГО prompt-ping (трата лимита). B. 429 ловить на ВЫХОДЕ (паттерны в логе), классификатор transient/permanent. C. exp backoff +available_at+ Retry-After. D. circuit breaker (3 fail→пауза 5мин, CLI не дёргаем, алерт→half-open). - ⚠️ Урок: при дослыле уточнения в активную сессию Dev — проверять что оно вошло в КОД, а не только в отчёт «done» (resilience в базовый PR #3 НЕ попал).
- ⚠️ Урок: тест-алерты Dev (синтетич.
repo r-retry/job N) дёргают Славу в Telegram. Проверка реальности —/queue+ прод-БД. TODO ORCH-1b: подавить нотификации в pytest. - ⚠️ Грабли postgres-пароля Plane:
\x27-экранирование через ssh+docker ломается → SQL в файл +psql -f, пароль из env контейнераplane-app-plane-db-1. - Готово к мержу: PR #3 (ORCH-1 base + ORCH-1b resilience) — ждёт ОК Славы. Висят: PR #19 (enduro-trails), PR #1 (orchestrator worktree) — мержить? Бэклог: ORCH-3 (rollback), ORCH-4 (stage-engine), ORCH-5 (idempotency).
- ⚠️ Урок: Dev склонен к ложным тревогам «параллельная сессия пишет файлы» (принимает свою активность за чужую, mtime меняются). Проверять git log/remote — обычно он на самом деле всё довёл и запушил.
Multi-Agent Orchestrator (enduro-trails)
- ЕДИНОЕ ИМЯ ВЕЗДЕ =
orchestrator(решено 02.06.2026):- Gitea-репо:
admin/orchestrator(переименован изagent-dev) - Plane-проект:
orchestrator, identifierORCH, id8da6aa25-a60e-44d6-a1e2-d8ae59aa7d6a - Workspace-каталог:
tasks/orchestrator/(переименован изmulti-agent/) - Папка на сервере:
/home/slin/repos/orchestrator, контейнерorchestrator
- Gitea-репо:
- Plane задачи ORCH-1..5 (бэклог после аудита 02.06): F-2b очередь задач, S-4 worktree, S-2/S-3 rollback, M-3 stage-engine, M-7 идемпотентность
- Аудит 02.06:
tasks/orchestrator/AUDIT_2026-06-02.md+DOCS_AUDIT_2026-06-02.md; фиксы B-1/B-2/B-3/S-5/S-1/M-1 сделаны Dev (Opus 4.8), 11 коммитов, зомби-баг закрыт - Документация:
tasks/orchestrator/ORCHESTRATOR_DOCS.md - Расхождения с proposal:
tasks/orchestrator/PROPOSAL_VS_REALITY.md - Host: mva154 (82.22.50.71), container
orchestrator, port 8500 - Pipeline: analyst → architect → developer → reviewer → tester → deployer → done
- Deployer добавлен 01.06.2026: merge PR → tag → deploy → healthcheck → smoke → rollback
- Единственный ручной шаг:
:approved:от Славы после analyst'а - Фиксы 31.05.2026: _monitor_agent PIPE streaming, check_reviewer_verdict, _ensure_pr, retry logic
- Фикс 01.06.2026: deployer как агент (убран хардкод _auto_merge_pr)
- Фиксы 01.06.2026 (продолжение):
- Analyst prompt: добавлена явная инструкция Write tool (артефакты на диск, не в stdout)
- Analyst model: возвращён на Sonnet (был Opus — расходовал лимиты Max 5x)
- Architect/Reviewer: Opus (claude-opus-4-7) — глубина важнее скорости
- Startup timeout 120s: если CLI не стартует → kill + Telegram уведомление
- Plane comment webhook:
handle_commentтеперь читает полеissue(Plane шлёт именно его, неwork_item_id/issue_id) +comment_strippedвместоcomment_html
- ET-008 GPS-треки: pipeline завершён (analysis→architecture→development→review→testing→deploy→done), v0.0.1 в main
- Pending:
docker compose up -d gps-collectorна хосте для активации/api/gps-tracks/*
- Pending:
Claude CLI Proxy (настроен 14.05.2026)
- Документация:
tasks/claude-cli-proxy/PROJECT.md - Корневая проблема (14.05): HTTP_PROXY/HTTPS_PROXY перехватывали запросы к cli-proxy через Xray
- Фикс:
NO_PROXY=claude-cli-proxy,localhost,127.0.0.1,172.19.0.0/24в docker-compose.yml - Важно:
reasoning: trueнельзя ставить в моделях cli-proxy (OpenClaw парсер не извлекает content) - Важно: SIGHUP не перечитывает providers — нужен полный рестарт gateway
- Рабочий конфиг:
api: openai-completions,baseUrl: http://claude-cli-proxy:8317/v1,apiKey: dummy - Dev-агент на
claude-cli-proxy/claude-sonnet-4-6
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 (ГОТОВО ✅ 12.04.2026)
- Старт: 05.04.2026
- Цель: 192.168.4.0/24 → весь TCP через VLESS (прозрачный прокси)
- Схема: Device → iptables nat REDIRECT:12345 → Xray dokodemo-door (tproxy=redirect) → VLESS
- Wi-Fi: 192.168.4.0/24, шлюз 192.168.4.1 (ens19, netplan)
- DNS: UDP/53 → DNAT → 1.1.1.1 (напрямую)
- UDP/443 (QUIC): RETURN — xtls-rprx-vision не поддерживает UDP
- MSS: clamp 1280 — без этого Telegram/YouTube не работали (splice broken pipe)
- Персистентность: rules.v4 ✅, sysctl 99-tproxy.conf ✅, netfilter-persistent ✅
Задача #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:
- Ссылка на ТЗ-файл (абсолютный путь) или полный текст задачи
- Путь к проекту (где лежат исходники)
- Ограничения (например: "полную переиндексацию не запускать")
- Формат ожидаемого отчёта
Модели:
- Основная:
nekocode/gpt-5.4— если Слава не указал другую - Модель по умолчанию:
anthropic/claude-sonnet-4-6(Anthropic) — с 2026-04-11 - 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)
- FR24 API key (обновлён 24.04.2026):
019dbf18-3575-71d0-84eb-eb44606fbb63|QU3h8jqLPFyuo9qbQbPu9uoXVK42bTeclMuyRJ5Qb86ba0ea
- FR24 API key (обновлён 24.04.2026):
- 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)
- gpt2giga:
Orchestrator / Claude CLI (09.06.2026)
- claude-cli-proxy (eceasy/cli-proxy-api) НИКОГДА не использовался орком → УДАЛЁН (ORCH-84, 09.06.2026). Проверено боем: env orchestrator/staging без proxy-ссылок, порт 8317 — ноль соединений, логи — только самообслужа. Бэкап:
/home/slin/cli-proxy-removed-20260609-015424. - claude.exe орка ходит НАПРЯМУЮ к Anthropic по OAuth-подписке Claude Max (
~/.claude/.credentials.json, sub=max, tier=default_claude_max_5x). НЕТ ANTHROPIC_BASE_URL/HTTPS_PROXY. - CLI = npm-пакет
@anthropic-ai/claude-codeглобально на ХОСТЕ (82.22.50.71,/usr/lib/node_modules, root). В контейнер маунтится read-only как/opt/claude-code. Обновление:sudo npm install -g @anthropic-ai/claude-code@latestна хосте →docker restart orchestrator(npm пересоздаёт inode каталога, маунт надо перемонтировать). - ⚠️
--effortтребует Claude Code ≥v2.1.154 для opus-4-8 (офиц. дока code.claude.com/docs/en/model-config). На старой 2.1.142 effort давал пустой вывод → агенты висли. Обновлено до 2.1.168 (ORCH-85).