Silicon Office: превратил свою команду ИИ-агентов в пиксельный офис из «Кремниевой долины»

от автора

Всем привет! Хочу поделиться выходным проектом, который вырос из чистой вкусовщины: мне надоело смотреть на бегущие строчки в терминале, и я сделал так, чтобы мои ИИ-агенты сидели в пиксельном офисе, пили кофе и приносили ответы лично. Подробнее — под катом.

Как я до этого дошёл

Я менеджу команду над мобильным приложением, и почти вся рутина (статусы релизов, разбор входящих из Telegram и почты, повестки к дейли, задачи в Jira) у меня давно живёт в Claude Code. Со временем я развёл это по ролям-субагентам и, не мудрствуя, назвал их именами героев «Кремниевой долины»: Ричард — главный менеджер, Джаред — координатор, Эрлих — по Jira, Моника — секретарь, Гилфойл — читает старый код.

Работает отлично, но визуально это по-прежнему текст в терминале. А хотелось… ну, видеть команду. Так появился Silicon Office.

В чём суть

Это десктоп-обёртка (Electron) над обычным Claude Code:

  • Сверху — комната в стиле «хакерского хостела» Эрлиха: длинный стол, диван, холодильник (внутри которого, конечно, сервер «Антон»), в окне — башня Hooli, на стенах — мемы из сериала.

  • Снизу — настоящий живой терминал, из которого я запускаю claude как обычно.

  • Пока агенты ждут — они слоняются по комнате: варят кофе, читают, зависают в телефоне, болтают друг с другом.

  • Когда прилетает задача — соответствующий персонаж идёт к столу и садится работать, а когда ответ готов — над ним загорается «!». Клик по человечку открывает его последний ответ карточкой с реальным лицом.

Как это работает

Ничего магического, три кусочка:

  1. Живой терминал. node-pty + xterm.js — внутри окна крутится настоящий zsh, там же запускается Claude Code.

  2. Оживление по хукам. У Claude Code есть хуки жизненного цикла. Я повесил на SubagentStart / SubagentStop / Stop крошечный скрипт, который дописывает событие в файл events.jsonl. Оболочка следит за файлом и меняет состояние человечка: ждёт → работает → есть ответ. Приятный бонус — в событии SubagentStop уже лежит last_assistant_message, так что текст ответа показываю сразу, без парсинга логов.

  1. Отрисовка. Комната и человечки рисуются на <canvas> кодом (пиксель-арт), а вот головы — реальные фото, вырезанные по кругу и посаженные на пиксельные тела. Плюс меню быстрых команд для каждой роли — клик вставляет готовый промпт в терминал.

Конечно, не всё так гладко

  • Привязать ответ к конкретной роли легко только для субагентов (в хуке есть agent_type). Если основной агент отвечает сам — приходится угадывать по тому, кого запускали.

  • Мемы из сериала — это кадры-скриншоты

  • Это чистый тюнинг ради удовольствия: на продуктивность не влияет примерно никак. Зато улыбает каждый раз.

Итог

Получилась ламповая штука: та же работа, но команда теперь буквально перед глазами и «живая». Ребёнок во мне доволен.

Если интересно — могу оформить и выложить исходники. И, конечно, очень интересно услышать в комментариях, кто как «очеловечивает» своих агентов — уверен, я не один такой.

Всем хорошего настроения!

P.S. Гилфойл, разумеется, сидит отдельно от всех за своим столом. По-другому и быть не могло.

ссылка на оригинал статьи https://habr.com/ru/articles/1057690/