惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recorded Future
Recorded Future
人人都是产品经理
人人都是产品经理
Google DeepMind News
Google DeepMind News
Google DeepMind News
Google DeepMind News
雷峰网
雷峰网
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
SecWiki News
SecWiki News
W
WeLiveSecurity
N
News | PayPal Newsroom
AI
AI
The Last Watchdog
The Last Watchdog
I
InfoQ
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
B
Blog RSS Feed
Hacker News: Ask HN
Hacker News: Ask HN
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 最新话题
Engineering at Meta
Engineering at Meta
Hacker News - Newest:
Hacker News - Newest: "LLM"
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
www.infosecurity-magazine.com
www.infosecurity-magazine.com
腾讯CDC
Attack and Defense Labs
Attack and Defense Labs
博客园 - Franky
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Apple Machine Learning Research
Apple Machine Learning Research
Stack Overflow Blog
Stack Overflow Blog
Forbes - Security
Forbes - Security
Martin Fowler
Martin Fowler
D
Docker
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
P
Privacy & Cybersecurity Law Blog
U
Unit 42
H
Help Net Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Schneier on Security
博客园 - 司徒正美
S
SegmentFault 最新的问题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Schneier on Security
Schneier on Security
P
Palo Alto Networks Blog
Jina AI
Jina AI
V
Vulnerabilities – Threatpost
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
От имени Габенбота: измеряем во сколько обошёлся призыв оставить отзыв
That_Vlad · 2026-06-22 · via Все публикации подряд на Хабре

От имени Габенбота: измеряем во сколько обошёлся призыв оставить отзыв

Средний

11 мин

431

Мы решили перевести нашу статью на русский, и специально для Хабра оставим небольшие дополнительные комментарии о процессе написания.

Автор оригинальной статьи, перевода и всех комментариев: Влад Нижутин, Co‑founder и CPO, Pneumatix Research.

TL:DR

В течение нескольких дней с момента релиза в Steam в недавно ставшей популярной игре Far Far West в главном хабе присутствовал NPC, который напрямую призывал игрока оставить отзыв, а в конце диалога открывал страницу игры в магазине — прямое нарушение пользовательского соглашения Steam.

Мы собрали необходимые данные, сделали небольшой ресерч и прогнали отзывы через алгоритмы обнаружения аномалий — и обнаружили крупные выбросы с чёткой периодичностью примерно раз в 30 минут, совпадающей с игровым циклом. Используя две модели для оценки последствий, мы посчитали, что игра получила от 23% до 50% дополнительных отзывов: без этого механизма у неё было бы от 17к до 26к отзывов вместо 33к на момент написания статьи.

После завирусившегося поста на Reddit разработчик поправил текст, но оставил переход на страницу игры; Valve никак не отреагировала, а аудитория в целом поддержала разработчика — именно поэтому мы считаем это структурной проблемой, которую имеет смысл измерять.

Контекст

В мае, практически сразу после релиза, мы наткнулись на завирусившийся пост на Reddit, в котором автор возмущался откровенным нарушением пользовательского соглашения Steam игрой Far Far West:

Не просите игроков оставлять отзыв на ваш продукт изнутри вашего приложения.

В первые дни после релиза в главном хабе игры присутствовал NPC по имени Steamy — с логотипом Steam вместо головы, — который говорил:

По указу Гейба Ньюбота, я приехал в этот город с одной просьбой: оставь отзыв на игру в Steam!

После того как вы нажимали F, чтобы завершить диалог, в браузере открывалась страница игры в Steam.

Через день после публикации поста разработчик поменял текст на:

По указу Гейба Ньюбота, предлагаю всем ковбоям бесплатную поездку в главный магазин! А что вы там будете делать — уже не в моей юрисдикции.

Всё это разворачивалось в сабреддите r/Steam, и аудитория разделилась на два лагеря. Бо́льшая часть:

  • Очень крутая игра, она бы и так стала популярной.

  • Они же не просят положительных отзывов, это не нарушение.

  • Другие разработчики делают так же, ничего страшного.

И меньшая:

  • Нарушение соглашения даёт нечестное преимущество, правила должны работать для всех.

  • Среди них — разработчики, которым отклоняли заявку из‑за малейшего нарушения именно этого правила. Его применение непрозрачно и часто вызывает замешательство.

И независимо от того, на чьей мы стороне в этом споре, нам кажется важным копнуть глубже и разобрать конкретный пример — тем более что у нас уже есть рабочие модели, которые мы используем внутри команды, и есть ощущение, что мы нащупали что‑то интересное.

Материал мы выпускаем уже после того, как улеглась шумиха: мы не хотим вставать на чью‑либо сторону в конфликтах и держим нейтралитет — мы всё‑таки исследовательская команда. А раз так — поехали исследовать!

Повлияло ли это на отзывы?

Начнём с базового вопроса — было ли вообще какое‑то влияние на отзывы? И если да, нужно будет ответить позже — насколько?

Начнём с прямого сравнения, для чего посмотрим на графики распределений отзывов по плейтаймам игроков для двух сессионных игр: Slay the Spire 2 и Far Far West.

Немного... отличается.

Конкретно: у Far Far West отчётливо видно «нижнюю» кривую с относительно плавной формой, и какие‑то странные «выбросы» или «спайки» (spike).

Конечно, эти выбросы наблюдаются и в Slay the Spire 2, но их масштаб существенно меньше.

Давайте покрасим эти спайки в другой цвет с помощью алгоритма, чтобы отчётливее их увидеть. Для этого мы используем правило «похож на соседа», которое, упрощая, смотрит на соседние столбики для оценки. Если столбик существенно выбивается по сравнению с соседями — излишек красим в красный.

Комментарий

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

Теперь заметнее, но прежде чем идти дальше, подчеркнём:

  • «Нижняя» или «базовая» кривая выглядит очень похожей на лог‑нормальное распределение (как нормальное, но искривлённое влево, и из‑за этого с хвостом), а красные столбики напоминают «экспоненциальное».

  • Красные столбики подозрительно чередуются через два, что указывает нам на какую‑то периодичность процесса.

Первый пункт — не случайность, и мы обязательно поговорим об этом феномене в отдельной статье, так как это затрагивает огромную тему поведения игроков и предсказательных моделей, где мы это учитываем. Но пока что давайте углубимся во второй пункт — периодичность столбиков.

Комментарий

На самом деле эта разница в форме распределения представляет собой намного больший интерес, чем может показаться на первый взгляд. Забегая вперёд, к ещё не опубликованным статьям: есть вполне себе легко интерпретируемые правила, по которым это происходит. Если очень грубо говорить — «похожая на экспоненциальную» кривая на самом деле почти идеально отображает «истинную» кривую распределения, не по отзывам, но по какой‑то причине у большинства игр всё схлопывается к лог‑нормальному, но со «ступенькой» в районе 2 часов.


Давайте поищем периодичность на записанных стримах с геймплеем, и попробуем замерить время между попаданием в хаб.

Стрим с канала Jerma Stream Archive

Начало: ~13:00, конец ~36:00, первый забег длился 23 минуты.
Примерно 6 минут проведено в хабе.
Второй забег: начало ~42:00, конец ~1:11:00, забег длился 29 минут.
Примерно 5 минут в хабе.
Третий забег стартовал ~1:16:00, закончился в ~1:37:00, заняв 21 минуту.

Стрим с канала Northernlion

Первый забег начинается ~3:00, заканчивается ~31:00, заняв 28 минут.
4 минуты проведено в хабе.
Второй забег начинается в ~35:00, заканчивается в ~57:00, занимает 22 минуты.
Проведено 3 минуты в хабе.
Третий забег стартует в 1:00:00, заканчивается в ~1:19:00, занимает 19 минут.

Стрим с канала Bruce Greene

Нарезка стартует прямо с забега, поэтому не учитываем первый.
Второй забег начинается на ~18:00, заканчивается на ~47:00, занимает 29 минут.
Проведено 6 минут в хабе.
Третий забег начинается в ~53:00 и заканчивается в 1:42:00, заняв более чем 50 минут, по‑видимому, исключение.

Наша небольшая выборка имеет среднее время в забеге ~24 минуты и время в хабе примерно ~5 минут. И не надо забывать, что на написание отзыва тоже нужно время! Это даёт нам окна примерно 27–32 минут между написанием отзыва.

Комментарий

Разумеется, «под капотом» мы проверили наши результаты с помощью частотного анализа на разных диапазонах агрегации, и как понятный для нарратива пример использовали небольшую выборку.

Поэтому неудивительно, что наши 10-минутные столбики поймали эту зависимость. Но для уверенности выдвинем гипотезу:

  • Если длина сессии действительно является причиной спайков, а не ошибкой сборки данных, то мы должны увидеть более чёткую картину, если будем смотреть на плейтайм через 5-минутные интервалы.

  • И соответственно, часовые, или же 60-минутные, должны полностью смазать всю картинку, так как соседние получасовые интервалы будут объединяться в один.

В целом, получилось как и предсказывали:

  • На 5-минутных столбиках более отчётливо видно спайки, особенно на фоне уменьшившейся «базовой» кривой.

  • На 60-минутных практически нет спайков, а имеющиеся можно до какой‑то степени считать погрешностью алгоритма.

Но для скептиков, у нас есть еще одна идея, давайте посмотрим.


Если вас ничего не убедило до этого, давайте попробуем по‑другому, с помощью гипотезы:

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

  • Таким образом, мы ожидаем, что после изменения эффект либо существенно ослабнет, либо исчезнет полностью.

  • Но также мы, скорее всего, ожидаем, что эффект полностью не исчезнет, потому что ссылка на страницу в Steam осталась в игре.

До патча

До патча

После патча

После патча

Визуально сразу становится понятно, что наша гипотеза оказалась верной:

  • До патча 2250 из 8350 отзывов (27%) являются «аномальными», то есть находятся в красных столбцах.

  • После изменения, за идентичный промежуток времени (~2 дня), 550 из 5400 отзывов (10%) посчитаны как аномальные.

  • После, в течение более двух недель, количество аномальных отзывов оставалось в районе 10%, меееедленно снижаясь.

Честно сказать, на этом моменте я удивился. 17 процентных пунктов просто из‑за изменения текста? Я, конечно, знал, что Call‑to‑action работает, но чтобы настолько?

Надеюсь, этого доказательства достаточно, мы напрямую увидели, что NPC с призывом оставить отзыв существенно повлиял на их количество, но есть кое‑что еще!

Комментарий

Мы проверили этот «скачок» и на графике изменения отзывов, падение динамики заметно невооружённым взглядом, но в итоге мы выбрали прямое сравнение до/после, как наиболее понятное, хотя и не идеальное с методологической точки зрения.


Мы можем посмотреть на это под другим углом — с помощью графика, который покажет нам, как менялся процент «аномальных» отзывов со временем, для двух игр — Slay the Spire 2 и Far Far West.

Сразу стоит заметить: колоссальные числа со старта — во многом артефакт и метода обработки, и самой системы отзывов. Но даже так заметна разница в масштабе:

  • Несмотря на то, что график Slay the Spire 2 (синий) имеет похожую форму, он стартует с 13%, почти сразу падает ниже 5% и в течение месяца уходит ниже 1%.

  • Far Far West, в сравнении, стартует с 40%+, намного медленнее падает к ~20%, и в течение месяца так и не опускается ниже 13%.


Насколько сильный эффект?

Было бы неинтересно остановиться без попытки оценить масштаб в конкретных числах и динамике. Кто‑то, наверное, уже задавался вопросом по мере прочтения — а сколько в итоге было бы без «аномалий»? И мы можем это посчитать... Ну почти.

Для начала начнём с простого: посчитаем и напрямую вычтем наши красные столбики, или «спайки», из графика отзывов, чтобы получить примитивную оценку.

На графике две кривые — синяя это оригинальный график отзывов у игры, и зелёная — за вычетом аномалий. Само по себе это даёт нам ~13% разницы, или же 4300 дополнительных отзывов.

В некотором смысле мы можем называть это «верхним пределом», или «гарантированно лишними» отзывами, и, как вы видите, нижняя кривая пропорциональна и не очень интересна сама по себе. Но мы знаем, что алгоритмы Steam используют какую‑то обратную связь от количества отзывов, поэтому наша примитивная модель явно недооценивает масштаб.


Для более точной оценки давайте предположим следующее:

  • Steam использует некоторый фидбек‑механизм, и часть будущего роста отзывов может быть объяснена предыдущей динамикой. В наших внутренних тестах, основываясь на регрессионных моделях, эта гипотеза имеет коэффициент R^2=0.86.

Оооочень сильно упрощая, предыдущая динамика отзывов на 86% описывает будущую динамику. Это очень сильное упрощение, с огромным количеством нюансов, но для общего понимания дальше — пойдёт.

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

Если говорить совсем просто — если мы «вычитаем» аномальные отзывы из общего количества, то мы не только влияем на количество в моменте, но ещё и оказываем влияние на будущий рост, существенно замедляя его. Разумеется, модель не идеальна, и мы всё ещё настраиваем её, но в целом её достаточно, чтобы оценить масштаб наблюдаемого эффекта.

Также доступные в публичном виде «оценщики» продаж/прибыли имеют очень сильную корреляцию между количеством отзывов и продажами, иногда даже напрямую задействуя эти данные в расчётах, поэтому какое‑то влияние было оказано и на продажи, но мы считаем, что спекуляции оценок на оценках теряют всякий смысл, поэтому масштаб эффекта на продажах считаем неясным.

Итог: оценка количества отзывов у Far Far West, без влияния аномальных отзывов от NPC, находится между 17к и 26к, в сравнении с 33к, которые в итоге получила игра. Это примерно от 50 до 77% от реальных.

Комментарий

Конечно, для точности было бы правильно описать полностью нашу методологию, но это противоречит как интересам нашего проекта, так и смыслу нарратива. Вкратце, мы сильно фильтруем входные данные от неподходящих игр (например, 10 отзывов), выделяем некоторые паттерны конкретно по зависимости прошлое‑рост в будущем, кластеризуем, выбираем, валидируем на тестовой выборке, в общем, много чего делаем и экспериментируем, отчасти из‑за этого пока что не делимся конкретными шагами.


Заключение

Ну, пожалуй, и всё. Данный пример ни в коем случае не является первым случаем нарушения пользовательского соглашения, которое «сработало», но оно стало одним из самых заметных. В одной из следующих статей мы проведём более широкий анализ подобных случаев с помощью наших инструментов, но пока что давайте закругляться:

  • Призыв к действию от NPC сработал и повлиял на отзывы — от 23% до 50% от реальных отзывов являются аномальными.

  • Один лишь текстовый призыв ответственен за 17 из 27% аномальных отзывов.

  • Оставшиеся 10 из 27% аномальных отзывов, по‑видимому, относятся к механике перехода на страницу Steam, хотя надёжных способов отделить этот механизм от лого Steam и «Gabe Newbot» не представляется возможным.

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

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

  • Правильно применённый механизм Call‑to‑action, или же призыв к действию, работает более чем эффективно, иногда потенциально даже удваивая отзывы к игре.

Но самое интересное для нас — это не расчёты, это реакция:

  • Подавляющее большинство людей в оригинальном посте активно защищали игру, потому что она является качественной.

  • Valve не предприняла никаких действий, и применение правил пользовательского соглашения остаётся размытым.

На наш взгляд, это создаёт структурную проблему, когда игры, изначально популярные на релизе (Far Far West имела большое количество вишлистов на старте), в некотором смысле подталкиваются к мягкому нарушению пользовательского соглашения, получая существенный буст количества отзывов и общей видимости, под одобрение аудитории.

Является ли эта проблема настолько важной, чтобы её исправить, — не тот вопрос, на который мы в силах ответить. В наших силах — продолжать находить интересные вещи в данных, улучшая наши инструменты, которые в скором времени станут публичными.

Спасибо за внимание! Команда Pneumatix Research.