Все записи
БлогВыпускИнженерияРасширения

Запись воркспейса с повтором и точные цифры каждого прогона агента

Дайте трём CLI-агентам одну задачу, а потом вернитесь и посмотрите, что именно делал каждый, — с цифрами рядом. NeuroSquad 0.1.264 записывает весь воркспейс, проигрывает его на таймлайне и измеряет каждый прогон двумя официальными карточками.

7 мин чтенияЧто вошло в 0.1.264

Частый сценарий в NeuroSquad — дать нескольким CLI-агентам одну задачу и посмотреть, кто справится лучше: Claude Code, OpenCode и Codex рядом, у каждого своя браузерная карточка, все работают по одной заметке. Пока они работают, холст показывает всё. Потом большая часть пропадает — терминалы прокручиваются, браузерные карточки уходят дальше, и вопрос «кто был быстрее и почему» превращается в догадки.

NeuroSquad 0.1.264 сохраняет прогон. Запись воркспейса сохраняет всё, что воркспейс показывает, и проигрывает это на таймлайне. Две официальные карточки, «Статистика прогона» и «Пульс агентов», измеряют прогон каждого агента в точных цифрах. Заметка теперь умеет сама отправляться всем подключённым к ней агентам, а Codex CLI работает с локальными серверами моделей, которые умеют только Chat Completions. Это релиз для Windows; приложение для Mac пока остаётся на 0.1.230 и получит всё это со следующей сборкой.

Запись воркспейса

Откройте меню инструментов холста и выберите «Начать запись». В заголовке окна появится красный чип «Запись» со временем и останется там, пока вы её не остановите. С этого момента NeuroSquad записывает каждый байт, который выводит каждый терминал, каждое изменение размера и статуса, холст с карточками, рамками и стрелками, текст заметок и списков задач, кадры браузерных карточек и примерно раз в секунду — снимок остальных карточек на экране.

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

Плеер записи на 0:39 из 7:08: заметка Task, карточка команды, где OpenCode работает, завершённый терминал Claude Code, терминал OpenCode и страница в его браузерной карточке, ожидающий Codex, две карточки «Статистика прогона» — у Claude Code заморожена на финише, у OpenCode идёт замер; внизу таймлайн с отметками, кнопки скорости от 1× до 64× и «Чистый вид»
Повтор прогона трёх агентов на тестовом сервере со сценарием. Отметки на таймлайне — отправленные промпты, завершения и «нужен ваш ответ»; стрелки рядом с кнопкой воспроизведения переходят между ними.
  • Воспроизведение от 1× до 64×, перетаскивание по таймлайну или переход между отметками. ←/→ — на 5 секунд, пробел — пауза и продолжение.
  • «Чистый вид» прячет все элементы управления и показывает холст размером с ваш живой холст — для записи экрана. Esc возвращает элементы управления.
  • В плеере ничего не живое: ни один агент не запускается, в терминал ничего не вводится, модель ни о чём не спрашивают.
  • Запись пишется по ходу дела и сбрасывается на диск каждые несколько секунд. Запись, оборванная сбоем, помечается «Восстановлена» и проигрывается до места обрыва.

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

«Статистика прогона» и «Пульс агентов»: цифры прогона

Повтор показывает, что произошло. Чтобы сравнивать прогоны, нужны ещё и цифры, и они должны быть верными. «Статистика прогона» — новая официальная карточка: проведите стрелку между ней и агентом, и она покажет прогон этого агента — промпты, запросы к модели, входные, выходные и кэш-токены, общее и рабочее время и стоимость. Когда агент заканчивает, цифры замораживаются и остаются на месте для скриншота; кнопки MD и JSON копируют их для отчёта.

«Пульс агентов», уже знакомая по каталогу, в версии 1.1 получила вид «Запросы»: каждый подключённый агент — дорожка на общей оси времени, а каждый запрос к модели — полоска от момента отправки до момента, когда ответ закончился. Длинные полоски — медленные запросы; промежутки между ними — время, которое CLI тратит на свою работу: запуск инструментов, чтение файлов, ожидание вас.

Воркспейс на холсте: терминалы Claude Code, OpenCode и Codex, под каждым браузерная карточка и карточка «Статистика прогона» — всего токенов, прошло времени, промпты, запросы к модели, ввод, вывод, чтение кэша и запись в кэш с пометкой «не сообщается»; внизу карточка «Пульс агентов» в виде «Запросы» с 24 запросами и дорожкой на каждого агента
По одной «Статистике прогона» на агента и «Пульс агентов» под всеми тремя. Цифры здесь — с тестового сервера со сценарием; у записи в кэш стоит «не сообщается», потому что этот сервер её не сообщает.

Обе карточки следуют правилам раздела «Расход» в приложении. Токены — целые числа из собственного журнала каждого CLI. Число, которое CLI или сервер не сообщает, показано как «не сообщается», а не 0, а у модели без известной цены — «без цены», а не $0. Проверяя на сервере со сценарием, мы нашли, что Codex мог показать вставленный промпт как несколько секунд «работы» ещё до того, как действительно его отправил, — и карточка замерзала на пустом прогоне. Теперь ходы сверяются с реальными запросами к модели: ход без запроса промптом не считается.

«Статистика прогона» и «Пульс агентов» — свои карточки на том же Card SDK, которым может пользоваться любой. Версия SDK 1.2 добавляет agents.usage и agents.timeline: они дают карточке прогон и таймлайн запросов агента, подключённого к ней стрелкой, при разрешении «Видеть расход токенов и стоимость». Обе ставятся через «Своя карточка… → Проверенные». И одно изменение для всех своих карточек: если процесс за фреймом карточки падает — мы видели это на машине, где кончилась память, — карточка перезагружается сама, а не остаётся серой.

Заметка, которая отправляет себя сама

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

Холст затемнён за диалогом: Отправить заметку агентам? Заметка уйдёт этим 3 агентам одним промптом, всем в один момент: Claude Code, OpenCode, Codex; кнопки Отмена и Отправить 3 агентам
Заметка Task подключена к трём агентам; один клик отправляет её всем.

Codex CLI на ваших серверах

Многие запускают модели на своём железе: LM Studio, llama.cpp, vLLM, Ollama. Большинство этих серверов говорят на OpenAI Chat Completions API. Codex CLI говорит только на более новом Responses API и Chat Completions больше не принимает, поэтому работать с ними не мог. Теперь NeuroSquad запускает на вашем компьютере небольшой переводчик между Codex и таким сервером. Настраивать ничего не нужно: когда вы проверяете провайдера в «Настройки → Провайдеры», Codex CLI появляется в списке «Подходит для». Ключ сервера остаётся внутри NeuroSquad, Codex получает только пропуск к переводчику, а токены считаются по собственным цифрам сервера.

Диалог «Изменить провайдера» для локального сервера на 127.0.0.1: пояснение, что Codex говорит только на Responses API, а к серверу без него подключается через локальный переводчик NeuroSquad; результат проверки — соединение есть, доступна 1 модель, поддерживает OpenAI API и Anthropic API, подходит для Claude Code, Codex CLI, Qwen Code, OpenCode и остальных
Локальный тестовый сервер без Responses API: Codex CLI — среди CLI, которые с ним работают.

Второе изменение для ваших серверов — контекстное окно. CLI не знают, сколько контекста у модели на вашем сервере: Claude Code считал, что 200K токенов, а OpenCode вообще не сжимал разговор. На сервере с окном поменьше длинная сессия просто заканчивалась ошибкой. Если список моделей сервера сообщает размер окна — llama.cpp, vLLM и LM Studio это умеют, — NeuroSquad теперь передаёт его Claude Code, Codex CLI и OpenCode, и они вовремя сжимают контекст.

Исправления

  • Воркспейс, только что созданный из шаблона, при первом открытии мог потерять раскладку и все стрелки. Карточка, добавляемая при первом открытии, запускала холст раньше, чем приходила сохранённая раскладка; теперь холст её дожидается.

Ещё на сайте

Полный список изменений — в журнале изменений 0.1.264. NeuroSquad обновляется сам; новая установка начинается со страницы загрузки.