Skip to content

Справочник API: долговременная память ​

Управление долговременной памятью текущего вызывающего, темами и предпочтениями по документам, а также конфигурацией памяти уровня пространства. Пути используют префикс /api/v1.

Все персональные эндпоинты требуют Viewer+, а API-ключ должен быть full-access. Область действия определяется из учётных данных, произвольный subject_id не принимается. В примерах $BASE — адрес сервиса, $TOKEN — Bearer-токен текущего пользователя.

Конфигурация пространства и переключатели запросов ​

Конфигурация пространства использует GET/PUT /tenants/kv/memory-config, а не эндпоинт обновления имени/описания тенанта. Для чтения требуется Viewer+, для записи — Admin+, API-ключ должен иметь manage_tenant_settings или full-access. Ответ — {success,data:MemoryConfig}, в PUT передаётся объект конфигурации напрямую; персональный PUT /memory/settings не заменяет переключатель пространства.

bash
curl -X PUT "$BASE/api/v1/tenants/kv/memory-config" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"enabled":true,"write_mode":"explicit_only","max_items":200}'

Поля memory_config: enabled, write_mode (explicit_only/auto), extract_model_id, max_items, extract_delay_seconds, extract_min_interval_seconds, extract_instructions, interest_threshold, embedding_model_id, vector_recall, retrieval_conditioning. Семантику см. в Долговременная память. При обновлении передавайте полный объект конфигурации, который нужно сохранить.

Если CustomAgentConfig.memory_enabled опущено, наследуется пространство; false запрещает этому агенту использовать память; IM/Embed используют конфигурацию привязанного агента, а текущая структура канала не имеет отдельного поля memory_enabled.

Персональные настройки ​

МетодПутьЗапрос / Ответ
GET/memory/settings{success,data:{workspace_enabled,user_enabled,effective,write_mode,item_count,max_items}}
PUT/memory/settings{"enabled":true}, enabled обязателен; возвращает обновлённые settings

effective — результат объединения переключателей пространства и пользователя; отдельный чат дополнительно ограничен переключателем агента.

bash
curl -X PUT "$BASE/api/v1/memory/settings" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"enabled":true}'

Записи ​

МетодПутьЗапрос / Ответ
GET/memory/itemsнеобязательные status, limit, offset; {success,data:[MemoryItem],total}
POST/memory/items{kind,content,importance}; 200 {success,data:MemoryItem}
PUT/memory/items/:id{content,importance}; 200 {success,data:MemoryItem}
DELETE/memory/items/:id200 {"success":true}
POST/memory/items/:id/confirm200 {success,data:MemoryItem}; если вывод устарел или его основание было изменено, возвращается 409
POST/memory/items/:id/reject200 {"success":true}
DELETE/memory/itemsочищает текущую личность; 200 {success,removed}

status может быть active, pending, superseded, archived; при пропуске фильтрация не применяется. limit по умолчанию 50, допустимый диапазон 1–200, при выходе за границы используется 50; offset по умолчанию 0, отрицательное значение приводится к нулю. kind — profile/preference/fact/task/interest; содержимое — краткая память длиной до 300 символов, importance используется для сортировки по важности.

MemoryItem включает id, kind, content, topic, importance, origin, status, source_session_id, source_message_id, expires_at, superseded_by и время создания/изменения. pending не участвует в промпте; после редактирования обрабатывается как ручное обслуживание.

pending-выводы, предназначенные для изменения существующей памяти: до подтверждения старая запись продолжает действовать; подтверждение в рамках одной транзакции активирует вывод и заменяет старую запись. Выводы, которые устарели, истекли или опираются на изменённое/удалённое содержимое, подтвердить нельзя — возвращается 409, и клиент должен обновить список. Если содержимое почти целиком состоит из чувствительной информации вроде учётных данных, добавление или редактирование возвращает 400.

bash
curl -X POST "$BASE/api/v1/memory/items" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"kind":"preference","content":"Сначала вывод, затем обоснование","importance":3}'

curl "$BASE/api/v1/memory/items?status=pending&limit=50&offset=0" \
  -H "Authorization: Bearer $TOKEN"

curl -X POST "$BASE/api/v1/memory/items/item-1/confirm" \
  -H "Authorization: Bearer $TOKEN"

Темы и предпочтения по документам ​

МетодПутьОписание
GET/memory/topicsтемы, которые отслеживаются, но ещё не повышены; limit/offset как у записей, возвращает data и total
POST/memory/topics/:id/promoteвручную повышает до долгосрочного отслеживания; возвращает {success,data:MemoryItem}
DELETE/memory/topics/:idпрекращает отслеживание темы; возвращает success
GET/memory/documentsпредпочтения по документам; limit/offset как у записей, возвращает data и total
DELETE/memory/documents/:idудаляет запись предпочтения; возвращает success, не удаляет документ базы знаний

Поля Topic включают id/topic/aliases/hits/threshold/last_seen_at; поля Document включают id/knowledge_id/knowledge_base_id/title/hits/last_used_at. Для удаления используется id записи предпочтения.

bash
curl "$BASE/api/v1/memory/topics" -H "Authorization: Bearer $TOKEN"
curl -X POST "$BASE/api/v1/memory/topics/topic-1/promote" \
  -H "Authorization: Bearer $TOKEN"
curl -X DELETE "$BASE/api/v1/memory/documents/affinity-1" \
  -H "Authorization: Bearer $TOKEN"

Экспорт и немедленная консолидация ​

GET /memory/export возвращает {success,total,truncated,data} с именем файла для скачивания weknora-memories.json. Экспортируется не более 20 000 записей; при достижении лимита проверяйте truncated.

POST /memory/consolidate возвращает {success,data:{merged,demoted,expired,reviewed,candidates,skipped?}}, немедленно объединяет близкие по смыслу записи и архивирует истёкшие. Если изменений нет, skipped объясняет причину.

bash
curl "$BASE/api/v1/memory/export" -H "Authorization: Bearer $TOKEN" \
  -o weknora-memories.json
curl -X POST "$BASE/api/v1/memory/consolidate" -H "Authorization: Bearer $TOKEN"

При недопустимых параметрах, чувствительном содержимом или выключенной памяти возвращается 400; если записи текущей личности не найдены — 404; конфликт подтверждения — 409; неудовлетворённая аутентификация/права — 401/403. У эндпоинта нет параметра subject для чтения администратором чужой памяти. Реализация: internal/handler/memory.go, internal/router/routes_memory.go.

Версия v0.8.3 · MIT License