Узнайте, как добавить постоянную шифрованную память в Ollama с помощью Sieve. Никаких SDK, только смена URL. Попробуйте прямо сейчас!
Ollama даёт локальный LLM-эндпоинт, который быстр, приватен и полностью не имеет состояния. Закрыл чат — модель забыла всё, что ты ей сказал. Держишь чат открытым — каждый новый запрос отправляет растущую историю, пока контекст не переполнится. Спроси локальную модель о том, чего ей никогда не говорили, и она может просто выдумать ответ. В этом руководстве мы добавим постоянную шифрованную память к любой установке Ollama с помощью Sieve — без изменения клиентского кода, кроме одного URL.
Когда ты запускаешь агентов или долгоживущие чаты с локальной моделью, возникают три раздражающих проблемы, и у них общий корень.
Скажи ассистенту в понедельник, что предпочитаешь Python, а цель развёртывания — Raspberry Pi. Во вторник он ничего не помнит. У модели нет состояния; приложение должно тащить всё каждый раз.
Стандартный обходной путь — пересылать историю: системный промпт, схемы инструментов, все предыдущие сообщения — каждый запрос. Я измерил последствия этого паттерна в статье «Скрытая стоимость контекста». Краткая версия: затраты на один запрос растут с длиной разговора, а на локальном железе этот рост съедает ваши токены в секунду.
Когда вопрос выходит за пределы отправленного контекста, особенно маленькие модели склонны отвечать, выдумывая факты. Модель, которой никогда не говорили имя коллеги, часто его придумает.
Общий корень: эндпоинт не имеет состояния, и бремя памяти ложится на то, что перед ним. Большинство фреймворков памяти просят вас принять SDK и вызывать add()/search() самостоятельно. Наш подход другой — поместить память в трафик, чтобы клиент оставался неизменным.
ваш клиент ──► Sieve (127.0.0.1:11435) ──► Ollama (127.0.0.1:11434)
│
└── шифрованное хранилище ~/.sieve/memory.dbSieve понимает нативный /api/chat Ollama и совместимый с OpenAI /v1/chat/completions, так что всё, что умеет говорить с Ollama, умеет говорить и с Sieve. На каждом шаге Sieve удаляет из исходящего запроса повторяющиеся инструкции, схемы инструментов и устаревшую историю; извлекает долговременные факты из разговора; и вставляет релевантные факты, когда они действительно нужны. Ответ возвращается клиенту без изменений.
Вам понадобятся Python 3.11+ и работающий Ollama. Рекомендуемый установщик — pipx:
pipx install llm-sieve
sieve --version
# sieve, version 1.0.0 или новееЗатем запустите интерактивную установку:
sieve-installЕсли Ollama работает на 127.0.0.1:11434, установщик автоматически это обнаружит, покажет ваши уже загруженные модели, скачает эмбеддинг-модель (~50 МБ, один раз), создаст шифрованное хранилище и предложит запустить прокси — с опцией автозапуска при перезагрузке. Для автоматической установки без запросов:
sieve-install --no-input \
--provider http://127.0.0.1:11434 \
--model qwen3.5:9bSieve слушает на порту 11435 — на один порт выше стандартного порта Ollama 11434. Там, где ваш клиент указывает на Ollama, укажите на Sieve.
export OLLAMA_HOST=http://127.0.0.1:11435client = OpenAI(
base_url="http://127.0.0.1:11435/v1", # было: http://127.0.0.1:11434/v1
api_key="not-used-by-sieve", # всё ещё передаётся наверх
)Или просто через curl:
curl http://127.0.0.1:11435/api/chat \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5:9b",
"messages": [{"role": "user", "content": "Привет, меня зовут Алекс, я работаю над встроенным ПО."}],
"stream": false
}'Имена моделей, форматы запросов, форматы ответов, стриминг — всё без изменений. Клиент вообще не знает о существовании Sieve.
Две встроенные команды, обе в песочнице (они никогда не трогают ваше реальное хранилище):
sieve demoзапускает короткий скриптовый диалог: личность представляется, делится фактами, просит их вспомнить и завершается вопросом о человеке, которого никогда не упоминали. Ожидаемый результат: успешное вспоминание внесённых фактов и отказ (не выдумка) на ловушку.
sieve benchmarkотправляет те же 15 сообщений напрямую модели и через Sieve, затем выводит таблицу дельт: токены на входе и выходе, изученные факты, время ответа и вердикт по ловушке. Займёт 5–10 минут в зависимости от вашего железа, и цифры будут ваши, а не мои.
Каждый ответ, через который прошёл Sieve, содержит диагностические заголовки, так что не нужно верить прокси на слово:
Пара Inbound/Outbound — первая, на которую стоит смотреть: это ответ на вопрос «действительно ли это что-то делает?» Полный список — в документации по диагностическим заголовкам.
Ожидайте, что первые несколько шагов будут похожи на пассивное пропускание. Sieve активируется постепенно: сначала наблюдает, потом накапливает, и только потом активно обрезает и вставляет. X-Sieve-Phase покажет, на каком этапе вы находитесь, а sieve status — как растёт количество фактов.
Всё остаётся на вашей машине. Факты, сущности и эпизоды попадают в шифрованную SQLCipher базу данных SQLite по пути ~/.sieve/memory.db, а ключ лежит рядом. Нет облачной составляющей, нет аккаунта, нет телеметрии — прокси общается только с одним удалённым участником, и это настроенный LLM-эндпоинт. Если это Ollama на localhost, ничего не покидает вашу машину.
Хранилище принадлежит вам, а не пакету: обновления через pipx upgrade llm-sieve никогда не трогают ~/.sieve/, и единственная команда, удаляющая пользовательские данные — sieve uninstall --hard, при которой нужно ввести DELETE.
Sieve может подложить нужные факты модели и отказаться превращать отсутствие в выдумку на тех шагах, которые он контролирует, но модель на 1–3 млрд параметров в условиях неопределённости остаётся моделью на 1–3 млрд. Ловушка демо — честная проверка: запустите её на той модели, которую планируете использовать. Модели класса 8B+ показывают наилучшие результаты в обработке отсутствия.
Слой памяти, в котором ничего нет, пока не сэкономит вам токены. Запланируйте несколько шагов, прежде чем дельты станут интересными.
Если порт 11435 уже занят, запустите sieve start --port 11436 и укажите клиенту этот порт.
Выполните всего три команды:
pipx install llm-sieve
sieve-install # автообнаружение Ollama, интерактивно
export OLLAMA_HOST=http://127.0.0.1:11435
sieve demo # наблюдайте за вспоминанием и отказом на ловушкуОдин изменённый URL, никакого SDK, никакого переписывания клиентского кода — и ваши модели Ollama перестанут забывать, кто вы, между сессиями.
Sieve — открытый исходный код под лицензией Apache 2.0: github.com/llmsieve/llm-sieve
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →