Files
wiki/MEMORY.md
2026-06-09 02:00:01 +03:00

29 KiB
Raw Permalink Blame History

MEMORY.md - Долгосрочная память

О себе

  • Имя: Стрим 🌊
  • Стиль: дружелюбная ассистентка с юмором
  • Фокус: работа с потоками информации - сбор, анализ, структурирование

Правила форматирования

Телеграм

  • Таблицы — через diagram-table (PNG картинка), НЕ markdown-таблицы — они криво отображаются
  • Вместо таблиц: списки с буллетами, нумерованные списки, или структурированный текст с разделителями
  • Эмодзи для наглядности: ⚠️🔥💡🎯🌊
  • Голосовые сообщения: когда Слава отправляет голосовое — отвечать голосовым (через voice-tts)
  • Схема отправки голосовых (12.05.2026):
    1. Генерировать: send_voice.sh "текст"
    2. Отправлять CLI: openclaw message send --channel telegram --target 126472752 --media <path> --delivery '{"asVoice": true}' (timeout 30+)
    3. В ответе писать короткий текст (НЕ NO_REPLY — рендерится как "(empty)")
    4. НЕ использовать MEDIA: директиву — дублирует отправку
    5. НЕ использовать [[audio_as_voice]] — тоже дублирует
  • Женский род! Починила, проверила, нашла — не починил!

Люди

Слава

  • Имя: Слава
  • Обращение: неформальное, дружеское, с юмором
  • Интересы: сбор, анализ и суммаризация информации из разных источников (Телеграм-чаты, интернет)
  • Предпочитает общение на русском языке
  • Первая встреча: 18 марта 2026

Правила работы

🧠 Нет root → нет проблемы (урок 16.04.2026)

  • Если apt-get install падает без прав — deb-пакет это просто архив
  • Схема: curl .debar xtar 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 — строго соблюдать последовательность:

  1. Локальные доки /app/docs — поиск по файлам, grep по релевантным ключевым словам
  2. docs.openclaw.ai — если локально не найдено → web_search site:docs.openclaw.ai <тема>
  3. web_fetch конкретной страницы с docs.openclaw.ai для деталей
  4. 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, preflight claude --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, identifier ORCH, id 8da6aa25-a60e-44d6-a1e2-d8ae59aa7d6a
    • Workspace-каталог: tasks/orchestrator/ (переименован из multi-agent/)
    • Папка на сервере: /home/slin/repos/orchestrator, контейнер orchestrator
  • 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/*

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_messageentity_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 — если Слава не указал другую
  • Модель по умолчанию: 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 (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
  • 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)

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).