Skip to content

Обзор

Технический вход в архитектуру. Та же история простым языком — Как это работает; эта страница называет сами решения и части, а дальше ведёт на страницы с деталями.

Одно решение определяет всё

Агент — это данные, а не процесс. Его конфиг, память, чаты и знания — строки и файлы в хранилище. Пока с ним никто не говорит, ничего не запущено и ничего не стоит.

Остальная архитектура — следствия этого одного решения:

  1. Мозг эфемерен. Никакого «сервера агента» нет. api загружает данные агента, становится этим агентом на один турн — LLM-цикл крутится здесь — и отпускает. Тысячи агентов, ноль стоимости в простое.
  2. Руки эфемерны. Когда турну нужен настоящий компьютер (bash, файлы, браузер), мозг поднимает worker — изолированный k8s Job, который выполняет задачу и исчезает. Внутри нет LLM, памяти, секретов.
  3. Всё состояние живёт вне compute. Postgres, Redis, object storage и LightRAG держат всё; любой запуск мозга или worker'а продолжает ровно с того места, где остановился предыдущий.
  4. Способности подключаются по MCP. Инструменты, знания и память присоединяются к мозгу через один стандартный разъём — мозг остаётся маленьким, а то, что агент умеет, — это конфигурация, а не код.

Картина целиком

Архитектура Agentfy.ai 2.0 — пользователь говорит с api (мозг, один турн) через chat stream; мозг погоняет worker (руки, одна задача) по MCP-каналу тулов; внизу плотный фундамент и есть агент: Postgres, Redis, object storage, LightRAG

Читайте снизу вверх: нижняя строка и есть агент; два блока над ней — одноразовый compute, который ненадолго его оживляет.

Один образ, две роли

api — одна кодовая база и один образ NestJS в двух ролях:

  • Core — постоянно работающий control plane: HTTP API, auth, команды, биллинг, админка.
  • Мозг — тот же образ, исполняющий турн агента («рантайм» в этих доках = api, запущенный эфемерно, на турн).

Один образ — потому что турн трогает тот же домен, которым владеет Core: агенты, чаты, память, квоты, биллинг. Разделение означало бы дублировать этот домен в двух сервисах; вместо этого роль определяется способом вызова, и есть ровно одна вещь, которую собирают, версионируют и деплоят.

Что деплоится

ЧастьРольЖизненный цикл
apiCore control plane + мозг агента (один образ)всегда работает; работа мозга — на турн
workerруки — песочница (bash · fs · browser), эфемерный MCP-серверна задачу, останавливается по простою
app / adminкабинет клиента / админ-панель (Nuxt)всегда работают
Postgres · Redis · object storage · LightRAGвсё состояние: агенты и чаты, очередь и события, артефакты, знаниявсегда на месте

Репозиторий

Один монорепо — github.com/Agentfy/agentfy — держит всю платформу:

agentfy/
├── api/          NestJS — Core + мозг (один образ); slices/ = 8 слоёв-групп
├── worker/       руки — образ-песочница (bash · fs · browser)
├── app/          Nuxt — кабинет клиента
├── admin/        Nuxt — админ-панель
├── k8s/          Helm-чарты + ArgoCD app-of-apps (GitOps)
├── terraform/    кластер и облачная инфра (IaC)
└── docs/         этот сайт документации (VitePress)

Хребтовый инвариант

Внутри api код — это вертикальные слайсы CleanSlice в 8 строго упорядоченных группахinfra → setup → system → user → admin → runtime → agent → billing — и зависимости идут только вниз, без циклов. orchestrator (цикл мозга) сидит в группе agent и тянется вниз к механизмам; наверх не тянется никто. Это одно правило держит бэкенд распутанным по мере роста.

→ Глубже: Слои-слайсы (группы и правило) · Разбор слайсов (все подслайсы) · Модель рантайма (турн от и до).