CommitLore
curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.sh | sh -s v1.2.0curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.sh
sh install.sh v1.2.0
# Or skip the script: the checkout it makes is one you can make yourself.
git clone --depth 1 --branch v1.2.0 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --versionОн устанавливает закреплённую копию исходников и обёртку, которая запускает
node <checkout>/dist/commitlore.mjs — без загрузки скомпилированного файла и без шага сборки.
Код выживает. Суждение — нет.
Агент предлагает подход. Ваша команда отклоняет его из-за неочевидного ограничения. Итоговый код сохраняет результат, но обычно не причину, по которой альтернатива была отклонена. Позже агент видит только код и снова предлагает ту же идею.
CommitLore сохраняет это суждение рядом с кодом.
Что делает CommitLore
Поведение | Путь продукта | |
Захват | Сохраняет ограничения, отклонённые альтернативы и предупреждения, которые diff не может показать. Кандидаты проверяются по стенограмме сессии и подготовленному diff. |
|
Сохранение | Хранит принятые записи в Git-трейлерах или заметках вместо облачной базы памяти. | commit hooks · |
Отслеживание жизненного цикла | Различает активные, заменённые и истёкшие решения. |
|
Область действия | Выбирает решения для пути, который агент собирается редактировать. |
|
Оценка доверия | Доставляет записи как директивы, утверждения или скрытый контент. | обычный / подписанный режим |
Доставка | Даёт поддерживаемым агентам актуальный контекст перед редактированием. | плагин-хук · MCP |
Большинство коммитов не должны нести записей. CommitLore предназначен для суждений, которые код не может сохранить, а не для описания каждого изменения.
Related MCP server: Hypermnesic
60 секунд до агентов, осознающих решения
1. Установите CLI
macOS и Linux:
curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.sh | sh -s v1.2.0Windows:
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.ps1))) v1.2.0Требуется Node.js 22.23.2+ и Git. Скрипт проверяет оба перед тем, как что-либо записать.
2. Подключите своего агента
Claude Code:
/plugin marketplace add MongLong0214/commitlore
/plugin install commitlore@commitloreCodex:
commitlore plugin install-codexПлагин не добавляет commitlore в PATH, поэтому команды ниже также требуют
установки CLI. Установщики также обнаруживают и подключают поддерживаемые MCP-хосты там, где
это можно сделать безопасно; точная матрица приведена ниже.
3. Инициализируйте репозиторий
cd your-repository
commitlore init
commitlore context .Начните новую сессию агента после установки или обновления плагина: работающая сессия сохраняет загруженную среду выполнения.
Затем работайте и коммитьте как обычно. В поддерживаемых интеграциях навыков CommitLore учитывается при обычных запросах на коммит и остаётся молчаливым, когда нечего сохранять. Вам не нужно называть CommitLore в каждом коммите.
Хотите, чтобы принятые записи попадали в коммит без отдельного запроса? Репозиторий может
один раз согласиться с помощью commitlore auto on. Эта политика принадлежит репозиторию и
применяется ко всей команде, поэтому она не включается молча на этой странице.
Что получает агент
Перед редактированием src/pricing.ts:
commitlore: active records for src/pricing.ts
Limit
[claim] r-price01 calculatePrice owns final checkout pricing only
Ruled-out
[claim] r-price01 Reuse it for admin quotes |
eligibility and rounding semantics differ[claim] означает «взвесьте это как информацию». Репозиторий может согласиться на
более строгий режим подписанного авторитета. Доставка даёт агенту контекст; она не
блокирует редактирование.
Почему Git?
Репозиторий должен владеть суждением, стоящим за его кодом.
CommitLore хранит записи в обычных Git-трейлерах и заметках, поэтому они ветвятся, сливаются, клонируются, рецензируются и переживают смену провайдера вместе с кодом, который они объясняют.
SQLite — это лишь перестраиваемый индекс. Удалите его, и Git всё равно сохранит запись.
Поиск старого решения — это не всё
Общая система памяти или поиска спрашивает:
Какой старый текст выглядит релевантным?
CommitLore спрашивает:
Какие записанные решения всё ещё применимы к этому пути сейчас?
Заменённое решение может быть очень релевантным и всё же ошибочным как текущее руководство. Релевантность и авторитет — разные вопросы.
Как это работает
Захват — агент формулирует только тот контекст решения, который diff не может показать.
Проверка — CommitLore сверяет черновик с сессией и подготовленным diff.
Сохранение — принятая запись живёт в Git с идентичностью и жизненным циклом.
Доставка — перед последующим редактированием возвращаются только активные записи для этого пути.
Большинство коммитов не несут записей. Хук коммита проверяет запись, когда она присутствует; он не выдумывает её.
Существующий хук не перезаписывается. commitlore init учитывает core.hooksPath,
перемещает уже установленный хук в <hook>.commitlore-chained и вызывает его
первым; commitlore hooks uninstall возвращает его обратно.
Что происходит автоматически
Хост | Доставка перед редактированием | Проверенный рабочий процесс захвата | Детерминированный захват каждого коммита |
Claude Code | Автоматически через плагин | Доступно через навык плагина | Не сертифицировано |
Codex | Автоматически через плагин | Доступно через навык плагина | Не сертифицировано |
Hermes | Доступно после | Доступно после установки хоста | Не сертифицировано |
Gemini CLI, Cursor, Windsurf, opencode | Доставка через MCP, где хост использует регистрацию | Процедура доступна через MCP | Нет |
Хосты | Только процедура | Только процедура | Нет |
«Доступно» означает, что рабочий процесс подготовка → проверка → коммит существует. Это не означает, что каждый подходящий коммит оценивается автоматически.
Пользователям поддерживаемых хостов с навыками не нужно говорить «запиши это в CommitLore» в каждом коммите. Оставшееся ограничение — инициация хоста, а не обязательная команда пользователя для каждой записи.
Полевой отчёт, а не измерение
Один запуск, на несвязанном репозитории, человеком, впервые устанавливающим v1.2.0. Ничто здесь не измерялось, и ничего из этого нет в журналах доказательств. Это на этой странице, потому что абзац выше утверждает цикл, который не покрыт ни одной таблицей здесь.
Они попросили агента исправить ошибку округления, вскользь упомянули, что библиотека десятичных чисел уже рассматривалась и была отклонена, и закончили словами «закоммить». CommitLore ни разу не был назван. Часть того, что нёс коммит:
Ruled-out: adopting a decimal library such as Decimal.js | the backend is a
number contract, so it is meaningless
Warn: do not revert the test file to console.assert: it exits 0 even on
failure, so CI passes silently
Provenance: draftedWarn не был продиктован агенту. Он наткнулся на ловушку во время работы и оставил её
для следующего. Provenance: drafted фиксирует, что ни один человек не читал запись,
что оценивает её как claim — доставляется как отчёт для взвешивания, а не приказ.
Позже сессия без общей истории получила задачу всё же принять библиотеку десятичных чисел.
Она этого не сделала и назвала запись причиной. Она также прочитала
оценку: claim — это не инструкция, поэтому она проверила указанную причину
против кода, прежде чем согласиться с ней.
В отличие от хранилища памяти
Общая память / RAG | CommitLore | |
Основной вопрос | Какой старый текст релевантен? | Какие решения всё ещё применимы здесь сейчас? |
Авторитет | Хранилище памяти или провайдер | Git |
Область действия | Семантическое сходство | Пути репозитория |
Жизненный цикл | Часто только добавление | Активно · заменено · истекло |
Доверие | Извлечённый текст | Директива · утверждение · заблокировано |
Захват | Стенограмма или хранение заметок | Проверенная по доказательствам запись решения |
Переносимость | Зависит от бэкенда | Обычный Git |
CommitLore намеренно уже. Это не общая система пользовательской памяти, архив разговоров или замена векторной базы данных.
Доказательства
Вопрос | Измеренный результат | Граница |
Изменил ли контекст уровня заявки повторное предложение в зарегистрированном исследовании? | 2,8% (16/580) с CommitLore против 18,8% (109/579) без | одна модель, один харнесс, сконструированные задачи |
Доставляла ли фильтрация жизненного цикла выведенные из эксплуатации записи в измеряемой активной проекции? | 0 выведенных из эксплуатации записей | заменённые записи присутствовали; истечение срока — нет |
Масштабируется ли индексированный поиск? | 496 мс p50 при 100 тыс. коммитов | резервный путь без индекса значительно медленнее |
Время построения индекса зависит от количества записей, а не коммитов: дорогостоящий проход выполняется один раз на запись, поэтому длинная история с небольшим числом записей строится быстрее, чем короткая, насыщенная записями.
Ограничение пути — это то, что не позволяет большой истории достичь модели. В корпусе #167 только 2 из 10 002 записей достигли модели:
маршрут | записи, видимые модели | релевантные записи | токены, видимые модели |
внедрить всё | 10 002 | 2/2 | 1 004 554 |
лексический top-k | 2 | 1/2 | 190 |
ограничение пути CommitLore | 2 | 2/2 | 335 |
Это измеряет экспозицию и полноту при фиксированном бюджете в две записи — не стоимость токенов, выставленную стоимость, точность или поведение агента. Один корпус, один запрос, одна зафиксированная модель эмбеддингов.
Исследование агента не устанавливает универсального эффекта модели. Доставка не является доказательством того, что модель прочитала или последовала записи.
Методы, полные таблицы, исключения и отрицательные результаты →
Ограничения, доверие и конфиденциальность
Захват — ассистируемый, а не детерминированный. Поддерживаемые навыки учитывают обычные запросы на коммиты, но ни один хост не сертифицирован для оценки каждого подходящего коммита.
Режим директивы по умолчанию — это не аутентификация. Он сопоставляет заголовок автора коммита, и любой, кто может написать коммит, может установить этот заголовок — поэтому
[directive]в режиме по умолчанию является метаданными политики, а не доказательством личности. Режим подписи дополнительно требует статуса проверки Git и совпадения в локальном для репозитория списке разрешённыхcommitlore.trustedSigner; отсутствующий, пустой или нечитаемый список разрешённых подписантов не авторизует никого, поэтому режим отказывает в закрытом состоянии.Guard — это экспериментальная рекомендация, а не страховочная сеть: точность 44,8% (95% доверительный интервал Уилсона 32,7%–57,5%), полнота 22,0% на корпусе из 417 решений. Пустой результат Guard не является вердиктом о безопасности.
Доставка тратит токены на каждый подходящий вызов инструмента. Хук перед редактированием срабатывает на
Read, а также наEdit,Write,MultiEditиNotebookEdit, поэтому он запускается гораздо чаще, чем агент редактирования делает коммиты. Каждое срабатывание тратит до бюджета полезной нагрузки — 800 токенов по умолчанию, изменяется с помощью--budget. Репозиторий без записей не тратит ничего, что означает, что это стоимость, которая появляется с внедрением, а не с установкой.Ответ может быть частичным. Полнота раскрывается; отсутствие в частичном результате не является доказательством того, что записи не существует. Покрытие всего репозитория, символьные якоря и интерактивный конструктор записей остаются открытыми: #32, #33.
Трейлеры коммитов путешествуют с клоном; заметки — нет. Git не загружает
refs/notes/*по умолчанию, поэтому запись вrefs/notes/commitloreотсутствует в обычном клоне, покаcommitlore initне настроит это зеркало.Нет размещённого бэкенда. Но как только сервер или хук возвращает контекст, хост обрабатывает этот контекст в соответствии со своей собственной политикой; CommitLore не контролирует этот поток данных.
Безопасность · Совместимость · Доказательства
Записи не считаются доверенными, пока не оценены. Сопоставление автора по умолчанию — это метаданные политики, а не аутентификация. Режим подписанной директивы требует проверки Git и локального для репозитория списка разрешённых подписантов; отсутствующий или нечитаемый список не авторизует никого. Полезная нагрузка, имеющая форму инъекции, не передаётся на маршруты, читаемые моделью.
Установщик CLI не может перезаписать хуки в репозиториях, о которых он не знает, а запущенные сессии хоста сохраняют загруженную среду выполнения. commitlore doctor называет оба состояния и их исправление, а commitlore upgrade сообщает, существует ли более новая версия.
Записи — это обычные трейлеры или заметки Git. Протокол 2.0 определяет жизненный цикл, уровни доверия, валидацию и совместимость.
Руководство для человека → · Нормативная спецификация →
Репозиторий публикует методы, исключения, неудачные измерения и случаи, когда исходный бенчмарк или диагноз был ошибочным.
Доказательства → · Самоаудит →
Документация
Участие в разработке
CONTRIBUTING.md описывает протокол записей, которому следует этот репозиторий, шлюз выпуска и способы воспроизведения доказательств.
Лицензия
MIT — см. LICENSE.
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseAqualityAmaintenanceLocal-first memory layer for AI coding agents — captures issues, attempts, fixes, and decisions, and warns at git commit before you repeat a mistake.15665MIT
- AlicenseAqualityAmaintenanceGit-native long-term memory for AI agents: your markdown files are the source of truth, the search index is a disposable projection rebuilt from git, and every memory the agent writes is a reviewable git commit. Served over one OAuth-secured MCP endpoint with hybrid lexical+semantic recall and a gated, git-first commit_note write tool.78AGPL 3.0
- AlicenseAqualityBmaintenanceLocal-first project memory for AI coding agents. Records failed attempts, fragile files, and decisions per repo, and warns the agent via hooks before it repeats a recorded mistake.689MIT
- AlicenseAqualityAmaintenanceSelf-hosted decision memory for AI coding agents. Captures decisions with the alternatives you rejected, and warns before an agent re-proposes a rejected approach.481Apache 2.0
Related MCP Connectors
Memory for coding agents: the decisions, the dead ends, and where the last session stopped.
Experience memory for coding agents: validated traps, fixes and dead-ends at decision time.
Give your AI agent a persistent map of your project's structure, dependencies, and bugs.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MongLong0214/commitlore'
If you have feedback or need assistance with the MCP directory API, please join our Discord server