Все агентские CLI
PenguinHarness в NeuroSquad

PenguinHarness,а вокруг — холст

Запускайте сколько угодно агентов Penguin — в каждой карточке настоящий penguin chat. NeuroSquad запускает собственный сервер Penguin и даёт каждой карточке своего агента; поток статусов Penguin сообщает карточке, когда агент работает, ждёт или закончил, а стрелки дают ему терминалы, заметки и других агентов.

Официальный сайтpenguin.ooo
  • Настоящий penguin chat, ваши модели
  • Ваш ~/.penguin не переписывается
  • Бесплатно, для Windows и macOS
Поток статусов и хук

Он знает, когда Penguin закончил — и когда спрашивает

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

session_state: runningсигнал
Работает

Поток сервера сообщает, что сессия карточки running. Значок карточки крутится, «Статус команды» считает агента работающим, а уведомление о прошлом вопросе снимается.

pre_tool_useсигнал
Ждёт вас

Хук pre_tool_use карточки оставляет вызов собственному вопросу Penguin «? Approve this tool call? [Y/n]». Уведомление называет вызов — PenguinHarness needs your permission: exec_command: rm -rf dist — пока вы не ответите в карточке.

session_state: idleсигнал
Закончил

Поток сообщает idle, и чат снова на своём приглашении > . Уходит следующий промпт из очереди, журнал получает ответ, а уведомление сообщает, что готово.

Хук — это политика

Карточка запускает Penguin с --approve always-ask, и первым отвечает её хук: собственные инструменты NeuroSquad, read_file и субагенты выполняются без вопросов, как в Claude Code; всё остальное ждёт вас.

Субагенты тоже видны

Субагент работает в дочерней сессии; поток сообщает о нём, поэтому карточка остаётся в «работает», пока он трудится, а расход показывает его отдельно.

Без преждевременного «закончил»

«Закончил» ждёт, пока чат вернётся к приглашению, — иначе промпт из очереди, вставленный на мгновение раньше, потерялся бы.

Посмотреть в работе

Три вещи, которые вы будете делать с PenguinHarness

Реплики приложения, шаг за шагом. Когда Penguin спрашивает, отвечаете вы.

Penguin запускает тесты через карточку терминала и без вопросов читает файл, останавливается на своём вопросе об одобрении перед правкой и заканчивает — журнал пишется сам.

Всё, что он получает

Всё, что PenguinHarness умеет в NeuroSquad

Измерено на PenguinHarness 0.2.13 и на его ветке main. Часть — собственное у Penguin: MCP, сессии, его файлы Trace, — многое построено вокруг его сервера. Где это невозможно, карточка так и говорит.

  • 01

    Знает своё состояние

    Собственный поток статусов Penguin и хук карточки сообщают о каждом ходе и каждом вызове, который ждёт вас.

  • Достроено NeuroSquad

    «Закончил» и «ждёт» — разные вещи

    В PenguinHarness 0.2.13 нет хука на каждый промпт, поэтому карточка следит за собственным потоком статусов сервера (session_state running и idle) для своей сессии — каждый ход, в том числе начатый с телефона.

    Документация: «Закончил» и «ждёт» — разные вещи
  • Достроено NeuroSquad

    Уведомление говорит, что нужно

    Уведомление называет вызов — PenguinHarness needs your permission: write_file: a.txt, — а карточка возвращается в «работает», когда вы отвечаете в ней.

    Документация: Уведомление говорит, что нужно
  • Достроено NeuroSquad

    Останавливается через свой сервер

    Stop, бюджет-тормоз и Stop на телефоне вызывают собственный API отмены Penguin. Ctrl-C в простаивающем чате спросил бы о выходе, поэтому Stop его не отправляет, а ряд клавиш телефона помечает Ctrl+C как выход.

    Документация: Останавливается через свой сервер
  • Продолжает с того же места

    Поток и хуки сообщают id сессии; следующий запуск — penguin chat --resume <id>. Удалённая сессия сама сменяется новой.

    Документация: Продолжает с того же места
  • Карточка «Статус команды»

    Все ИИ-агенты воркспейса на одной карточке — со статусом, моделью и временем хода.

    Документация: Карточка «Статус команды»
  • 02

    Работает через холст

    Стрелка от карточки — набор инструментов через собственный MCP-клиент Penguin.

  • Стрелки — это инструменты

    Агент карточки перечисляет MCP-сервер NeuroSquad в своих tools.mcpServers. Стрелка к терминалу, заметке, браузеру или агенту даёт Penguin их инструменты.

    Документация: Стрелки — это инструменты
  • Достроено NeuroSquad

    Стрелка — это согласие

    Хук карточки пропускает собственные инструменты NeuroSquad, read_file и субагентов без вопроса — то, что Claude Code выполняет не спрашивая. Всё остальное ждёт вас.

    Документация: Стрелка — это согласие
  • Достроено NeuroSquad

    Инструменты сразу

    Penguin делает снимок инструментов контекста модели и не замечает изменений списка. Поэтому карточка получает все возможности NeuroSquad сразу, а стрелки решают в момент вызова.

    Документация: Инструменты сразу
  • Достроено NeuroSquad

    Режим карточек, который держится

    Хук отклоняет exec_command и input_command — оболочку и единственный путь Penguin в веб — ещё до любого одобрения, в том числе в опасном режиме.

    Документация: Режим карточек, который держится
  • MCP-серверы из реестра

    Установленные серверы приходят вторым сервером без предварительного одобрения: Penguin спрашивает перед каждым их вызовом.

    Документация: MCP-серверы из реестра
  • 03

    Для долгих прогонов

    Контекст, Compact, лимиты, очередь промптов и журнал — прямо на карточке.

  • Счётчик контекста

    Токены последнего запроса из Trace против окна, которое Penguin записывает для модели сессии.

    Документация: Счётчик контекста
  • Compact

    Кнопка Compact на карточке отправляет собственную команду Penguin /compact.

    Документация: Compact
  • Достроено NeuroSquad

    Лимиты на карточке

    Когда запрос заканчивается ошибкой лимита или квоты, карточка читает её из Trace и показывает лимит.

    Документация: Лимиты на карточке
  • Очередь промптов

    Промпты занятой карточке ждут и уходят после хода по одному; длинные и многострочные приходят одним сообщением.

    Документация: Очередь промптов
  • Журнал и передача

    Последний ответ читается из файлов Trace Penguin: в подключённую заметку, передачу, agent_wait, Telegram и свои карточки.

    Документация: Журнал и передача
  • 04

    Работает в команде

    Агент на карточку, субагенты, опасный режим без перезапуска и переход на другой CLI.

  • Достроено NeuroSquad

    Агент на карточку, свой сервер

    NeuroSquad запускает собственный сервер Penguin для своей папки данных и останавливает его при выходе. Каждая карточка — отдельный агент Penguin со своими хуками, MCP-серверами и инструкциями; ваши проекты и модели копируются, но не меняются.

    Документация: Агент на карточку, свой сервер
  • Субагенты — отдельно

    Субагент работает в дочерней сессии со своим Trace. Пока он работает, карточка остаётся в «работает», а расход, Run Stats и Agent Pulse помечают его запросы как запросы субагента.

    Документация: Субагенты — отдельно
  • Достроено NeuroSquad

    Опасный режим без перезапуска

    Пока переключатель карточки включён, её хук разрешает каждый вызов; выключите — и следующий вызов снова спросит. Режим карточек всё равно сильнее.

    Документация: Опасный режим без перезапуска
  • Смена модели и CLI

    Ведущий агент может сменить модель через agent_set_model — в более новом Penguin прямо в сессии, в 0.2.13 начинается новая сессия с собственной ссылкой Penguin на старую — или перенести разговор в Claude Code и обратно.

    Документация: Смена модели и CLI
  • Изолированные worktree

    Дайте агенту собственный git worktree, чтобы параллельные агенты не правили одни и те же файлы.

    Документация: Изолированные worktree
  • 05

    Расход, контроль и доступ

    Сколько он тратит, сколько ему можно, на какой модели работает и как до него добраться.

  • Точный расход

    Читается из Trace Penguin: запись на каждый запрос, чтение кэша отдельно, субагенты помечены. У модели без известной цены — «без цены», никогда не $0.

    Документация: Точный расход
  • Бюджет-тормоз

    При превышении лимита воркспейса каждая карточка Penguin останавливается через API отмены сервера — чат остаётся открытым, — а автоматические промпты ждут.

    Документация: Бюджет-тормоз
  • Достроено NeuroSquad

    Модели OpenRouter

    Собственная группа провайдера карточки идёт через локальный ретранслятор NeuroSquad, который добавляет ключ и атрибуцию; в файле — только заглушка. Ваша собственная группа OpenRouter направляется так же.

    Документация: Модели OpenRouter
  • Достроено NeuroSquad

    Ваши серверы

    Каждый ваш провайдер становится группой за тем же ретранслятором — OpenAI Chat Completions или Anthropic Messages, — без ключа на диске.

    Документация: Ваши серверы
  • С телефона

    Отсканируйте QR-код — и весь холст откроется в браузере телефона: читайте чат Penguin, отвечайте y или n, отправляйте следующий промпт.

    Документация: С телефона
  • 06

    Полезно знать

    Что Penguin делает иначе и чего сделать нельзя.

  • Невозможно

    Id сессии карточка выбрать не может

    Penguin всегда создаёт id сам. NeuroSquad ловит id из потока и продолжает с ним — на практике это работает так же.

    Документация: Id сессии карточка выбрать не может
  • Невозможно

    Без разделения записи кэша и рассуждений

    Trace Penguin складывает создание кэша во вход, а рассуждения — в выход, поэтому эти колонки — «не сообщается». На моделях Claude цена из-за этого немного занижена.

    Документация: Без разделения записи кэша и рассуждений
  • Невозможно

    Без экономии токенов

    Хук pre_tool_use в Penguin умеет только разрешить или запретить вызов, но не переписать его, — поэтому RTK здесь не работает.

    Документация: Без экономии токенов
  • Плагинам нужен более новый Penguin

    Caveman, Память, Context7 и Graphify добавляют текст через хук промпта, который Penguin вызывает на каждом промпте только после 0.2.13. В 0.2.13 их инструменты всё равно работают по стрелке.

    Документация: Плагинам нужен более новый Penguin
  • Только этот компьютер

    Сервер Penguin пришлось бы запускать внутри цели WSL или SSH, поэтому пока карточки Penguin работают только на этом компьютере.

    Документация: Только этот компьютер
С одного взгляда

Кто ждёт и сколько потрачено

Две карточки, которые отвечают на самые частые вопросы, когда работают сразу несколько агентов Penguin.

Карточка «Статус команды»

Все агенты воркспейса со статусом, моделью и временем хода. Ждущие вас — первыми, с вызовом, который они хотят сделать. Нажмите на статус, чтобы отфильтровать.

  • coupon-fixPenguinHarnessdeepseek/deepseek-chatPenguinHarness needs your permission: exec_command: rm -rf distЖдёт вас2:34
  • api-migrationPenguinHarnesskimi/kimi-k2Перевести маршруты на новый клиентРаботает13:41
  • lint-passPenguinHarnessdeepseek/deepseek-chatИсправить ошибки линтераРаботает4:08
  • docs-passPenguinHarnessopenrouter/qwen/qwen3-coderОбновить READMEЗакончил7 мин. назад

Расход и стоимость

Читается из файлов Trace каждой карточки, поэтому каждый запрос принадлежит ровно одной карточке. Токены точные; запросы субагентов помечены.

АгентТокеныСтоимость
coupon-fix1 218 804без цены
api-migration963 117без цены
docs-pass208 4550,13 $
Итого2 390 3760,13 $
Точно до пикодоллара; округляется только на экране.Карточки на OpenRouter оцениваются по его каталогу; у модели без известной цены — «без цены».
Под капотом

Настоящий penguin chat на собственном сервере NeuroSquad

NeuroSquad запускает собственный чат Penguin в настоящем терминале внутри карточки, подключённый к серверу, который приложение держит для своих карточек. Вот всё, что он добавляет:

Что NeuroSquad добавляет к команде
❯ penguin chat
--server http://localhost:<the app’s Penguin server>каждый запусксобственный сервер Penguin приложения, а не запущенный из карточки
--agent-id ns_<card id>каждый запусксобственный агент Penguin карточки, пересобирается при каждом запуске
--approve always-askкаждый запусккаждый вызов сначала проходит через хук карточки
PENGUIN_HOME=<userData>/penguin/dataкаждый запускпапка данных приложения, чтобы чат нашёл токен своего сервера
PENGUIN_UPDATE_CHECK=offкаждый запускбез проверки обновлений
--provider <group> --model-id <id>первый запускмодель карточки в новой сессии
--resume <session-…>следующие запускисессия, о которой последним сообщил поток
pre_tool_use → deny exec_command, input_commandрежим карточекоболочка отклоняется; вместо неё — карточки холста
pre_tool_use → allow every other callопасный режимопасный режим вживую: без перезапуска

Ваш ~/.penguin не переписывается

Конфигурация вашего проекта копируется в папку приложения при каждом запуске, так что карточки работают на ваших моделях и ключах; ваша папка только читается.

Никаких секретов в окружении карточки

Сервер работает с чистым окружением приложения, а ключи провайдеров остаются в ретрансляторе приложения, — поэтому токен карточки не попадает в команды оболочки Penguin.

Найден там, куда вы его поставили

Пакет npm или раскладка установщика Penguin — запуск через собственный Node в обход шима penguin.cmd.

Вопросы

PenguinHarness в NeuroSquad: ответы

Дайте PenguinHarness холст

Бесплатно для Windows и macOS. Ваш код, ваши модели и ваши расходы остаются у вас.

Windows 10 / 11 · macOS 12 и новее, Apple silicon и IntelВсе 22 агентских CLI