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 і тягнеться вниз до механізмів; догори не тягнеться ніхто. Це одне правило тримає бекенд розплутаним у міру зростання.

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