Как перестать каждый раз объяснять свой контекст ИИ: слой персональной памяти для аналитиков

Я — Денис Шохирев, архитектор AI-решений в Freiburg (DennisCraft AI Studio, стек: Claude, Supabase, n8n, Doppler, self-hosted Postgres). За последние 6 месяцев я внедрил 14 production AI-агентов для DACH B2B — от логистики до финтеха. Каждый раз сталкиваюсь с одной и той же болью: аналитик вынужден по кругу разжёвывать свой доменный контекст ИИ, теряя время и точность.

Почему LLM не запоминает ваш рабочий контекст

Проблема не в “умности” модели, а в архитектуре пайплайна. LLM (Claude, GPT-4) умеет рассуждать, но не хранить длинную личную историю пользователя — максимум, несколько тысяч токенов в prompt. Каждый новый запрос начинается с “чистого листа”, если не реализовать слой памяти.

Типовые костыли: prompt templates и copy-paste

Вижу в командах две схемы:

  • “Запихнуть всё в system prompt”. Но уже при 2–3 больших таблицах prompt size уходит за лимиты (у Claude 200К, у GPT-4 — 128К токенов).
  • “Аналитик вручную копирует прошлые ответы”. Теряется вся автоматизация, растёт риск ошибок.

В результате LLM часто забывает детали проекта, терминологию, особенности схемы данных.

Паттерн: слой персональной памяти поверх LLM

Реальный production-подход — слой персональной памяти, который автоматически сохраняет, структурирует и подмешивает контекст пользователя в каждый новый запрос. Это не новый продукт, а архитектурный паттерн между клиентом и LLM API.

Техническая схема

КомпонентРеализацияЗачем нужен
Контекстная база данныхSupabase/PostgresХранить персональные facts, настройки, термины
Автоматизация ввода/выводаn8nИзвлекать и помещать память в prompt
Контроль доступаDoppler (секреты), Supabase Row-Level SecurityГарантировать приватность памяти
LLM-интерфейсClaude/OpenAI SDKОбработка запросов и ответов

Ключевые задачи и решения

  • Автоматическое извлечение ключевых facts: парсинг прошлых диалогов, резюмирование, сохранение в structured memory (Postgres JSONB). Пример — пользователь вводит свой внутренний термин, агент ловит и сохраняет его определение для следующих сессий.
  • Контекстная фильтрация: при каждом новом запросе, память фильтруется по релевантности (BM25, cosine similarity через встроенные Postgres расширения или Supabase Vector).
  • Контроль “загрязнения” памяти: регулярная очистка старых или нерелевантных entries через n8n workflow — иначе prompt начинает “плыть”.

Пример: memory layer на Supabase + Claude

Реальный кейс: аналитик в логистике общается с AI-агентом, который строит запросы к внутренней базе. В первый раз агенту объясняют смысл “zone_group” и структуру shipment_id. Дальше memory layer автоматически подмешивает эти definitions во все последующие prompts.


import openai
import psycopg2
import json

def get_personal_context(user_id):
    conn = psycopg2.connect(database="contextdb", user="ai", password="****")
    cur = conn.cursor()
    cur.execute("SELECT facts FROM memory WHERE user_id=%s", (user_id,))
    rows = cur.fetchall()
    return [json.loads(row[0]) for row in rows]

def build_prompt(user_id, user_input):
    context = get_personal_context(user_id)
    prompt = "User context:\n"
    for fact in context:
        prompt += f"- {fact['term']}: {fact['definition']}\n"
    prompt += f"\nUser query: {user_input}"
    return prompt

def query_llm(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "system", "content": prompt}]
    )
    return response.choices[0].message.content

Этот паттерн работает и для Anthropic Claude через API, меняется только endpoint.

Ошибки и нюансы production-внедрения

  • “Память” забивается мусором: если не фильтровать по релевантности, prompt быстро раздуется и начнутся ошибки “context window overflow”. Используйте vector search или хотя бы ключевые слова.
  • Data privacy: персональные facts часто содержат чувствительные данные. Обязательно шифруйте at rest (Postgres + pgcrypto), используйте Supabase Row-Level Security.
  • Версионирование: если definitions меняются, храните историю изменений через array of JSON или отдельную таблицу revisions.

На одном из внедрений (финтех, DE), без версионирования definitions LLM начал путать старые и новые значения “risk_tier”, что привело к ошибкам в отчетах. После ввода ревизий — ошибка ушла.

FAQ

Можно ли всё делать через RAG?

RAG (retrieval-augmented generation) хорош для справочников и документов, но персональную память лучше хранить отдельно — иначе она затеряется среди общей базы знаний.

Какой формат памяти выбирать: plain text или структура?

В production лучше structured memory (JSONB), чтобы быстро фильтровать и версионировать facts. Plain text подходит только для MVP.

Как автоматизировать очистку памяти?

n8n отлично справляется: по cron чистит неиспользуемые или устаревшие facts, можно настраивать по активности пользователя.

Можно ли memory layer использовать для команд, не только одного пользователя?

Да, просто добавьте поле group_id и фильтрацию по нему. Тогда контекст можно делить между членами команды.

Есть ли лимиты на размер памяти в Supabase/Postgres?

Технически — десятки мегабайт на запись, но по опыту, более 100 facts на пользователя мешают LLM фокусироваться. Лучше хранить только самое важное.

В вашей практике — на каком этапе LLM чаще всего теряет критический контекст: при смене проекта, при смене терминологии или при длинных сессиях? Мне реально интересно. Я делаю бесплатный 30-мин аудит AI-стека для DACH-компаний в регулируемых отраслях. Пишите в LinkedIn или @ger_dennis_ai.

Read more

Computer-Use-Agenten scheitern an Pixeln: wie Sie auf stabile UI-Referenzen über Accessibility Trees umstellen und fehleranfällige Desktop-Automatisierung nicht mehr ständig reparieren

von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau Ich bin Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, Germany, und bei DennisCraft AI Studio setze ich produktive KI-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst betriebenem Postgres um. Die teuersten Fehler in

By Denis Shokhirev

Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая дорогая поломка в desktop automation, которую я вижу у клиентов, почти никогда не связана с моделью: агент

By Denis Shokhirev