Что такое Cradle?
Cradle запускает команды ИИ-агентов и проверяет их работу. Проект — это команда: капитан раздаёт задачи, лиды выполняют их вместе с исполнителями, а Checker подписывает каждый результат, прежде чем он вернётся к вам.
Это построено не целиком. Модель команды и Checker — направление; то, что есть в коде сегодня, перечислено в разделе Что работает сегодня.
Где живёт команда
Команда живёт в колыбели (cradle): это Cradle Server с моделями, базой знаний и базой результатов, всё в контейнерах.
Поставьте сервер на ноутбук, на любой сервер или на GPU-стойку. В веб-консоли задайте каждому проекту адрес его колыбели. Несколько команд могут делить одну колыбель, или у каждой может быть своя.
Консоль
└─ Проект "Dev team" → колыбель A (GPU-сервер)
└─ Проект "Контент" → колыбель A
└─ Проект "Эксперименты" → колыбель B (ноутбук)Из чего состоит
| Часть | Что делает |
|---|---|
| Cradle Server | Среда выполнения и CLI. Запускает агентов и модели на вашем железе, GPU или CPU. |
| Консоль | Веб-приложение для проектов и настроек, включая адрес каждой колыбели. |
| Smart Notes | Голосовой рабочий журнал. Сводки и выделение задач идут через колыбель по MCP. |
Что работает сегодня
Сверено с кодом репозитория.
| Работает сегодня | Где в коде |
|---|---|
| Проекты: у каждого свои агенты, базы знаний и тикеты внутри одного Cradle Server | packages/core/src/db/schema.ts (projects, agents, knowledge_bases) |
| Triage входящего сообщения: проверка риска (правила, затем LLM-классификатор), затем по роли и навыкам выбирается один агент; жёлтые и красные черновики ждут оператора | packages/core/src/triage/orchestrator.ts, router.ts |
| Структура команды (капитан, лиды, исполнители, Checker) хранится и показывается; маршрутизация по-прежнему выбирает одного агента; передачи результата лид → Checker → капитан нет | packages/core/src/db/schema.ts (agents.team_role, reports_to), triage/team.ts, triage/router.ts |
Модели на GPU или CPU за одной точкой входа: совместимые с Anthropic POST /v1/messages и GET /v1/models поверх локальных, удалённых GPU и облачных провайдеров (в том числе Bedrock) | packages/core/src/channels/inference-routes.ts, llm/providers/provider-registry.ts |
Сервер в контейнерах: cradle-server и необязательный контейнер GPU-инференса | apps/server/docker/ |
| Веб-консоль подключается к серверу по адресу | apps/web/lib/console/, packages/console |
| Каналы: Telegram-бот, веб-виджет, HTTP API, MCP в обе стороны | packages/core/src/channels/ |
| Шлюз действий: типизированные предложения, политика, одобрение человека для необратимого, журнал с хеш-цепочкой. По HTTP не выставлен | packages/core/src/runtime/ |
| Сводки и выделение задач для Smart Notes через MCP | mcp-server-channel.ts (cradle_summarize_notes, cradle_submit_issue) |
| Экран тикета в консоли: путь по команде (капитан → лид → исполнитель, каждый — ссылка на команду) и карточка шлюза риска (сработавшие правила, вердикт классификатора, уровень, причина удержания). Вердикта Checker на нём нет | packages/console/src/pages/TicketDetail.tsx, components/TicketTeamPath.tsx, components/TicketGate.tsx |
| В планах — в коде пока нет | Что есть вместо этого |
|---|---|
| Checker как отдельная роль между лидами и капитаном | Движок верификации есть, но верификаторов нет, поэтому постусловие получает inconclusive. Ответы проверяют правила риска и оператор, а не агент Checker |
| Капитан, лиды и исполнители как иерархия, которая делит и делегирует задачу | У агентов есть роль в команде и ссылка reports_to, но Triage по-прежнему выбирает одного агента по роли и навыкам. Ничто не делит задачу между агентами и не передаёт результат вверх по цепочке |
| Агент в групповом чате, который превращает договорённости в задачи проекта (Telegram, WhatsApp) | Telegram-бот отвечает на каждое текстовое сообщение как на тикет. Задачи из переписки он не выделяет. Канала WhatsApp нет |
| Облако Cradle: готовые воркеры, база данных и облачные модели | На свой сервер можно добавить модель Bedrock. Размещённого сервиса нет |
| Цепочка передачи в шаблоне команды: результат идёт лид → Checker → капитан | Шаблон «Dev team» создаёт команду, но маршрутизация по-прежнему выбирает одного агента на тикет. Ничто не передаёт результат вверх по цепочке |
| Адрес колыбели для каждого проекта, заданный в консоли | Консоль хранит адрес сервера; проекты живут внутри сервера |
Что дальше
- Начало работы — установите колыбель и настройте первый проект.
- Архитектура — как сообщения, агенты и модели складываются вместе.
- Smart Notes — голосовой журнал и его настройка.