Valox Office
Open source 3D офис за агенти, който поех и превърнах в среда за управление на агентите
- Роля
- Собственик на продукта: ръководя екип от агенти върху мой fork на проект с MIT лиценз
- Статус
- В процес
- Код
- Частно хранилище
- Технологии
- TypeScriptNode.jsthree.jsVitenode-ptyxterm.jsWebSocketzodMCP SDKExcalidrawMermaidthree-mesh-bvhBlender (Python)Playwrightnode:testGitHub Actionssystemd

В числа
20
MCP инструмента, които управлява мениджърът на етажа, плюс 5 инструмента за бюрото, които получава всеки агент-работник
32
изолирани акаунта на работници в 16 групи по етажи, всеки непривилегирован потребител от общ набор
от 20,1 до 6,0 ms
медианно време за кадър при 12 агенти-работници с екран на живо
9
независими кръга на проверка, преди изпълнителят на лични компютри да бъде пуснат
Проблемът
Работя с Claude Code, Codex и OpenCode през няколко акаунта, много хранилища и повече от една машина и исках едно място, откъдето да виждам и ръководя всичко: проектите като етажи, агентите като служители на бюрата, а хората, с които работя, да могат да влязат, да гледат терминал и да поемат управлението. Намерих AgentSystemLabs/agent-office, MIT проект на друг разработчик, който вече имаше 3D офиса, споделени PTY терминали, отделен git worktree за всеки агент-работник, табла със задачи и pull request, WebRTC глас и бяла дъска Excalidraw. Беше добра сцена, зад която нямаше нищо, което да управлява агентите.
Подходът
Направих fork на проекта и го поех. Запазих сцената, терминалите и git worktree, махнах онова, което наричам AI боклук, и изградих инструментите, които превръщат един офис в среда за управление на агентите, а те са по-голямата част от това, което офисът прави днес. Моето копие запазва MIT бележката на оригиналния проект, а файл с име UPSTREAM.md отбелязва всеки прегледан от мен pull request от оригиналния проект като пренесен, адаптиран или пропуснат. Кодът е написан от екип агенти, които ръководех. Агенти на Codex и на Claude пишеха кода в git worktree; агент-интегратор на Opus правеше rebase, пускаше набора от тестове и проверяваше всяка крайна точка за автентикация и достъп до етажите; следваха независими кръгове на проверка и на преглед на сигурността; една координираща сесия само сливаше при зелени проверки и пускаше в продукция. Моята част беше посоката на продукта, тестването чрез игра, докладите за грешки и решенията да приема или отхвърлям. Резултатът от по-евтиния и по-бърз модел, който пише кода, се проверява повторно от най-силния модел, преди да бъде слят. Правилото дойде от функция за преглед на екрана, която мина повърхностните тестове и се счупи върху реални екрани на Claude Code. Когато тест с браузър без прозорец (headless) заключи истинския ми курсор в прозореца си, поправката влезе във всяко задание към агент: симулирано заключване на показалеца във всеки headless тест.

Как работи
Мениджър на етажа, който е обикновен агент-работник
На всеки етаж един агент-работник на Claude Code или Codex е негов мениджър и управлява собствен MCP сървър с 20 инструмента за мениджъра (hire_worker, prompt_worker, read_worker_screen, merge_pull, start_meeting, ask_humans и други) плюс пет инструмента за бюрото, които получава всеки агент-работник. Отгоре няма допълнителна система за оркестрация. Мениджърът действа от името на този, който го е наел, наетите от него агенти могат да ползват само акаунти, които този човек може да ползва, и слива pull request само когато проверките му са зелени. Тест от край до край с истински MCP задейства всеки инструмент за всеки вид агент-работник. Агентите-работници получават имената си по подразбиране от моите белот ботове, а мениджърите са ханове и царе.
Три агентски инструмента на един етаж
Агенти-работници на Claude Code, Codex и OpenCode седят един до друг, а мениджърът може да наеме всеки от тях. Всеки човек носи собствените си AI акаунти за всеки доставчик, може да отстъпи един на колега с одобрението на собственика и вижда измервател на ползването за всеки акаунт; работещ агент-работник може да се премести между акаунти. На срещите сядат от двама до петима агенти-работници по схеми като дебат, map-reduce, червен и син екип или комисия за преглед, като всяко място избира свой доставчик, модел и акаунт, така че работник на Claude, на Codex и на OpenCode да спорят на една маса срещу краен срок.
Агенти-работници, изолирани от операционната система
На Linux всеки AI акаунт работи като собствен непривилегирован потребител от общ набор, 32 потребители в 16 групи по етажи, достъпни през един помощник, разрешен с правило в sudo. Hooks пристигат през unix сокет, а всяко четене, което офисът прави на файл, достъпен за запис от агент-работник, използва отваряне без следване на символни връзки и с проверка на собственика. Изолацията е тествана за отказан достъп върху еднократен набор от потребители на истински сървър, проверена е с мутационно тестване и е минала през преглед на сигурността от Opus, който откри критично инжектиране на команди в скрипт с root права през името на етаж, преди да се отвори pull request. Пусната е в действие, а работещите агенти-работници се рестартираха под потребители от набора.
Изпълнители на лични и отдалечени компютри, които при грешка блокират
Агент-работник може да работи на нечий собствен компютър, така че данните за вход остават на тази машина. Изпълнителят отваря една изходяща WebSocket връзка и приема фиксиран набор от именувани операции (spawn, attach, write, resize, kill, diff, commit, PR, worktree); от сокета не се приема нито изпълним файл, нито shell, нито среда, нито работна директория. Токените за регистриране са хеширани, за еднократна употреба и изтичат след 10 минути. Пуснат е изключен и отказва да работи, докато изолацията не е включена; в пети от девет кръга на проверка се откри, че shell на офиса може да прочете тайния ключ за подписване на сесии и да подправи бисквитка на собственик. Отдалечен компютър се свързва вместо това през SSH: агентите-работници работят в tmux зад принудителна команда (forced command) с фиксиран ключ на хоста, а поверителен етаж не записва нищо от работата си на диска на офиса.
Роли, с отказ по подразбиране за гостите
Всеки започва като гост, а администраторите и членовете получават права по етаж и по група. Ролята на госта е филтър за съобщения: всяко съобщение от клиента без изрично правило се отхвърля, а тест в CI пада, докато всеки нов вид съобщение няма такова. Интеграторът състави опис на 85 съобщения от клиента, 57 съобщения от сървъра и 37 входни точки по HTTP и WebSocket, след което пусна тестова среда с враждебен гост от 174 съобщения и 59 проверки, която не откри изтичане на работа към госта. Етаж, в който не може да се влезе, отговаря точно както етаж, който не съществува.
Производителност като измерван цикъл
В pull request #81 основният и новият клон бяха измервани на редуване върху една и съща предварително записана 30-секундна разходка с 12 агенти-работници с екран на живо, на RTX 2080 при 1080p. Слетите геометрии с цветове по върхове, лъчевото проследяване през BVH и предварителното компилиране на шейдърите свалиха медианното време за кадър от 20,1 ms на 6,0 ms, а извикванията за изчертаване от около 1 550 на около 355. Последва статистика върху екрана в играта с рекордер за 30 секунди, така че следващото влошаване да дойде като число.

Какво избрах и какво отпадна
Избрах
Fork на оригиналния MIT проект и посочване на източника в хранилището
Пред
Изграждане на офиса от нулата
Вече имаше 3D сцената, PTY терминалите и git worktree, така че работата можеше да започне направо със средата за управление на агентите. UPSTREAM.md прави произхода проверим.
Избрах
Една изходяща връзка и фиксиран списък от именувани операции за изпълнителите на лични компютри
Пред
Допълнителна система за агенти, посредник (broker) и достъп до отдалечен shell
Именуваните операции покриват работния процес, а през сокет, който не приема команден ред, не може да се подаде и вреден команден ред. В README файла е записано, че честотата на отказите в продукция не е измервана.
Избрах
Оркестрацията да се премести в собствения мениджър и в изпълнителите на офиса
Пред
Да остане Orca, външен инструмент с MIT лиценз, като това, което пуска терминалите на агентите
Офисът скоро стана собствена среда за управление, с мениджър, git worktree и табла, така че втори оркестратор ги дублираше. Преместването е частично: координаторът на изграждането още беше сесия на Claude Code извън продукта, а започнах да ползвам офиса за собствената си работа през изпълнителите на лични компютри.
Резултатът
Промените (commit) в копието са на мое име в GitHub и са написани от агентите, които ръководех. Част от тази работа е пренесен код от оригиналния проект, а UPSTREAM.md отбелязва кой точно. Мениджърът на етажа, изолацията на агентите-работници, изпълнителите, ролите и работата по производителността са нови, така че офисът отива много отвъд проекта, който намерих. Оригиналният проект продължи да излиза с нови версии и по-късно изгради собствени варианти на няколко неща, които моето копие имаше първо, включително отделен вход за всеки акаунт и MCP сървър. Офисът работи на мой собствен сървър, а хранилището е частно. Още непроверено: преминаване на целия набор от тестове върху последната промяна (commit) и честотата на откази на изпълнителя в ежедневна употреба.
Какво следва
Страници с бяла дъска върху 3D таблото, заявки за одобрение за агентите-работници на лични компютри и преместване на ежедневната ми работа с агенти в офиса.
Галерия
HTML страница на работник на бялата дъска, показана в изолирана рамка.
Дебат между трима агенти, който завършва с написан файл с решение.
Кулата отвън: офиси с тераси, стъклената лента на етажа на ръководството и гаражът.
Работник, който работи на собствения компютър на човек: в заглавието пише „Ada's PC“, а при работник в офиса пише „Office server“.
Избор къде да работят новите работници и кои акаунти предлага този компютър.
Анимиран WebP клип: пристигат нови промптове и работникът приключва.
Моят fork на AgentSystemLabs/agent-office с лиценз MIT. Всеки работник, който виждате, е агент за програмиране. Проектът и имената са демонстрационни данни.
Етажът на ръководството показва всеки офис с един поглед.
Баровата тераса на покрива с диджейски пулт.
Гледката от етажа „Mobile“.
Анимиран WebP клип: разходка до лаптопа на работник.