01Гейт допуска на запись
Допустить, понизить или отклонить каждую запись по entailment источника. Ни один конкурент здесь такого не даёт — а с июля он многоязычный: тот же семантический экран на 10 языках, откалиброван на 0 ложных срабатываний.
Проблема памяти агентов
Verimem — это постоянный слой памяти, чей add() пропускает каждую запись через шлюз допуска против конфабуляции — действительно ли источник влечёт факт? — а чей search() возвращает происхождение при каждом чтении. Гиппокамп с нотариусом у двери.
✓ 100% бесплатно и open source — лицензия AGPL-3.0. Self-hosted, local-first: без аккаунта, без API-ключа, без оплаты.
Другие слои памяти сохраняют всё, что выдаёт их экстрактор. Verimem — нет.
При записи кандидат-факт принимается, понижается или отклоняется — в зависимости от того, действительно ли процитированный источник его влечёт. Дешёвый лексический фильтр без LLM сначала понижает неподтверждённые утверждения вида «работает / проверено / готово»; затем включённая по умолчанию с v0.5.0 проверка следования источник⊢факт отклоняет любое утверждение, которое процитированный источник на самом деле не подтверждает. На SNLI он достигает AUROC 0.971, и это число независимо от судьи.
Структурированный разбор mem0, Zep, Letta, Cognee и MemOS показал, что ни у одного из них нет шлюза допуска при записи. Этот шлюз — плюс происхождение, которое возвращает каждое чтение — и есть весь смысл. — а независимый обзор 2026 года по always-on-агентам (arXiv 2606.30306) отмечает, что область куда больше сосредоточена на накоплении и извлечении состояния агента, чем на управлении им — ровно пробел write-admission.
Иллюстрация — шлюз в трёх вердиктах
Чтения возвращают не только текст — по каждому факту они возвращают его status и grounding_score на момент записи, чтобы ваш код мог опираться на доверие вместо слепой веры. А update() никогда не уничтожает старый факт: он его замещает, оставляя проверяемый след history(). explain() возвращает полный TrustReport — происхождение, проверки и любой конфликт, заявленный или с обоснованным воздержанием.
memory.py · запись проходит через шлюз, чтение возвращает происхождение
from verimem import Memory
mem = Memory() # local SQLite, offline
mem.add("The deployment uses PostgreSQL 16.") # write goes THROUGH the gate
for hit in mem.search("which database?"): # read returns provenance
print(hit["text"], hit["status"], hit["grounding_score"])
# -> The deployment uses PostgreSQL 16. ADMITTED 0.97 | Метрика | Результат | Для протокола |
|---|---|---|
| Entailment шлюза записи | AUROC 0.971 | Источник⊢факт, независимо от судьи (SNLI). Ров на пути записи. |
| Сквозное QA · HaluMem, полный конвейер | 0.66–0.68 | Наша экстракция → store с гейтом → ответ: семь последовательных полных прогонов группируются на 0.66–0.68 (среднее 0.667, n=3 чистых) против само-заявленных 0.672 MemOS — паритет, не победа, и мы так и говорим. Судья — Claude, не GPT-4; сырые файлы в репозитории. |
| Кросс-пользовательская генерализация | 0.716 | Тот же рецепт на никогда не виденном пользователе (n=169): 0.716. Рецепт не подогнан под данные одного пользователя. |
| Воздержание memory-boundary | 1.000 × 7 прогонов | Отказывается выдумывать, когда store не может поддержать ответ — 1.000 на семи последовательных сквозных прогонах. Ось, которую конкуренты не измеряют. |
| Многоязычная дыра гейта — закрыта | 8/10 → 0/10 | Воспроизведено из живого тестирования: одно и то же неподтверждённое хайп-утверждение чисто проходило гейт в 8 из 10 языков (лексический экран был только EN/IT). Исправлено семантическим dual-check, использующим сам многоязычный эмбеддер как детектор, затем закалено адверсариальным ревью, которое фальсифицировало первый клейм «0 FP» на held-out фразах: вопросы, отрицания и косвенная речь теперь исключаются детерминированными стражами, by design. После фикса на реальном write path: хайп помечен в 10/10 языках, ложные срабатывания held-out 0/14 — скрипт калибровки, находки ревью и сырые файлы в репозитории. |
| Разрешение конфликтов памяти | 0.15 → 0.82 | Противоречащее обновление побеждает в 5,5× чаще после фикса; ошибочные отзывы снижены 99 → 7 с порогом точности (0 кросс-атрибут). Вердикт состязательного critic: claim_holds. |
| Уровень галлюцинаций (регулятор) | 0.233 → 0.111 | −52% как переключатель (ENGRAM_GROUNDING_GATE), сохраняя правильные ответы. Вы выбираете recall-first или trust-first — в QA и на пути записи. |
| Retrieval recall@5 · LongMemEval-s | 0.8745 | Полные 500, без судьи, тот же эмбеддер e5, ноль внешних API. Fusion ON vs 0.8525 OFF (+2,2 pp). Это recall@k, а не сквозная точность QA. |
| Задержка · конкурентность | 38ms / 166–237ms | Запись 38ms p50 с полным шлюзом; чтение 166–237ms с историей + TrustReport при 5k фактов. 500 конкурентных процессов на одном SQLite, 0 ошибок (лёгкие воркеры). |
| Набор тестов | 7 761 зелёных | Запущено самостоятельно, воспроизводимо из репозитория. Без стороннего рейтинга. Один live-smoke-тест к LLM-провайдеру зависит от окружения (нужен hosted-провайдер) и исключён из подсчёта. |
| TrustMem-Bench · оси доверия | Verimem 60/60 | Наш детерминированный бенчмарк доверия — без LLM, без сети: шесть осей, одна команда. Verimem проходит 60/60; mem0 OSS покрывает 40/60 (0/10 по отсутствию, забыванию, происхождению). Базовая линия raw-store намеренно — конкурентов приглашаем запустить его. |
| VeriBench · стандарт доверия | детерминированный · self-run | Открытый бенчмарк для доверенной памяти — он измеряет то, чего recall@k не видит: симметричная метрика не отличает уверенно-неверный ответ от честного «не знаю». На каузальной оси store с одним только trust, подтвердивший ложную корреляцию, уходит в минус даже при λ=1 (происхождение ≠ причинность). На адверсариальной оси — сговор плюс доверенный слипер — в плюсе остаётся только двухканальная политика (независимое подтверждение и исход); каждый канал по отдельности падает под атакой. Без моделей, одна команда, спецификация в репо — конкурентов приглашаем запустить. Полные результаты, протокол и head-to-head → |
| Source trust на РЕАЛЬНОМ корпусе | картель 0.90 → 0.20 · 3/3 seeds | HaluEval held-out, критерии пре-зарегистрированы до первого запуска: картель из 4 идентичностей, самоподтверждающийся до 0.90 при наивном счёте ≥2 источников, разбит до 0.20 независимостью + деконфаундингом по аудиту; честные источники поднимаются до 0.95, галлюцинированные ответы картеля исчезают из recall (→ 0.0). Кривая устойчивости (18 точек): неверные ответы, записанные обманщиками = 0/18 на любом уровне шума; остаток — честные ошибки: болезнь per-claim, объявленная, не скрытая. |
| Ручка SLA · работает на заявленном риске | TCE ≤ 0.011 · риск 1,1% @ 73% coverage | Сильный AUROC говорит, что оценки различают; он не говорит, что ручка λ работает на заявленном риске (Oxford 2603.21172). Замерено held-out, калибровка обучена только на dev: сырые оценки ранжируют почти как оракул (E-AURC 0.0008), но обещают не тот риск, что выдают; после чистой изотонической калибровки каждая заявленная цель λ выполняется — TCE ≤ 0.011 на λ ∈ {0.5–9}, наблюдаемый риск 1,1% при 73% coverage. Объявленный компромисс: калибровка сглаживает тонкое ранжирование — raw для ранжирования, калиброванное для эксплуатации. |
Каждая цифра здесь запущена самостоятельно и воспроизводима из репозитория — это не место в стороннем рейтинге. Числа retrieval — это recall@k, а не сквозная точность QA, которой хвалятся Mem0 и Zep, поэтому напрямую не сопоставимы.
Допустить, понизить или отклонить каждую запись по entailment источника. Ни один конкурент здесь такого не даёт — а с июля он многоязычный: тот же семантический экран на 10 языках, откалиброван на 0 ложных срабатываний.
Каждый факт возвращает status + grounding_score; update() замещает, history() остаётся аудируемой; explain() даёт полное досье «откуда ты знаешь?».
Двое часов (когда узнали vs когда было истинно), ответ-с-историей («изменилось с X на Y числа Z»), as_of и глубокий recall спящих фактов — не только valid_until.
verimem gateway serve: мультитенантный HTTP API на вашей машине — хешированные ключи, изолированные stores на тенанта, rate limiting, горячие бэкапы, удалённый provisioning. Ваши данные никогда не покидают вашу инфраструктуру.
Постоянные счётчики того, что гейт действительно СДЕЛАЛ — записи допущенные, в карантине, отклонённые, честные воздержания — по store и по тенанту, со страницей /dashboard без зависимостей. Наблюдаемые действия, а не маркетинговые клеймы.
Индексируйте PDF / DOCX / HTML / EPUB; фрагменты возвращаются с файлом, версией и символьными смещениями и могут быть повышены до памяти через гейт.
Начните со своего экспорта ChatGPT / Claude: беседы сперва выводятся списком, фильтруются по заголовку, дате или проекту — ничего не загружается без явного выбора.
delete(purge_history=True) схлопывает всю цепочку — стёртые данные не всплывают из history, as_of или глубокого recall.
Инструменты памяти при старте сессии в Claude Code, Cursor, Cline, Zed — плюс типизированный TypeScript-клиент без зависимостей для гейтвея, contract-tested против живого сервера.
Режим hosted MCP: без API-ключа, без потокенного биллинга — работу делает LLM хоста. Работает air-gapped (verimem airgap проверяет нулевой egress).
Кольцо композиции выводит НОВЫЕ факты из проверенных и проводит их через ТОТ ЖЕ гейт допуска, что и любого писателя — выжившие входят подписанными (записи движка никогда не свидетельствуют за себя), трассированными (отзываемы, если падает родитель) и помеченными точным пройденным чеком: proven / unbeaten(bound) / refuted(контрпример). «Держалось до 10^6» и «доказано» никогда не смешиваются.
Чтение не просто воздерживается — когда store хранит лучше гарантированную истину о том же субъекте, оно ИСПРАВЛЯЕТ, цитируя оба факта (опровергнутый факт не выдаётся никогда). И store пробит СЕБЯ САМ: строит запрос, который опроверг бы факт — независимая контрдоказательность предлагает метку refuted, выживание растит границу unbeaten. Фальсификация, которой не нужно ждать.
Неподделываемый HMAC того, КТО говорит, едет внутри ref происхождения каждой записи, дополняя entailment-гейт по тому, ЧТО заслуживает допуска. Подлинность контента и подлинность канала — две половины, которые ни один детерминированный контент-фильтр в одиночку не сертифицирует против адаптивного противника. Opt-in; аудит сообщает покрытие и называет нарушителей.
| Система | Шлюз записи | Происхождение при чтении | Подход | Зрелость |
|---|---|---|---|---|
| Mem0 | ✗ | ✗ | Плоский вектор + LLM-резюме | Устоявшийся, широко принятый |
| Zep / Graphiti | ✗ | частично (темпорально) | Темпоральный граф знаний | Коммерческий, зрелый |
| HippoRAG | ✗ | ✗ | OpenIE + PageRank | Исследование |
| Verimem | ✓ | ✓ | Fusion recall + шлюз + консолидация во сне | Совсем новый · пока 0 внедрений |
Оценки и внедрение конкурентов меняются по источнику и со временем; две колонки, на которых мы стоим — шлюз записи и происхождение при чтении — взяты из структурированного разбора, а не из маркетинговой таблицы.
Совсем свежий релиз. Пока никто на него не полагается — включая нас, кроме ежедневного использования мейнтейнером.
pip install verimem — v0.7.0 на PyPI (AGPL-3.0); публичный репозиторий на GitHub, с первым зелёным прогоном CI. Но всё же совсем новый.
Независимость происхождения и деконфаундинг по аудиту теперь держатся на реальном held-out корпусе (HaluEval, пре-зарегистрированные критерии, 3/3 seeds): картель сфабрикованного консенсуса, самоподтверждающийся до 0.90 при наивном счёте, разбит до 0.20, честные источники поднимаются до 0.95, его галлюцинированные ответы исчезают из recall. Честный, измеренный предел: при сильном честном шуме (надёжные источники ошибаются ~15%+) разделение деградирует — остаток на 100% честные ошибки, болезнь per-claim, не атака. Флаги остаются default OFF: доказательства информируют переключение, переключение — продуктовое решение.
Каждый TrustReport теперь это объявляет — Verimem удостоверяет, кто утверждал факт, насколько независимо он подтверждён и насколько свеж, а не что он причинно истинен. Вопрос do(X) требует интервенционного факта; подтверждённый наблюдательный на него не ответит.
Каждое число воспроизводимо из репо, но ни одно не проверено третьей стороной. Число QA против MemOS использует судью Claude (не GPT-4) на n=2 пользователях. Считайте их воспроизводимыми, а не сертифицированными.
Полный конвейер (наша экстракция → QA) группируется на 0.66–0.68 на семи последовательных прогонах (среднее 0.667 на n=3 чистых store) против 0.672 у MemOS и держит 0.716 на никогда не виденном пользователе. Оговорка остаётся: судья Claude, не GPT-4, стороннего аудита нет. Мы говорим «паритет», а не «побеждает».
Мультитенантный гейтвей (изолированные stores, хешированные ключи, бэкапы, metering) реален и протестирован — на вашей инфраструктуре. Managed-облака пока не существует.
Экстракция разговорных сущностей (типизированный tier) shipped, но выключена по умолчанию; multi-hop рассуждение по графу — самая слабая измеренная ось (0.39–0.44) и текущий фронт работ.
① Python — из исходников
pip install verimem Даёт команду verimem и SDK from verimem import Memory — add() / search() / history() / explain(). Локальный SQLite, офлайн, шлюз включён по умолчанию.
github.com/aureliocpr-ctrl/verimem ↗ · AGPL-3.0 · README · BENCHMARKS.md
② Как MCP-сервер — Claude Code, Cursor, Cline, Zed
{
"mcpServers": {
"verimem": {
"command": "verimem",
"args": ["mcp"],
"env": { "ENGRAM_HOSTED": "1" }
}
}
} Перезапустите хост; инструменты памяти становятся доступны с нулевым API-ключом — LLM хоста делает работу.
③ Self-host гейтвей для команды
verimem gateway keys create --tenant acme
verimem gateway serve # 127.0.0.1:8377 · /ui verimem gateway keys create --tenant acme, затем verimem gateway serve — мультитенантный HTTP API с изолированными stores, rate limiting и горячими бэкапами. Откройте /ui для одометра доверия; типизированный TypeScript-клиент лежит в репозитории.
④ Увидеть её в работе — консоль доверия
verimem console # your store · odometer · graph · live verimem console открывает ваше локальное хранилище в браузере — одометр доверия, граф знаний, где каждый вывод несёт свою цепочку доказательств, журнал заблокированных утверждений, вживую через SSE. Командный gateway отдаёт ту же консоль на /ui; агенты читают всё состояние через /v1/snapshot.