auto-sync: 2026-04-19 14:10:01

This commit is contained in:
Stream
2026-04-19 14:10:01 +03:00
parent 03b31d6054
commit 69099c1ee5
8 changed files with 193 additions and 1 deletions

View File

@@ -81,7 +81,6 @@
### Структура workspace
- `tasks/{project}/` — каждый проект в своей папке, там же `PROJECT.md` с деталями
- `tasks/scripts/` и `tasks/reports/` — общие скрипты и отчёты
- `skills/` — готовые AgentSkills с полной документацией
- `data/` — выходные данные (`data/{skill-name}/`)
- `memory/` — дневные записи (`YYYY-MM-DD.md`)

View File

@@ -31,6 +31,29 @@
- Debian на VM оказался 13 (trixie), а не 12.
- В `.env` есть заглушка `DEV_BOT_TOKEN=<placeholder_dev_token>`, которая мешает автоматическому `source` всего файла при запуске shell-скриптов.
## Запуск Dev-агента (фиксация 19.04.2026)
После отладки выяснила точные правила запуска Dev-агента:
✅ Правильный рабочий вариант:
```json
{
"runtime": "subagent",
"agentId": "dev",
"cwd": "/home/node/.openclaw/workspace-dev",
"mode": "run"
}
```
❌ НЕЛЬЗЯ:
- `runtime="acp"` → "Failed to spawn agent command: dev" (dev — это subagent, не ACP harness)
- `model="vibecode/claude-sonnet-4.6"` → "model not allowed" (dev берёт свой primary из конфига, явный model блокнуть)
- `streamTo="parent"` → "streamTo is only supported for runtime=acp"
- без `cwd` → агент молча завершается с 0 токенов
📝 Правило: Dev-агент сам берёт свою модель из конфига (`vibecode/claude-sonnet-4.6`), НЕ передавать model явно.
---
## 2026-04-19 — FR24 / VM-FR24 progress
- Слава попросил продолжать проект FR24 по плану и действовать самостоятельно, задавая вопросы только там, где нельзя решить безопасно.
- На VM-FR24 уже выполнены: проверка состояния, установка Docker, подготовка каталогов проекта, проброс RTL-SDR через Proxmox GUI, применение udev-правил, устройство определяется как RTL-SDR Blog V4.

View File

@@ -0,0 +1,16 @@
# FR24 ingest compose environment
TZ=UTC
APP_ENV=dev
POSTGRES_DB=fr24
POSTGRES_USER=fr24
POSTGRES_PASSWORD=change-me
POSTGRES_PUBLISHED_PORT=5432
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
# Ingest scaffold
INGEST_MODE=placeholder
RAW_RETENTION_DAYS=3
OVERLAP_MINUTES=10
CAPTURE_SOURCE=rtl-sdr

View File

@@ -0,0 +1,21 @@
# Compose scaffold for FR24 ingest
This directory contains the baseline Docker Compose skeleton for the RTL-SDR ingest contour.
## Services
- `postgres` — PostgreSQL 16 + PostGIS
- `ingest` — placeholder for capture/preprocess wiring
- `status` — simple heartbeat/status scaffold
## Layout
- `../db/postgres` — PostgreSQL data directory
- `../db/init` — init SQL scripts for schema/bootstrap
- `../ingest` — ingest service code placeholder
- `../logs/ingest` — ingest logs
- `../logs/status` — status heartbeat files
- `../backup` — backup artifacts
## Notes
- No destructive migrations are included.
- The `ingest` service is a placeholder; wire real capture/preprocess logic later.
- The stack expects a `.env` file copied from `.env.example` in this directory.

View File

@@ -0,0 +1,88 @@
version: "3.9"
name: fr24-ingest
x-common-env: &common-env
TZ: ${TZ:-UTC}
POSTGRES_HOST: ${POSTGRES_HOST:-postgres}
POSTGRES_PORT: ${POSTGRES_PORT:-5432}
POSTGRES_DB: ${POSTGRES_DB:-fr24}
POSTGRES_USER: ${POSTGRES_USER:-fr24}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change-me}
APP_ENV: ${APP_ENV:-dev}
services:
postgres:
image: postgis/postgis:16-3.4
container_name: fr24-postgres
environment:
POSTGRES_DB: ${POSTGRES_DB:-fr24}
POSTGRES_USER: ${POSTGRES_USER:-fr24}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change-me}
TZ: ${TZ:-UTC}
ports:
- "${POSTGRES_PUBLISHED_PORT:-5432}:5432"
volumes:
- ../db/postgres:/var/lib/postgresql/data
- ../db/init:/docker-entrypoint-initdb.d:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-fr24} -d ${POSTGRES_DB:-fr24}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
restart: unless-stopped
networks:
- fr24-net
ingest:
image: alpine:3.20
container_name: fr24-ingest
command: ["sh", "-c", "echo 'ingest placeholder: wire capture/preprocess here'; tail -f /dev/null"]
environment:
<<: *common-env
INGEST_MODE: ${INGEST_MODE:-placeholder}
RAW_RETENTION_DAYS: ${RAW_RETENTION_DAYS:-3}
OVERLAP_MINUTES: ${OVERLAP_MINUTES:-10}
CAPTURE_SOURCE: ${CAPTURE_SOURCE:-rtl-sdr}
volumes:
- ../ingest:/app
- ../logs/ingest:/var/log/fr24
- ../backup:/backup
depends_on:
postgres:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "test -f /tmp/ingest-ready && echo ok || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
restart: unless-stopped
networks:
- fr24-net
status:
image: alpine:3.20
container_name: fr24-status
command: ["sh", "-c", "while true; do date -u +'%Y-%m-%dT%H:%M:%SZ' > /status/heartbeat; sleep 30; done"]
volumes:
- ../logs/status:/status
healthcheck:
test: ["CMD-SHELL", "test -f /status/heartbeat"]
interval: 30s
timeout: 5s
retries: 3
restart: unless-stopped
networks:
- fr24-net
networks:
fr24-net:
name: fr24-net
driver: bridge
volumes:
postgres-data:
ingest-logs:
backups:

View File

@@ -0,0 +1,7 @@
# Database layout
- `postgres/` — PostgreSQL persistent data volume
- `init/` — bootstrap SQL for extensions and initial schema
Current bootstrap only enables `postgis` and `pgcrypto`.
No irreversible migrations are included.

View File

@@ -0,0 +1,2 @@
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS pgcrypto;

View File

@@ -0,0 +1,36 @@
# FR24 ingest compose skeleton
## Goals
- PostgreSQL + PostGIS as the single database
- separate ingest placeholder service
- healthcheck/status scaffolding
- predictable volume layout
- environment-driven configuration
## Proposed runtime layout
- `compose/` — Docker Compose manifests and env examples
- `db/postgres/` — persistent PostgreSQL data
- `db/init/` — bootstrap SQL for extensions and initial schema
- `ingest/` — capture/preprocess implementation lives here later
- `logs/ingest/` — service logs
- `logs/status/` — heartbeat/status artifacts
- `backup/` — pg_dump and restore artifacts
## Environment variables
- `POSTGRES_DB`
- `POSTGRES_USER`
- `POSTGRES_PASSWORD`
- `POSTGRES_PUBLISHED_PORT`
- `RAW_RETENTION_DAYS`
- `OVERLAP_MINUTES`
- `CAPTURE_SOURCE`
- `TZ`
- `APP_ENV`
## Status scaffolding
The current skeleton includes a minimal `status` container that writes a heartbeat file. This is only a placeholder and should be replaced or extended by a real monitoring endpoint later.
## Open questions
- whether capture and preprocess should become separate services immediately
- whether API/viewer belongs in the first compose cut or later
- whether a dedicated monitoring container is needed before hardware verification