{ "version": 1, "updatedAt": "2026-05-26T05:29:25.926Z", "entries": { "memory:memory/2026-04-05.md:29:55": { "key": "memory:memory/2026-04-05.md:29:55", "path": "memory/2026-04-05.md", "startLine": 29, "endLine": 55, "source": "memory", "snippet": "- Оба сервиса в systemd, восстанавливаются после ребута ## Wi-Fi homenet-vpn для телевизора — статус (05.04.2026, не завершено) ### Что сделано - Создан сегмент `Homenet_vpn` в Keenetic: 192.168.4.0/24, шлюз 192.168.4.1 - VM получила второй NIC `ens19` через Proxmox (VLAN tag 4, vmbr0 с VLAN aware) - `ens19` настроен с IP `192.168.4.1/24` - iptables tproxy правила настроены (перехват трафика из 192.168.4.0/24 → Xray порт 12345) - Xray конфиг обновлён с tproxy inbound ### Проблема: iptables сбрасываются при ребуте Правила не сохранены постоянно! После следующего ребута VM нужно восстановить вручную или настроить iptables-persistent. ### Что нужно проверить на следующей неделе 1. Подключит", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.408840736746788, "maxScore": 0.408840736746788, "firstRecalledAt": "2026-04-10T10:44:01.610Z", "lastRecalledAt": "2026-04-10T10:44:01.610Z", "queryHashes": [ "2813a89b3343" ], "recallDays": [ "2026-04-10" ], "conceptTags": [ "vlan", "wi-fi", "homenet-vpn", "05.04.2026", "192.168.4.0/24", "192.168.4.1", "192.168.4.1/24", "iptables-persistent" ] }, "memory:memory/2026-04-04.md:10:13": { "key": "memory:memory/2026-04-04.md:10:13", "path": "memory/2026-04-04.md", "startLine": 10, "endLine": 13, "source": "memory", "snippet": "@@ -10,4 @@ (9 before, 53 after) ### Telegram бот в HA - Интеграция `telegram_bot` уже есть, называется **ha542**, состояние `setup_retry` - Проблема: Telegram заблокирован РКН, HA не может достучаться до api.telegram.org", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.9, "maxScore": 0.9, "firstRecalledAt": "2026-04-10T15:37:22.308Z", "lastRecalledAt": "2026-04-10T15:37:22.308Z", "queryHashes": [ "e4bf9132fac4" ], "recallDays": [ "2026-04-10" ], "conceptTags": [ "telegram-bot", "setup-retry", "api.telegram.org", "10,4", "telegram", "бот", "интеграция", "уже" ] }, "memory:memory/2026-04-10.md:178:181": { "key": "memory:memory/2026-04-10.md:178:181", "path": "memory/2026-04-10.md", "startLine": 178, "endLine": 181, "source": "memory", "snippet": "@@ -178,4 @@ (177 before, 60 after) ### Задача #2: HA Telegram через SOCKS5 прокси **HA:** `ha.homenet542.keenetic.pro`, IP 192.168.2.139, HAOS 17.1, gateway → Keenetic (192.168.2.1)", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.88, "maxScore": 0.88, "firstRecalledAt": "2026-04-10T15:37:22.308Z", "lastRecalledAt": "2026-04-10T15:37:22.308Z", "queryHashes": [ "e4bf9132fac4" ], "recallDays": [ "2026-04-10" ], "conceptTags": [ "gateway", "ha.homenet542.keenetic.pro", "192.168.2.139", "17.1", "192.168.2.1", "178,4", "задача", "telegram" ] }, "memory:memory/2026-04-11.md:58:61": { "key": "memory:memory/2026-04-11.md:58:61", "path": "memory/2026-04-11.md", "startLine": 58, "endLine": 61, "source": "memory", "snippet": "@@ -58,4 @@ (57 before, 10 after) ## Installer Skill (скилл инсталляции) — 15:09 UTC - **Создан:** `~/.openclaw/skills/installer/` — 12 файлов, полный набор - **Автор:** Dev agent (subagent, gpt-5.4)", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.85, "maxScore": 0.85, "firstRecalledAt": "2026-04-11T22:01:45.557Z", "lastRecalledAt": "2026-04-11T22:01:45.557Z", "queryHashes": [ "5f1d60cb2076" ], "recallDays": [ "2026-04-11" ], "conceptTags": [ "gpt", "openclaw/skills/installer", "gpt-5.4", "58,4", "installer", "skill", "скилл", "инсталляции" ] }, "memory:memory/2026-04-05.md:30:33": { "key": "memory:memory/2026-04-05.md:30:33", "path": "memory/2026-04-05.md", "startLine": 30, "endLine": 33, "source": "memory", "snippet": "@@ -30,4 @@ (29 before, 22 after) ## Wi-Fi homenet-vpn для телевизора — статус (05.04.2026, не завершено) ### Что сделано", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.91, "maxScore": 0.91, "firstRecalledAt": "2026-04-12T07:34:44.965Z", "lastRecalledAt": "2026-04-12T07:34:44.965Z", "queryHashes": [ "0d00d980c05e" ], "recallDays": [ "2026-04-12" ], "conceptTags": [ "wi-fi", "homenet-vpn", "05.04.2026", "30,4", "homenet", "vpn", "для", "телевизора" ] }, "memory:memory/2026-04-10.md:1:3": { "key": "memory:memory/2026-04-10.md:1:3", "path": "memory/2026-04-10.md", "startLine": 1, "endLine": 3, "source": "memory", "snippet": "@@ -1,3 @@ (0 before, 369 after) # 2026-04-10 — Настройка Memory Wiki + QMD ## Что делали", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.95, "maxScore": 0.95, "firstRecalledAt": "2026-04-12T15:22:02.828Z", "lastRecalledAt": "2026-04-12T15:22:02.828Z", "queryHashes": [ "7913125527de" ], "recallDays": [ "2026-04-12" ], "conceptTags": [ "qmd", "1,3", "настройка", "wiki", "что", "делали" ] }, "memory:memory/2026-04-09.md:41:44": { "key": "memory:memory/2026-04-09.md:41:44", "path": "memory/2026-04-09.md", "startLine": 41, "endLine": 44, "source": "memory", "snippet": "@@ -41,4 @@ (40 before, 31 after) ## Онтология — RULES.md и правила ведения Создан файл `memory/ontology/RULES.md` — правила ведения онтологии: - Когда использовать (обязательно для проектов/задач)", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.91, "maxScore": 0.91, "firstRecalledAt": "2026-04-16T20:09:33.263Z", "lastRecalledAt": "2026-04-16T20:09:33.263Z", "queryHashes": [ "779a3b252d1a" ], "recallDays": [ "2026-04-16" ], "conceptTags": [ "rules.md", "memory/ontology/rules.md", "проектов/задач", "41,4", "онтология", "правила", "ведения", "создан" ] }, "memory:memory/2026-04-11.md:34:63": { "key": "memory:memory/2026-04-11.md:34:63", "path": "memory/2026-04-11.md", "startLine": 34, "endLine": 63, "source": "memory", "snippet": "- `Терраса. Освещение 2` — `0xa4c138067335c877/1`, target 59105 - `Дом. Освещение внешнее` — `0xa4c138f3593859ae/1`, target 49383 - `Дом. Обогрев водопровода` — `0xa4c138c65bc3b2f1/1`, target 47271 ### HA логи: - `home-assistant.log.1` — только Dec 2025 (устаревший, после ротации) - `home-assistant.log.fault` — пустой (0 байт) - Актуальные HA логи за апрель 2026 недоступны в текстовых файлах (HAOS — нет journalctl в SSH-шелл) ### Статус анализа: - Задача выполнена частично: Z2M логи проанализированы, HA логи недоступны - Сводный отчёт отправлен Славе в сессии ## Dev agent model update (этот день) - Dev по умолчанию переключён на `anthropic/claude-sonnet-4-6` (вместо `nekocode/gpt-5.4`) -", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.5356921090851123, "maxScore": 0.5356921090851123, "firstRecalledAt": "2026-04-17T04:59:56.267Z", "lastRecalledAt": "2026-04-17T04:59:56.267Z", "queryHashes": [ "311572b0121c" ], "recallDays": [ "2026-04-17" ], "conceptTags": [ "gpt", "0xa4c138067335c877/1", "0xa4c138f3593859ae/1", "0xa4c138c65bc3b2f1/1", "home-assistant.log.1", "home-assistant.log.fault", "ssh-шелл", "anthropic/claude-sonnet-4-6" ] }, "memory:memory/2026-04-05.md:20:23": { "key": "memory:memory/2026-04-05.md:20:23", "path": "memory/2026-04-05.md", "startLine": 20, "endLine": 23, "source": "memory", "snippet": "@@ -20,4 @@ (19 before, 32 after) ### Доступ к VM vpn-srv - **Команда:** `ssh -i /home/node/.openclaw/ha_ssh_key -p 3322 vpn@185.130.212.192` - **Больше не нужен** reverse SSH туннель вручную!", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.93, "maxScore": 0.93, "firstRecalledAt": "2026-04-17T06:32:00.564Z", "lastRecalledAt": "2026-04-17T06:32:00.564Z", "queryHashes": [ "403e75eb0fbf" ], "recallDays": [ "2026-04-17" ], "conceptTags": [ "vpn-srv", "home/node", "openclaw/ha-ssh-key", "185.130.212.192", "20,4", "доступ", "vpn", "srv" ] }, "memory:memory/2026-04-14.md:1:28": { "key": "memory:memory/2026-04-14.md:1:28", "path": "memory/2026-04-14.md", "startLine": 1, "endLine": 28, "source": "memory", "snippet": "# Дневник — 2026-04-14 ## Проект BYTIK — создание агента ### Обсуждение со Славой - Слава попросил создать детского помощника \"Байтик\" для Егора (8 лет) - Архитектура: OpenClaw-агент с отдельным workspace, не standalone-приложение - LLM: Qwen 3.6-Plus (OpenRouter) ### Что сделано - Создан агент `bytik` в openclaw.json (id, workspace, модель, tools) - Добавлен binding: `agentId: bytik` → `accountId: bytik` - Настроен Telegram account `bytik` в channels.telegram.accounts - Создан workspace `~/.openclaw/workspace-bytik/`: - `SOUL.md` — личность и границы - `AGENTS.md` — инструкции, whitelist, cron - `IDENTITY.md` — имя, emoji, пол - `USER.md` — про Егора - `MEMOR.md` — долгосрочная", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.6130283911988113, "maxScore": 0.6130283911988113, "firstRecalledAt": "2026-04-25T05:50:55.453Z", "lastRecalledAt": "2026-04-25T05:50:55.453Z", "queryHashes": [ "0f60b8d8cec8" ], "recallDays": [ "2026-04-25" ], "conceptTags": [ "router", "openclaw-агент", "standalone-приложение", "3.6-plus", "openclaw.json", "channels.telegram.accounts", "openclaw/workspace-bytik", "soul.md" ] }, "memory:memory/2026-04-24.md:21:43": { "key": "memory:memory/2026-04-24.md:21:43", "path": "memory/2026-04-24.md", "startLine": 21, "endLine": 43, "source": "memory", "snippet": "- Фикс `decimal.Decimal / float` → `float(alt_m)` в шумовой модели - Витрина 19.04: 99 рейсов с треком (rtlsdr=92, fa=3, fr24=2) - Создана таблица `fr24_ext.flight_actual` (DDL-миграция на VM) - `FR24_API_KEY=MVM0hi4S7RRh7Dm4EOl1ShpDPc8CrmITXT2LY5y4dd84a62a` добавлен в `.env` на VM - Пагинация flight-summary/full: цикл offset += 20 - UI enrichment: `schedule.html` (13 колонок), `schedule.js`, `main.py` (LEFT JOIN на flight_actual) - DDL-миграция schedule: `fr24_id`, `actual_takeoff`, `actual_landed`, `delay_*`, `flight_category`, `registration` - Задеплоено через `docker cp` → fr24-api, fr24-tracks-fr24, fr24-mart ### In Progress / Pending - Загрузка FR24 flight-summary/full за 2026-04-20 (", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.7627217918634415, "maxScore": 0.3955423265695572, "firstRecalledAt": "2026-04-25T09:55:48.033Z", "lastRecalledAt": "2026-04-25T09:57:24.355Z", "queryHashes": [ "3093ccbb7ccc", "494104edf81c" ], "recallDays": [ "2026-04-25" ], "conceptTags": [ "decimal.decimal", "alt-m", "19.04", "fr24-ext.flight-actual", "ddl-миграция", "fr24-api-key", "flight-summary/full", "schedule.html" ] }, "memory:memory/2026-04-24.md:1:25": { "key": "memory:memory/2026-04-24.md:1:25", "path": "memory/2026-04-24.md", "startLine": 1, "endLine": 25, "source": "memory", "snippet": "# 2026-04-24 — Memory Flush (pre-compaction) ## Урок: как я спалила кредиты FR24 (разбор ошибок) Перед запуском FR24 API на боевых кредитах нужно было: 1. **Проверить total** — многие API возвращают `total` или `X-Total-Count`. У FR24 не проверила, не знала сколько записей ожидать 2. **Тест с одним аэропортом** — `departure:SVO` вместо `both:SVO,both:DME,both:VKO,both:ZIA`. Посмотреть сколько страниц, умножить на кредиты 3. **Понять что значит `both:`** — включает коммерческое + частное + грузовое + военное по всем 4 аэропортам. Я предположила ~1500 рейсов как у Яндекса, но не проверила 4. **Посчитать бюджет заранее** — 44 800 ÷ 3 = ~14 900 рейсов максимум. Можно было поставить `MAX_PAGES", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.3846299439668655, "maxScore": 0.3846299439668655, "firstRecalledAt": "2026-04-25T09:55:48.033Z", "lastRecalledAt": "2026-04-25T09:55:48.033Z", "queryHashes": [ "3093ccbb7ccc" ], "recallDays": [ "2026-04-25" ], "conceptTags": [ "pre-compaction", "x-total-count", "max-pages", "flush", "pre", "compaction", "урок", "как" ] }, "memory:memory/2026-04-20.md:1:30": { "key": "memory:memory/2026-04-20.md:1:30", "path": "memory/2026-04-20.md", "startLine": 1, "endLine": 30, "source": "memory", "snippet": "# 2026-04-20 — Дневник ## Проект: FR24 / Noisemap — Фаза 2, Шаг 2 ### БТ финализировано - Файл: `tasks/flightradar24/docs/PHASE2_STEP2_DATA_MART.md` - FR24 API: `Flight tracks`, 40 кредитов/рейс, только по команде, T-1, SVO/DME/VKO/ZIA - FlightAware AeroAPI: только треки, ключ `7qMijd3b3gVudezng3eVhKtup8iKFr75` сохранён в `.env` как `FLIGHTAWARE_API_KEY` - Витрина `fr24_mart`: приоритет RTL-SDR > FR24 > FlightAware, источник в каждой записи - Шумовая модель: из прототипа, зоны 2/5/7/9 км (граница \"Низкий\" изменена 11→9 км) - Отложено: цена FlightAware Standard, глубина исторической загрузки FR24 ### FlightAware — тестирование ключа - Ключ `7qMijd3b3gVudezng3eVhKtup8iKFr75` протестирован и", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.38251920640468595, "maxScore": 0.38251920640468595, "firstRecalledAt": "2026-04-25T09:55:48.033Z", "lastRecalledAt": "2026-04-25T09:55:48.033Z", "queryHashes": [ "3093ccbb7ccc" ], "recallDays": [ "2026-04-25" ], "conceptTags": [ "кредитов/рейс", "t-1", "svo/dme/vko/zia", "flightaware-api-key", "fr24-mart", "rtl-sdr", "2/5/7/9", "дневник" ] }, "memory:memory/2026-04-20.md:24:41": { "key": "memory:memory/2026-04-20.md:24:41", "path": "memory/2026-04-20.md", "startLine": 24, "endLine": 41, "source": "memory", "snippet": "- `ingest/tracks_fa/` — воркер FlightAware треков (порт 8002) - `ingest/mart/` — воркер витрины + шумовая модель, noise_grid по round(lat,2) - `frontend/static/data_sources.html` + `data_sources.js` - `docker-compose.yml` — 3 новых сервиса - `frontend/main.py` — `/data-sources` + 5 API эндпоинтов ### Деплой на VM (fr24, 192.168.2.67) - DDL `005_schema_tracks.sql` применён через `docker exec fr24-postgres psql` - Контейнеры `fr24-tracks-fr24` (8001), `fr24-tracks-fa` (8002), `fr24-mart` — собраны и запущены, все healthy - Обнаружена ошибка в `main.py` (frontend): колонка `flight_date` vs `coverage_date` в `fr24_mart.source_coverage` - Фикс задеплоен, api пересобран ### Открытые задачи на за", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.3795589625835418, "maxScore": 0.3795589625835418, "firstRecalledAt": "2026-04-25T09:55:48.033Z", "lastRecalledAt": "2026-04-25T09:55:48.033Z", "queryHashes": [ "3093ccbb7ccc" ], "recallDays": [ "2026-04-25" ], "conceptTags": [ "ingest/tracks-fa", "ingest/mart", "noise-grid", "data-sources.js", "docker-compose.yml", "frontend/main.py", "data-sources", "192.168.2.67" ] }, "memory:memory/2026-04-21.md:63:93": { "key": "memory:memory/2026-04-21.md:63:93", "path": "memory/2026-04-21.md", "startLine": 63, "endLine": 93, "source": "memory", "snippet": "1. **DDL fix**: `origin_icao`/`destination_icao` VARCHAR(5)→VARCHAR(20) — FA API возвращает координаты (`L 55.61740 39.72253`) вместо ICAO; применена миграция на VM 2. **fa_worker.py**: добавлена функция `_icao_or_none()` — фильтрует нестандартные значения 3. **build_mart.py**: - Добавлен словарь `AIRLINE_IATA_TO_ICAO` + конвертация callsign из flight_number - Добавлен числовой матч по `ident_iata` для FA рейсов - Расширен словарь `ICAO_TO_IATA` аэропортов - Фикс `decimal.Decimal / float` → `float(alt_m)` в шумовой модели ### Результат витрины 19.04.2026: - ✅ **91 рейс с RTL-SDR треком** (было 0) - 9 042 точек трека - 167 ячеек шумовой сетки - Покрытие: **11.7%** от расписания -", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.6824049293994903, "maxScore": 0.36978600025177, "firstRecalledAt": "2026-04-25T09:55:48.033Z", "lastRecalledAt": "2026-04-26T07:04:02.188Z", "queryHashes": [ "3093ccbb7ccc", "f224f6a02885" ], "recallDays": [ "2026-04-25", "2026-04-26" ], "conceptTags": [ "origin-icao", "destination-icao", "55.61740", "39.72253", "fa-worker.py", "icao-or-none", "build-mart.py", "airline-iata-to-icao" ] }, "memory:memory/2026-04-21.md:32:66": { "key": "memory:memory/2026-04-21.md:32:66", "path": "memory/2026-04-21.md", "startLine": 32, "endLine": 66, "source": "memory", "snippet": "- Остаток: **50 486** из 120 000 (промо Explorer) - Потрачено: ~69 514 за прошлые загрузки - Стоимость загрузки трека: ~2 кредиты за summaries, потом per-track - Хватит на ~1 260 рейсов (40 кредитов/рейс) ## FR24 Track — первый тест загрузки - Рейс: **SU6807 / FV6807 (SDM6807)** от 01.04.2026 - fr24_id: `3f0161d3`, борт SU95 RA-89131 - Маршрут: UUEE (Шереметьево) → ULLI (Пулково) - Взлёт: 31.03 21:16:27 UTC, посадка: 31.03 22:13:01 UTC - **1056 точек трека** загружено (ADSB: 17, MLAT: 1039) - Высоты: 0 – 34 025 ft - Загружено вручную через API + SQL INSERT в `fr24_ext.fr24_tracks` + `fr24_mart.flight_tracks` - Важно: сервис `fr24-tracks-fr24` загружает ВСЕ рейсы за дату через `iter_flight_s", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.7031851530075073, "maxScore": 0.36804868578910827, "firstRecalledAt": "2026-04-25T09:55:48.033Z", "lastRecalledAt": "2026-04-26T07:04:02.188Z", "queryHashes": [ "3093ccbb7ccc", "f224f6a02885" ], "recallDays": [ "2026-04-25", "2026-04-26" ], "conceptTags": [ "per-track", "кредитов/рейс", "01.04.2026", "fr24-id", "ra-89131", "31.03", "fr24-ext.fr24-tracks", "fr24-mart.flight-tracks" ] }, "memory:memory/2026-03-30.md:26:61": { "key": "memory:memory/2026-03-30.md:26:61", "path": "memory/2026-03-30.md", "startLine": 26, "endLine": 61, "source": "memory", "snippet": "- Модель должна быть В allowlist `agents.defaults.models` ПЕРЕД установкой в primary - Формат ключа: полный ID с префиксом провайдера (`claudeapi/claude-sonnet-4-6`) - После изменений — перезапуск контейнера: `docker restart openclaw-gateway` --- ## Проект RTL-SDR ADS-B (POC) ### Статус - RTL-SDR Blog V4 работает на Windows машине Славы - Создан POC-скрипт `decode.py` (лежит на Windows: `C:\\Users\\mva15\\Downloads\\Release radar\\x64\\`) - Стек: `rtl_adsb.exe` → Python pyModeS → HTTP сервер → OpenLayers 10 карта - URL локально: `http://localhost:8080/` ### Что работает - ✅ Приём ADS-B на 1090 МГц через RTL-SDR Blog V4 - ✅ Декодирование позиций: `position_with_ref` (основной) + глобальный CPR", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.33961203694343567, "maxScore": 0.33961203694343567, "firstRecalledAt": "2026-04-26T07:04:02.188Z", "lastRecalledAt": "2026-04-26T07:04:02.188Z", "queryHashes": [ "f224f6a02885" ], "recallDays": [ "2026-04-26" ], "conceptTags": [ "gateway", "agents.defaults.models", "claudeapi/claude-sonnet-4-6", "openclaw-gateway", "rtl-sdr", "ads-b", "poc-скрипт", "decode.py" ] }, "memory:memory/2026-04-19.md:135:145": { "key": "memory:memory/2026-04-19.md:135:145", "path": "memory/2026-04-19.md", "startLine": 135, "endLine": 145, "source": "memory", "snippet": "- `pgrep` нет в python:3.11-slim → healthcheck только через файлы (`test -f /tmp/ready`) или Python urllib - Dev-агент запускается без явного `model` параметра — берёт из своего конфига ### Статус проекта FR24 - ✅ Step 1: стек + PostgreSQL - ✅ Step 2: реальный ADS-B через dump1090 - ✅ Step 3: Leaflet карта - ✅ Step 4: мониторинг + backup - ✅ Step 5: мониторинг дашборд (monitoring.html) - 🔜 Step 6: кластеризация маркеров (Leaflet.markercluster)", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.32212974429130553, "maxScore": 0.32212974429130553, "firstRecalledAt": "2026-04-26T07:04:02.188Z", "lastRecalledAt": "2026-04-26T07:04:02.188Z", "queryHashes": [ "f224f6a02885" ], "recallDays": [ "2026-04-26" ], "conceptTags": [ "backup", "3.11-slim", "tmp/ready", "dev-агент", "ads-b", "monitoring.html", "leaflet.markercluster", "pgrep" ] }, "memory:memory/2026-03-30.md:53:83": { "key": "memory:memory/2026-03-30.md:53:83", "path": "memory/2026-03-30.md", "startLine": 53, "endLine": 83, "source": "memory", "snippet": "- Аэропортовый трафик (низкие высоты) ловится плохо без внешней антенны - msgs: 1 у большинства → на краю зоны приёма ### Антенна - Оптимальная длина для 1090 МГц: **6.9 см** каждое плечо диполя - RTL-SDR Blog V4 поставил у окна - Для пром-решения нужна специализированная ADS-B антенна (FA или RTL-SDR Blog ADS-B) ### Технические нюансы - dump1090 из Dump1090-windows-exe-main НЕ работает с V4 напрямую (`modeS_init_RTLSDR(): rc: 1`) - `rtl_tcp.exe` из RTL-SDR Blog release — работает с V4 - Флаг `-g 49.6` ломает `rtl_adsb.exe` (0 бортов) - Правильный запуск: `rtl_adsb.exe` без флагов (автогейн) ### Бэклог нойзмэп (обновлён) - [ ] **RTL-SDR Blog V4 — пром решение** (новый пункт) — купить ADS-", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.3143289566040039, "maxScore": 0.3143289566040039, "firstRecalledAt": "2026-04-26T07:04:02.188Z", "lastRecalledAt": "2026-04-26T07:04:02.188Z", "queryHashes": [ "f224f6a02885" ], "recallDays": [ "2026-04-26" ], "conceptTags": [ "6.9", "rtl-sdr", "пром-решения", "ads-b", "dump1090-windows-exe-main", "modes-init-rtlsdr", "rtl-tcp.exe", "49.6" ] }, "memory:memory/2026-04-11.md:62:71": { "key": "memory:memory/2026-04-11.md:62:71", "path": "memory/2026-04-11.md", "startLine": 62, "endLine": 71, "source": "memory", "snippet": "- **Скрипты:** backup.sh, checker.sh, lib.sh, manager.sh, rollback.sh, session.sh, ssh_exec.sh, verify.sh + yaml_get.js - **Проверка Стрим (15:15 UTC):** ✅ синтаксис всех 8 bash-скриптов чистый, параметры.yaml читается, ключевые механизмы (force_lock, jq_compact через node, ssh_exec таймауты, checker 5 уровней) — всё корректно - **checker.sh выдаёт ошибки по секретам** — это нормально, `.env` ещё не заполнен (нужны MVA154_PASSWORD, RUVPN_SSH_KEY, HA_SSH_KEY, LOCALHOST_SUDO_PASS) ### Хосты в parameters.yaml: - `mva154` — по паролю (ssh key + sudo password) - `ruvpn-srv` — по SSH-ключу - `ha` — по SSH-ключу - `localhost` — localhost (sudo: false)", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.3638544976711273, "maxScore": 0.3638544976711273, "firstRecalledAt": "2026-04-26T10:54:35.677Z", "lastRecalledAt": "2026-04-26T10:54:35.677Z", "queryHashes": [ "b59ab7ef7777" ], "recallDays": [ "2026-04-26" ], "conceptTags": [ "backup", "backup.sh", "checker.sh", "lib.sh", "manager.sh", "rollback.sh", "session.sh", "ssh-exec.sh" ] }, "memory:memory/2026-05-02.md:107:142": { "key": "memory:memory/2026-05-02.md:107:142", "path": "memory/2026-05-02.md", "startLine": 107, "endLine": 142, "source": "memory", "snippet": "- [ ] Обновить онтологию для проекта enduro-trails ## Enduro Trails — ревью прототипа (12:53 UTC) - Слава попросил ревью — после серии горячих фиксов (clip_by_rect, y_coord_down, swap lat/lon) код запутан - TODO: провести полное ревью app.py и index.html # 2026-05-02 — Дневник ## Enduro Trails — отладка прототипа (утро) ### Что делали Долгая отладка карты грунтовок ЦФО на http://82.22.50.71:5558 ### Проблемы и решения #### 1. style.json не грузился (404 на /static/style.json) - Путь в index.html был `/static/style.json`, а сервер отдаёт `/style.json` - Исправлено: путь исправлен на `/style.json` #### 2. Шрифты — demotiles.maplibre.org отдавал 404 - MapLibre зависал при инициализации -", "recallCount": 3, "dailyCount": 0, "groundedCount": 0, "totalScore": 1.2756981656116755, "maxScore": 0.5344992920917779, "firstRecalledAt": "2026-05-04T06:57:05.721Z", "lastRecalledAt": "2026-05-17T18:52:48.191Z", "queryHashes": [ "af0cb8f00b60", "1feee93c2d26", "0d719d59a629" ], "recallDays": [ "2026-05-04", "2026-05-11", "2026-05-17" ], "conceptTags": [ "enduro-trails", "clip-by-rect", "y-coord-down", "lat/lon", "app.py", "index.html", "82.22.50.71", "style.json" ] }, "memory:memory/2026-05-02.md:86:117": { "key": "memory:memory/2026-05-02.md:86:117", "path": "memory/2026-05-02.md", "startLine": 86, "endLine": 117, "source": "memory", "snippet": "- \"Опять пляшут\" / \"Ещё как прыгают!!!\" — подтверждение что проблема не решена - Ключевое наблюдение Славы: **\"Треки же отражают дорогу, почему они смещаются\"** — треки из OSM должны идеально ложиться на OSM подложку ### Диагностика - Удаление `clip_by_rect` НЕ помогло — треки продолжали прыгать - Причина: без клиппинга геометрия выходит за `quantize_bounds`, координаты >4096 ломают MapLibre - **Найден корневой баг**: в WKB геометрии из БД координаты хранятся как `(lat, lon)`, а `wkb_to_coords()` читала их как `(lon, lat)`. Широта и долгота были перепутаны! ### Фикс (12:07 UTC) - В `wkb_to_coords()`: `lat, lon = struct.unpack_from('4096 ломают MapLibre - **Найден корневой баг**: в WKB геометрии из БД координаты хранятся как `(lat, lon)`, а `wkb_to_coords()` читала их как `(lon, lat)`. Широта и долгота были перепутаны! ### Фикс (12:07 UTC) - В `wkb_", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.48154737169778283, "maxScore": 0.48154737169778283, "firstRecalledAt": "2026-05-11T08:41:48.539Z", "lastRecalledAt": "2026-05-11T08:41:48.539Z", "queryHashes": [ "1feee93c2d26" ], "recallDays": [ "2026-05-11" ], "conceptTags": [ "z12.4", "z11.8/12.0", "clip-by-rect", "quantize-bounds", "wkb-to-coords", "скриншоты", "славы", "прислал" ] }, "memory:memory/2026-05-02.md:217:251": { "key": "memory:memory/2026-05-02.md:217:251", "path": "memory/2026-05-02.md", "startLine": 217, "endLine": 251, "source": "memory", "snippet": "- [ ] Синхронизировать app.py с workspace: `tasks/enduro-trails/prototype/app.py` - [ ] Обновить PROJECT.md и TASK.md для enduro-trails - [ ] Обновить онтологию для проекта enduro-trails ## Enduro Trails — ревью прототипа (12:53 UTC) - Слава попросил ревью — после серии горячих фиксов (clip_by_rect, y_coord_down, swap lat/lon) код запутан - TODO: провести полное ревью app.py и index.html --- ## Enduro Trails — полное ревью и план восстановления (13:07–13:57 UTC) ### Что сделано - Прочитаны все файлы прототипа: `app.py` (из контейнера), `docker-compose.yml`, `static/index.html`, `static/style.json`, `scripts/parse.py`, `scripts/download.sh` - Прочитаны требования: `TECHNICAL_SPEC.md`, `C", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.479680287886423, "maxScore": 0.479680287886423, "firstRecalledAt": "2026-05-11T08:41:48.539Z", "lastRecalledAt": "2026-05-11T08:41:48.539Z", "queryHashes": [ "1feee93c2d26" ], "recallDays": [ "2026-05-11" ], "conceptTags": [ "app.py", "project.md", "task.md", "enduro-trails", "clip-by-rect", "y-coord-down", "lat/lon", "index.html" ] }, "memory:memory/2026-05-12.md:48:80": { "key": "memory:memory/2026-05-12.md:48:80", "path": "memory/2026-05-12.md", "startLine": 48, "endLine": 80, "source": "memory", "snippet": "- Объяснила зачем нужна крышка-садж (крышка + сковорода в одном) — ответила голосовым ## Голосовые сообщения - Рабочая схема подтверждена: send_voice.sh → openclaw message send CLI → краткий текст с эмодзи - Без MEDIA: директивы, без [[audio_as_voice]] — не дублирует ## UI-Test Skill — создан и протестирован - Dev-агент создал скилл: scripts/health_check.js, parse_testcases.js, run_tests.js - Playwright + Chromium headless + vision-анализ скриншотов - Тесты на enduro-trails: загрузка карты ✅, переключение темы ✅ - Я дописала SKILL.md (документация — не код) - Селекторы: `#btn-theme` (тема), `#terrain-toggle` (рельеф) ## Terrain JS — баг найден и пофикшен - UI-тест обнаружил: кнопка 🏔️ ес", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.6406014525461395, "maxScore": 0.3560984373092651, "firstRecalledAt": "2026-05-13T05:20:38.705Z", "lastRecalledAt": "2026-05-17T18:52:39.382Z", "queryHashes": [ "3450b69f5041", "f9f2da3eeeda" ], "recallDays": [ "2026-05-13", "2026-05-17" ], "conceptTags": [ "крышка-садж", "send-voice.sh", "audio-as-voice", "ui-test", "dev-агент", "scripts/health-check.js", "parse-testcases.js", "run-tests.js" ] }, "memory:memory/2026-05-13.md:1:29": { "key": "memory:memory/2026-05-13.md:1:29", "path": "memory/2026-05-13.md", "startLine": 1, "endLine": 29, "source": "memory", "snippet": "# 2026-05-13 — Terrain UI фикс + генерация тайлов ## Что сделано ### Terrain UI баги (из UI-тестов) - **Попап terrain** — позиционирование исправлено (привязка к кнопке, а не top-right угол) - **Подписи чекбоксов** — были невидимы из-за отсутствия шрифтов в headless Chromium. Установлены Noto Sans в тестовое окружение. В реальном браузере подписи были видны всегда. - **\"Зум 10+\"** подсказка для hillshade — теперь вызывается при открытии попапа + стилизована заметно - **Переименование:** Гипсометрия → \"Высоты цветом\", Отмывка → \"Тени рельефа\" - **Opacity:** снижен с 0.85 → 0.65 для читаемости подписей населённых пунктов ### Генерация hypso тайлов - **Root cause пустых тайлов:** VRT создава", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.3777948200702667, "maxScore": 0.3777948200702667, "firstRecalledAt": "2026-05-14T06:09:32.459Z", "lastRecalledAt": "2026-05-14T06:09:32.459Z", "queryHashes": [ "6cb802fba72d" ], "recallDays": [ "2026-05-14" ], "conceptTags": [ "ui-тестов", "top-right", "из-за", "0.85", "0.65", "terrain", "фикс", "генерация" ] }, "memory:memory/2026-05-14.md:342:365": { "key": "memory:memory/2026-05-14.md:342:365", "path": "memory/2026-05-14.md", "startLine": 342, "endLine": 365, "source": "memory", "snippet": "Слава дал папку `tasks/multi-agent/proposal_v1/` — 10 файлов с полной спецификацией мультиагентной системы разработки ПО. Задача: подготовить BRD. ### Решения - **Orchestrator = детерминированный скрипт (FastAPI)**, не LLM. Чистая логика \"если X → Y\". - **Стрим = Analyst** (пишет BRD/ТЗ, координирует со Славой). НЕ оркестратор. - **Claude Code CLI на mva154** = исполнители (Architect, Developer, Reviewer, Tester) - **Plane** = витрина для Славы (webhooks → Orchestrator) - **Gitea** = source of truth + CI (Gitea Actions) - Architect и Tester — обязательны (Слава подтвердил) - Designer — вне скоупа пилота ### BRD создан - Файл: `tasks/multi-agent/BRD.md` - Статус: draft, дополнен по 10 расхо", "recallCount": 3, "dailyCount": 0, "groundedCount": 0, "totalScore": 1.0715084820985794, "maxScore": 0.36145766377449035, "firstRecalledAt": "2026-05-17T21:13:50.076Z", "lastRecalledAt": "2026-05-23T21:53:58.665Z", "queryHashes": [ "112b26aba744", "b7964eddde53", "3b4000a471d1" ], "recallDays": [ "2026-05-17", "2026-05-22", "2026-05-23" ], "conceptTags": [ "tasks/multi-agent/proposal-v1", "brd/тз", "tasks/multi-agent/brd.md", "слава", "дал", "папку", "tasks", "multi" ] }, "memory:memory/2026-03-23.md:108:132": { "key": "memory:memory/2026-03-23.md:108:132", "path": "memory/2026-03-23.md", "startLine": 108, "endLine": 132, "source": "memory", "snippet": "- **Ответы по искажению контекста:** - Использование attachments в sessions_spawn для передачи файлов и предыдущих сообщений - Дробление сложных задач на чёткие маленькие шаги - Чёткие инструкции в SOUL.md каждого агента - **Ответы по взаимодействию специалистов:** - Стандартный путь: через координатора (сохранение контроля) - Альтернатива: прямое общение через sessions_send (требует чётких протоколов) - Рекомендация: начинать с координатора, при необходимости оптимизировать - **Ответы по росту контекста и стоимости:** - Использование дешёвых моделей для координатора (Haiku, Gemini Flash) - Очистка контекста после завершения задач - Разбивка больших проектов на независимые", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.35524152517318724, "maxScore": 0.35524152517318724, "firstRecalledAt": "2026-05-21T11:19:53.713Z", "lastRecalledAt": "2026-05-21T11:19:53.713Z", "queryHashes": [ "1e4a90c9f728" ], "recallDays": [ "2026-05-21" ], "conceptTags": [ "sessions-spawn", "soul.md", "sessions-send", "ответы", "искажению", "контекста", "использование", "attachments" ] }, "memory:memory/2026-05-19.md:1:40": { "key": "memory:memory/2026-05-19.md:1:40", "path": "memory/2026-05-19.md", "startLine": 1, "endLine": 40, "source": "memory", "snippet": "# 2026-05-19 — Мультиагентный конвейер: шаги 1-5 ## Что сделано сегодня ### Шаг 1: Gitea Actions Runner ✅ - Runner уже был настроен (act_runner v0.2.11, systemd), но DNS проблема - Исправила: `[actions] ENABLED = true` в app.ini, переключила runner на localhost - CI работает: lint + test + build = success ### Шаг 2: Branch Protection ✅ - Настроена через Gitea API на main (enduro-trails) - Direct push запрещён, merge только через PR + green CI ### Шаг 3: Plane API ✅ - Создала API-токен через Plane API (admin) - 9 labels созданы (stage:*, back-to:*, escalation:*) - Workspace: `ag_proj`, 2 проекта видны ### Шаг 4: Orchestrator MVP ✅ - Dev-агент реализовал за ~9 минут - FastAPI + SQLite + w", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.37349730432033534, "maxScore": 0.37349730432033534, "firstRecalledAt": "2026-05-25T16:50:11.535Z", "lastRecalledAt": "2026-05-25T16:50:11.535Z", "queryHashes": [ "412bb2d62df7" ], "recallDays": [ "2026-05-25" ], "conceptTags": [ "1-5", "act-runner", "v0.2.11", "app.ini", "enduro-trails", "api-токен", "back-to", "ag-proj" ] }, "memory:memory/2026-03-30.md:1:35": { "key": "memory:memory/2026-03-30.md:1:35", "path": "memory/2026-03-30.md", "startLine": 1, "endLine": 35, "source": "memory", "snippet": "# Память: 30 марта 2026 ## OpenClaw конфигурация ### Провайдер claudeapi.pro - Добавлен провайдер `claudeapi` в `openclaw.json` → `models.providers.claudeapi` - baseUrl: `https://api.claudeapi.pro`, api: `anthropic-messages` - Ключ: `CLAUDEAPI_PRO_KEY` в `~/.openclaw/.env` - Модели: `claudeapi/claude-opus-4-6`, `claudeapi/claude-sonnet-4-6` - Текущая primary модель переключена на `claudeapi/claude-sonnet-4-6` (→ Opus после перезапуска) - Трафик идёт через Xray VLESS → Франкфурт (IP: 43.245.226.231, HOSTKEY B.V., DE) ### Xray VLESS в Docker - Настроен docker-compose с сервисом `xray` (image: `ghcr.io/xtls/xray-core:latest`) - Конфиг: `./xray-config.json` рядом с docker-compose.yml - VLESS", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.3508022129535675, "maxScore": 0.3508022129535675, "firstRecalledAt": "2026-05-25T19:46:00.806Z", "lastRecalledAt": "2026-05-25T19:46:00.806Z", "queryHashes": [ "21c5e68756b8" ], "recallDays": [ "2026-05-25" ], "conceptTags": [ "claudeapi.pro", "openclaw.json", "models.providers.claudeapi", "api.claudeapi.pro", "anthropic-messages", "claudeapi-pro-key", "claudeapi/claude-opus-4-6", "claudeapi/claude-sonnet-4-6" ] }, "memory:memory/2026-04-10.md:74:131": { "key": "memory:memory/2026-04-10.md:74:131", "path": "memory/2026-04-10.md", "startLine": 74, "endLine": 131, "source": "memory", "snippet": "QMD создавал `memory-root-main` с паттерном `**/*.md`, хотя OpenClaw ожидает `MEMORY.md`. Затем не мог создать `memory-alt-main` для того же пути. **Фикс:** вручную добавить `memory-alt-main` в `~/.openclaw/agents/main/qmd/xdg-config/qmd/index.yml`: ```yaml memory-alt-main: path: /home/node/.openclaw/workspace pattern: \"memory.md\" ``` После этого удалить sqlite и переиндексировать: ```bash rm ~/.openclaw/agents/main/qmd/xdg-cache/qmd/index.sqlite* openclaw memory index --force ``` ### Эмбеддинги - Модель: `embeddinggemma-300M-Q8_0.gguf` (~328MB, скачана) - Только CPU, без GPU → embed одного батча занимает 30+ минут - OpenClaw таймаутит на 120 сек и помечает Vector: unavailable, но ф", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.3957823187112808, "maxScore": 0.3957823187112808, "firstRecalledAt": "2026-05-25T19:49:57.306Z", "lastRecalledAt": "2026-05-25T19:49:57.306Z", "queryHashes": [ "8c383a590243" ], "recallDays": [ "2026-05-25" ], "conceptTags": [ "embedding", "qmd", "memory-root-main", "memory.md", "memory-alt-main", "home/node", "openclaw/workspace", "embeddinggemma-300m-q8-0.gguf" ] }, "memory:memory/2026-05-21.md:140:177": { "key": "memory:memory/2026-05-21.md:140:177", "path": "memory/2026-05-21.md", "startLine": 140, "endLine": 177, "source": "memory", "snippet": "- ✅ Уже делал задачи (ET-002 артефакты) ## Dev-агент: фикс критических багов (17:38-17:52) Dev-агент (run `624ca711`) выполнил все 5 фиксов: 1. ✅ git уже был в Dockerfile 2. ✅ GIT_AUTHOR_NAME/EMAIL = claude-bot в launcher.py 3. ✅ task_id передаётся в launch() и записывается в БД 4. ✅ Timeout watchdog (30 мин, kill -9) 5. ✅ Auto-advance в gitea.py: CI green → review, PR approved → testing, back-to:dev при request_changes Rebuild успешен: git v2.47.3 в контейнере, health OK. ## Dev-агент: Plane sync (18:00-18:55) Dev-агент (run `bad29612`) создал `src/plane_sync.py`, интегрировал в `webhooks/plane.py`. Таймаутнулся на `gitea.py` — дозавершила вручную. Результат: - ✅ `src/plane_sync.py` —", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 0.2760594550605954, "maxScore": 0.2760594550605954, "firstRecalledAt": "2026-05-26T05:29:25.926Z", "lastRecalledAt": "2026-05-26T05:29:25.926Z", "queryHashes": [ "e7d29a3a8d7b" ], "recallDays": [ "2026-05-26" ], "conceptTags": [ "et-002", "dev-агент", "38-17", "git-author-name/email", "claude-bot", "launcher.py", "task-id", "auto-advance" ] } } }