Y Combinator выпустил QM, многопользовательскую платформу для ИИ-агентов

Y Combinator выпустил QM, многопользовательскую платформу для ИИ-агентов

GitHub-организация yc-software, связанная с Y Combinator, опубликовала QM, открытый исходный код (лицензия MIT) многопользовательской платформы для работы с ИИ-агентами в Slack и на вебе. Идея в том, что обычные ИИ-агенты сделаны как личные помощники: заставить один такой агент обслуживать целую компанию можно, но быстро становится сложно. QM решает это разделением на области: у каждого сотрудника, своя изолированная рабочая область агента (память, файлы, доступ к ключам, права, крон-задачи, веб-приложения, отдельная постоянная песочница), при этом люди могут совместно работать с агентом в общих каналах, групповых чатах и проектах, где у каждой комнаты тоже своя область.

Платформа задумана без привязки к одному поставщику: организация сама выбирает движок агента и модель, а один и тот же центральный движок (ядро) умеют водить Pi, OpenCode, Codex и Claude Code. Среди заявленных возможностей: администратор задаёт конфигурацию организации, режим безопасности и разрешённые движки и модели; можно поднимать собственные внутренние веб-приложения и публиковать их нужным людям; навыки агента принадлежат конкретной области и раздаются по разрешению, а до уровня всей организации навык поднимает только администратор, включая наборы навыков, импортированные из git-репозиториев; крон-задачи и фоновые наблюдатели (watch) выполняют работу, пока никто не смотрит; агент умеет вместе искать по внутренним заметкам, почте, документам, базам данных и вебу, доставать информацию из «мозга компании», учиться авторскому стилю письма по прошлым сообщениям и по расписанию разбирать почту с готовыми черновиками ответов, работать в существующем репозитории (запускать тесты, открывать PR, следить за CI, проверять логи) и вести проект в общем канале с апдейтами.

Архитектурно ядро написано на TypeScript поверх Node.js и использует Fastify для HTTP; слой хранения, Postgres, где лежат сессии, память и очередь задач. У агента небольшой фиксированный набор инструментов, один из которых, выполнение команд в собственной изолированной песочнице области (её «постоянном компьютере», где установленные инструменты остаются установленными). Веб-интерфейс, панель администратора и публичный портал, необязательные надстройки поверх HTTP API ядра; Slack подключается как необязательный плагин в том же процессе, которым ядро управляет напрямую. Slack-плагин построен на Bolt, веб-интерфейс собирается на Vite и рендерится на Lit.

Безопасность строится вокруг того, что агент действует от имени человека, с его правами и учётными данными, и всё, что он делает, протоколируется. Организация выбирает один из трёх режимов, а более узкие области могут только ужесточать его, но не ослаблять: Strict, каждый вызов инструмента агентом останавливается и ждёт подтверждения человека, кроме двух безобидных вызовов, которые просто завершают ход и ничего не меняют; Auto (режим по умолчанию), классификатор проверяет помеченные по происхождению внешние данные и результаты инструментов прежде, чем они попадут модели, причём эту проверку можно направить на собственный прокси-сервис проверки; Dangerous, без какой-либо проверки содержимого и без пауз между вызовами инструментов. Отдельно от режима действует заранее заданная политика команд, правила подтверждения и жёсткие запреты на такие вещи, как рекурсивное удаление файлов или разрушительный SQL, и она применяется во всех трёх режимах, включая Dangerous.

Развернуть QM можно командой npm exec --yes --package=@yc-software/qm@latest -- qm init . --org <slug> --target <fly-or-aws>: она создаёт отдельный репозиторий развёртывания, принадлежащий организации, зависящий от пакета @yc-software/qm, и проводит через настройку инфраструктуры, веб-входа, учётных данных коннекторов, опционального доступа к Slack, самого развёртывания и проверки вживую, без чекаута исходников. Каждое развёртывание работает в собственном облачном аккаунте оператора; инициализация не создаёт и не включает CI для деплоя, и у самого репозитория QM production-конвейера развёртывания нет. Вклад в проект принимается не кодом, а человеческим текстом: изменение описывают неформально в текстовом или markdown-файле в папке adrs/, и если авторы проекта согласны с идеей, реализацию делают уже они сами; об уязвимостях просят сообщать приватно, а не через публичный issue. Для организаций, которым нужен единый репозиторий с ядром и своими доработками вместе (например, чтобы инженеры и агенты кода читали всё разом, но кастомизации оставались приватными), README рекомендует держать «приватный форк», но не через кнопку Fork на GitHub, а через обычный git-клон и зеркалирование: форк публичного репозитория на GitHub нельзя сделать приватным и он делит с оригиналом одну сеть объектов, из-за чего закоммиченное туда остаётся доступным по SHA с публичной стороны; обычный клон этого недостатка лишён, но зато CI-сценарии апстрима будут реально исполняться в аккаунте организации, и под них нужно либо завести свои секреты, либо отключить ненужные джобы. Всё специфичное для организации живёт в deploy/layers/<org>/, а ядро остаётся побайтово идентичным апстриму, что держит слияния небольшими; для синхронизации в обе стороны в README описаны два отдельных навыка агента, один подтягивает апстрим в приватный форк и открывает PR синхронизации, другой отправляет организационно-нейтральные исправления обратно в QM, создавая ветку от upstream/main и проверяя исходящий диф, сообщения коммитов и скриншоты на отсутствие идентификаторов организации перед отправкой.

Ключевые факты

  • QM, открытый self-hosted проект (лицензия MIT) от GitHub-организации yc-software, связанной с Y Combinator; работает в Slack и на вебе с единым профилем и настройками.
  • У каждого сотрудника, изолированная рабочая область агента (память, файлы, доступ к ключам, права, крон-задачи, веб-приложения, отдельная песочница), при этом люди могут работать с агентом сообща в каналах, группах и проектах.
  • Движок агента и модель не зашиты намертво: один и тот же центральный движок умеют водить Pi, OpenCode, Codex и Claude Code, организация выбирает сама, без привязки к одному поставщику.
  • Три режима безопасности, Strict (подтверждение человека на каждый вызов инструмента, кроме двух безобидных финализирующих), Auto по умолчанию (классификатор проверяет внешние данные и результаты инструментов до модели) и Dangerous (без проверок и пауз); отдельная политика подтверждений и жёстких запретов на опасные команды действует во всех трёх режимах.
  • Развернуть можно командой npm exec ... qm init в собственном облаке (Fly или AWS); цена, число пользователей и версия релиза в источнике не указаны, вклад в проект принимается как текстовое описание идеи, а не готовый код.

Почему это важно

Большинство ИИ-агентов сделано как личный помощник одного человека: приспособить такого агента под целую компанию можно, но сложность быстро растёт. QM предлагает другую модель, не один общий агент на всех и не изолированные боты у каждого поодиночке, а единая платформа, где у каждого человека и каждой комнаты своя область (память, файлы, права, песочница), но при этом сохраняется совместная работа в общих каналах и проектах. Отдельно важно, что платформа не привязывает организацию к одному поставщику модели или движка: Pi, OpenCode, Codex и Claude Code водят один и тот же центральный движок, так что смена вендора не требует переписывать всё вокруг.

Кому это важно

В первую очередь, командам разработки и айти-подразделениям стартапов и компаний, которые уже используют кодинг-агентов вроде Claude Code, Codex или OpenCode индивидуально и хотят развернуть похожего агента для всей организации: с общей памятью по проектам, поиском по внутренним документам и почте, фоновыми задачами и внутренними приложениями. Также релевантно администраторам, которым нужен контроль над тем, какие модели и движки разрешены в организации и какой уровень автономности агента допустим.

Как это применить

Проект self-hosted: организация создаёт собственный репозиторий развёртывания командой npm exec --yes --package=@yc-software/qm@latest -- qm init . --org <slug> --target <fly-or-aws> и запускает его в своём облачном аккаунте (Fly или AWS); чекаут исходного кода QM для этого не нужен. Для организаций, которым нужен единый репозиторий с ядром и собственными доработками, README рекомендует завести приватный форк через обычный git-клон и зеркалирование, а не через кнопку Fork на GitHub. Лицензия, MIT (кроме отдельно оговорённых случаев). Вклад в развитие принимается не кодом, а текстовым описанием идеи изменения в файле adrs/; о найденных уязвимостях просят сообщать приватно, а не публичным issue. Цена, стоимость хостинга и версия релиза в источнике не указаны.

Можно ли доверять

Источник, официальный README и сопутствующая документация (включая SECURITY.md с моделью угроз) в репозитории проекта на GitHub, то есть первичный, авторский материал, а не пересказ третьих лиц. При этом источник не называет конкретных людей за проектом и не даёт данных о компании, финансировании или штате помимо самой GitHub-организации yc-software; нет и цифр по числу пользователей, развёрнутых инсталляций или отзывов о реальной эксплуатации, обсуждение на Hacker News (634 балла, 146 комментариев) относится к материалу, выложенному менее суток назад, то есть это свежий анонс, ещё не проверенный практикой.

Риски и подводные камни

Режим безопасности Dangerous явно отключает и проверку содержимого, и паузы между вызовами инструментов, организация, которая его выбирает, снимает с себя эту страховку сама. Агент действует от имени сотрудника с его правами и учётными данными, а значит ошибки конфигурации области напрямую превращаются в доступ агента к чужим данным или системам. При выборе схемы приватного форка через обычный клон CI-сценарии апстрима начинают реально исполняться в облачном аккаунте организации, и им нужно либо предоставить свои секреты, либо отдельно отключать ненужные джобы. Наконец, источник не приводит ни цифр по цене и стоимости хостинга, ни данных об адопции, при принятии решения о развёртывании эти параметры организации придётся выяснять или считать сами.

«Pi, OpenCode, Codex и Claude Code управляют одним и тем же ядром, поэтому развёртывание не привязано к одному поставщику.»

— из README проекта QM