{
  "version": 1,
  "updatedAt": "2026-05-08T11:29:28.323Z",
  "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": 1,
      "dailyCount": 0,
      "groundedCount": 0,
      "totalScore": 0.375397714972496,
      "maxScore": 0.375397714972496,
      "firstRecalledAt": "2026-05-04T06:57:05.721Z",
      "lastRecalledAt": "2026-05-04T06:57:05.721Z",
      "queryHashes": [
        "af0cb8f00b60"
      ],
      "recallDays": [
        "2026-05-04"
      ],
      "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('<dd', data, offset)` → `coords.append((lon, lat))` - Раньш",
      "recallCount": 1,
      "dailyCount": 0,
      "groundedCount": 0,
      "totalScore": 0.3636188447475433,
      "maxScore": 0.3636188447475433,
      "firstRecalledAt": "2026-05-04T06:57:05.721Z",
      "lastRecalledAt": "2026-05-04T06:57:05.721Z",
      "queryHashes": [
        "af0cb8f00b60"
      ],
      "recallDays": [
        "2026-05-04"
      ],
      "conceptTags": [
        "clip-by-rect",
        "quantize-bounds",
        "wkb-to-coords",
        "struct.unpack-from",
        "coords.append",
        "опять",
        "пляшут",
        "ещё"
      ]
    },
    "memory:memory/2026-05-03.md:1:36": {
      "key": "memory:memory/2026-05-03.md:1:36",
      "path": "memory/2026-05-03.md",
      "startLine": 1,
      "endLine": 36,
      "source": "memory",
      "snippet": "# 2026-05-03 — Дневник Стрим ## Enduro Trails — большой день ### Что сделали сегодня **Фикс путей и деплой:** - Исправлены абсолютные пути `/app.css`, `/app.js` → относительные в `index.html` - Карта заработала через HTTPS `https://openclaw.mva154.duckdns.org/enduro/` - Геолокация работает **Стиль карты:** - Тропы (path/footway/bridleway) → красный пунктир `#cc0000` - Слой `trails-asphalt` скрыт (visibility: none, opacity: 0) - Легенда обновлена: Lev1-2 / Lev3-5 / Тропа (асфальт убран) - Порядок легенды: Lev1-2 → Lev3-5 → Тропа - Раскраска треков: Lev1-2 жёлтый (#FFD700), Lev3-5 красный (#FF4400), толщина одинаковая - Подложка: raster-saturation -0.3, raster-contrast 0.2 (лучше читаются",
      "recallCount": 1,
      "dailyCount": 0,
      "groundedCount": 0,
      "totalScore": 0.3552299261093139,
      "maxScore": 0.3552299261093139,
      "firstRecalledAt": "2026-05-04T06:57:05.721Z",
      "lastRecalledAt": "2026-05-04T06:57:05.721Z",
      "queryHashes": [
        "af0cb8f00b60"
      ],
      "recallDays": [
        "2026-05-04"
      ],
      "conceptTags": [
        "app.css",
        "app.js",
        "index.html",
        "path/footway/bridleway",
        "trails-asphalt",
        "lev1-2",
        "lev3-5",
        "raster-saturation"
      ]
    },
    "memory:memory/2026-05-04.md:1:30": {
      "key": "memory:memory/2026-05-04.md:1:30",
      "path": "memory/2026-05-04.md",
      "startLine": 1,
      "endLine": 30,
      "source": "memory",
      "snippet": "# 2026-05-04 — Дневник Стрим ## Enduro Trails — Фаза 3 «Умный маршрут» ### Что делали Полная реализация Фазы 3: BRD, тест-кейсы, реализация, тестирование, баг-фиксы. ### Документы созданы - `tasks/enduro-trails/BRD_PHASE3.md` — бизнес-требования (6 фич, согласовано со Славой) - `tasks/enduro-trails/TEST_CASES_PHASE3.md` — 56 тест-кейсов - `tasks/enduro-trails/DEV_TASK_PHASE3.md` — ТЗ для Dev-агента - `tasks/ui-testing/PROJECT.md` — проект UI-тестирования (Playwright/Puppeteer на mva154) - `tasks/ui-testing/README.md` — как запустить - `tasks/ui-testing/tests/enduro-phase3.js` — 56 TC в Playwright-скрипте - `tasks/ui-testing/tests/template.js` — шаблон для новых проектов - `tasks/ui-testin",
      "recallCount": 3,
      "dailyCount": 0,
      "groundedCount": 0,
      "totalScore": 1.1207917988300324,
      "maxScore": 0.40014922022819516,
      "firstRecalledAt": "2026-05-05T05:03:32.115Z",
      "lastRecalledAt": "2026-05-06T04:34:51.648Z",
      "queryHashes": [
        "14db74d1ec5d",
        "6785ee533a29",
        "6c00717ee483"
      ],
      "recallDays": [
        "2026-05-05",
        "2026-05-06"
      ],
      "conceptTags": [
        "тест-кейсы",
        "баг-фиксы",
        "бизнес-требования",
        "тест-кейсов",
        "dev-агента",
        "tasks/ui-testing/project.md",
        "ui-тестирования",
        "playwright/puppeteer"
      ]
    },
    "memory:memory/2026-03-23.md:64:80": {
      "key": "memory:memory/2026-03-23.md:64:80",
      "path": "memory/2026-03-23.md",
      "startLine": 64,
      "endLine": 80,
      "source": "memory",
      "snippet": "- **Claude Sonnet:** создаёт текст с оптимальной пунктуацией, паузами, плавными формулировками, что лучше для TTS - **DeepSeek v3.2:** генерирует более компактный текст, менее выраженная структура предложений, что может приводить к искажениям при озвучивании - **Ключевой вывод:** Качество голосовых сообщений зависит не от самого синтеза речи, а от текста, который подаётся в TTS-движок - **Рекомендация:** Для задач, где важна качественная озвучка, использовать модели с более структурированным выводом (Claude Sonnet) ### Создание специализированного агента для оптимизации текста под TTS - 23 марта 17:09 - Слава предложил создать первого специализированного агента для формулирования текста, ид",
      "recallCount": 1,
      "dailyCount": 0,
      "groundedCount": 0,
      "totalScore": 0.40174805521965024,
      "maxScore": 0.40174805521965024,
      "firstRecalledAt": "2026-05-05T20:11:55.846Z",
      "lastRecalledAt": "2026-05-05T20:11:55.846Z",
      "queryHashes": [
        "4c737bff00f4"
      ],
      "recallDays": [
        "2026-05-05"
      ],
      "conceptTags": [
        "v3.2",
        "tts-движок",
        "claude",
        "sonnet",
        "создаёт",
        "текст",
        "оптимальной",
        "пунктуацией"
      ]
    },
    "memory:memory/2026-03-23.md:48:66": {
      "key": "memory:memory/2026-03-23.md:48:66",
      "path": "memory/2026-03-23.md",
      "startLine": 48,
      "endLine": 66,
      "source": "memory",
      "snippet": "### Расчёт экономии от использования специализированных агентов - 23 марта 16:59 - Слава попросил рассчитать экономию от использования группы специализированных агентов вместо одного универсального - Проведён расчёт на основе цен OpenRouter API: - Claude Sonnet 4.6: $3/$15 за 1M токенов (input/output) - Claude Haiku: $1/$5 за 1M токенов - Llama 4 Maverick: $0.15/$0.60 за 1M токенов - Gemini 2.0 Flash: $0.10/$0.40 за 1M токенов - Оценка ежедневного потребления: 105K input, 67K output токенов - Стоимость одной модели Sonnet: ~$1.32 в день - Стоимость команды специалистов: ~$0.69 в день - Экономия: 48% ($0.63 в день, $19 в месяц, $230 в год) - Дополнительные преимущества: повышение каче",
      "recallCount": 1,
      "dailyCount": 0,
      "groundedCount": 0,
      "totalScore": 0.3850157171487808,
      "maxScore": 0.3850157171487808,
      "firstRecalledAt": "2026-05-05T20:11:55.846Z",
      "lastRecalledAt": "2026-05-05T20:11:55.846Z",
      "queryHashes": [
        "4c737bff00f4"
      ],
      "recallDays": [
        "2026-05-05"
      ],
      "conceptTags": [
        "router",
        "4.6",
        "input/output",
        "0.15",
        "0.60",
        "2.0",
        "0.10",
        "0.40"
      ]
    },
    "memory:memory/2026-03-21.md:27:57": {
      "key": "memory:memory/2026-03-21.md:27:57",
      "path": "memory/2026-03-21.md",
      "startLine": 27,
      "endLine": 57,
      "source": "memory",
      "snippet": "- Ветер: тихий, северо-западный, около 0.5 м/с - Атмосферное давление: 750 мм рт. ст. - Прогноз на неделю: стабильное потепление, к 27 марта до +13°C ## Главные новости дня (21 марта 2026) 1. Ночью 21 марта силы ПВО сбили 27 беспилотников на подступах к Москве 2. Президент США Дональд Трамп заявил о невозможности перемирия с Ираном 3. Минфин США выпустил временную лицензию на экспорт иранской нефти до 19 апреля 4. Президент Сербии Александр Вучич предположил, что Третья мировая война уже началась 5. Итальянское издание L'Antidiplomatico пишет о выгодной геополитической позиции России ## Продуктивный день — итоги Сегодня сделали очень много. Среди ключевых достижений: - Создан и отлажен с",
      "recallCount": 1,
      "dailyCount": 0,
      "groundedCount": 0,
      "totalScore": 0.35461454987525937,
      "maxScore": 0.35461454987525937,
      "firstRecalledAt": "2026-05-08T11:29:28.323Z",
      "lastRecalledAt": "2026-05-08T11:29:28.323Z",
      "queryHashes": [
        "352666518c7d"
      ],
      "recallDays": [
        "2026-05-08"
      ],
      "conceptTags": [
        "северо-западный",
        "0.5",
        "м/с",
        "ветер",
        "тихий",
        "северо",
        "западный",
        "около"
      ]
    }
  }
}
