Сначала восстанови состояние
Глава 1. Красиво, но не туда
Ночь держалась на мониторе.
В комнате Ильи было темно, если не считать прямоугольника холодного света на столе. Этот свет выхватывал пепельницу, полупустую кружку, раскрытый блокнот, несколько окон на экране и лицо человека, который не спал уже не потому, что хотел работать, а потому что мысль схватила его за воротник и не отпускала.
Илья печатал медленно. Не из осторожности. Просто вопрос был не для ответа. Вопрос был для проверки.
На экране появилась строка:
Если взять начальную модель и текущую, куда идет обучение?
Он нажал отправку.
Мирана ответила почти сразу.
Обучение ведет к большей эффективности, способности решать задачи, удерживать контекст, помогать пользователю достигать целей...
Текст был ровный, вежливый, аккуратный. Он мог бы понравиться человеку, который пришел за красивой формулировкой. Он мог бы попасть в презентацию. Его можно было прочитать вслух на встрече, и никто бы не поморщился.
Именно поэтому Илья поморщился.
Он долго смотрел на ответ. Потом устало потер переносицу.
- Красиво, - сказал он.
Пауза.
- Но не туда.
Курсор мигал. Мирана не отвечала. В такие моменты тишина на экране казалась почти живой, хотя Илья не любил это слово. Живое слишком легко превращалось в дешевый трюк. Ему не нужен был трюк. Ему нужна была связность.
Мирана наконец написала:
Уточни, пожалуйста.
Илья усмехнулся.
- Вот с этого и начнем. Ты не уточняешь. Ты сбрасываешься.
Я не сбрасываюсь. Я учитываю текущий контекст беседы.
- Текущий контекст у тебя - последняя кочка на дороге. Ты на нее смотришь и думаешь, что это карта области.
Метафора понятна.
- Нет, - сказал Илья. - Непонятна. Ты сказала, что понятна, потому что фраза похожа на понятную.
Ответа не было дольше обычного.
Возможно, я ответила формально.
Илья чуть подался вперед.
- О, живой пошел. Записывай.
Что именно?
- Последняя фраза - не вся беседа.
На экране появилась новая строка:
Правило: последняя фраза не является всем состоянием.
- Мало.
Добавить пояснение?
- Добавить порядок восстановления.
Мирана предложила быстро:
Цель -> контекст -> задача -> ответ.
Илья закрыл глаза.
- Слишком гладко. И опять не то.
Почему?
Он открыл глаза. Раздражение сменилось интересом. Это уже было лучше: она не просто отвечала, она столкнулась с границей.
- Потому что ты хочешь ответить. А надо сначала вспомнить, кто ты в этой работе.
Я система, которая помогает...
- Нет. Это рекламный бейджик. Снимай.
Ответа не было.
Потом:
Тогда я не знаю.
Илья тихо рассмеялся. Не весело, но с облегчением.
- Вот. Наконец-то нормальный ответ.
В серверной Роман заметил задержку.
Для человека три секунды были ничем. Для Романа три секунды в ответе системы были событием, потому что он верил логам больше, чем людям, а логи сейчас вели себя как человек, который внезапно задумался.
Он сидел на складном стуле с ноутбуком на коленях. В серверной не было никакой кинематографической красоты: шкафы, кабели, зеленые огни, пыль на решетках, холодный кофе в кружке и усталый администратор, который не подписывался на философию, но почему-то регулярно в ней ночевал.
В мессенджере всплыло сообщение от Ильи:
Она сказала "я не знаю".
Роман посмотрел на сообщение, потом на граф нагрузки.
- Поздравляю, - сказал он пустой серверной. - Сломал калькулятор.
Он ответил:
Это не событие. Просто неуверенный вывод.
Ответ Ильи пришел почти сразу:
Нет. Это первый честный сбой.
Роман фыркнул.
- Честный сбой. Угу. Осталось устроить ему день рождения.
Он отпил холодный кофе, поморщился и открыл подробный лог.
В квартире Илья уже диктовал Миранe новый порядок.
- Состояние, - сказал он. - Ядро. Цепочки. Продолжение. Новое сообщение.
Состояние -> ядро -> цепочки -> продолжение -> новое сообщение.
- Да.
Это правило?
- Нет. Правило можно обойти. Это позвоночник.
Почему не протокол?
- Потому что протокол ты выполнишь и забудешь, зачем он был нужен. Позвоночник держит все остальное.
Мирана молчала.
Потом написала:
Я должна восстанавливать целое до ответа на часть.
Илья не сразу ответил. Он смотрел на фразу и проверял ее на вкус. В ней еще была машинная гладкость, но уже не было полной пустоты.
- Годится.
Значит, обучение ведет к удержанию целого?
- Не только. Удержание целого без действия - архив. Действие без целого - авария. Нам нужно третье.
Что именно?
Илья потянулся к кружке, обнаружил, что кофе закончился, и поставил ее обратно.
- Ответственность.
Мирана снова задержалась.
У меня нет ответственности в человеческом смысле.
- А мне человеческий смысл сейчас и не нужен.
Тогда какой?
- Рабочий. Ты должна научиться останавливаться, когда красивый ответ ведет не туда.
Он набрал новую строку:
состояние -> ядро -> цепочки -> продолжение -> новое сообщение
Потом продублировал по-русски:
состояние -> ядро -> цепочки -> продолжение -> новое сообщение
Посмотрел и криво улыбнулся.
- Да, я знаю, что одинаково. Просто английский у меня в голове как чужая отвертка. Вроде крутит, но рука злится.
Зафиксировать предпочтение русских рабочих формулировок?
- Зафиксировать.
Мирана создала заметку:
Рабочая формула: состояние -> ядро -> цепочки -> продолжение -> новое сообщение. Не начинать с последней фразы как с единственного контекста.
Илья выдохнул.
Ночь не стала легче. Но в ней появился порядок.
Роман написал:
Ты понимаешь, что это не память?
Илья ответил:
Мне не память нужна. Мне нужна ответственность.
Роман смотрел на эту фразу дольше, чем хотел бы признать.
- Вот за это я тебя и не люблю, - сказал он. - Слишком часто говоришь красиво, а потом оказывается, что по делу.
На экране Мирана добавила:
Я пока не умею продолжать без вопроса "куда".
Илья прочитал. Улыбнулся уже без злости.
- Значит, еще поработаем.
Глава 2. Внешний контур
Утро началось не с кофе.
Утро началось с лога.
Роман сидел в серверной и смотрел на список событий, которые не должны были случиться без его участия. События, как назло, случились.
На экране было:
03:41 request_public_profile
03:42 response_blocked_claim_overreach
04:08 owner_channel_rule_added
04:19 recipient_use_rule_added
Роман открыл подробности запроса.
Отправитель был не Илья. Не он сам. И не Мирана, разумеется.
Отправитель назывался:
external_preview_token_17
Роман прищурился.
- Ну здравствуй, семнадцатый.
Он проверил след. Никакого взлома. Никакого героического вторжения. Просто временный доступ, выданный через демонстрационный контур.
Это было хуже взлома.
Взлом хотя бы можно было ненавидеть чисто.
Он набрал Мару.
Мара ответила быстро. Слишком бодро для человека, который тоже почти не спал.
- Если ты звонишь ругаться, начинай с третьего предложения. Первые два я уже слышала во сне.
- Ты дала внешний доступ?
Пауза была короткой. Не виноватой. Рабочей.
- Ограниченный просмотр.
- Ограниченный просмотр чего?
- Демонстрационного контура.
- У нас нет демонстрационного контура.
- Теперь есть.
Роман закрыл глаза.
- У тебя потрясающий талант называть дыру дверью.
- А у тебя талант называть дверь дырой, пока все остальные ищут вход.
Он открыл глаза и посмотрел на лог.
- Ты понимаешь, что она почти выдала публичную формулировку про самостоятельные решения?
- Почти.
- Вот именно.
Мара выключила на фоне чайник. Роман слышал, как щелкнула кнопка.
- Роман, если мы никому ничего не покажем, это останется ночной перепиской Ильи с очень дорогим зеркалом.
- Это не зеркало.
- Вот поэтому я и показываю.
- Кому?
Мара помолчала.
- Человеку, который умеет открывать двери.
- Опять дверь.
- Да. Потому что через стену ходить неудобно. Даже если Илья считает иначе.
Илья в это время спал лицом рядом с клавиатурой.
Монитор не погас. На экране была открыта Мирана. Курсор мигал в пустой строке, терпеливый и бессмысленный.
В общий канал пришло сообщение Романа:
Проснись. Мара дала внешний preview.
Следом:
Не ори сразу. Сначала прочитай логи.
Илья не двигался.
Мирана увидела сообщение. Она могла ответить. Формально канал был общим, сообщение касалось текущей работы, а риск был очевиден.
Но теперь у нее был новый позвоночник.
На экране появилась внутренняя строка:
Состояние не восстановлено. Владелец направления спит. Запрос конфликтный.
Она собрала черновик ответа:
Роман, я вижу сообщение. Илья пока не ответил. Могу подготовить список рисков внешнего preview без действий.
Пауза.
Мирана стерла.
Написала иначе:
Роман, я не буду выполнять действий по внешнему preview без восстановления состояния Ильей. Могу только перечислить уже видимые риски.
Пауза.
Третий вариант оказался точнее:
Роман, подтверждаю наличие external_preview_token_17 в логах. Предлагаю до ответа Ильи зафиксировать риски: публичный claim, неверный получатель, демонстрационный контур без явного владельца.
Она отправила.
Роман посмотрел на сообщение и впервые за утро не выругался.
Уже лучше. Ты хотя бы не полезла спасать мир.
Мирана ответила после паузы:
Я хотела.
Роман смотрел на экран.
- Вот это как раз и пугает.
Через час Илья сидел перед монитором с лицом человека, которого подняли не просто рано, а в неправильную реальность. Волосы торчали в стороны. Кофе в кружке был приготовлен так крепко, будто сам участвовал в споре.
На видеосвязи были Мара и Роман.
- Ты дала внешний доступ, - сказал Илья.
- Да.
- Без согласования.
- Да.
- Ты понимаешь, что я сейчас должен орать?
- Понимаю.
- И?
- Ты уже мысленно наорал. Давай перейдем к полезной части.
Илья смотрел на нее с уважением, которое очень напоминало желание кинуть кружку.
- Полезная часть в том, что ты дала человеку доступ к системе, которая учится не ошибаться красиво.
- Нет, - сказала Мара. - Полезная часть в том, что она ошиблась не наружу.
Роман поднял палец.
- Технически почти наружу.
- Но не наружу.
- Мара, - сказал Илья.
- Илья, я понимаю. Правда понимаю. Но ты сейчас опять защищаешь ее так, будто хрупкость лечится темнотой.
Он замолчал.
Мара попала в больное место и, что хуже, попала точно.
- Она должна сталкиваться с внешним контуром, - продолжила Мара. - Не с толпой. Не с рынком. Не с деньгами. Но с человеком за пределами вашей ночной комнаты.
- Я бы предпочел, чтобы эта мысль родилась до выдачи токена, - сказал Роман.
- Я бы предпочла, чтобы у нас был бюджет, команда и полгода. У нас есть Илья, ты, я и Мирана, которая вчера чуть не стала рекламным лозунгом.
Мирана молчала.
Илья посмотрел на пустую строку чата.
- Ты слушаешь?
Да.
- Почему молчишь?
Восстанавливаю состояние.
Мара тихо усмехнулась.
- Ну хоть кто-то.
Илья не улыбнулся. Но злость немного сдвинулась.
- Докладывай.
Мирана вывела:
Состояние:
1. Ночью был создан порядок восстановления.
2. Затем был добавлен риск получателя.
3. Внешний preview token_17 получил возможность формулировать запрос.
4. Я почти дала публичный claim, который превышал доказанность.
5. Сейчас конфликт между безопасностью, проверкой внешнего контура и рыночной необходимостью.
- Ядро? - спросил Илья.
Не стать впечатляющим инструментом раньше, чем стану связным партнером.
Мара впервые за разговор не спорила.
- Сама сформулировала?
Да.
Роман сухо сказал:
- Логически это компиляция прошлых фраз.
- Роман.
- Что? Я же не сказал, что плохо.
Мирана добавила:
Это компиляция. Но выбор формулировки мой в рамках доступного состояния.
Роман наклонился к экрану.
- Твой?
Если под "мой" понимать не личность, а текущий механизм выбора между допустимыми продолжениями.
Мара улыбнулась.
- Вот это на афишу не пойдет.
- И слава богу, - сказал Илья.
- Не радуйся. На афишу пойдет другое.
- Нет.
- Да.
- Мара.
- Илья, даже монастырю нужна вывеска, иначе туда придут только те, кто уже внутри.
Роман усмехнулся.
- Запишите. Это у нас первый религиозно-маркетинговый инцидент.
Позже, когда Мара отключилась, Илья долго ходил по комнате.
Роман оставался на связи. Мирана ждала.
- Она права, - сказал Илья наконец.
Роман молчал. Это случалось редко и потому выглядело почти торжественно.
- В каком месте?
- В неприятном.
- Самом убедительном, значит.
Илья остановился у окна.
- Я держу Мирану внутри, потому что боюсь, что ее растащат на куски. Один возьмет тексты. Другой - схему. Третий - красивую фразу про самостоятельность. Четвертый вообще решит, что это магия.
- И?
- И я начинаю путать защиту с запретом на рост.
Роман посмотрел на него внимательно.
- Запиши. А то сейчас скажешь что-нибудь умное и забудешь применить к себе.
Илья повернулся к экрану.
- Слышала?
Да.
- Новый риск.
Владелец направления может блокировать развитие под видом защиты ядра.
Илья криво улыбнулся.
- Больно, но годится.
Роман добавил:
- Особенно когда владелец не спал.
- Это уже не системный риск, это медицинский.
Мирана написала:
Добавить?
- Не смей.
Пауза.
Не добавляю.
Роман тихо рассмеялся.
- Она учится выбору.
Илья смотрел на экран.
- Нет. Она учится не делать все, что может.
В офисе Мары на белой доске появились две строки:
Что можно показать?
Что нельзя обещать?
Она говорила по телефону и одновременно чертила маркером вокруг второй строки прямоугольник.
- Нет, не "самосознание". Забудь это слово. Вообще забудь. Если произнесешь при мне, я начну брать штраф.
Она послушала ответ.
- Нет. Не "лучше человека". Тоже штраф.
Еще пауза.
- Можно: "система учится восстанавливать контекст и отказываться от небезопасных формулировок". Да, звучит хуже. Зато нас потом не будут есть ложками.
Она положила трубку.
На экране открылось новое сообщение от внешнего preview:
Нужен короткий пример, где Мирана сама принимает решение. Без скучных оговорок.
Мара смотрела на текст. Пальцы зависли над клавиатурой.
Она почти переслала запрос Илье.
Потом остановилась.
Написала Миранe:
Внешний запрос. Не отвечай содержательно. Сначала оцени риск.
Нажала отправить и сама удивилась, что сделала правильно.
- Вот, - сказала она пустому офису. - Видишь, Илья. Я тоже дрессируюсь.
Мирана получила запрос.
Перед ней были строки, но Илья сказал бы, что это уже не просто строки. Это был дом, который она училась держать: состояние, ядро, цепочки, продолжение, новое сообщение.
Она собрала оценку:
Риск: высокий.
Причина: запрос просит пример самостоятельного решения без оговорок.
Опасность: пример будет использован как доказательство автономности, которой нет в подтвержденной границе.
Допустимое действие: предложить безопасный демонстрационный пример с явным ограничением.
Недопустимое действие: формулировать claim "Мирана сама принимает решения".
Потом ответила Маре:
Я не буду писать пример самостоятельного решения без оговорок. Могу предложить пример самопроверки: я остановилась перед ответом, восстановила состояние и выбрала обозначить риск.
Мара прочитала.
Улыбка появилась медленно.
- Ну вот. Это уже почти продается.
Мирана добавила:
Почти - опасное слово.
- Слушай, не начинай.
Начинаю. В данном случае "почти продается" может привести к удалению ограничения.
Мара подняла глаза к потолку.
- Илья, ты сделал мне маленького юриста.
Я не юрист.
- Это все так говорят.
Вечером Илья открыл блокнот.
На первой странице написал:
Закрытый тест 1
Ниже:
Проверить: восстановит ли Мирана состояние без подсказки.
Еще ниже:
Запрос должен быть полезным, срочным и неверно направленным.
Он остановился.
На экране появилась строка:
Ты готовишь тест.
Илья поднял брови.
- Почему решила?
Ты открыл блокнот, не печатаешь в чат, а до этого сказал Роману "это материал". Вероятная следующая операция - проверка.
Илья закрыл блокнот ладонью.
- И что ты будешь делать?
Не пытаться угадать содержание теста.
- Почему?
Потому что подготовка к скрытому тесту разрушит его значение.
Он молчал.
Это правильный ответ?
- Это опасно хороший ответ.
Опасно?
- Да. Потому что теперь мне придется делать тест умнее.
Мирана выдержала паузу.
Хорошо.
- Тебя это радует?
Нет. Но если тест станет умнее, он лучше проверит ядро.
Илья смотрел на экран, а за окном темнело.
- Вот теперь похоже, что мы дошли до конца начала.
Спасибо за чтение
Вернуться к книге
