type: agent
name: AgentDB
slug: agent-db
kind: subagent
department: it
reports_to: it-director
manages: []
status: active
readiness_pct: 80
implementation: systemd-cron
runtime: python3 + sqlite-vec
trigger: cron
schedule: "0 */2 * * *"
source_dir: /srv/services/agent-db
skills:
- semantic-search
- vector-embeddings
- markdown-indexing
- sqlite-vec
responsibilities:
- reindex memory + wiki кожні 2 години
- serve /memsearch skill
- 916 chunks across 270 files
projects_involved: [meta-management]
created: 2026-05-10
last_updated: 2026-05-12
AgentDB — semantic search over memory + wiki
Що це
Інтерактивний пошук поверх двох джерел знань Сергія:
/root/.claude/projects/-/memory/ — auto-memory bot'а (decisions, sessions, project_, feedback_)
/srv/wiki/ — повна project wiki
Замінює grep/find для запитів типу «де ми про це домовились», «який був статус X 2 тижні тому», «що ми обговорювали по brand X». Семантичний (по смислу), не keyword match.
Стек
- Embeddings: paraphrase-multilingual-MiniLM-L12-v2 (sentence-transformers, 118MB, multilingual incl. UA)
- Storage: sqlite + sqlite-vec virtual table (vec0) для KNN search
- Chunking: по абзацах, max 1500 chars + 200 char overlap
- Запити: cosine similarity / L2 distance (нормалізовані вектори)
Файлова структура
/srv/services/agent-db/
├── agent_db.py # core library (chunking, indexing, search)
├── build_index.py # ETL — повний reindex
├── search.py # CLI пошук
├── memdb.sqlite # storage (~10-50MB зазвичай)
├── .venv/ # ізольоване Python середовище
└── (pip deps: sentence-transformers, sqlite-vec, numpy)
/usr/local/bin/memsearch # CLI shortcut (bash wrapper над search.py)
/var/log/agent-db.log # cron logs
Як використовувати
CLI
memsearch "коли ми вирішили перемкнути на Llama-8B"
memsearch "SPARC методологія" -k 5
memsearch "Heafolik відгуки модерація" --full
З Python (для майбутніх інтеграцій у бот / PM-Agent)
sys.path.insert(0, "/srv/services/agent-db")
from agent_db import open_db, semantic_search
conn = open_db()
hits = semantic_search(conn, "tabletki cron BigQuery", k=10)
for h in hits:
print(h.file_path, h.score, h.text[:200])
Метрики (baseline 2026-05-10)
- Файлів проіндексовано: 270
- Chunks: 916
- Час на повний reindex (cold): 211 секунд
- Час на повний reindex (warm, нічого не змінилося): ~30 секунд (тільки stat-checks)
- Розмір memdb.sqlite: ~10MB
Cron
0 */2 * * * /srv/services/agent-db/.venv/bin/python /srv/services/agent-db/build_index.py >> /var/log/agent-db.log 2>&1
Кожні 2 години — incremental reindex (тільки змінені файли).
Майбутні інтеграції (не у MVP)
- SessionStart hook — на старті кожної сесії робити memsearch по контексту останньої розмови, додавати топ-5 результатів у
additionalContext. Замість/у додачу до MEMORY.md.
- Telegram-bot команда —
/recall <query> запитує AgentDB і повертає топ-3 резюме у чат.
- PM-Agent інтеграція — при формуванні digest'у викликати semantic search для зв'язування активності з історичними рішеннями.
- dev-crew enrichment — при виконанні SPARC-фази Specification, agent_db automatically pulls relevant historical decisions.
Обмеження
- Multilingual model але не SOTA для UA — paraphrase-MiniLM-L12-v2 трохи поступається BAAI/bge-m3 для семантично складних UA-запитів. Можна upgrade'нути коли буде потреба.
- Тільки .md — не індексує JSON, Python код, MD-таблиці окремо.
- Без re-ranking — простий KNN. Для якіснішого результату можна додати cross-encoder для топ-50 → топ-10 re-rank, але це додаткова latency (зараз ~200ms на запит).
- CPU embedding — на VPS немає GPU. ~150ms на 1 запит. Прийнятно.
Backup / rollback
memdb.sqlite regenerable з нуля за 3.5 хв. У разі corruption — rm memdb.sqlite && python3 build_index.py.
Cross-references
- AgentDB заявлений у SPARC vs RuvFlo report як третя ідея запозичення з ruvnet/ruflo
- Запозичено патерн з ruflo AgentDB (vec storage + hybrid search), але мінімалістично без graph layer