Skip to content
Agentmart
Submit a tool

ob2h

Long-term memory, knowledge graph and dreaming backend of this Hermes agent.

Skill by Pofium

IndexedMIT★ 67
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/pofium-ob2h-ee7190

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Long-term memory, knowledge graph and dreaming backend of this Hermes agent. Use for any recall about the user, past conversations, projects, preferences, and for saving new important facts. Also use for developing/maintaining the ob2h project itself.

Use cases: backend, agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/ob2h

What's inside

Skill name
ob2h
Description
Long-term memory, knowledge graph and dreaming backend of this Hermes agent. Use for any recall about the user, past conversations, projects, preferences, and for saving new important facts. Also use for developing/maintaining the ob2h project itself.
License
MIT
Instructions
143 lines in SKILL.md · view on GitHub

Agent Skills spec issues

  • files: referenced but missing: references/testing.md, references/autodream-and-history.md

Files (1)

  • SKILL.md

SKILL.md (first lines)

# OB2H — долговременная память этого агента (Rust, MCP + MemoryProvider)

## Поведение: память включена ВСЕГДА
- Каждый ход диалога попадает в ob2h автоматически: MemoryProvider-плагин
  (`sync_turn`/`session_ingest`), без плагина (Mode 0) — вызывай `session_log`
  после содержательных ответов сам, не дожидаясь просьбы.
- Вопросы о пользователе, его проектах, прошлых обсуждениях, предпочтениях → сначала
  recall (`memory_search` / блок `<agent_memory>`), потом ответ.
- Устные «запомни…» → `memory_save` с importance 0.8+; устойчивые факты — с `key`.
- Документы/длинные тексты → `knowledge_extract`; вопросы о связях «кто/что/чем связано» →
  `graph_reason`. Ночью/по гейтам авто-дрим обновляет MEMORY/SOUL/USER.md и граф.
- В памяти встречаются факты с ДРУГОЙ машины пользователя (origin=pc/vps): пути и среды
  с чужого origin не существуют локально — используй их как контекст, а не как цели
  для файловых операций.

## Режимы подключения (не путать при диагностике)
| Режим | Как выглядит | Что важно |
|---|---|---|
| **A: плагин (целевой)** | `memory.provider: ob2h` в config.yaml, плагин в `{{HERMES_HOME}}/plugins/ob2h/` | Один процесс ob2h serve (спавнит плагин); захват/recall происходят САМИ; индикатор 🧠 = prefetch сработал; `mcp_servers.ob2h` следует удалить |
| **B: переходный** | плагин И `mcp_servers.ob2h` одновременно | Работает (WAL+busy_timeout+dream-lock), но два процесса — лучше уйти в A |
| **0: MCP-only (фолбэк)** | только `mcp_servers.ob2h` в config.yaml | Захват только через явные вызовы инструментов |

## Что это
- Один Rust-бинарник: MCP-сервер stdio + SQLite WAL + FTS5-trigram (русский)
  + локальные Candle-эмбеддинги `paraphrase-multilingual-MiniLM-L12-v2` (384d,
  кэш `~/.cache/huggingface/hub/`); LLM для экстракции/дрима — DeepSeek.
- Пути этой машины: проект `{{PROJECT_DIR}}`, бинарник `{{BINARY}}`,
  данные/БД `{{DATA_DIR}}` (ob2h.db, workspace/: SOUL.md/USER.md/memory/MEMORY.md +
  daily/*.jsonl — файлы создаются лениво, `workspace_read` отсутствующего = `""`),
  Hermes home `{{HERMES_HOME}}` (config.yaml, plugins/ob2h, ob2h.json).
- Инструменты (36 шт): memory_save/search/update/forget/context, memory_feedback (trust ±),
  memory_merge (слияние дублей), workspace_read/write, session_log, session_ingest,
  knowledge_extract, graph_search (mode=classic|ppr)/reason (scope=docs|memory|all)/stats,
  dream_run/status/log/restore, omnes_stats/backup, project_init/scan/scan_status/
  context/graph_search/report/impact, project_call_path (callers/callees/call-path),
  ralph_start/iteration/verdict/context/report, ast_diff, ast_history.
- Детерминированный AST-граф кода: `project_scan` извлекает классы, функции, трейты и связи
  со 100% точностью (Graphify-подход) без вызовов LLM; скан идёт в фоне и не упирается
  в таймаут MCP-клиента — по умолчанию инструмент ждёт до 45 с, долгий скан отвечает
  «still running», результат досматривается `project_scan_status` (там же сводка из БД).
- Детерминированный AST-граф кода: `project_scan` извлекает классы, функции, трейты и связи
  со 100% точностью (Graphify-подход) без вызовов LLM; скан идёт в фоне и не упирается
  в таймаут MCP-клиента — по умолчанию инструмент ждёт до 45 с, долгий скан отвечает
  «still running», результат досматривается `project_scan_status` (там же сводка из БД).
  CLI для этого агенту не нужен. `project_report` и `project_context`
  выделяют центральные хабы архитектуры (God Nodes).
  CLI для этого агенту не нужен. `project_report` и `project_context`
  выделяют центральные хабы архитектуры (God Nodes).
- Регрессионный bench кодового графа (v1.7.1): `ob2h bench --mode code --project <id>`
  против `data/bench/golden_code.jsonl` — recall/MRR PPR-поиска; используется для
  обоснования изменений PPR-весов (вердикт 2026-10-03: дефолт не менять — выдача
  не зависит от весов кодовых рёбер, цели находятся на этапе сидов).
- Форматы сканера (v1.7): 31 расширение кода (rs/py/ts/tsx/js/jsx/go/sql/c/cpp/cc/cxx/
  h/hpp/hxx/php/dart/java/cs/kt/kts/swift/rb/vue/svelte/scala/lua/ex/exs/sh/bash) +
  веб-разметка и стили (html/htm, css/scss, blade), контракты (proto, graphql/gql,
  openapi.json|yaml), IaC (Dockerfile*, .tf/.hcl, docker-compose|compose.yml|yaml,
  k8s|deploy|helm|chart*/*.yaml|yml), манифесты (Cargo.toml, package.json,
  pyproject.toml, requirements.txt, go.mod, pubspec.yaml, composer.json; lock-файлы
  исключены), спец-языки (.ipynb без outputs, .sol, .zig). Импорты внешних пакетов
  сливаются с манифестами в узлы `pkg:<eco>:<name>` (версия в description).
- Полезные запросы v1.7: `project_graph_search("pkg:rust:serde_json")` — пакет и его
  потребители; `project_graph_search("cssclass:<имя>")` — где определён CSS-класс;
  `project_impact("openapi.yaml")` / `project_impact("Dockerfile")` / `project_impact("Cargo.toml")`
  — что заденет правка контракта/образа/зависимости; `project_call_path` проходит
  фронт → `route:` → хендлер (INFERRED-мосты SERVES_ENDPOINT/PROVIDES_RPC).
- AutoDreamWorker: гейты ≥4ч и ≥10 событий, lock, git-история правок, бэкапы
  (full/quick, verify, раздельная ротация), ночной bench-гейт (откат дрима при
  деградации recall/MRR). CLI: `ob2h stats | doctor [--fix] | dream run/status/log/restore |
  bench [--mode history] | backup [--scope quick] [verify <path>] |
  db quantize-embeddings | memory dedup [--dry-run] | install/uninstall |
  plugin install/uninstall/status | skill install | agent install/status |
  project init/scan/list/report/dead-code/repo-map |
  ralph findings-to-memory | sync status/verify/export/import/apply-inbox/push/pull`.

## Синхронизация двух машин (PC ↔ VPS)
- Обмен — gzip-дельта-бандлы v2 JSONL поверх SSH (`{{DATA_DIR}}/sync/peers.json`:
  origin=pc|vps, приоритеты, пути; инициатива на PC — push/pull, VPS — apply-inbox+export).
  Только изменённое (курсор по updated_at); в бандле память+trust+memory_links+удаления;
  поле-уровневый merge с журналом `sync/conflicts.jsonl` (не молчаливый LWW);
  `ralph_*` вне бандлов (ADR-K6). Идемпотентно; сверка дрейфа — `ob2h sync verify`.
- Живую БД `{{DATA_DIR}}/ob2h.db` НИКОГДА не синкать файловой синхронизацией (WAL = порча),
  только папку бандлов. Диагностика обмена: `ob2h sync status`.

## Критичные питфоллы
1. **OB2H_LLM_API_KEY = ИМЯ env-переменной** с ключом (напр. `DEEPSEEK_API_KEY`), не сам
   ключ (развязка в коде, коммит 82d7e3f; фолбэк на литерал). Симптом обратного:
   401 `Your api key: ****_KEY is invalid`.
2. **«chunks записались, entities=0»** в knowledge_extract — почти всегда упал LLM-вызов
   (см. п.1). Смотреть лог, не чинить экстрактор.
3. **Логи**: `{{DATA_DIR}}/logs/ob2h.log` (cwd сервера от Hermes = домашняя папка — до фикса
   82d7e3f логи могут лежать в `~/logs`, искать оба места).
4. **Пересборка (Windows)**: exe блокируется, пока процесс жив (Hermes/плагин держит).
   `cargo build --release` падает `os error 5` → сначала `Get-Process ob2h | Stop-Process
   -Force` (убьёт MCP в текущей сессии Hermes — спросить пользователя).
   **Пересборка (Linux/VPS)**: `cd <репо> && git pull && cargo build --release &&
   install -m755 target/release/ob2h /usr/local/bin/ob2h` — замена живого бинарника
   безопасна, подхватится после рестарта гейтвея (`systemctl --user restart
   hermes-gateway`).
5. **ob2h ТОЛЬКО для этого Hermes**: не добавлять другим агентам, не оборачивать в
   mcp-compressor (пользователь запретил явно).
6. Живой сервер держит БД; read-only проверки через sqlite URI `file:...?mode=ro`
   безопасны параллельно с WAL.
7. Плагин не активен после установки: проверить `memory.provider: ob2h` в config.yaml и
   `ob2h plugin status`; провал prefetch НЕ роняет агент — падение в тихий Mode 0.
8. **project_* — всегда передавай `id` явно.** Без `id` сервер молча подставляет
   «активный проект» своей сессии (Zero-Config-привязка к воркспейсу IDE): скан/поиск
   уходят в чужой проект и возвращают 0 результатов. Симптом: в логе есть
   «Зарегистрирован проект …», но нет «Начало AST-сканирования проекта '<id>'»,
   в БД `projects.last_scanned_at=NULL`. Долгий скан через `project_scan` не падает
   по таймауту: ответ «still running» → полли `project_scan_status id=<id>`, пока
   не придёт «job: done» (или «job: failed» с причиной).
9. **Синк после перерыва**: watermark (sync_state.last_export_at) может «перепрыгнуть»
   записи, вставленные ПОСЛЕ последнего экспорта, но ДО его завершения — они выпадают
   из дельт навсегда. Диагностика: сверка ключей памяти обеих сторон read-only sqlite
   (`file:...?mode=ro`), лечение: откат курсора в sync_state на дату пропуска + обычный
   (НЕ --full) экспорт.
10. **`sync export --full` на VPS с RAM < 8 ГБ = OOM-kill (exit 137)**: полный бандл
   несёт весь граф (600k+ узлов). Карантин: `data/sync/oversize/` вне inbox, чтобы
   ночной apply-inbox не падал. Дельту за месяц тоже может раздуть граф — если нужен

From Pofium/ob2h, MIT.

More from Pofium/ob2h

Signals

Stars
67
Forks
0
Open issues
0
Last commit (this folder)
Oct 3, 2026 (26 days ago)
Last release
Oct 10, 2026 (19 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Pofium

Cite this page

ob2h skill. Agent Mart. https://agentmart.dev/skills/pofium-ob2h-ee7190 (last updated 2026-10-24)