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

nsq 0.2.0: обновляется сам, достаёт до телефона откуда угодно и работает на ваших моделях

В этом выпуске три вещи: nsq сам следит за обновлениями и переключается, только когда ни один агент ничего не теряет; --online выводит страницу для телефона за пределы вашего Wi-Fi; nsq provider add сажает агентов на ваши собственные модельные серверы.

6 мин чтенияЧто вошло в nsq 0.2.0

Вышел nsq 0.2.0 — открытая терминальная версия NeuroSquad. Первый выпуск был о том, чтобы знать, какой агент вас ждёт. Этот — об остальном дне: nsq теперь сам держит себя в актуальном состоянии, телефон достаёт до агентов, когда вас нет дома, а агенты могут работать на вашем собственном модельном сервере вместо облачного логина.

npm i -g neurosquad@latest      # один раз, с 0.1.x; дальше nsq делает это сам
nsq phone on --online           # страница для телефона откуда угодно (экспериментально)
nsq provider add lmstudio --url http://localhost:1234
nsq run claude --provider lmstudio --model qwen/qwen3-coder-30b

Обновляется сам — между ходами

Терминалами агентов владеет демон, поэтому его перезапуск завершает их процессы. Значит, обновление здесь не может быть просто «скачать и перезапустить». nsq делит его на три шага.

  • Проверка. Раз в шесть часов демон спрашивает реестр npm о пакете neurosquad — один запрос его публичных метаданных, с ETag. О вас и вашем компьютере ничего не отправляется: ни идентификаторов, ни токенов, ни статистики.
  • Установка. Новая версия ставится в фоне тем же способом, каким вы установили nsq: npm в ту же папку, Homebrew или Scoop. При npx, pnpm, yarn и всём остальном nsq только показывает команду. sudo он не использует никогда; если папка npm недоступна для записи, он так и говорит и показывает команду. Homebrew обновляет только nsq, хотя вместе с ним может обновить node, если формуле нужна версия новее.
  • Переключение. Демон перезапускается на новую версию, только когда ничего не потеряется: ни один агент не работает, не ждёт вас и не держит очередь промптов, каждый запущенный агент может продолжить свою сессию, не открыты ни дашборд, ни телефон, и пять минут никто ничего не вводил агентам. Перезапуск — то же самое, что nsq down + nsq up, поэтому агенты возвращаются в свои сессии.

Перед переключением nsq один раз запускает новую версию и спрашивает у неё номер версии. Если это не удалось, старый демон и все агенты продолжают работать, а дашборд объясняет почему. Сломанный выпуск обойдётся вам строчкой в заголовке, а не агентами.

В дашборде заголовок показывает, что происходит, — update 0.2.0 → x.y.z, installing…, updated to x.y.z · U restart, — а U переключает сразу, сначала дождавшись занятых агентов. nsq update ставит вручную, nsq update --check только проверяет. nsq config set autoUpdate notify оставляет новости, но ничего не ставит, nsq config set autoUpdate false (или NSQ_NO_UPDATE=1) отключает проверку, а в CI и из исходников nsq не проверяет никогда.

Телефон — не только дома

До сих пор страница для телефона работала в том же Wi-Fi. nsq phone on --online делает её доступной откуда угодно через быстрый туннель Cloudflare: без аккаунта, без открытых портов на роутере, с настоящим HTTPS. nsq выводит предупреждение, ссылку с токеном связки и её QR-код.

Страница nsq на телефоне: «1 needs you», агент reviewer на Codex просит запустить «Bash — mkdir nsq-perm-dir», кнопки Yes, Always и No, агент api-fix на Claude Code закончил
Страница для телефона. В онлайне это та же страница, только через туннель. Агенты здесь работают с тестовой моделью по сценарию.

Любой, у кого есть эта ссылка, сможет управлять вашими агентами, поэтому выход в онлайн — каждый раз осознанный шаг, и его трудно не заметить:

  • Сам он не включается никогда. Быстрый туннель при каждом запуске получает новый адрес и после перезапуска не восстанавливается — телефон связывается заново.
  • Через туннель обычный http:// отклоняется, а пять неверных токенов с одного адреса блокируют его на 15 минут.
  • В дашборде горит красный значок ONLINE, телефоны, пришедшие из интернета, помечены (internet), а O выключает онлайн обратно (или nsq phone off).
  • --expire 12h заставляет телефоны связываться заново через двенадцать часов. С аккаунтом Cloudflare именованный туннель даёт один постоянный адрес на вашем домене; его токен хранится в системном хранилище ключей.
  • cloudflared берётся из вашего PATH, иначе nsq скачивает официальный релиз Cloudflare в свою папку и сверяет его с опубликованным sha256-дайджестом — в систему ничего не ставится.

Что умеет телефон, не изменилось: видеть агентов и их экраны, отвечать на запрос разрешения, отправлять промпт, прерывать. Запускать агентов, нажимать произвольные клавиши и читать файлы он по-прежнему не может. Доступ с телефона остаётся экспериментальным и выключен по умолчанию.

Агенты на ваших модельных серверах

Кроме OpenRouter, агент теперь может работать на сервере, который запускаете вы: llama.cpp, Ollama, LM Studio, vLLM, SGLang, Unsloth Studio или любой удалённый API, говорящий на API OpenAI или Messages API Anthropic. Для каждого агента отдельно, не трогая собственные настройки и логины CLI.

nsq provider add ollama --url http://localhost:11434
nsq run codex --provider ollama --model qwen3-coder:30b
nsq set api-fix --provider none --model none     # обратно к логину самого CLI
  • API выбирать не нужно. nsq provider add сначала проверяет сервер: получает список моделей и находит, какие эндпоинты у него есть. Claude Code предлагается сервер с Anthropic Messages, Codex — с Responses, OpenCode — с chat completions или Messages. Если у сервера есть только chat completions, Codex ходит через маленький локальный шлюз, который переводит для него запросы.
  • Окно контекста передаётся. Когда список моделей сервера сообщает, с каким контекстом он обслуживает модель, это узнаёт каждый CLI — и длинная сессия сжимается до того, как окно сервера переполнится, а не падает.
  • Ключ не на виду. Он необязателен, вводится без эха или подаётся через stdin — никогда аргументом командной строки, — хранится в системном хранилище ключей и попадает только в окружение агента. Обычный http:// разрешён только для этого компьютера и локальной сети, а редиректы не выполняются никогда.
  • Никакого тихого отката. Если сервера больше нет, агент не запускается, а не уходит на облачный логин CLI.
  • Никаких выдуманных цен. nsq не может знать, сколько стоит ваш сервер, поэтому его запросы в nsq cost показываются «без цены», а не $0.

В дашборде P открывает экран провайдеров, в форме нового агента (c) появился выбор провайдера, а m показывает модели сервера агента. В руководстве есть таблица локальных серверов и того, какой API отдаёт каждый.

Ещё с 0.1.0

  • Пуш на телефон через ntfy (0.1.1): nsq phone push ntfy присылает в приложение ntfy «ждёт вас» с вопросом агента — через публичный сервер ntfy.sh или ваш собственный.
  • Исправлен выбор модели OpenRouter (0.1.2): модель, выбранная клавишей m, теперь переводит агента на OpenRouter, и агент перезапускается в той же сессии, как только освободится, — разговор сохраняется.

Как получить

С 0.1.x обновитесь один раз вручную: npm i -g neurosquad@latest, brew upgrade glmn-ai/neurosquad/neurosquad-cli или scoop update neurosquad-cli, затем nsq down и nsq up — агенты продолжат свои сессии. Начиная с 0.2.0 nsq заботится об этом сам. Впервые здесь? npx neurosquad запускает его без установки. Всё остальное — в руководстве по nsq и на его странице; код под лицензией MIT — в glmn-ai/neurosquad-cli.