bkmr-memory — скилл
Скилл превращает локальную базу закладок bkmr в долгую память агента с гибридным поиском и пятью типами записей
- 267 ★ репозитория
- Последний коммит
- BSD-3-Clause
Расширенный доступ
Почему такой уровень
- Скилл просит агента вызывать `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 сохраняют факты из диалогов и находят их в новых сессиях
Долговременная память агента в локальных Markdown-файлах с графом связей, семантическим поиском и MCP-доступом
Общая локальная память для ИИ-агентов: Claude Code, Codex, Cursor и другие находят в ней договоренности прошлых сессий и записывают новые
Скилл для Claude Code, который перед каждым нетривиальным ответом сам подтягивает память из Memori Cloud и записывает туда новые факты
MCP-сервер долговременной памяти для агентов: один бинарник на Rust, который работает офлайн и не вызывает языковую модель
Плагин долгой памяти: запоминает решения, предпочтения и состояние задач между сессиями и подмешивает в запрос только нужное
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| 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 ```