bkmr-memory — скилл

Скилл превращает локальную базу закладок bkmr в долгую память агента с гибридным поиском и пятью типами записей

  • 267 ★ репозитория
  • Последний коммит
  • BSD-3-Clause
Скилл

Расширенный доступ

Почему такой уровень

  • Скилл просит агента вызывать `bkmr` в оболочке на каждой сессии и записывать в базу выводы из работы
  • Агент решает, что сохранять, поэтому в локальную базу могут попасть имена серверов, порты и привычки пользователя
Все причины и проверки

sysid/bkmr

Установка

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/bkmr-memory

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Скилл просит агента вызывать `bkmr` в оболочке на каждой сессии и записывать в базу выводы из работы
  • Агент решает, что сохранять, поэтому в локальную базу могут попасть имена серверов, порты и привычки пользователя

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

bkmr-memory учит агента хранить память между сессиями в базе bkmr вместо файлов `MEMORY.md`. В описании скилла сказано, что он заменяет встроенную файловую память: агент обращается к нему при вопросе «что ты помнишь», в начале задачи, перед архитектурным решением и в конце работы, когда нужно сохранить найденное. Читает агент одной командой `bkmr hsearch "запрос" -t _mem_ --json --np`. Она совмещает полнотекстовый и смысловой поиск и возвращает JSON с полями `id`, `url`, `title`, `tags` и оценкой `rrf_score`. Точные фразы и булевы условия идут через `bkmr search`. Записывает агент командой `bkmr add` с флагом `-t mem` и ровно одним классифицирующим тегом: `fact`, `procedure`, `preference`, `episode` или `gotcha`. Сам текст памяти лежит в поле `url` и не должен превышать 500 токенов. Заголовок и теги попадают в эмбеддинг, поэтому скилл требует делать их описательными. Скилл перечисляет, что не стоит сохранять: фрагменты кода, историю git, списки измененных файлов, то, что уже написано в `CLAUDE.md` или читается из исходников. Для проекта используется тег вида `project:имя`, без дублирующего голого тега. Сам bkmr — программа на Rust: менеджер закладок, сниппетов и заметок с локальным поиском по эмбеддингам, работающая без сети. Скилл лежит в каталоге `skill/bkmr-memory` репозитория.

Для кого. Для разработчиков, которые работают с Claude Code или другим агентом изо дня в день и хотят, чтобы он помнил решения, предпочтения и найденные ловушки без облачных сервисов.

Подходит, если

  • Агент каждый раз заново узнает, что боевая база висит на нестандартном порту, и это хочется записать один раз
  • Нужна память, которая не уходит в облако: база, эмбеддинги и поиск работают локально
  • Вы ведете закладки, сниппеты и скрипты в bkmr, и агенту стоит искать по тому же хранилищу
  • Нужен разбор прошлых отладок: записи типа `episode` и `gotcha` отдельно фильтруются флагом `-n`
  • Несколько проектов делят одну базу, и записи разделяют тегами `project:имя`

Не подходит, если

  • Вам нужна общая память для команды в облаке: bkmr хранит все в локальной базе SQLite
  • На машине нельзя поставить бинарник на Rust или Python-обертку и пакет через Homebrew
  • Проектные правила уже умещаются в `CLAUDE.md`: скилл прямо советует не дублировать туда записанное
  • Нужен граф связей между воспоминаниями: у bkmr плоская база записей с тегами

Пример запроса к агенту

Запомни, что в этом проекте миграции запускаются командой make migrate из папки billing. Сохрани это как procedure с тегом project:billing.

Ограничения

  • Скилл требует установленной программы bkmr в PATH: без нее команды `bkmr hsearch` и `bkmr add` не сработают. Ставится через `cargo install bkmr`, `pip install bkmr` или `brew install bkmr`.
  • После установки через Homebrew нужно указать путь к библиотеке ONNX Runtime в переменной `ORT_DYLIB_PATH`, иначе смысловой поиск не заработает.
  • Перед первым запуском надо создать конфигурацию и базу командами `bkmr --generate-config` и `bkmr create-db`. Путь к базе задается переменной `BKMR_DB_URL`.
  • Скилл переопределяет встроенную файловую память агента, так что прежние записи `MEMORY.md` в нее сами не попадают. Перенос делается вручную.
  • Содержимое одной записи ограничено 500 токенами, а тег `_mem_` с одним классифицирующим тегом обязателен, иначе запись трудно найти.

Как отключить. Удалите каталог скилла `bkmr-memory` из `~/.claude/skills/` или `.claude/skills/` проекта, и агент вернется к обычной памяти. Записи остаются в базе bkmr, их можно удалить командой `bkmr delete`. Саму программу снимает `cargo uninstall bkmr`, `pip uninstall bkmr` или `brew uninstall bkmr`.

Частые вопросы

Как дать Claude Code долгую память через bkmr?

Поставьте программу bkmr, создайте базу командой `bkmr create-db` и положите каталог `skill/bkmr-memory` в `~/.claude/skills/`. Скилл сам научит агента искать в памяти в начале задачи и записывать выводы в конце.

Какие типы записей различает скилл?

Пять: `fact` для устройства инфраструктуры, `procedure` для порядка действий, `preference` для привычек пользователя, `episode` для разборов отладок и `gotcha` для неочевидных ловушек. Каждая запись получает ровно один такой тег.

Нужен ли интернет для смыслового поиска?

Нет. Эмбеддинги считает локальная модель через fastembed и ONNX, ключи API не нужны. После установки через Homebrew нужно лишь указать путь к библиотеке ONNX Runtime.

Чем bkmr-memory отличается от файла MEMORY.md?

Скилл переносит память в базу SQLite с тегами, полнотекстовым и смысловым поиском, и плоские файлы больше не читаются. Агент достает через `hsearch` только подходящие записи и не читает всю память целиком.

Что скилл не позволяет сохранять?

Фрагменты кода, историю git, списки измененных файлов, временное состояние и все, что есть в `CLAUDE.md` или читается из исходников. Сохраняются только выводы, которых нет в коде.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы
Официальный

Долговременная память для ИИ-агентов: скилл и команда mindmemos сохраняют факты из диалогов и находят их в новых сессиях

СкиллШирокий доступ924Звезды репозитория

Долговременная память агента в локальных Markdown-файлах с графом связей, семантическим поиском и MCP-доступом

MCP-серверРасширенный доступ4,4 тыс.Звезды репозитория

Общая локальная память для ИИ-агентов: Claude Code, Codex, Cursor и другие находят в ней договоренности прошлых сессий и записывают новые

CLIШирокий доступ2,2 тыс.Звезды репозитория

Скилл для Claude Code, который перед каждым нетривиальным ответом сам подтягивает память из Memori Cloud и записывает туда новые факты

СкиллРасширенный доступ17,2 тыс.Звезды репозитория

MCP-сервер долговременной памяти для агентов: один бинарник на Rust, который работает офлайн и не вызывает языковую модель

MCP-серверШирокий доступ316Звезды репозитория

Плагин долгой памяти: запоминает решения, предпочтения и состояние задач между сессиями и подмешивает в запрос только нужное

ПлагинШирокий доступ403Звезды репозитория

Сравнение с похожими

Записи с тем же главным запросом: чем они отличаются.

ЗаписьОфициальныйЗвезды репозиторияГлавное отличие
bkmr-memory (эта запись)нет267
agent-memoryнет4 377тоже хранит память агента на локальном индексе, но источником правды служат Markdown-файлы
claude-supermemoryда2 797плагин Supermemory для Claude Code, а здесь база и поиск работают на вашей машине

Коротко о README

Страница репозитория представляет bkmr как менеджер знаний для людей и агентов и показывает быстрые примеры команд, таблицу команд и типов содержимого. Блок о памяти агента ссылается на скилл `skill/bkmr-memory`, а подробности вынесены в вики.

Бейдж для README

Исходный SKILL.md

---
name: bkmr-memory
description: >
  Primary memory system — supersedes built-in file-based memory (MEMORY.md / memory/ directory).
  All memory reads and writes go through bkmr, not the filesystem. Invoke for ANY of:
  (1) User asks about memories, past sessions, what you remember — "what do you know about X".
  (2) User asks to remember or save something for future sessions.
  (3) Starting a new task — check for relevant context, gotchas, or preferences.
  (4) Encountered a bug or surprise — check if seen before.
  (5) Making an architectural or tooling decision — check for prior decisions.
  (6) End of task — persist non-trivial learnings.
  When in doubt, invoke — a quick bkmr query costs almost nothing.
  DO NOT use file-based memory — use bkmr instead.
---

# bkmr-memory — Persistent Agent Memory

bkmr is a CLI bookmark manager with SQLite FTS5 and local semantic search (fastembed/ONNX).
Bookmarks tagged with the `_mem_` system tag serve as persistent agent memory that survives
across sessions. This skill defines how to read and write that memory effectively.

## Mandatory Tag Rules

Every interaction with bkmr memory requires specific tags. These are non-negotiable — without
them, memories are unfindable or uncategorized noise.

**READING — every query must include `-t _mem_`:**
```bash
bkmr hsearch "query" -t _mem_ --json --np       # default: hybrid (FTS + semantic)
```
The `-t _mem_` flag scopes results to agent memories only. Without it, you search the entire
bookmark database (personal bookmarks, snippets, shells, etc.) — guaranteed noise.

Always use `hsearch` as your search command. It combines FTS and semantic ranking via
Reciprocal Rank Fusion, so it handles both keyword and conceptual queries well.
Only fall back to `search` (FTS-only) when you specifically need exact phrase matching
(`'"JWT expiry"'`), boolean logic (`'auth NOT oauth'`), or tag-only browsing with no
query text (`-t _mem_ -n gotcha`).

**WRITING — every memory must use `-t mem` AND exactly one classification tag:**
```bash
bkmr add "content" "CLASSIFICATION,topic1,topic2" --title "Title" -t mem --no-web
#                    ^^^^^^^^^^^^^^
#                    REQUIRED: exactly one of: fact, procedure, preference, episode, gotcha
```

Сообщить о проблеме

Foxx AIbkmr-memory
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.