8 из 101 мин

Как бот собирает и обновляет профили людей

Один из самых редких механизмов в этом проекте связан не с ответами, а с тем, как система постепенно собирает профиль человека.

Здесь профиль не выглядит как анкета, заполненная один раз. Это обновляемая модель присутствия: она уточняется по мере общения и не пересобирается на каждую реплику.

Ключевой узел выглядит так:

if n >= PROFILE_UPDATE_EVERY:
    c.execute("UPDATE ann_profile_counters SET since_last_update=0 WHERE user_id=?", (int(user_id),))
    queue_profile_update(int(user_id))

• PROFILE_UPDATE_EVERY
Задаёт порог обновления.
Профиль не дёргается после каждого нового сообщения.

• since_last_update
Счётчик показывает, сколько нового материала накопилось с прошлого обновления.

• queue_profile_update(int(user_id))
Пересборка профиля выносится отдельно.
Это значит, что система сначала накапливает наблюдения, а потом обновляет профиль как самостоятельную задачу.

То есть логика здесь не реактивная, а накопительная:
сначала собирается массив новых реплик, потом система решает, что человека уже можно описывать точнее.

Сам профиль хранится отдельно:

CREATE TABLE IF NOT EXISTS ann_profiles(...)

А основания для него ещё в одном слое:

CREATE TABLE IF NOT EXISTS ann_profile_evidence(...)

• ann_profiles
Хранит текущее описание человека внутри системы.

• ann_profile_evidence
Хранит, на чём это описание вообще основано.

Это важный момент.
Проект не просто “формирует впечатление” о пользователе. Он хранит ещё и следы, из которых это впечатление выросло.

Поэтому бот работает не с разовым образом собеседника, а с длительно уточняемым представлением о человеке.

Именно это делает профиль в проекте не декоративной персонализацией, а отдельным операционным слоем системы.

Как бот собирает и обновляет профили людей: иллюстрация 1
Оглавление серии
  1. Как из идеи книги родилось пространство для памяти, разговора и рециркуляции
  2. Из чего на самом деле состоит этот проект
  3. Память, профиль и контекст: на чем держится бот
  4. По какой логике бот отвечает людям
  5. Как я сделал систему, которая не даёт контенту исчезать
  6. Как философия проекта вшита в код
  7. Почему этот проект живёт не только в тексте
  8. Как бот собирает и обновляет профили людей
  9. Как я защищаю проект от хаоса, дублей и случайности
  10. Почему я писал этот код не ради автоматизации