# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

## ИМЯ ОБРАБОТЧИКА

meta_feedback_injector

## ОПИСАНИЕ

Обработчик для автоматического обнаружения повторяющихся тиков LLM и их внедрения
Обратная связь по исправлению. Отслеживает частоту появления и отключает шаблоны
автоматически после определенных периодов бездействия (max_inactive_count).

Способствует согласованным моделям поведения с помощью блоков обратной связи в командной строке.
Поддерживает сохранение БД или резервный JSON (data/meta_feedback_patterns.json).

## OPERATIONS

check_response(response: str) -> list[dict]
  Сканирует ответ на активные шаблоны. Отслеживает попадания/промахи. Есть найденные
  Выкройки с деталями назад.

inject_corrections(prompt: str) -> str
  Вставляет блок [BACH-META-FEEDBACK] с активными исправлениями в подсказку.
  Вводятся только шаблоны с частотой > 0.

add_pattern(шаблон, коррекция, тип_паттерна, max_inactive_count)
  Новый шаблон с сопоставлением регулярных выражений или подстрок. Сохраняет в БД или JSON.

remove_pattern(pattern_id: int) -> bool
  Удаляет шаблон из хранилища.

reactivate_pattern(pattern_id: int) -> bool
  Повторно активирует деактивированный шаблон, сбрасывает inactive_count.

_record_hit(шаблон: dict)
  Увеличивает частоту, устанавливает inactive_count равным 0.

_record_miss(шаблон: dict)
  Увеличивает inactive_count. Отключено, если >= max_inactive_count.

_pattern_matches(шаблон: dict, текст: str) -> bool
  Сопоставление регулярного выражения/подстроки с текстом.

## DEFAULT-PATTERNS

ID 1: английские слова-заполнители (здесь, позвольте мне, я сделаю)
  Исправление: «ВСЕГДА отвечайте на немецком языке».

ID 2: обнаружение Emoji (диапазоны Unicode).
  Исправление: «НЕ используйте смайлы в ответах».

ID 3: преувеличенные извинения.
  Исправление: «Никаких преувеличенных оправданий».

## ПРИМЕРЫ

Инициализация с помощью БД:
  handler = MetaFeedbackInjector(base_path=Path("system"), db=bach.db)

Инициализация с резервным JSON:
  handler = MetaFeedbackInjector(base_path=Path("system"))

Проверьте ответ:
  match = handler.check_response("Вот мой ответ...")
  # совпадений содержат идентификаторы шаблонов 1, 2, ... с текущим состоянием

Ввести обратную связь перед повторной попыткой:
  исправленная_подсказка = handler.inject_corrections(original_prompt)

Добавить новый шаблон:
  обработчик.add_pattern(
    шаблон=r"(?i)\фактически\b",
    корректировка="Избегайте слова "на самом деле" в ответах на немецком языке.",
    шаблон_тип="регулярное выражение"
  )

Повторно активировать шаблон после бездействия:
  handler.reactivate_pattern(pattern_id=1)

## ФАЙЛЫ

hub/meta_feedback_injector.py
  Реализация (282 строки, лицензия MIT)

data/meta_feedback_patterns.json
  Сохранение резервного варианта JSON (создано _save_json)

СХЕМА ПОЛЯ ШАБЛОНА
  идентификатор (целое)
  шаблон (str): регулярное выражение или подстрока
  Pattern_type (str): «регулярное выражение» или «подстрока»
  исправление (str): текст обратной связи для подсказки
  частота (целое): количество попаданий
  inactive_count (int): промахи с момента последнего попадания
  max_inactive_count (int): порог автоматической деактивации (по умолчанию: 10)
  активный (целое): 1 (активный) или 0 (неактивный)
  созданный_at (str): временная метка ISO
  update_at (str): временная метка ISO

## СМОТРИ ТАКЖЕ

bach_api              - Реестр и инициализация центрального обработчика
meta_feedback         - Связанные механизмы обратной связи (если есть)
bach.db (схема) - таблица Meta_feedback_patterns со всеми столбцами
