ob2h
Long-term memory, knowledge graph and dreaming backend of this Hermes agent.
Skill by Pofium
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.
About
Use cases: backend, agent-building
Reviews
Write a reviewNo 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
- 0.668score
opencode
Pofium
OpenCode CLI on this machine, version 1.18.18 — OB2H MCP NOT yet wired into ~/.config/opencode/opencode.json.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
codegraph
Pofium
CodeGraph (codegraph CLI 1.5.0) on this machine — repo indexing + MCP, complementary to OB2H AST-graph.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
codex
Pofium
Codex CLI (OpenAI) on this machine — config at ~/.codex/config.toml (TOML, literal strings for Windows paths).
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
cursor
Pofium
Cursor IDE (VS Code fork) on this machine — MCP wiring for OB2H via ~/.cursor/mcp.json.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
kimi-code
Pofium
Kimi Code CLI (Moonshot) on this machine, version 0.36.1 — MCP via ~/.kimi-code/mcp.json.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
mimo-code
Pofium
MiMo Code CLI (Xiaomi) on this machine, version 0.1.12 — MCP/agent setup, ponytail skills, connect.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
qwen-code
Pofium
Qwen Code CLI (Alibaba) on this machine, version 0.23.0 — OB2H MCP via ~/.qwen/mcp.json.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
ralph-loop
Pofium
Автономная реализация фичи циклами до зелёных тестов с накоплением опыта в ob2h.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
trae
Pofium
Trae IDE (ByteDance) on this machine — MCP via ~/AppData/Roaming/Trae/User/mcp.json.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
claude-code
Pofium
Claude Code CLI (Anthropic) on this machine, version 2.1.233.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
gemini-cli
Pofium
Gemini CLI / Antigravity IDE on this machine — OB2H MCP registered in both ~/.gemini/antigravity-ide and ~/.gemini/antigravity.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
kilo-code
Pofium
Kilo Code (VS Code extension) on this machine — MCP via globalStorage/kilocode.kilo-code/settings/mcp_settings.json.
SkillAFreshness: A★ 67Claude Code +9
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
- Repository
- github.com/Pofium/ob2h
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Pofium
- 0.668score
claude-code
Pofium
Claude Code CLI (Anthropic) on this machine, version 2.1.233.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
codex
Pofium
Codex CLI (OpenAI) on this machine — config at ~/.codex/config.toml (TOML, literal strings for Windows paths).
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
cursor
Pofium
Cursor IDE (VS Code fork) on this machine — MCP wiring for OB2H via ~/.cursor/mcp.json.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
codegraph
Pofium
CodeGraph (codegraph CLI 1.5.0) on this machine — repo indexing + MCP, complementary to OB2H AST-graph.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
gemini-cli
Pofium
Gemini CLI / Antigravity IDE on this machine — OB2H MCP registered in both ~/.gemini/antigravity-ide and ~/.gemini/antigravity.
SkillAFreshness: A★ 67Claude Code +9 - 0.668score
kilo-code
Pofium
Kilo Code (VS Code extension) on this machine — MCP via globalStorage/kilocode.kilo-code/settings/mcp_settings.json.
SkillAFreshness: A★ 67Claude Code +9
Cite this page
ob2h skill. Agent Mart. https://agentmart.dev/skills/pofium-ob2h-ee7190 (last updated 2026-10-24)