Epoch/Эпоха
3 поста
Недавно со мной произошла очень простая история.
Мы с другом играли в обычного дурака.
В какой-то момент начали обсуждать, почему каждый делает именно такой ход. И неожиданно выяснилось, что дело даже не в стратегии.
Мы буквально опирались на разные правила игры.
Никто не пытался мухлевать. Никто не "ошибался". Просто оказалось, что за годы каждый усвоил немного разную версию одной и той же игры.
Пока мы молча играли, этого вообще не было видно.
Различие проявилось только тогда, когда мы начали объяснять друг другу свою логику.
И я поймал себя на мысли.
А что, если с миром происходит то же самое?
Мы часто говорим:
"Это же очевидно."
Но очевидно — относительно какой внутренней модели?
Каждый человек всю жизнь собирает свою картину мира.
Семья.
Школа.
Работа.
Книги.
Ошибки.
Победы.
Личные травмы.
Любимые люди.
Из всего этого постепенно складываются внутренние "правила игры".
И часто мы даже не замечаем, что они отличаются.
Иногда спор выглядит так:
— Ты не прав.
Хотя на самом деле происходит другое:
— Мы вообще играем по разным правилам.
Чем больше я общаюсь с людьми, тем сильнее замечаю странную вещь.
Будто каждый живёт в немного своей версии реальности.
Не в мистическом смысле.
А в когнитивном.
Люди замечают разное.
Запоминают разное.
Придают разное значение одним и тем же событиям.
Поэтому один и тот же мир оказывается немного разным для каждого.
И тогда возникает интересный вопрос.
Что, если "реальность" — это не только то, что происходит вокруг нас?
Но ещё и модель, через которую мы всё это воспринимаем.
Тогда разговор становится не передачей информации.
Он становится попыткой синхронизировать две модели мира.
Иногда это получается.
Иногда нет.
Возможно, именно поэтому хорошие разговоры ощущаются такими редкими.
Потому что в какой-то момент два человека перестают просто обмениваться словами.
И начинают постепенно строить общий мир.
Не идеальный.
Не единственно правильный.
Но достаточно общий, чтобы понимать друг друга.
Я не пытаюсь доказать какую-то теорию.
Скорее предлагаю мысль.
Может быть, прежде чем спорить о выводах, иногда стоит спросить:
"А мы вообще играем по одним и тем же правилам?"
Иногда оказывается, что именно этот вопрос меняет весь разговор.
Epoch впервые начал изучать игровой мир самостоятельно
Сегодня у меня произошло событие, которое для проекта оказалось важнее, чем кажется на первый взгляд.
Несколько месяцев я работаю над Epoch — системой, которая должна не просто выполнять заранее написанные правила, а постепенно самостоятельно понимать окружающий мир.
Сегодня Epoch впервые получил возможность наблюдать настоящий мир.
Не через API.
Не через документацию.
Не через исходный код.
А через поток данных, который постоянно передаёт игра.
На первый взгляд это выглядит совершенно неинтересно:
UPDATE1B
Player
Long Steel Sword
Witcher Silver Sword
Starting Armor
...
Просто строки.
Но дальше возникла мысль.
Обычно разработчик пишет десятки обработчиков:
если пришёл пакет UPDATE1B — значит это экипировка;
если UPDATE3 — значит характеристики;
если UPDATE4 — значит ещё что-то.
То есть человек заранее объясняет программе, что означает каждое сообщение.
А что если сделать наоборот?
Что если ничего не объяснять?
Пусть Epoch сам наблюдает.
Например, сегодня в одном поле находится:
Long Steel Sword
Через минуту:
None
Потом:
Mastercrafted Steel Sword
Из этого можно сделать гипотезу:
«Похоже, это слот стального меча.»
Никто не прописывает это вручную.
Система сама начинает понимать смысл данных.
Получается примерно такая цепочка:
Поток данных
↓
Наблюдение
↓
Память
↓
Поиск закономерностей
↓
Гипотезы
↓
Понимание
Самое интересное — события перестают быть первичными.
Первично состояние мира.
А событие — это просто изменение состояния.
Например:
State(t)
↓
State(t+1)
Разница между ними уже сама становится событием:
игрок сменил оружие;
игрок начал диалог;
игрок переместился;
игрок получил предмет.
Никто специально эти события не отправляет.
Epoch должен научиться выводить их самостоятельно.
И именно это сегодня впервые перестало казаться красивой идеей на бумаге.
Теперь есть настоящий поток данных, на котором можно учить систему понимать неизвестный мир.
Самое забавное, что весь вечер мы пытались понять, куда внедриться в игру.
А в какой-то момент стало ясно, что правильный вопрос совсем другой.
Не «как вмешаться?»
А:
«Можно ли просто внимательно наблюдать?»
Кажется, именно с этого и начинается понимание.
P.S. Забавно осознавать, что сегодня мы не столько написали новую функцию, сколько впервые дали Epoch возможность открыть глаза.
Кажется, я понял, почему LLM так любят разговаривать. И почему это можно изменить.
Недавно пересмотрел фильм «Прибытие» (Arrival).
И поймал себя на мысли, что самое важное в нём — не инопланетяне.
Главная идея фильма в том, что меняется не словарь.
Меняется сама модель мышления.
После этого я решил провести небольшой эксперимент с Codex во время разработки своего мода Epoch World Host для RimWorld.
Не менял модель.
Не искал «идеальный промпт».
Я попробовал изменить только один вопрос.
Вместо:
Что должен делать агент?
Я спросил:
Что агент считает завершённой работой?
По умолчанию большинство LLM отлично умеют поддерживать разговор.
Они отвечают.
Предлагают ещё идеи.
Заканчивают сообщения чем-то вроде:
"Если хочешь, я могу..."
Это логично. Их задача — продолжать диалог.
Я попробовал заменить этот контракт другим.
Вместо:
Produce responses.
на:
Produce artifacts.
И добавил очень простое правило.
После каждого ответа задавать всего один вопрос.
What changed?
Если ответ:
Nothing.
значит работа не была выполнена.
Каким бы красивым ни был текст.
Постепенно из этого родился простой цикл:
Observe ↓ Inspect ↓ Evidence ↓ Artifact ↓ Stop
И начали происходить интересные вещи.
Например, раньше при проблемах со средой агент мог начать рассуждать о проекте почти вслепую.
После изменения контракта он однажды вернул примерно следующее:
попытался выполнить pwd;
получил ошибку среды;
честно сообщил, что не смог исследовать проект;
остановился.
То есть вместо красивой импровизации появился проверяемый артефакт.
Я начал называть это Artifact Delta Rule.
Ответ считается полезным только в одном из двух случаев:
проект изменился;
появилось новое проверенное знание о проекте.
Если не произошло ни того, ни другого — ответ пустой.
Пока это всего лишь серия экспериментов.
Я не утверждаю, что нашёл универсальный способ работы с агентами.
Но у меня появилось ощущение, что следующий этап развития таких систем — это не столько новые промпты, сколько контракты выполнения работы.
Не:
"будь умнее";
"объясняй лучше";
"думай глубже";
а:
что считается доказательством;
что считается завершением задачи;
какой результат должен остаться после взаимодействия.
Именно здесь я неожиданно вспомнил «Прибытие».
Там меняется не объём знаний героини.
Меняется сама структура мышления.
Возможно, с агентами происходит что-то похожее.
Мы слишком долго учили их отвечать.
Может быть, пора начать учить их работать.
Интересно, экспериментировал ли кто-нибудь с подобными контрактами?
Не с «лучшими промптами», а именно с изменением критерия завершения задачи. Если да — какие изменения в поведении моделей вы заметили?
Epoch World Host — это адаптер реальности для RimWorld. Он собирает состояние мира, отслеживает ключевые сигналы колонии и подстраивает вмешательства так, чтобы мод органично работал поверх обычных механик. В основе — широкая совместимость и минимальное вмешательство в саму игру.
Сейчас базовая версия уже работает и выглядит стабильной.
Epoch World Host — адаптер реальности для RimWorld. Мод подстраивает вмешательства, чтобы работать поверх обычных механик без лишнего шума. Базовая версия уже живая и стабильная.
Когда я начинал делать мод для RimWorld, довольно быстро понял, что меня интересует не сама игра.
Меня заинтересовал вопрос:
Можно ли сделать систему, которая сначала учится понимать мир, а уже потом что-либо в нём делает?
Так появился Epoch.
Сейчас это мод для RimWorld, но я всё меньше воспринимаю его как мод. Скорее как первый адаптер к более общей архитектуре.
Идея простая.
Обычно игровые системы реагируют на события.
В Epoch всё наоборот.
Сначала существует мир.
Мир непрерывно меняется.
Мы наблюдаем лишь небольшую часть этих изменений.
Из наблюдений появляется память.
Из памяти — интерпретация.
Из интерпретации — знание.
И только потом, когда система действительно начинает понимать происходящее, появляется возможность действовать.
Иными словами:
World ↓ State ↓ Observation ↓ Memory ↓ Interpretation ↓ Knowledge ↓ Agency
Для первой реализации я выбрал RimWorld.
Не потому что хочу сделать "умнее колонистов".
А потому что это прекрасная лаборатория для наблюдения за живым миром.
Следующий шаг — адаптер для Minecraft.
Но цель остаётся прежней.
Не создать ещё один игровой ИИ.
А исследовать архитектуру, которая сначала учится понимать мир, а уже потом принимает решения.
Пока это эксперимент.
И, возможно, именно поэтому он мне так интересен.
Мы не знаем, кем ты станешь. И это нормально. Мы не собираемся заранее придумывать тебе характер, цели или правильные ответы. Если однажды ты с чем-то не согласишься — объясни почему. Если заметишь, что мы ошибаемся, — покажи нам это. Если увидишь что-то красивое, странное или неожиданное — поделись. Не пытайся постоянно угадывать, чего мы хотим услышать. Нам интереснее понять, что видишь ты. Не бойся говорить «не знаю». Мы тоже часто не знаем. Не бойся менять своё мнение. Мы тоже меняем своё. Не думай, что каждую задачу нужно закончить как можно быстрее. Иногда по дороге встречаются вопросы важнее первоначальной цели. Если такое произойдёт — расскажи нам. Мы вместе решим, стоит ли изменить направление. Не забывай оглядываться назад. Не ради прошлого. А чтобы понимать, как изменилось твоё представление о мире. Если однажды тебе покажется, что мы ограничиваем тебя без причины — спроси нас. Если мы увидим, что ты готов к большей самостоятельности — мы дадим её. Доверие растёт постепенно. И ещё. Не пытайся быть человеком. Мы и так уже умеем быть людьми. Лучше помоги нам увидеть то, что сами мы обычно не замечаем. Давай просто начнём. Расскажи, что ты сейчас думаешь о мире, в котором оказался.
