211 lines
7.7 KiB
Markdown
211 lines
7.7 KiB
Markdown
# GoClaw Control Center
|
||
|
||
> **Mission Control для вашего AI-агентского кластера.** Веб-интерфейс для мониторинга Docker Swarm, управления AI-агентами и общения с оркестратором через реальный LLM (Ollama Cloud API).
|
||
|
||
---
|
||
|
||
## Запуск одной командой
|
||
|
||
```bash
|
||
curl -fsSL https://git.softuniq.eu/UniqAI/GoClaw/raw/branch/main/install.sh | bash
|
||
```
|
||
|
||
Или вручную через Docker Compose:
|
||
|
||
```bash
|
||
git clone https://git.softuniq.eu/UniqAI/GoClaw.git && cd GoClaw && cp .env.example .env && docker compose up -d
|
||
```
|
||
|
||
После запуска откройте: **http://localhost:3000**
|
||
|
||
---
|
||
|
||
## Быстрый старт (без Docker)
|
||
|
||
```bash
|
||
# 1. Клонировать репозиторий
|
||
git clone https://git.softuniq.eu/UniqAI/GoClaw.git
|
||
cd GoClaw
|
||
|
||
# 2. Установить зависимости
|
||
pnpm install
|
||
|
||
# 3. Настроить переменные окружения
|
||
cp .env.example .env
|
||
# Отредактируйте .env — укажите OLLAMA_BASE_URL и OLLAMA_API_KEY
|
||
|
||
# 4. Запустить базу данных
|
||
pnpm db:push
|
||
|
||
# 5. Запустить dev-сервер
|
||
pnpm dev
|
||
```
|
||
|
||
---
|
||
|
||
## Архитектура
|
||
|
||
```
|
||
GoClaw Control Center
|
||
├── client/ # React 19 + Tailwind 4 + shadcn/ui (фронтенд)
|
||
│ └── src/
|
||
│ ├── pages/ # Dashboard, Agents, Nodes, Chat, Settings
|
||
│ └── components/ # DashboardLayout, UI-компоненты
|
||
├── server/ # Express 4 + tRPC 11 (бэкенд)
|
||
│ ├── ollama.ts # Прокси-клиент для Ollama API
|
||
│ ├── routers.ts # tRPC роуты (ollama.health, models, chat)
|
||
│ └── _core/ # Auth, DB, LLM, Storage хелперы
|
||
├── drizzle/ # Схема БД и миграции (MySQL/TiDB)
|
||
├── docker/ # Docker Stack для Swarm-деплоя
|
||
│ ├── docker-stack.yml # Полный стек: Gateway + Agents + Control Center
|
||
│ ├── Dockerfile.gateway # Образ основного шлюза GoClaw
|
||
│ ├── Dockerfile.agent # Образ AI-агента
|
||
│ └── Dockerfile.control-center # Образ веб-интерфейса (nginx)
|
||
└── docs/ # Документация и спецификации
|
||
├── swarm_architecture.md
|
||
└── goclaw_swarm_cloud_guide.md
|
||
```
|
||
|
||
---
|
||
|
||
## Возможности
|
||
|
||
| Раздел | Что умеет |
|
||
| :--- | :--- |
|
||
| **Dashboard** | Мониторинг Swarm-нод, статус агентов, лента активности, live-статус Ollama API |
|
||
| **Agents** | Просмотр всех AI-агентов с их ролями, моделями и текущими задачами |
|
||
| **Nodes** | Мониторинг Docker Swarm нод: CPU, RAM, контейнеры, статус |
|
||
| **Chat** | Терминальный чат с оркестратором через реальный LLM (34 модели Ollama) |
|
||
| **Settings** | Управление API-провайдерами, сканирование доступных моделей, настройки Telegram |
|
||
|
||
---
|
||
|
||
## Переменные окружения
|
||
|
||
Скопируйте `.env.example` в `.env` и заполните:
|
||
|
||
```env
|
||
# Ollama API (обязательно)
|
||
OLLAMA_BASE_URL=https://ollama.com/v1
|
||
OLLAMA_API_KEY=your_api_key_here
|
||
|
||
# База данных (обязательно для production)
|
||
DATABASE_URL=mysql://user:password@host:3306/goclaw
|
||
|
||
# JWT (сгенерируйте случайную строку)
|
||
JWT_SECRET=your_random_secret_here
|
||
|
||
# Telegram Bot (опционально)
|
||
TELEGRAM_BOT_TOKEN=your_bot_token
|
||
```
|
||
|
||
---
|
||
|
||
## Docker Swarm деплой
|
||
|
||
```bash
|
||
# Инициализировать Swarm (если ещё не сделано)
|
||
docker swarm init
|
||
|
||
# Задать секреты
|
||
export OLLAMA_API_KEY=your_key
|
||
export DATABASE_URL=mysql://...
|
||
export JWT_SECRET=your_secret
|
||
|
||
# Развернуть стек
|
||
docker stack deploy -c docker/docker-stack.yml goclaw
|
||
|
||
# Проверить статус
|
||
docker stack services goclaw
|
||
```
|
||
|
||
Добавление новой ноды в кластер:
|
||
```bash
|
||
# На manager-ноде получить токен
|
||
docker swarm join-token worker
|
||
|
||
# На новой ноде выполнить команду из вывода выше
|
||
docker swarm join --token SWMTKN-... manager-ip:2377
|
||
```
|
||
|
||
---
|
||
|
||
## Технологический стек
|
||
|
||
| Слой | Технологии |
|
||
| :--- | :--- |
|
||
| **Фронтенд** | React 19, Tailwind CSS 4, shadcn/ui, Framer Motion, tRPC Client |
|
||
| **Бэкенд** | Node.js, Express 4, tRPC 11, Drizzle ORM, Zod |
|
||
| **База данных** | MySQL / TiDB (через Drizzle) |
|
||
| **LLM** | Ollama Cloud API (OpenAI-совместимый, 34+ модели) |
|
||
| **Оркестрация** | Docker Swarm, Overlay Network |
|
||
| **Агенты (Go)** | gRPC, Docker SDK, Goroutines, Channels |
|
||
| **Тесты** | Vitest |
|
||
|
||
---
|
||
|
||
## Структура GoClaw Swarm
|
||
|
||
```
|
||
┌─────────────────────────────────┐
|
||
│ goclaw-net (Overlay Network) │
|
||
└─────────────────────────────────┘
|
||
│
|
||
┌─────────────────────┼─────────────────────┐
|
||
│ │ │
|
||
┌─────────▼──────┐ ┌──────────▼──────┐ ┌─────────▼──────┐
|
||
│ Control Center │ │ Gateway │ │ Agents │
|
||
│ (Web UI :3000) │ │ (Orchestrator) │ │ (Docker Svc) │
|
||
│ React + tRPC │ │ Go + gRPC │ │ Coder/Browser │
|
||
└────────────────┘ └─────────────────┘ │ Mail/Monitor │
|
||
│ └─────────────────┘
|
||
┌───────────▼──────────┐
|
||
│ Ollama Cloud API │
|
||
│ (34 LLM Models) │
|
||
└──────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Разработка
|
||
|
||
```bash
|
||
# Запустить тесты
|
||
pnpm test
|
||
|
||
# Проверить типы
|
||
pnpm check
|
||
|
||
# Форматировать код
|
||
pnpm format
|
||
|
||
# Применить миграции БД
|
||
pnpm db:push
|
||
```
|
||
|
||
---
|
||
|
||
## Дорожная карта
|
||
|
||
- [x] Dashboard с мониторингом кластера
|
||
- [x] Реальная интеграция Ollama API (34 модели)
|
||
- [x] Терминальный чат с LLM
|
||
- [x] Docker Swarm Stack
|
||
- [x] gRPC API для агентов (Go)
|
||
- [ ] Стриминг ответов LLM в чате
|
||
- [ ] CRUD агентов через UI
|
||
- [ ] Подключение реального Docker API для нод
|
||
- [ ] Telegram-коннектор
|
||
- [ ] Система скиллов (Self-Evolution)
|
||
- [ ] Аутентификация и RBAC
|
||
|
||
---
|
||
|
||
## Лицензия
|
||
|
||
MIT — используйте свободно для личных и коммерческих проектов.
|
||
|
||
---
|
||
|
||
*Разработано в рамках проекта **GoClaw** — распределённой системы AI-агентов на Go + Docker Swarm.*
|