Настройки пользовательского интерфейса: добавить возможность отключения AI-подсказок

Я хотел отключить всю интеграцию ИИ на своём сайте и очень рад, что это делается одной настройкой. Ответ на вопрос, который задаёт автор темы (OP), может быть аналогом discourse_ai_enabled, но на уровне отдельного пользователя. Таким образом, ИИ не будет просто включён или выключен для всего сайта целиком. Даже функции ИИ, активированные на уровне сайта, можно отключить для конкретного пользователя. Логика discourse_ai_enabled тогда будет такой: на уровне сайта == true, а на уровне пользователя == true.

Хотя в целом верно, что разработчики стараются избегать излишней сложности при добавлении новых настроек кастомизации, ИИ — это функция с наибольшим количеством конфигурируемых параметров. За столь короткий срок, прошедший с момента появления ИИ, он, похоже, стал самой настраиваемой функцией в Discourse.[1]

Вот мой быстрый и грубый анализ. Я относительно недавно здесь, поэтому показываю свои расчёты на случай, если я где-то ошибся.

su discourse -c 'bundle exec rails runner "SiteSetting.defaults.all.keys.sort.each { |k| puts k }"' > keys.txt
wc -l keys.txt
1663 keys.txt
cut -d _ -f 1 keys.txt | sort | uniq -c | sort -rn > counts.txt

Если это правильный способ подсчёта, то существует 1663 возможных настроек сайта. Из них 104 начинаются с ai_, а 3 настройки ИИ не имеют этого префикса (composer_ai_helper_allowed_groups, discourse_ai_enabled и post_ai_helper_allowed_groups). Таким образом, по моим подсчётам, ИИ — это самая крупная группа пользовательских настроек с большим отрывом (107 из 1663, или 6,4% всех настроек сайта). Вот топ-10:

  • 107 ai
  • 84 discourse
  • 83 chat
  • 71 max
  • 65 enable
  • 48 default
  • 30 dfp
  • 28 oauth2
  • 28 amazon
  • 28 allow

С одной стороны, отключение функций ИИ для конкретного пользователя — это всего лишь ещё одна из 1663 настроек. С другой стороны, может быть сложно проверять это на уровне пользователя, когда множество путей в коде проверяют это на уровне всего сайта. Это компромисс, в котором я не компетентен высказывать предположения.


  1. Это также довольно чётко определённая и изолированная функция, к тому же относительно новая, поэтому её названия, последовательно начинающиеся с ai_, позволяют легче подсчитать количество настроек по сравнению с другими компонентами. Именно поэтому я называю этот анализ быстрым и грязным. ↩︎