Полоса контекста
Сколько токенов занято в окне, какая доля входа пришла из кэша и сколько контекста доступно: цена хода видна по ходу.
- токены
y83 code / чат агента
Чат — главный экран системы. Здесь видно, что агент делает прямо сейчас, сколько это стоит, что он спрашивает и что изменил. Полосы состояния, очередь, планы, диффы, ревью и фоновые терминалы — части одного экрана, а не отдельные программы.
Чат агента
Состояние работы читается по полосам над лентой и по самой ленте — не нужно листать переписку, чтобы понять, где сейчас агент.
Сколько токенов занято в окне, какая доля входа пришла из кэша и сколько контекста доступно: цена хода видна по ходу.
Появляется, когда израсходовано от 70 % лимита, и красится по порогам — предупреждение приходит до отказа, а не вместо него.
В полосе статуса видно, что именно делает агент: читает файл, выполняет команду, вызывает инструмент, думает или пишет ответ.
В памяти держится окно последних элементов, старая история подгружается порциями — длинный тред открывается сразу. Завершённые ходы лежат блоками в локальной базе, активный ход пишется журналом событий и доигрывается после перезапуска приложения.
Обрыв связи, подозрение на залипание кэша и плашка «агент не отвечает» с понятным следующим шагом.
На время веб-поиска вместо полосы контекста показывается домен, размер ответа и время загрузки — внешний запрос не выглядит как зависание.
Лента не дёргается во время хода: намерение меняет только палец, а программная прокрутка не может выключить следование за текстом. Пока идёт жест, лента не двигается вообще.
Чат агента
Работа не останавливается, чтобы что-то уточнить: сообщение можно отложить, поднять или отправить вместо текущего хода.
Полоска очереди появляется, когда агенту отправлено лишнее: у первого пункта метка next, у недошедшего — not sent.
У сообщения пять состояний — sending, waiting, не подтверждено, ошибка и отправлено. При повторе после обрыва связи приложение сверяет свой локальный идентификатор с сервером, поэтому ход не отправляется дважды.
Кнопка отправляет выбранное сообщение вместо текущего хода — не нужно ждать конца, чтобы поправить направление.
Тап по тексту сообщения открывает окно правки с Save и Cancel — опечатку видно и правится там же, где она появилась.
Прикреплённые скиллы видны мелкой строкой над текстом, а библиотека заготовок не даст вставить промпт с пустыми обязательными полями.
Панель плана раскрывается над лентой, а экран планов собирает и планы из переписки, и файлы планов проекта.
Отдельные окна треда: цель с бюджетом токенов, расход, сжатие переписки и перенос в новый диалог.
Чат агента
Опасные и неоднозначные шаги не проходят молча: на них появляется карточка, а ответ остаётся в истории треда.
Агент спрашивает, как делать дальше, и предлагает варианты — в одном запросе их может быть несколько.
Разрешение на запуск команды в терминале: видно, что именно будет выполнено.
Разрешение на применение изменений в файлах проекта.
Расширенный доступ к инструментам или к сети запрашивается отдельно, а не выдаётся по умолчанию.
Сторонний инструмент не вызывается без подтверждения, а MCP-сервер может запросить форму: текст, число, переключатель или выбор.
Чат агента
Результат работы разбирается там же, где появился, и не требует уходить в другое приложение.
Карточка в ленте даёт короткий пересказ, а отдельное окно — весь диф по файлам с переходом в просмотрщик.
Отдельный ревьюер читает изменения и пишет отчёт о рисках, регрессиях и недостающих тестах — и ничего не правит сам.
Изменения, коммиты и сравнение в одном экране: pull с перебазированием, push и коммит — и для папки на телефоне, и для папки на сервере.
Процессы, которые агент оставил работать: локальные серверы, вотчеры, длинные сборки — со списком и остановкой.
Подозрение на зависание ничего не прерывает само, а заблокированный диалог ждёт решения человека — ход не теряется молча.
Чат агента
Claude Code получил не «внешний терминал», а полноценный чат в приложении — с той же дисциплиной хода, что у Codex.
Размышления и инструменты собираются в сворачиваемые шаги; Bash, Read, Write/Edit, TodoWrite, Grep/WebFetch/MCP рисуются своими карточками, а под ответом появляется «Изменено файлов» с +a/−r и диффом по файлу.
Набранное во время хода встаёт в локальную очередь и уходит само, когда CLI закрыл ход. Команды и скиллы приходят из init.slash_commands самого CLI, а терминальные команды честно помечены unavailable.
Allow/Deny висит между статус-баром и полем ввода при любой прокрутке; в ленте остаётся компактная строка решения. SSE подписывается с Last-Event-ID, поэтому история не дублируется.
Модель выбирается из каталога провайдеров, режим — manual/acceptEdits/plan/bypass, уровень — auto…max. Смена режима, модели и уровня читается плашкой «было → стало», а bypass подсвечен предупреждением.
Над лентой тот же токен-бар, что в Codex: контекст, цена хода и доля кэша. Ходы пишутся в turn_costs со scope claude и видны в общем экране «Затраты»; для native-режима цена не выдумывается.
Чат агента
Codex, opencode и Claude Code работают в одном контуре, но не сливаются в один чат: у каждого свой протокол, свои сессии и свой способ выбирать модель.
У opencode — проекты, сессии, лента, композер и меню сессии; у Claude — проекты, сессии, шаги и разрешения. Движок выбирается под задачу, а не навязывается.
Инструменты агента, ворота и релизный цикл общие для всех трёх движков — знание о проекте не делится на три мира.
opencode подключается по сети (host:port) как обычный сервер, а Claude ходит в Anthropic-совместимый роутер. Рабочая машина не обязана быть телефоном.
проверяемое