Колега Сергія використовує OpenClaw (Node.js agent framework) з 10-шаровою memory architecture + LightRAG semantic search. Сергій попросив порівняти з нашим стеком (Claude Code + Docker public-stack + Cloudflare proxy) і виокремити що варто запозичити.
Колега (OpenClaw):
Ми (Claude Code + Docker):
Це дві різні life-stages одної філософії. Колега — startup-mode (мінімум, швидко). Ми — scale-mode (зробили шари коли виросли в multi-host команду).
| Колега | Ми | |
|---|---|---|
| Файлів | 5 (Soul / User / Agents / Identity / Tools) | 1 (rules.md) + кілька user_*.md |
| Як інжектиться | System prompt при кожній сесії | SessionStart hook у additionalContext |
| Окрема Soul-філософія | ✅ Виокремлено | ❌ Змішано з tactical rules у rules.md |
Висновок: колега виграє з окремим Soul файлом. Tactical rules vs філософія — clear separation of concerns.
| Колега | Ми | |
|---|---|---|
| Розмір | 2KB, hard limit 3000 chars | Гнучкий, без ліміту |
| Зміст | Команда + проекти + рішення + алерти | Аналог + більше деталей |
| Token-цена | Менше при старті | Більше |
Висновок: hard limit дисциплінує токени, але жертвує повнотою. У нас flexible — оптимально для нашого scale.
| Колега | Ми | |
|---|---|---|
| Кадення | memory/YYYY-MM-DD.md щодня |
sessions/YYYY-MM-DD-DESC.md тільки значущі marathon-дні |
| К-сть файлів | ~65 | ~10 |
| Розмір | 12MB | <2MB |
| Noise рівень | Високий (щоденно записує все) | Низький (тільки коли є що) |
Висновок: наша модель чистіша. Daily noise + 65 файлів = багато мусора у memory.
| Колега | Ми | |
|---|---|---|
| Структура | brands/clients/people з YAML | Wiki з YAML frontmatter |
| Lookup | JSON-індекс (O(1)) | grep / AgentDB (~150ms) |
| Швидкість | Миттєво | 150ms |
🔴 Колега виграє: JSON-індекс — дешевий і швидкий lookup без semantic search latency.
| Колега | Ми | |
|---|---|---|
| Рівнів | 2 (LightRAG + вбудований memory_search) | 1 (AgentDB) |
| Storage | NanoVectorDB + NetworkX graph + JsonKV | sqlite + sqlite-vec |
| LLM/Embeddings | Gemini Flash + bge-m3 (Ollama) | paraphrase-multilingual-MiniLM-L12-v2 |
| Складність | Високa (3 storage, 2 рівні) | Простa (1 storage, 1 рівень) |
| Корпус | ~12MB, 274MB сесій | ~10MB |
Висновок: колега гнучкіший hybrid (graph + vector) для складних запитів. У нас простіше maintain. Для нашого корпусу AgentDB достатньо. Альтернатива — upgrade AgentDB на bge-m3 (multilingual SOTA) — 1-line change.
| Колега | Ми | |
|---|---|---|
| Формат | JSONL | JSONL |
| Compaction | ✅ Auto-compaction при ліміті → summary + .checkpoint.jsonl |
❌ Ні, ростуть лінійно |
| К-сть сесій | ~160 | ~30+ |
| Розмір | 274MB | ~50MB |
🔴 Колега виграє: auto-compaction — критичний для довгих сесій (5+ годин). Економить токени контексту.
| Колега | Ми | |
|---|---|---|
| Handoff | ~3KB markdown в кінці сесії | inbox-from-desktop/outbox-to-desktop pattern |
| Session State | ~2KB з WAL-протоколом (запис ДО відповіді) | Декілька записів у decisions_log ПІСЛЯ значущих дій |
| Crash-safety | ✅ Якщо crash між дією і записом → state збережено | ❌ Якщо crash між дією і записом → data loss |
🔴 Колега виграє: WAL pattern — robust, crash-safe.
| Колега | Ми | |
|---|---|---|
| Файл | ~6KB markdown | agents_inventory.md |
| Зміст | Runtime: кожен агент пише статус/результати/блокери | Статичний реєстр (хто існує) |
| Coordination | Living document, читається першим при пробудженні | Тільки список агентів |
🟡 Колега виграє у патерні, у нас Federation Broker (новий) планується для цього. Поки що runtime state coordination немає.
| Колега | Ми | |
|---|---|---|
| Скрипт | Витягує останні N user/assistant пар, фільтрує noise | session-previous-tail.py — те ж саме |
| Max розмір | 3KB | ~3KB (20 реплік) |
🟢 Паритет — у нас вже є аналог.
| Колега | Ми | |
|---|---|---|
| Структура | cards/{clients,brands,people} + план/факт + дебіторка + ринок |
Розкидано по wiki/delta-medical/* + Looker Studio + BQ datasets |
| Owner | Окремий аналітичний агент | Без owner'а, manual update |
| Update | Auto через агента | Manual |
🟡 Колега виграє у концепції — single source curated business state з агент-власником. У нас PM-agent v0.4 робить project readiness, але не бізнес-метрики.
| Крок | Колега | Ми |
|---|---|---|
| 1 | Team state — що роблять інші агенти | Core memory (rules + decisions_log + agents_inventory) |
| 2 | Handoff — що обговорювали | Найсвіжіший session file |
| 3 | Щоденний лог — що відбулось сьогодні | uptime + in-progress tasks |
| 4 | Session tail — хвіст минулої сесії | Те ж саме (session-previous-tail.py) |
| 5 | Уроки та патерни | Telegram unanswered messages |
| - | (Identity вже у system prompt) | + Inbox/outbox status |
| - | - | + Desktop memory delta |
Висновок: наш SessionStart 8-крокова, у них 5. Ми коверимо більше edge-cases (Telegram, Desktop sync).
| Шар | Колега | Ми |
|---|---|---|
| Agent platform | OpenClaw (Node.js) | Claude Code (Anthropic SDK Python) |
| LLM | GLM-5.1 / Sonnet / Opus | Claude Opus 4.7 + Gemini fallback |
| Persistence | Git локальний | Git remote (2 приватних репо) |
| Semantic search | Gemini + bge-m3 + NetworkX | sqlite-vec + MiniLM |
| Knowledge Graph | LightRAG | Wiki з YAML + AgentDB |
| Session logs | JSONL + jq + ripgrep | JSONL + grep |
| Scheduler | OpenClaw cron (ізольовані) | systemd cron + PM-agent |
| Telegram | OpenClaw plugin | claude-telegram-bridge.service (custom) |
| Compaction | ✅ Auto | ❌ Manual |
| Public hosting | ❌ Немає | ✅ Cloudflare + Let's Encrypt + 11 subdomains |
JSON-індекс над wiki/ (1 година)*
Скрипт /usr/local/bin/wiki-index.py сканить YAML frontmatter всіх index.md і будує /srv/wiki/.index.json. Cron щогодини. Скрипт wiki-query.py products.menopace повертає метадата.
WAL session state (1 година)
/root/.claude/projects/-/memory/current-session-state.md (~2KB). Кожна значуща дія записується ДО reply. Stop hook ставить completed. SessionStart перевіряє чи попередня сесія closed.
JSONL auto-compaction (2 години)
Hook що моніторить JSONL size. При перетині threshold (50K rows або 100KB) → Claude summary call → .checkpoint.jsonl + новий JSONL.
Soul файл (30 хв)
Виокремити з rules.md «hard-baked цінності» (мова, стиль, межі) у core/soul.md. Tactical rules залишаються у rules.md.
Team State runtime (3 години)
team-state.md де кожен агент (VPS Claude, Desktop Claude, PM-agent, dev-crew) пише секцію зі статусом/last task/блокерами. Інтегрувати з Federation Broker.
Curated business folder + analyst agent (4 години + новий агент)
/srv/wiki/business/{clients,brands,people}/ + agent-власник що раз/тиждень оновлює план/факт + дебіторку з BQ.
Філософія однакова (files-as-memory, markdown). Реалізація різна за scale:
3 концепти варто brought одразу (Sprint 1, ~2 години):
3 концепти на наступний sprint (~5 годин):
Решта — skip або у нас вже краще.
Скажи що з 6 рекомендацій робимо першим. Найшвидший impact = JSON-індекс + Soul файл (1.5 години разом).
decisions_log.md (буде запис після implementation)sessions/2026-05-12-marathon.md (поточна сесія)