Совместные сессии (ранняя версия)
Любую сессию теперь можно открыть коллеге. Приглашённый сотрудник видит ту же сессию и ход её исполнения, а обсуждать результат можно в отдельном человеческом чате рядом — без пересылки текста в мессенджер, где контекст рассыпается. Видно авторство, участников и непрочитанное. Приглашение приходит карточкой «Вас пригласили» и появляется в списке само, без перезагрузки страницы; отозванное приглашение так же само пропадает. Сессия с людьми помечена значком в общем списке.
Держать сессию тёплой
Экономит деньги на длинных разговорах. Поставщик модели держит кэш вашей переписки около часа: пока кэш жив, повторная отправка всей истории стоит примерно десятую часть. Ушли на два часа — кэш протух, и следующее сообщение переписывает весь контекст заново по полной цене. Плагин точечно удерживает кэш только у выбранных сессий, с ограничением на их число и на срок, и с тихими часами, когда греть не нужно. Это не фоновая молотилка: способ подогрева выбран по живым замерам, потому что первый очевидный вариант кэш не обновлял, а платил полную цену.
Быстрые команды
Сохранённая настройка чата под конкретную задачу, а не просто заготовленный текст. Команда привозит с собой всё окружение: нужные навыки, источники, модель, режим доступа и способ запуска. Иначе «разбери почту за сутки» на слабой модели без почтового источника даст отказ, и человек решит, что команда сломана. Команда подставляет текст в поле ввода, а отправляете вы — кнопка, которая шлёт сразу, однажды уйдёт с недописанным уточнением. У каждого рабочего места свой набор команд: у разных сотрудников разные задачи. Раздел живёт в группе «Автоматизация» левого меню, применяется кнопкой «Команды» над полем ввода.
Режимы запуска
Отдельный плагин управляет тем, как стартует ход: поведение по умолчанию и общий потолок, который режет в любом случае.
Телефон
Мобильная версия переписана почти целиком:
- встроенные разделы наконец открываются на телефоне;
- в шапке появились кнопка «назад» и меню навигации по сервисам;
- переход «чат ↔ список» перестал разбирать всю ленту заново и стал мгновенным;
- панель чата открывается сразу, без выезда и пружинного хвоста;
- поля ввода 16 пикселей — телефон больше не приближает экран при наборе;
- разрешён зум, при этом он не путается с клавиатурой;
- фоновые сервисы выгружаются, чтобы не жрать память;
- шторка навигации открывается свёрнутой и складывает ветки по нажатию;
- короткий чат догружает историю сам;
- уведомления учитывают вырез экрана;
- системные полосы телефона окрашены в тему рабочего места.
Расширения и левое меню
Появился слой расширений: сторонние панели встраиваются в приложение как родные разделы, у сессий есть значки, встроенные панели открываются внутри. Левое меню перекроено — «Заметки» и «Планы» переехали внутрь «Сервиса», лишние разделы у сотрудников убраны, вход в «Файлы» починен.
Связь с сервером
- Интерфейс сам переподключается после перезапуска сервера — раньше вкладка оставалась мёртвой до перезагрузки страницы.
- Во время перезапуска показывается спокойная полоса вместо ошибки.
- Появилась настоящая перехватывающая рамка ошибок: сбой в одном разделе больше не гасит всё приложение, а ошибки браузера уезжают в журнал сервера.
- Архив, доска и статусы больше не откатываются молча при обрыве связи.
Кэш переписки перестал обваливаться
Самая дорогая находка выпуска. Заказ звучал как «слишком быстро расходуются токены»,
а причина оказалась не в моделях и не в объёме работы.
Поставщик модели склеивает запрос в жёстком порядке и кэширует его по началу. Стоит
измениться одному байту в начале — заново записывается всё, что после него, включая
всю накопленную переписку. В начале запроса у нас стояла строка со временем запуска,
которая менялась каждый раз. Вдобавок соединение с рантаймом убивал собственный сторож
простоя через 10 минут, тогда как кэш у поставщика живёт час: пауза в полчаса — кэш ещё
тёплый, а процесс уже убит.
Разбор сырых журналов за трое суток: из 208 возобновлений 137 сбрасывали кэш полностью,
и 116 из них — при паузе меньше часа, когда кэш обязан был сработать. Впустую
переписано 40 миллионов токенов. Сброс большого разговора стоит как отдельный дорогой
ход и повторялся десятки раз в день.
Что сделано:
- стартовый пакет собирается один раз на сессию и дальше отдаётся тем же самым текстом,
байт в байт (побочный выигрыш — повторный вызов за 12 миллисекунд вместо секунд);
- срок жизни соединения поднят с 10 минут до часа — под срок жизни кэша;
- включены два штатных флага движка: системный запрос записывается один раз на разговор
и переиспользуется дословно, а машинно-зависимые части вынесены из него в первое
сообщение, то есть в замороженную историю.
Свежесть контекста при этом не теряется: всё, что зависит от вопроса, подаётся на каждый
ход отдельно, а не через начало запроса.
Скорость открытия
Интерфейс грузился медленно не из-за сервера — сервер собирает список сессий за четверть
секунды и отдаёт файлы за 30 миллисекунд. Тормозили доставка и браузер.
- Файлы интерфейса теперь кэшируются браузером. Раньше они приезжали вообще без
заголовков кэша: почти шесть мегабайт скриптов скачивались и компилировались заново на
каждом заходе. Имена файлов содержат отпечаток сборки, поэтому новая версия
подхватывается сразу — устаревшего интерфейса не будет.
- Список сессий похудел в пять раз — 28,7 мегабайта против 5,4. Львиную долю занимало
служебное поле стартового контекста, которое интерфейс нигде не показывает.
- Тяжёлые разделы ждут первого открытия. Раньше при входе в чат браузер параллельно
поднимал все 23 встроенных раздела — почту, календарь, трекер, хранилище и остальные.
Один заход давал почти две тысячи запросов, а вход в файловое хранилище висел почти
семь секунд, хотя свою часть чат рисовал за десятую долю секунды.
- Шрифты грузятся в фоне — страница больше не остаётся белой, ожидая внешний ответ.
- На телефоне лента держит меньше ходов — в поле зрения помещается один-три хода, а в
разметке жили двадцать, и их цена платилась при каждом открытии и закрытии чата.
Сжатие контекста
- После сжатия работа продолжается сама. Агент получал пересказ вместо хода работы и
вместо продолжения выдавал отчёт о сделанном. Человеку приходилось писать «продолжи» —
в одной разобранной сессии трижды за час.
- Сжатие посреди работы больше не теряет ход. Редкий, но дорогой случай: сжатие
накрывало ход между вызовами инструментов, и сессия выглядела завершённой — ни слова в
чат, вызовы без результатов. Теперь сторож подбирает работу.
Надёжность инструментов и связи
- Минуты на вызов инструмента больше не хватает жёстко — разбор пачки накладных трижды
срывался по таймауту клиента на 60-й секунде, хотя работа шла нормально.
- Обрыв сети не убивает ход — раньше сообщение приходилось повторять руками.
- Вызов инструмента с пустым именем (изредка присылают локальные модели) больше не
превращается в бессмысленную ошибку.
- Аргументы с лишним подчёркиванием от локальных моделей чинятся на лету, а не
отклоняются с повтором той же ошибки.
Память
- Один слой памяти больше не забирает всю выдачу — граф, эпизоды и уроки перестали
лежать мёртвым грузом.
- Общее хранилище авторизаций перестало терять групповой доступ и раздваиваться.
Прочее
- Вход в файловое хранилище через сервер — браузер не получал нужные куки, и вход в рамке не работал.
- Мессенджер: токен входа кэшируется, вход по ссылке, старое окно оставлено за тумблером.
- Инструмент работы с PDF перестал падать целиком из-за одной нестандартной даты или управляющего символа в файле.
- Быстрый старт: список сессий загружается без стартового контекста, каталог навыков — без текстов; сверка режимов идёт пулом, а не тысячей запросов разом.
- Сторож зависших ходов перестал считать зависшей долгую команду, которая исправно подаёт признаки жизни.
- Сессия открывается внизу, на последнем сообщении — раньше вы попадали в её начало и
крутили колесо вниз, чтобы увидеть, чем всё кончилось.
- Документные инструменты работают у всех сотрудников, а не только у владельца
сервера: у одного из рабочих мест за сутки набралось 30 неуспешных вызовов просто из-за
прав доступа.
- Модель по умолчанию перестала слетать при перезапуске — выбранная настройка
сохраняется.
- Страница входа приведена в порядок: поля 16 пикселей (телефон не приближает экран),
форма не прячется за клавиатурой, закрыт переход по чужому адресу после входа.
- Сторожа по расписанию переживают перезапуск — восемь из них однажды молча простояли
13 часов, будучи включёнными.
- Поиск по сайтам возвращает текст страницы, а не её оформление.
- Рабочее место знает, какому человеку помогает — у трёх мест карточка человека
описывала сервер, а не сотрудника.
- Текст задачи для роутера больше не читается как команда — разбор задачи не может ничего запустить.