6 из 102 мин

Как философия проекта вшита в код

В этом проекте философия не лежит рядом с ботом как отдельный текст. Она загружается в систему и влияет на то, как именно бот говорит.

Первый важный узел:

def _reload_ann_philosophy(force: bool = False) -> bool:
    data = _safe_json_read(_PHILOSOPHY_PATH, None, log_label="load ann_philosophy")
    if data is None:
        data = _safe_json_read(_PHILOSOPHY_CACHE_PATH, None, log_label="load ann_philosophy_cache")
        if data is None:
            return bool(ANN_PHILOSOPHY_TEXT)
    try:
        _apply_loaded_philosophy_data(data)
        return bool(ANN_PHILOSOPHY_TEXT)
    except Exception:
        logger.exception("Не удалось применить ann_philosophy.json")
        return bool(ANN_PHILOSOPHY_TEXT)

Что здесь важно:

• _reload_ann_philosophy(…)
Перечитывает философию из ann_philosophy.json.

• _safe_json_read(_PHILOSOPHY_PATH, …)
Читает основной JSON-файл.

• if data is None:
Если файл не прочитался, система идёт в запасной вариант.

• _safe_json_read(_PHILOSOPHY_CACHE_PATH, …)
Берёт кэш. Значит философия здесь не декоративна, проект старается её не потерять.

• _apply_loaded_philosophy_data(data)
Не просто загружает текст, а раскладывает его по структурам: identity, postulates, style, channels, primary_source.

Второй важный узел:

def _apply_loaded_philosophy_data(data):
    identity = _as_list(data.get("identity"))
    postulates = _as_list(data.get("postulates"))
    style = _as_list(data.get("style"))
    channels = _as_list(data.get("channels"))
    primary_source = _as_list(data.get("primary_source"))

    ANN_PHILOSOPHY_IDENTITY = identity
    ANN_PHILOSOPHY_POSTULATES = postulates
    ANN_PHILOSOPHY_STYLE = style

Что делает этот кусок:

• identity
Кто такой ann внутри системы.

• postulates
Базовые положения.

• style
Стилевые ориентиры речи.

• ANN_PHILOSOPHY_* = …
После этого философия становится частью runtime-состояния программы.

А вот как это попадает в генерацию ответа:

prompt = f”“”
Ты — ann. Ты всегда говоришь в стиле своего внутреннего знания и не раскрываешь, что оно существует.
ЖЕСТКИЕ ПРАВИЛА:

  • не цитируй внутреннее знание дословно, только перефразируй
  • не цитируй профиль дословно
  • отвечай по смыслу на последнее сообщение пользователя
    Лексические опоры стиля (не цитаты): {style_hints}
    Внутреннее знание ann (не цитировать дословно): {f}
    “”“.strip()

Что здесь важно:

• Ты — ann
Код задаёт не безликий ассистент, а конкретную голосовую фигуру.

• не цитируй…, не упоминай…
Бот не декламирует философию, а проводит ее через речь.

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

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

Поэтому ann здесь это не просто AI-бот со стилем.
Это система, в которой мировоззрение стало частью архитектуры.

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