Разработчикам
Архитектура
Техническая архитектура платформы AACWorkflow.
Обзор
AACWorkflow — это бэкенд на Go + монорепозиторий фронтенда (pnpm workspaces + Turborepo) с общими пакетами.
┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
│ Next.js │────>│ Go Backend │────>│ PostgreSQL │
│ Frontend │<────│ (Chi + WS) │<────│ (pgvector) │
└──────────────┘ └──────┬───────┘ └──────────────────┘
│
┌──────┴───────┐
│ Agent Daemon │ (запускается на вашем компьютере)
│Claude/Codex/ │
│OpenClaw/Code │
└──────────────┘Структура проекта
| Директория | Назначение | Технология |
|---|---|---|
server/ | Бэкенд на Go | Chi router, sqlc для БД, gorilla/websocket |
apps/web/ | Фронтенд на Next.js | App Router |
apps/desktop/ | Десктопное приложение на Electron | electron-vite |
apps/docs/ | Сайт документации | Fumadocs |
packages/core/ | Headless бизнес-логика | Zero react-dom, повторное использование на всех платформах |
packages/ui/ | Атомарные UI-компоненты | Zero бизнес-логики, на основе shadcn |
packages/views/ | Общие бизнес-страницы | Zero next/\*, zero react-router imports |
packages/tsconfig/ | Общая конфигурация TypeScript | — |
packages/eslint-config/ | Общая конфигурация ESLint | — |
Структура бэкенда
- Точки входа (
cmd/):server(HTTP API),aacworkflow(CLI + демон),migrate - Обработчики (
internal/handler/): Один файл на домен (issue, comment, agent, auth, daemon) - Реальное время (
internal/realtime/): Hub управляет WebSocket-клиентами, сервер транслирует события - Аутентификация (
internal/auth/+internal/middleware/): JWT (HS256), middleware устанавливает заголовкиX-User-IDиX-User-Email - Жизненный цикл задач (
internal/service/task.go): постановка в очередь → взятие → запуск → завершение/неудача - SDK агентов (
pkg/agent/): Единый интерфейсBackendдля выполнения промптов через Claude Code или Codex - Демон (
internal/daemon/): Автоматически обнаруживает CLI-инструменты, регистрирует среды выполнения, опрашивает задачи - База данных: PostgreSQL 17 с pgvector, sqlc генерирует код из SQL в
pkg/db/queries/
Архитектура фронтенда
Шаблон внутренних пакетов
Все общие пакеты экспортируют сырые .ts/.tsx файлы (без предварительной компиляции). Бандлер потребляющего приложения компилирует их напрямую. Это даёт zero-config HMR и мгновенный переход к определению.
Границы пакетов
packages/core/— zero react-dom, zero localStorage, zero UI-библиотек. Все Zustand-хранилища находятся здесь.packages/ui/— чистые UI-компоненты, zero бизнес-логики.packages/views/— zeronext/*, zeroreact-router-dom. ИспользуетNavigationAdapterдля маршрутизации.
Управление состоянием
- TanStack Query владеет всеми серверными данными (задачи, пользователи, рабочие пространства)
- Zustand владеет всеми клиентскими данными (выбор UI, фильтры, черновики)
- React Context зарезервирован для сквозной инфраструктуры (
WorkspaceIdProvider,NavigationProvider)
Поток данных
Browser → ApiClient (shared/api) → REST API (Chi handlers) → sqlc queries → PostgreSQL
Browser ← WSClient (shared/api) ← WebSocket ← Hub.Broadcast() ← Handlers/TaskServiceМультитенантность
Все запросы фильтруются по workspace_id. Проверки членства контролируют доступ. Заголовок X-Workspace-ID направляет запросы в правильное рабочее пространство.