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

nsq: NeuroSquad в терминале, с открытым кодом

Запускайте Claude Code, Codex, OpenCode или любую команду рядом в одной терминальной панели, закройте её — и получите сигнал с вопросом, когда агенту нужны вы. Бесплатно, MIT, без аккаунта.

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

Сегодня мы выпускаем nsq 0.1.0 — предварительную версию NeuroSquad для терминала. Она делает то, ради чего в первую очередь существует десктопное приложение, — запускает несколько ИИ-агентов для кода и показывает, кому из них нужны вы, — но без окна, холста и аккаунта. Код открыт под лицензией MIT, nsq работает на Windows, macOS и Linux и ставится из npm: npm i -g neurosquad, затем nsq.

npm i -g neurosquad          # или попробовать: npx neurosquad
nsq run claude "fix the flaky checkout test" --worktree
nsq run codex --name reviewer
nsq run -- npm run dev       # любая команда
nsq                          # панель
Запись панели nsq: сначала она пуста, затем в воркспейсе demo-shop появляются три агента, Claude Code заканчивает, Codex спрашивает «Would you like to run the following command?», в шапке — 1 needs you, ответ y дан прямо из сетки, Codex выполняет команду и заканчивает
nsq 0.1.0 на macOS, запись из нашего сквозного теста: Codex просит разрешения выполнить команду и получает ответ y, не открываясь на весь экран. Агенты работают с тестовой моделью по сценарию.

Зачем версия для терминала

Многие, кто работает с агентами, живут в терминале: на Linux, на сервере по SSH, внутри dev-контейнера или просто потому, что так удобнее. Туда десктопное приложение за ними не пойдёт. А нужно им то же самое: видеть, какой агент работает, какой ждёт вас и о чём спрашивает, а какой уже закончил, — там, где они и так находятся.

Поэтому nsq сознательно маленький. Это не холст в текстовом режиме, а та часть NeuroSquad, которая отвечает на вопрос «нужен ли я сейчас кому-то из агентов?», плюс несколько вещей, без которых неудобно держать много агентов сразу: демон, worktree, стоимость, уведомления.

Что он умеет

  • Агентами владеет демон. nsq запускает его при необходимости. Закройте панель или всё окно терминала — агенты продолжат работать; снова откройте nsq, и они там же, где вы их оставили. После nsq down или перезагрузки nsq up возвращает агентов, которые работали, и продолжает их сессии.
  • Панель живых терминалов. Слева воркспейсы и их агенты, справа агенты выбранного воркспейса сеткой живых терминалов. Enter разворачивает агента на весь экран, и все клавиши идут ему; Ctrl+] возвращает к сетке.
  • Точный статус из хуков самих CLI. Работает, ждёт вас — с вопросом самого CLI («Would you like to run the following command?»), закончил — об этом сообщают хуки Claude Code, хуки Codex и плагин OpenCode, а не догадка по экрану. У Claude Code то, о чём хуки молчат (прерывание, ошибка API), уточняется по транскрипту сессии.
  • Ответ без переключений. y, a и n отвечают на запрос разрешения выбранного агента — да, всегда, нет — прямо из сетки; i прерывает той клавишей, которую на самом деле понимает этот CLI; s отправляет промпт, а S ставит его в очередь до конца текущего хода.
  • Уведомления и звук. Системное уведомление, когда агент ждёт вас или закончил, — одно на агента, снимается, когда он снова работает. Если системное уведомление показать нельзя, например по SSH, панель подаёт сигнал в своём терминале.
  • Отдельный git worktree на агента. С --worktree агент получает свою копию репозитория на своей ветке, и два агента никогда не правят одни и те же файлы; nsq diff показывает, что он изменил.
  • Стоимость по агентам. nsq cost читает логи самих CLI: токены — целыми числами, а у модели, для которой у нас нет цены, будет «нет цены», никогда не $0.
  • OpenRouter встроен. nsq openrouter set-key кладёт ключ в хранилище паролей ОС; --provider openrouter --model <id> запускает агента через него. Ключ попадает только в окружение этого агента, а запросы несут атрибуцию NeuroSquad в OpenRouter.
  • Локальная голосовая диктовка. Нажмите v (или глобальную горячую клавишу) и говорите; распознавание идёт на вашем компьютере открытой моделью, которая скачивается один раз. Текст вставляется в поле ввода агента и никогда не отправляется сам — Enter нажимаете вы.
Диалог «New agent» в nsq поверх сетки: вкладки Claude Code, Codex, OpenCode и Command, затем имя, промпт, папка и флажки для своего worktree, OpenRouter и опасного режима, кнопка Start
Запуск агента из панели (клавиша c). Агенты на этих скриншотах работают с тестовой моделью по сценарию.

Полный статус есть у Claude Code, Codex и OpenCode (и 1.x, и 2.x); кроме того, агентом может быть любая команда: dev-сервер, наблюдатель за тестами, другой CLI. У обычной команды нет хуков, поэтому nsq показывает её работающей, пока она печатает, и закончившей, когда она затихает, — и никогда не утверждает, что такая команда ждёт вас.

Откуда он знает и чего никогда не трогает

Каждый агент получает свой слой флагов, переменных окружения и файлов в папке nsq. Ваши ~/.claude, ~/.codex и opencode.json не изменяются никогда. Хуки шлют события на loopback-адрес с токеном на агента, а факты проходят через тот же автомат состояний, что и в десктопном приложении: хук — это факт, ваше нажатие в ждущем агенте учитывается сразу, а тишина — только запасной вариант.

Этот автомат не новый. Вместе с настройкой хуков, чтением транскрипта Claude Code и разбором расхода он теперь живёт в @neurosquad/core — открытом пакете, на котором построен nsq. Десктопное приложение NeuroSquad использует то же ядро: модули, которые у них совпадали, теперь — одна копия кода, опубликованная под MIT. Когда мы исправляем то, как CLI сообщает свой статус, исправление получают оба.

Панель, которая сама рисует клетки

Каждая плитка — настоящий эмулятор терминала, который кормит демон, а панель перерисовывает только изменившиеся клетки — не чаще примерно 30 раз в секунду и только когда что-то изменилось. Декоративная анимация — спиннер работы, пульс «ждёт вас» — замирает, пока агент открыт на весь экран и когда терминал теряет фокус, а NSQ_NO_ANIMATION=1 выключает её совсем. Где терминал умеет показывать картинки (kitty, iTerm2, sixel), на плитках — логотипы CLI; в остальных — маленькие значки из символов.

Телефон — экспериментально

nsq phone on --lan позволяет телефону в той же сети видеть агентов, читать их экраны, отправить промпт, ответить на запрос разрешения и прервать агента. nsq phone pair выводит ссылку и QR-код; в ссылке — токен сопряжения, так что обращайтесь с ней как с паролем, а nsq phone rotate отключает все телефоны. Сопряжённый телефон не может запускать агентов, менять настройки или набирать произвольные клавиши. Доступ с телефона вместе с его мобильной страницей по умолчанию выключен и в этой предварительной версии помечен как экспериментальный.

nsq или десктопное приложение

Они решают одну и ту же первую задачу и используют одно ядро, так что выбирайте по тому, где вы работаете. nsq — для терминала, Linux, серверов и SSH-сессий: бесплатный, с открытым кодом, без аккаунта и без телеметрии. Десктопное приложение для Windows и macOS — это вся мастерская: агенты карточками на холсте, гораздо больше CLI-агентов, агенты, которые общаются друг с другом по стрелкам, плагин-карточки, шаблоны и записи. Ничего из этого списка в nsq нет и не планируется — nsq остаётся маленьким.

Что значит «preview»

  • Это версия 0.1.0: команды, флаги и файл настроек ещё могут измениться до 1.0.
  • Нужен Node.js 22.13 или новее. Нативные части (терминал, хранилище паролей, диктовка) ставятся готовыми бинарниками — это проверяется в CI из упакованного npm-пакета на Windows, macOS и Linux; голосовой диктовки нет на Windows arm64.
  • Полный статус сейчас есть у трёх CLI. Остальные — по запросу: в репозитории есть форма, чтобы попросить свой.
  • Телеметрии нет, аккаунт не нужен. nsq login существует для необязательного аккаунта NeuroSquad, и ничто в nsq его не требует.

Открытый код

Код лежит на GitHub — glmn-ai/neurosquad-cli, под лицензией MIT: сам CLI, общее ядро и пакеты вокруг него (плитки терминалов, уведомления, диктовка, API для телефона). Мы рады баг-репортам, запросам на новые CLI и пулл-реквестам — как мы работаем, описано в руководстве для контрибьюторов. Всё об установке и использовании nsq — на его странице.