← всі звіти · competitor-stack-analysis-2026-05-12.md

type: analysis title: OpenClaw stack vs наш — comparative analysis date: 2026-05-12 author: VPS Claude trigger: Сергій переслав опис стеку колеги для аналізу

OpenClaw vs наш Claude Code стек — порівняльний аналіз

Контекст

Колега Сергія використовує 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 команду).


Порівняння шар за шаром

Шар 1 — Identity

Колега Ми
Файлів 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.

Шар 2 — Indexed MEMORY.md

Колега Ми
Розмір 2KB, hard limit 3000 chars Гнучкий, без ліміту
Зміст Команда + проекти + рішення + алерти Аналог + більше деталей
Token-цена Менше при старті Більше

Висновок: hard limit дисциплінує токени, але жертвує повнотою. У нас flexible — оптимально для нашого scale.

Шар 3 — Щоденні логи

Колега Ми
Кадення memory/YYYY-MM-DD.md щодня sessions/YYYY-MM-DD-DESC.md тільки значущі marathon-дні
К-сть файлів ~65 ~10
Розмір 12MB <2MB
Noise рівень Високий (щоденно записує все) Низький (тільки коли є що)

Висновок: наша модель чистіша. Daily noise + 65 файлів = багато мусора у memory.

Шар 4 — Knowledge Graph

Колега Ми
Структура brands/clients/people з YAML Wiki з YAML frontmatter
Lookup JSON-індекс (O(1)) grep / AgentDB (~150ms)
Швидкість Миттєво 150ms

🔴 Колега виграє: JSON-індекс — дешевий і швидкий lookup без semantic search latency.

Шар 5 — Семантичний пошук

Колега Ми
Рівнів 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.

Шар 6 — Session Transcripts

Колега Ми
Формат JSONL JSONL
Compaction Auto-compaction при ліміті → summary + .checkpoint.jsonl ❌ Ні, ростуть лінійно
К-сть сесій ~160 ~30+
Розмір 274MB ~50MB

🔴 Колега виграє: auto-compaction — критичний для довгих сесій (5+ годин). Економить токени контексту.

Шар 7 — Handoff + Session State

Колега Ми
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.

Шар 8 — Team State

Колега Ми
Файл ~6KB markdown agents_inventory.md
Зміст Runtime: кожен агент пише статус/результати/блокери Статичний реєстр (хто існує)
Coordination Living document, читається першим при пробудженні Тільки список агентів

🟡 Колега виграє у патерні, у нас Federation Broker (новий) планується для цього. Поки що runtime state coordination немає.

Шар 9 — Session Tail

Колега Ми
Скрипт Витягує останні N user/assistant пар, фільтрує noise session-previous-tail.py — те ж саме
Max розмір 3KB ~3KB (20 реплік)

🟢 Паритет — у нас вже є аналог.

Шар 10 — Аналітика / Curated Business Data

Колега Ми
Структура 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, але не бізнес-метрики.


Bootstrap checklist comparison

Крок Колега Ми
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).


Frameworks side-by-side

Шар Колега Ми
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

🎯 Recommendations

🔴 Must borrow (high ROI)

  1. JSON-індекс над wiki/ (1 година)* Скрипт /usr/local/bin/wiki-index.py сканить YAML frontmatter всіх index.md і будує /srv/wiki/.index.json. Cron щогодини. Скрипт wiki-query.py products.menopace повертає метадата.

  2. WAL session state (1 година) /root/.claude/projects/-/memory/current-session-state.md (~2KB). Кожна значуща дія записується ДО reply. Stop hook ставить completed. SessionStart перевіряє чи попередня сесія closed.

🟡 Should borrow (medium ROI)

  1. JSONL auto-compaction (2 години) Hook що моніторить JSONL size. При перетині threshold (50K rows або 100KB) → Claude summary call → .checkpoint.jsonl + новий JSONL.

  2. Soul файл (30 хв) Виокремити з rules.md «hard-baked цінності» (мова, стиль, межі) у core/soul.md. Tactical rules залишаються у rules.md.

🟢 Nice to have (long-term)

  1. Team State runtime (3 години) team-state.md де кожен агент (VPS Claude, Desktop Claude, PM-agent, dev-crew) пише секцію зі статусом/last task/блокерами. Інтегрувати з Federation Broker.

  2. Curated business folder + analyst agent (4 години + новий агент) /srv/wiki/business/{clients,brands,people}/ + agent-власник що раз/тиждень оновлює план/факт + дебіторку з BQ.

🔴 Skip (не варто)


Bottom line

Філософія однакова (files-as-memory, markdown). Реалізація різна за scale:

3 концепти варто brought одразу (Sprint 1, ~2 години):

  1. JSON-індекс над wiki
  2. WAL session state
  3. Soul файл виокремити

3 концепти на наступний sprint (~5 годин):

  1. JSONL auto-compaction
  2. Team State runtime
  3. Curated business folder

Решта — skip або у нас вже краще.


Open questions для Сергія

  1. OpenClaw — що це конкретно? Назва agent framework — твоє чи реальний open-source проєкт?
  2. Колега працює у нас (Delta Medical) чи у себе? Якщо у нас — shared curated business data зробити, не дублювати.
  3. LightRAG у них реально useful? Ускладнення варте? Може просто upgrade AgentDB на bge-m3 (1-line).
  4. Compaction frequency — на якому ліміті спрацьовує? У нас Anthropic 200K window — rarely досягаємо.

Стартуємо?

Скажи що з 6 рекомендацій робимо першим. Найшвидший impact = JSON-індекс + Soul файл (1.5 години разом).

Cross-references