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

推荐订阅源

C
Check Point Blog
H
Help Net Security
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
Engineering at Meta
Engineering at Meta
The Register - Security
The Register - Security
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
云风的 BLOG
云风的 BLOG
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
T
The Blog of Author Tim Ferriss
Recorded Future
Recorded Future
月光博客
月光博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
G
Google Developers Blog
Jina AI
Jina AI
P
Proofpoint News Feed
J
Java Code Geeks
I
InfoQ
博客园 - 司徒正美
D
DataBreaches.Net
博客园 - 叶小钗
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Google DeepMind News
Google DeepMind News
L
LangChain Blog
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
人人都是产品经理
人人都是产品经理
V
V2EX
F
Full Disclosure
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
V
Visual Studio Blog

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 миллионов точек без потерь
Открыл бету AI-Мастера для D&D. Главная проблема оказалась не в кубиках, а в памяти
Владька · 2026-06-19 · via Все публикации подряд на Хабре

Средний

5 мин

117

Что значит «открыть ОБТ» для пет-проекта

Чтобы тестеры реально играли, а не упёрлись в платный барьер на втором ходу, я раздал всем стартовый бонус внутренней валюты — маны. Хватает примерно на сотню ходов. Логика простая: дайте человеку пройти достаточно, чтобы он наткнулся на настоящие проблемы игры, а не на «закончились бесплатные попытки, платите».

Цифры первых дней

Вот что показал дашборд OpenRouter с момента запуска:

  • 32 тысячи запросов к моделям

  • 91,4 миллиона токенов

Статистика запросов 13.06-18.06

Статистика запросов 13.06-18.06

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

Почему наивная нейросеть — плохой Мастер

Если просто посадить языковую модель водить D&D, выйдет беда. И беда предсказуемая.

Во-первых, модель не знает правил — она их имитирует. Просишь бросить кубик — «бросает» удобное число. Атака, урон, спасбросок: всё на глаз, лишь бы складно.

Во-вторых, нейросеть патологически добрая. Она с удовольствием выдаст тебе тысячу золота за то, что ты храбро посмотрел на гоблина. Похвалит за всё, наградит за ничто, баланс снесёт за пару сцен.

Это я лечил ещё до ОБТ, и на старте оно уже работало. Рядом с прозой стоит детерминированный движок D&D 5e. Кости, проверки навыков, инициатива, урон, слоты заклинаний, спасброски от смерти — это считает код по правилам, а не выдумывает нейросеть. Модель отвечает за художественную часть, движок — за физическую правду. Ошибся в бою — получил по щам по-настоящему, а не по настроению Мастера.

За эту часть я был спокоен. И зря решил, что она и окажется главной болью.

Главная боль ОБТ — память

Настоящее узкое место вылезло там, где я не ждал. Мир у нейросети не держится.

Запоминай всё дурацкий ИИ!

Запоминай всё дурацкий ИИ!

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

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

Один из тестеров — он специально вёл партию медленно и миролюбиво — сформулировал боль точнее, чем я сам:

Забывчивость ИИ о состоянии мира удручает. Теряется ощущение целостности мира, который каждые несколько сообщений постепенно стирается, а затем неправильно воссоздаётся — с ошибками, огрехами, потерянными деталями. Как комната кривых зеркал.

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

Как я это чиню прямо сейчас

Лечение — это перестройка пайплайна, над которой я сижу как раз сейчас. Назвал её «Директор состояния».

Смысл — развести две роли, которые раньше тянула одна нейросеть. Пусть канон мира (что произошло, кто жив, какие факты в силе) решает отдельный шаг ещё до прозы. А нарратор пишет уже под готовое решение и сам в мире ничего не меняет.

Один ход теперь идёт так. Лёгкая модель разбирает намерение игрока — атака, проверка, разговор. Движок считает механику. Дальше новый шаг — директор, единственный, кому позволено трогать канон. Он берёт намерение, результат движка и срез памяти мира и делает три вещи: отбирает из памяти только то, что относится к этому ходу (заодно режет лишние токены), сверяет ход с уже установленным каноном и отклоняет противоречия, фиксирует, что в мире изменилось. И лишь потом нарратор пишет прозу — но под жёсткие ограничения, как под техзадание, а не как автор, которому можно всё.

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

Заодно завёл настройку строгости. В строгом режиме (по умолчанию) канон незыблем: поменять что-то можно только по явной внутрисюжетной причине. В лояльном директор мягче — мир живее, но иногда дрейф просочится. Кому-то важнее железная логика, кому-то — живость, пусть сами выбирают.

И да, пайплайн обвешан страховкой. Если вызов директора упал по таймауту — ход не теряется, бот деградирует в прежний режим. Рабочее ядро важнее красивой архитектуры.

Что ещё ломалось и как я об этом узнаю

Память — главная история, но не единственная. По горячим следам ОБТ ловились вещи помельче: криво считался лут с трупов, классовые способности не всегда долетали до движка, проза изредка оживляла убитых врагов, нашёлся неприятный момент с проверкой платёжного вебхука. Часть уже закрыта, часть в очереди.

Узнаю я об этом двумя путями. Первый — живой фидбек. Я не прячусь за формой обратной связи: тестеры пишут напрямую, я читаю всё. Куча багов прилетела одной фразой «слушай, а почему вот это так». Второй — регулярные прогоны. После каждого деплоя я гоняю смоук-сценарии, потому что на живом мире постоянно вылезает то, что не словил ни один тест.

Не претендую на лучшее техническое решение — я его и не искал. Я ищу рабочее. И нахожу через грабли.

Зачем я всё это пишу

Затем, что мне нравится возиться с этой штукой. И хочется довести её до состояния, когда соло-партию в D&D можно отыграть вечером — без живого Мастера и без чувства, что мир разваливается под ногами. Впереди много: нормальная долгая память по главам, чтобы кампания помнила себя через десятки сцен, а не последнюю пару ходов. Мир, у которого есть собственные планы, а не только реакция на игрока. И длинный хвост мелких правок, который у пет-проектов не кончается никогда.

Проект живой, я его пилю и буду пилить. Если хочется зайти, поиграть и от души поломать — велкам, критику и баг-репорты собираю и реально по ним чиню. Про процесс пишу в блоге бота таверны Мокрый Тортл. Сам бот доступен тут - https://t.me/dnd5char_bot

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

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

Другой тестер забил на основной квест и сам придумал себе цель:

Забил на основной квест и двигаю историю сам. Нашёл бойцовскую яму, придумал себе цель — стать чемпионом. Дерусь, общаюсь с неписями, пытаюсь то подружиться с ними, то перехитрить распорядителя боёв. Кайф.

Люди пришли тестировать сырого бота, а в итоге сочинили себе квесты, которых нет ни в одном сценарии. Вот ровно поэтому я и копаю память: чтобы мир, в котором игрок выдумал собственную историю, не забывал, что эта история вообще была.

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

И вывод номер два - я откладывал релиз каждый раз, думая что "вот это поправить ещё нужно и вот это". Но так в релиз со своим пет проектом можно никогда и не выйти. Так что делайте релизы, дамы и господа!