Всем привет! Хочу поделиться выходным проектом, который вырос из чистой вкусовщины: мне надоело смотреть на бегущие строчки в терминале, и я сделал так, чтобы мои ИИ-агенты сидели в пиксельном офисе, пили кофе и приносили ответы лично. Подробнее — под катом.
Как я до этого дошёл
Я менеджу команду над мобильным приложением, и почти вся рутина (статусы релизов, разбор входящих из Telegram и почты, повестки к дейли, задачи в Jira) у меня давно живёт в Claude Code. Со временем я развёл это по ролям-субагентам и, не мудрствуя, назвал их именами героев «Кремниевой долины»: Ричард — главный менеджер, Джаред — координатор, Эрлих — по Jira, Моника — секретарь, Гилфойл — читает старый код.
Работает отлично, но визуально это по-прежнему текст в терминале. А хотелось… ну, видеть команду. Так появился Silicon Office.
В чём суть
Это десктоп-обёртка (Electron) над обычным Claude Code:
-
Сверху — комната в стиле «хакерского хостела» Эрлиха: длинный стол, диван, холодильник (внутри которого, конечно, сервер «Антон»), в окне — башня Hooli, на стенах — мемы из сериала.
-
Снизу — настоящий живой терминал, из которого я запускаю
claudeкак обычно. -
Пока агенты ждут — они слоняются по комнате: варят кофе, читают, зависают в телефоне, болтают друг с другом.
-
Когда прилетает задача — соответствующий персонаж идёт к столу и садится работать, а когда ответ готов — над ним загорается «!». Клик по человечку открывает его последний ответ карточкой с реальным лицом.

Как это работает
Ничего магического, три кусочка:
-
Живой терминал.
node-pty+xterm.js— внутри окна крутится настоящийzsh, там же запускается Claude Code. -
Оживление по хукам. У Claude Code есть хуки жизненного цикла. Я повесил на
SubagentStart/SubagentStop/Stopкрошечный скрипт, который дописывает событие в файлevents.jsonl. Оболочка следит за файлом и меняет состояние человечка: ждёт → работает → есть ответ. Приятный бонус — в событииSubagentStopуже лежитlast_assistant_message, так что текст ответа показываю сразу, без парсинга логов.

-
Отрисовка. Комната и человечки рисуются на
<canvas>кодом (пиксель-арт), а вот головы — реальные фото, вырезанные по кругу и посаженные на пиксельные тела. Плюс меню быстрых команд для каждой роли — клик вставляет готовый промпт в терминал.
Конечно, не всё так гладко
-
Привязать ответ к конкретной роли легко только для субагентов (в хуке есть
agent_type). Если основной агент отвечает сам — приходится угадывать по тому, кого запускали. -
Мемы из сериала — это кадры-скриншоты
-
Это чистый тюнинг ради удовольствия: на продуктивность не влияет примерно никак. Зато улыбает каждый раз.
Итог
Получилась ламповая штука: та же работа, но команда теперь буквально перед глазами и «живая». Ребёнок во мне доволен.
Если интересно — могу оформить и выложить исходники. И, конечно, очень интересно услышать в комментариях, кто как «очеловечивает» своих агентов — уверен, я не один такой.
Всем хорошего настроения!
P.S. Гилфойл, разумеется, сидит отдельно от всех за своим столом. По-другому и быть не могло.
ссылка на оригинал статьи https://habr.com/ru/articles/1057690/